package Ġmy . pack Ċ Ċ import Ġorg . junit . jupiter . api . After Each Ċ import Ġorg . junit . jupiter . api . Test Ċ Ċ class ĠValidation Test Ġ{ ĊĊĠĠĠ Ġval Ġdb Ġ= ĠValidation DB ( TestUtil . ds ) ĊĠĠĠ Ġ@ After Each ĊĠĠĠ Ġfun Ġcleanup (){ ĊĠĠĠĠĠĠĠ ĠTest Util . ds . connection . use Ġ{ Ġit . createStatement (). execute (""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrop Ġtable Ġvalidation _ entity ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent ()) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` happy Ġpath ` (){ ĊĠĠĠĠĠĠĠ ĠTest Util . ds . connection . use Ġ{ Ġit . createStatement (). execute (""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Ġtable Ġvalidation _ entity Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġuuid Ġprimary Ġkey , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġtext Ġnot Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġage Ġinteger ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent ()) Ġ} ĊĠĠĠĠĠĠĠ Ġassert ( db . check () Ġ== Ġempty List < String >()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` missing Ġprimary Ġkey ` (){ ĊĠĠĠĠĠĠĠ ĠThread . sleep ( 2 0 0 ) Ġ// without Ġpause Ġsometimes Ġthis Ġtest Ġfails ĊĊĠĠĠĠĠĠĠ ĠTest Util . ds . connection . use Ġ{ Ġit . createStatement (). execute (""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Ġtable Ġvalidation _ entity Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġuuid Ġnot Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġtext Ġnot Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġage Ġinteger ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent ()) Ġ} ĊĠĠĠĠĠĠĠ Ġassert ( db . check () Ġ== ĠlistOf (" Missing Ġkeys : Ġtable Ġvalidation _ entity Ġ( id ĠUUID Ġnot Ġnull ) ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` extra Ġprimary Ġkey ` (){ ĊĠĠĠĠĠĠĠ ĠTest Util . ds . connection . use Ġ{ Ġit . createStatement (). execute (""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Ġtable Ġvalidation _ entity Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġuuid , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġtext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġage Ġinteger , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprimary Ġkey Ġ( id , Ġname ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent ()) Ġ} ĊĠĠĠĠĠĠĠ Ġassert ( db . check () Ġ== ĠlistOf (" Extra Ġkeys : Ġtable Ġvalidation _ entity Ġ( name ĠTEXT Ġnot Ġnull ) ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` missing Ġcolumn ` (){ ĊĠĠĠĠĠĠĠ ĠTest Util . ds . connection . use Ġ{ Ġit . createStatement (). execute (""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Ġtable Ġvalidation _ entity Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġuuid Ġprimary Ġkey , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġage Ġinteger ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent ()) Ġ} ĊĠĠĠĠĠĠĠ Ġassert ( db . check () Ġ== ĠlistOf (" Missing Ġcolumns : Ġtable Ġvalidation _ entity Ġ( name ĠTEXT Ġnot Ġnull ) ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` extra Ġcolumn ` (){ ĊĠĠĠĠĠĠĠ ĠTest Util . ds . connection . use Ġ{ Ġit . createStatement (). execute (""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Ġtable Ġvalidation _ entity Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġuuid Ġprimary Ġkey , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġtext Ġnot Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġage Ġinteger , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġextra Ġint ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent ()) Ġ} ĊĊĠĠĠĠĠĠĠ Ġassert ( db . check () Ġ== ĠlistOf (" Extra Ġcolumns : Ġtable Ġvalidation _ entity Ġ( extra ĠINTEGER ) ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` invalid Ġnullable Ġcolumn ` (){ ĊĠĠĠĠĠĠĠ ĠTest Util . ds . connection . use Ġ{ Ġit . createStatement (). execute (""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Ġtable Ġvalidation _ entity Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġuuid Ġprimary Ġkey , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġtext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġage Ġinteger ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent ()) Ġ} ĊĠĠĠĠĠĠĠ Ġassert ( db . check () Ġ== ĠlistOf (" Invalid Ġnull ability : Ġtable Ġvalidation _ entity Ġ( name ĠTEXT ) ")) Ġ// TODO Ġ" table : Ġnullable , Ġentity : Ġnon Ġnullable " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` invalid Ġnot Ġnullable Ġcolumn ` (){ ĊĠĠĠĠĠĠĠ ĠTest Util . ds . connection . use Ġ{ Ġit . createStatement (). execute (""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Ġtable Ġvalidation _ entity Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġuuid Ġprimary Ġkey , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġtext Ġnot Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġage Ġinteger Ġnot Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent ()) Ġ} ĊĠĠĠĠĠĠĠ Ġassert ( db . check () Ġ== ĠlistOf (" Invalid Ġnull ability : Ġtable Ġvalidation _ entity Ġ( age ĠINTEGER Ġnot Ġnull ) ")) ĊĠĠĠ Ġ} Ċ }