Merge commit '36c66dd290d3ce6eb1ccd310d0c658d4a32bb8eb' as 'repos/effect'
This commit is contained in:
91
repos/effect/packages/sql/mssql/test/Client.test.ts
Normal file
91
repos/effect/packages/sql/mssql/test/Client.test.ts
Normal file
@@ -0,0 +1,91 @@
|
||||
import { MssqlClient } from "@effect/sql-mssql"
|
||||
import { describe, expect, it } from "@effect/vitest"
|
||||
import { Effect } from "effect"
|
||||
import * as Statement from "effect/unstable/sql/Statement"
|
||||
|
||||
const sql = Statement.make(Effect.void as any, MssqlClient.makeCompiler(), [], undefined)
|
||||
|
||||
describe("mssql", () => {
|
||||
it("insert helper", () => {
|
||||
const [query, params] = sql`INSERT INTO ${sql("people")} ${sql.insert({ name: "Tim", age: 10 })}`.compile()
|
||||
expect(query).toEqual(
|
||||
`INSERT INTO [people] ([name],[age]) VALUES (@1,@2)`
|
||||
)
|
||||
expect(params).toEqual(["Tim", 10])
|
||||
})
|
||||
|
||||
it("insert helper returning", () => {
|
||||
const [query, params] = sql`INSERT INTO ${sql("people")} ${sql.insert({ name: "Tim", age: 10 }).returning("*")}`
|
||||
.compile()
|
||||
expect(query).toEqual(
|
||||
`INSERT INTO [people] ([name],[age]) OUTPUT INSERTED.* VALUES (@1,@2)`
|
||||
)
|
||||
expect(params).toEqual(["Tim", 10])
|
||||
})
|
||||
|
||||
it("update helper", () => {
|
||||
const [query, params] = sql`UPDATE people SET name = data.name ${
|
||||
sql.updateValues(
|
||||
[{ name: "Tim" }, { name: "John" }],
|
||||
"data"
|
||||
)
|
||||
}`.compile()
|
||||
expect(query).toEqual(
|
||||
`UPDATE people SET name = data.name FROM (values (@1),(@2)) AS data([name])`
|
||||
)
|
||||
expect(params).toEqual(["Tim", "John"])
|
||||
})
|
||||
|
||||
it("update helper returning", () => {
|
||||
const [query, params] = sql`UPDATE people SET name = data.name ${
|
||||
sql.updateValues(
|
||||
[{ name: "Tim" }, { name: "John" }],
|
||||
"data"
|
||||
).returning("*")
|
||||
}`.compile()
|
||||
expect(query).toEqual(
|
||||
`UPDATE people SET name = data.name OUTPUT INSERTED.* FROM (values (@1),(@2)) AS data([name])`
|
||||
)
|
||||
expect(params).toEqual(["Tim", "John"])
|
||||
})
|
||||
|
||||
it("update single helper returning", () => {
|
||||
const [query, params] = sql`UPDATE people SET ${sql.update({ name: "Tim" }).returning("*")}`
|
||||
.compile()
|
||||
expect(query).toEqual(
|
||||
`UPDATE people SET [name] = @1 OUTPUT INSERTED.*`
|
||||
)
|
||||
expect(params).toEqual(["Tim"])
|
||||
})
|
||||
|
||||
it("array helper", () => {
|
||||
const [query, params] = sql`SELECT * FROM ${sql("people")} WHERE id IN ${sql.in([1, 2, "string"])}`.compile()
|
||||
expect(query).toEqual(`SELECT * FROM [people] WHERE id IN (@1,@2,@3)`)
|
||||
expect(params).toEqual([1, 2, "string"])
|
||||
})
|
||||
|
||||
// it("param types", () => {
|
||||
// const [query, params] = sql`SELECT * FROM ${sql("people")} WHERE id = ${
|
||||
// sql.param(
|
||||
// MssqlTypes.BigInt,
|
||||
// 1
|
||||
// )
|
||||
// }`.compile()
|
||||
// expect(query).toEqual(`SELECT * FROM [people] WHERE id = @1`)
|
||||
// expect(isCustom("MssqlParam")(params[0])).toEqual(true)
|
||||
// const param = params[0] as unknown as Custom<
|
||||
// "MsSqlParam",
|
||||
// any,
|
||||
// any,
|
||||
// any
|
||||
// >
|
||||
// expect(param.i0).toEqual(MssqlTypes.BigInt)
|
||||
// expect(param.i1).toEqual(1)
|
||||
// expect(param.i2).toEqual({})
|
||||
// })
|
||||
|
||||
it("escape [", () => {
|
||||
const [query] = sql`SELECT * FROM ${sql("peo[]ple.te[st]ing")}`.compile()
|
||||
expect(query).toEqual(`SELECT * FROM [peo[]]ple].[te[st]]ing]`)
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user