@@ -22,14 +22,14 @@ describe("diff — table-level", () => {
2222 } ) ;
2323
2424 test ( "expected table not in actual → create-table" , async ( ) => {
25- const expected = snapshot ( [ { name : "users" , columns : [ col ( "id" , "integer" ) , col ( "email" ) ] , indexes : [ ] , foreignKeys : [ ] , primaryKey : [ "id" ] } ] ) ;
25+ const expected = snapshot ( [ { name : "users" , columns : [ col ( "id" , "integer" ) , col ( "email" ) ] , indexes : [ ] , foreignKeys : [ ] , primaryKey : [ "id" ] , checks : [ ] } ] ) ;
2626 const r = await diff ( expected , empty ) ;
2727 expect ( r . changes ) . toHaveLength ( 1 ) ;
2828 expect ( r . changes [ 0 ] ?. kind ) . toBe ( "create-table" ) ;
2929 } ) ;
3030
3131 test ( "actual table not in expected → drop-table" , async ( ) => {
32- const actual = snapshot ( [ { name : "legacy" , columns : [ col ( "id" , "integer" ) ] , indexes : [ ] , foreignKeys : [ ] , primaryKey : [ "id" ] } ] ) ;
32+ const actual = snapshot ( [ { name : "legacy" , columns : [ col ( "id" , "integer" ) ] , indexes : [ ] , foreignKeys : [ ] , primaryKey : [ "id" ] , checks : [ ] } ] ) ;
3333 const r = await diff ( empty , actual ) ;
3434 expect ( r . changes ) . toHaveLength ( 1 ) ;
3535 expect ( r . changes [ 0 ] ?. kind ) . toBe ( "drop-table" ) ;
@@ -38,57 +38,57 @@ describe("diff — table-level", () => {
3838
3939describe ( "diff — per-table column-level" , ( ) => {
4040 test ( "expected column not in actual → add-column" , async ( ) => {
41- const tableE = { name : "users" , columns : [ col ( "id" , "integer" ) , col ( "email" ) ] , indexes : [ ] , foreignKeys : [ ] , primaryKey : [ "id" ] } ;
42- const tableA = { name : "users" , columns : [ col ( "id" , "integer" ) ] , indexes : [ ] , foreignKeys : [ ] , primaryKey : [ "id" ] } ;
41+ const tableE = { name : "users" , columns : [ col ( "id" , "integer" ) , col ( "email" ) ] , indexes : [ ] , foreignKeys : [ ] , primaryKey : [ "id" ] , checks : [ ] } ;
42+ const tableA = { name : "users" , columns : [ col ( "id" , "integer" ) ] , indexes : [ ] , foreignKeys : [ ] , primaryKey : [ "id" ] , checks : [ ] } ;
4343 const r = await diff ( snapshot ( [ tableE ] ) , snapshot ( [ tableA ] ) ) ;
4444 expect ( r . changes ) . toHaveLength ( 1 ) ;
4545 expect ( r . changes [ 0 ] ) . toMatchObject ( { kind : "add-column" , table : "users" } ) ;
4646 } ) ;
4747
4848 test ( "actual column not in expected → drop-column" , async ( ) => {
49- const tableE = { name : "users" , columns : [ col ( "id" , "integer" ) ] , indexes : [ ] , foreignKeys : [ ] , primaryKey : [ "id" ] } ;
50- const tableA = { name : "users" , columns : [ col ( "id" , "integer" ) , col ( "legacy_field" ) ] , indexes : [ ] , foreignKeys : [ ] , primaryKey : [ "id" ] } ;
49+ const tableE = { name : "users" , columns : [ col ( "id" , "integer" ) ] , indexes : [ ] , foreignKeys : [ ] , primaryKey : [ "id" ] , checks : [ ] } ;
50+ const tableA = { name : "users" , columns : [ col ( "id" , "integer" ) , col ( "legacy_field" ) ] , indexes : [ ] , foreignKeys : [ ] , primaryKey : [ "id" ] , checks : [ ] } ;
5151 const r = await diff ( snapshot ( [ tableE ] ) , snapshot ( [ tableA ] ) ) ;
5252 expect ( r . changes ) . toHaveLength ( 1 ) ;
5353 expect ( r . changes [ 0 ] ) . toMatchObject ( { kind : "drop-column" , table : "users" , column : "legacy_field" } ) ;
5454 } ) ;
5555
5656 test ( "type mismatch → change-column-type" , async ( ) => {
57- const tableE = { name : "users" , columns : [ { ...col ( "count" ) , sqlType : { kind : "integer" as const , bits : 64 as const } } ] , indexes : [ ] , foreignKeys : [ ] , primaryKey : [ ] } ;
58- const tableA = { name : "users" , columns : [ col ( "count" , "text" ) ] , indexes : [ ] , foreignKeys : [ ] , primaryKey : [ ] } ;
57+ const tableE = { name : "users" , columns : [ { ...col ( "count" ) , sqlType : { kind : "integer" as const , bits : 64 as const } } ] , indexes : [ ] , foreignKeys : [ ] , primaryKey : [ ] , checks : [ ] } ;
58+ const tableA = { name : "users" , columns : [ col ( "count" , "text" ) ] , indexes : [ ] , foreignKeys : [ ] , primaryKey : [ ] , checks : [ ] } ;
5959 const r = await diff ( snapshot ( [ tableE ] ) , snapshot ( [ tableA ] ) ) ;
6060 const c = r . changes . find ( ( x ) => x . kind === "change-column-type" ) ;
6161 expect ( c ) . toBeDefined ( ) ;
6262 } ) ;
6363
6464 test ( "nullable mismatch → change-column-nullable" , async ( ) => {
65- const tableE = { name : "users" , columns : [ { ...col ( "note" ) , nullable : true } ] , indexes : [ ] , foreignKeys : [ ] , primaryKey : [ ] } ;
66- const tableA = { name : "users" , columns : [ { ...col ( "note" ) , nullable : false } ] , indexes : [ ] , foreignKeys : [ ] , primaryKey : [ ] } ;
65+ const tableE = { name : "users" , columns : [ { ...col ( "note" ) , nullable : true } ] , indexes : [ ] , foreignKeys : [ ] , primaryKey : [ ] , checks : [ ] } ;
66+ const tableA = { name : "users" , columns : [ { ...col ( "note" ) , nullable : false } ] , indexes : [ ] , foreignKeys : [ ] , primaryKey : [ ] , checks : [ ] } ;
6767 const r = await diff ( snapshot ( [ tableE ] ) , snapshot ( [ tableA ] ) ) ;
6868 const c = r . changes . find ( ( x ) => x . kind === "change-column-nullable" ) ;
6969 expect ( c ) . toBeDefined ( ) ;
7070 expect ( c ) . toMatchObject ( { from : false , to : true } ) ;
7171 } ) ;
7272
7373 test ( "default mismatch → change-column-default" , async ( ) => {
74- const tableE = { name : "users" , columns : [ { ...col ( "flag" , "boolean" ) , default : { kind : "literal" as const , value : "true" } } ] , indexes : [ ] , foreignKeys : [ ] , primaryKey : [ ] } ;
75- const tableA = { name : "users" , columns : [ col ( "flag" , "boolean" ) ] , indexes : [ ] , foreignKeys : [ ] , primaryKey : [ ] } ;
74+ const tableE = { name : "users" , columns : [ { ...col ( "flag" , "boolean" ) , default : { kind : "literal" as const , value : "true" } } ] , indexes : [ ] , foreignKeys : [ ] , primaryKey : [ ] , checks : [ ] } ;
75+ const tableA = { name : "users" , columns : [ col ( "flag" , "boolean" ) ] , indexes : [ ] , foreignKeys : [ ] , primaryKey : [ ] , checks : [ ] } ;
7676 const r = await diff ( snapshot ( [ tableE ] ) , snapshot ( [ tableA ] ) ) ;
7777 expect ( r . changes . find ( ( x ) => x . kind === "change-column-default" ) ) . toBeDefined ( ) ;
7878 } ) ;
7979} ) ;
8080
8181describe ( "diff — per-table index/FK" , ( ) => {
8282 test ( "expected index not in actual → add-index" , async ( ) => {
83- const tableE = { name : "users" , columns : [ col ( "id" , "integer" ) , col ( "email" ) ] , indexes : [ { name : "users_email_idx" , columns : [ "email" ] , unique : true } ] , foreignKeys : [ ] , primaryKey : [ "id" ] } ;
84- const tableA = { name : "users" , columns : [ col ( "id" , "integer" ) , col ( "email" ) ] , indexes : [ ] , foreignKeys : [ ] , primaryKey : [ "id" ] } ;
83+ const tableE = { name : "users" , columns : [ col ( "id" , "integer" ) , col ( "email" ) ] , indexes : [ { name : "users_email_idx" , columns : [ "email" ] , unique : true } ] , foreignKeys : [ ] , primaryKey : [ "id" ] , checks : [ ] } ;
84+ const tableA = { name : "users" , columns : [ col ( "id" , "integer" ) , col ( "email" ) ] , indexes : [ ] , foreignKeys : [ ] , primaryKey : [ "id" ] , checks : [ ] } ;
8585 const r = await diff ( snapshot ( [ tableE ] ) , snapshot ( [ tableA ] ) ) ;
8686 expect ( r . changes . find ( ( x ) => x . kind === "add-index" ) ) . toBeDefined ( ) ;
8787 } ) ;
8888
8989 test ( "actual FK not in expected → drop-fk" , async ( ) => {
90- const tableE = { name : "weeks" , columns : [ col ( "id" , "integer" ) , col ( "program_id" , "integer" ) ] , indexes : [ ] , foreignKeys : [ ] , primaryKey : [ "id" ] } ;
91- const tableA = { name : "weeks" , columns : [ col ( "id" , "integer" ) , col ( "program_id" , "integer" ) ] , indexes : [ ] , foreignKeys : [ { name : "weeks_program_id_fk" , columns : [ "program_id" ] , refTable : "programs" , refColumns : [ "id" ] } ] , primaryKey : [ "id" ] } ;
90+ const tableE = { name : "weeks" , columns : [ col ( "id" , "integer" ) , col ( "program_id" , "integer" ) ] , indexes : [ ] , foreignKeys : [ ] , primaryKey : [ "id" ] , checks : [ ] } ;
91+ const tableA = { name : "weeks" , columns : [ col ( "id" , "integer" ) , col ( "program_id" , "integer" ) ] , indexes : [ ] , foreignKeys : [ { name : "weeks_program_id_fk" , columns : [ "program_id" ] , refTable : "programs" , refColumns : [ "id" ] } ] , primaryKey : [ "id" ] , checks : [ ] } ;
9292 const r = await diff ( snapshot ( [ tableE ] ) , snapshot ( [ tableA ] ) ) ;
9393 expect ( r . changes . find ( ( x ) => x . kind === "drop-fk" ) ) . toBeDefined ( ) ;
9494 } ) ;
0 commit comments