57 lines
1.9 KiB
TypeScript
57 lines
1.9 KiB
TypeScript
import { strict as assert } from "node:assert";
|
|
import test from "node:test";
|
|
import { buildExecutableObjectSourceSql, objectSourceSaveExecutionMode } from "../src/lib/objectSourceEditor.ts";
|
|
|
|
test("SQL Server edited source saves as ALTER", () => {
|
|
const sql = buildExecutableObjectSourceSql({
|
|
databaseType: "sqlserver",
|
|
objectType: "PROCEDURE",
|
|
schema: "dbo",
|
|
name: "usp_demo",
|
|
source: "CREATE PROCEDURE dbo.usp_demo AS SELECT 1;",
|
|
});
|
|
|
|
assert.equal(sql, "ALTER PROCEDURE dbo.usp_demo AS SELECT 1;");
|
|
});
|
|
|
|
test("SQL Server edited CREATE OR ALTER source saves as ALTER", () => {
|
|
const sql = buildExecutableObjectSourceSql({
|
|
databaseType: "sqlserver",
|
|
objectType: "VIEW",
|
|
schema: "dbo",
|
|
name: "vw_demo",
|
|
source: "CREATE OR ALTER VIEW dbo.vw_demo AS SELECT 1 AS id;",
|
|
});
|
|
|
|
assert.equal(sql, "ALTER VIEW dbo.vw_demo AS SELECT 1 AS id;");
|
|
});
|
|
|
|
test("SQL Server object source saves as a single batch", () => {
|
|
assert.equal(objectSourceSaveExecutionMode("sqlserver"), "single");
|
|
});
|
|
|
|
test("Kingbase object source saves as a single statement", () => {
|
|
assert.equal(objectSourceSaveExecutionMode("kingbase"), "single");
|
|
});
|
|
|
|
test("Postgres-family object source saves as a single statement", () => {
|
|
assert.equal(objectSourceSaveExecutionMode("postgres"), "single");
|
|
assert.equal(objectSourceSaveExecutionMode("gaussdb"), "single");
|
|
});
|
|
|
|
test("MySQL object source saves as a single statement", () => {
|
|
assert.equal(objectSourceSaveExecutionMode("mysql"), "single");
|
|
});
|
|
|
|
test("Postgres view body opens as CREATE OR REPLACE VIEW", () => {
|
|
const sql = buildExecutableObjectSourceSql({
|
|
databaseType: "postgres",
|
|
objectType: "VIEW",
|
|
schema: "public",
|
|
name: "active users",
|
|
source: " SELECT id, name FROM users WHERE active ",
|
|
});
|
|
|
|
assert.equal(sql, 'CREATE OR REPLACE VIEW "public"."active users" AS\nSELECT id, name FROM users WHERE active;');
|
|
});
|