ddl-manager
Version:
store postgres procedures and triggers in files
237 lines (210 loc) • 6.65 kB
text/typescript
import { DatabaseTrigger } from "../../lib/database/schema/DatabaseTrigger";
import { TableID } from "../../lib/database/schema/TableID";
import assert from "assert";
import { Comment } from "../../lib/database/schema/Comment";
describe("DatabaseTrigger", () => {
it("equal two similar triggers", () => {
const trigger1 = new DatabaseTrigger({
name: "my_trigger",
procedure: {
schema: "public",
name: "my_trigger_function",
args: []
},
table: new TableID(
"public",
"my_table"
)
});
const trigger2 = new DatabaseTrigger({
name: "my_trigger",
procedure: {
schema: "public",
name: "my_trigger_function",
args: []
},
table: new TableID(
"public",
"my_table"
)
});
assert.ok( trigger1.equal(trigger2), "trigger1 == trigger2" );
assert.ok( trigger2.equal(trigger1), "trigger2 == trigger1" );
});
it("equal with different names", () => {
const trigger1 = new DatabaseTrigger({
name: "my_trigger_1",
procedure: {
schema: "public",
name: "my_trigger_function",
args: []
},
table: new TableID(
"public",
"my_table"
)
});
const trigger2 = new DatabaseTrigger({
name: "my_trigger_2",
procedure: {
schema: "public",
name: "my_trigger_function",
args: []
},
table: new TableID(
"public",
"my_table"
)
});
assert.ok( !trigger1.equal(trigger2), "trigger1 != trigger2" );
assert.ok( !trigger2.equal(trigger1), "trigger2 != trigger1" );
});
it("equal with different tables", () => {
const trigger1 = new DatabaseTrigger({
name: "my_trigger",
procedure: {
schema: "public",
name: "my_trigger_function",
args: []
},
table: new TableID(
"public",
"my_table_1"
)
});
const trigger2 = new DatabaseTrigger({
name: "my_trigger",
procedure: {
schema: "public",
name: "my_trigger_function",
args: []
},
table: new TableID(
"public",
"my_table_2"
)
});
assert.ok( !trigger1.equal(trigger2), "trigger1 != trigger2" );
assert.ok( !trigger2.equal(trigger1), "trigger2 != trigger1" );
});
it("equal with different funcs", () => {
const trigger1 = new DatabaseTrigger({
name: "my_trigger",
procedure: {
schema: "public",
name: "my_trigger_function_1",
args: []
},
table: new TableID(
"public",
"my_table"
)
});
const trigger2 = new DatabaseTrigger({
name: "my_trigger",
procedure: {
schema: "public",
name: "my_trigger_function_2",
args: []
},
table: new TableID(
"public",
"my_table"
)
});
assert.ok( !trigger1.equal(trigger2), "trigger1 != trigger2" );
assert.ok( !trigger2.equal(trigger1), "trigger2 != trigger1" );
});
it("equal with different events", () => {
const trigger1 = new DatabaseTrigger({
name: "my_trigger",
procedure: {
schema: "public",
name: "my_trigger_function",
args: []
},
table: new TableID(
"public",
"my_table"
),
before: true,
insert: true
});
const trigger2 = new DatabaseTrigger({
name: "my_trigger",
procedure: {
schema: "public",
name: "my_trigger_function",
args: []
},
table: new TableID(
"public",
"my_table"
),
after: true,
delete: true
});
assert.ok( !trigger1.equal(trigger2), "trigger1 != trigger2" );
assert.ok( !trigger2.equal(trigger1), "trigger2 != trigger1" );
});
it("equal with different 'when'", () => {
const trigger1 = new DatabaseTrigger({
name: "my_trigger",
procedure: {
schema: "public",
name: "my_trigger_function",
args: []
},
table: new TableID(
"public",
"my_table"
),
when: "when 1"
});
const trigger2 = new DatabaseTrigger({
name: "my_trigger",
procedure: {
schema: "public",
name: "my_trigger_function",
args: []
},
table: new TableID(
"public",
"my_table"
),
when: "when 2"
});
assert.ok( !trigger1.equal(trigger2), "trigger1 != trigger2" );
assert.ok( !trigger2.equal(trigger1), "trigger2 != trigger1" );
});
it("equal comment: null == undefined", () => {
const trigger1 = new DatabaseTrigger({
name: "my_trigger",
procedure: {
schema: "public",
name: "my_trigger_function",
args: []
},
table: new TableID(
"public",
"my_table"
),
comment: null as any
});
const trigger2 = new DatabaseTrigger({
name: "my_trigger",
procedure: {
schema: "public",
name: "my_trigger_function",
args: []
},
table: new TableID(
"public",
"my_table"
),
comment: undefined as any
});
assert.ok( trigger1.equal(trigger2), "trigger1 == trigger2" );
assert.ok( trigger2.equal(trigger1), "trigger2 == trigger1" );
});
})