package Ġcom . app ify hub . mon ol ith . repository . schema Ċ Ċ import Ġassert k . all Ċ import Ġassert k . assertThat Ċ import Ġassert k . assertions . hasClass Ċ import Ġassert k . assertions . is Failure Ċ import Ġassert k . assertions . isFalse Ċ import Ġassert k . assertions . is Success Ċ import Ġassert k . assertions . isTrue Ċ import Ġassert k . assertions . message Contains Ċ import Ġcom . app ify hub . mon ol ith . storage . dao . Schema Dao Ċ import Ġcom . app ify hub . mon ol ith . storage . model . schema . Schema Db m Ċ import Ġcom . app ify hub . mon ol ith . util . Stub s Ċ import Ġorg . junit . jupiter . api . BeforeEach Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . mockito . kotlin . any Ċ import Ġorg . mockito . kotlin . do Answer Ċ import Ġorg . mockito . kotlin . do Return Ċ import Ġorg . mockito . kotlin . do Throw Ċ import Ġorg . mockito . kotlin . mock Ċ import Ġorg . mockito . kotlin . stub Ċ import Ġjava . util . Optional Ċ Ċ class ĠSchema Repository Impl Test Ġ{ ĊĊĠ Ġprivate Ġval Ġschema Dao Ġ= Ġmock < Schema Dao >() ĊĊĠ Ġprivate Ġval Ġrepository : ĠSchema Repository Ġ= ĠSchema Repository Impl ( ĊĠĠĠ Ġschema Dao Ġ= Ġschema Dao , ĊĠ Ġ) ĊĊĠ Ġ@ BeforeEach Ġfun Ġsetup () Ġ{ ĊĠĠĠ Ġschema Dao . stub Ġ{ ĊĠĠĠĠĠ Ġon Generic Ġ{ Ġsave ( any ()) Ġ} Ġdo Answer Ġ{ Ġit . arguments . first () Ġas ĠSchema Db m Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ// Ġregion ĠUpdates ĊĊĠ Ġ@ Test Ġfun Ġ` updating Ġschema Ġwith Ġa Ġprevious Ġschema Ġinitialized Ġfails `() Ġ{ ĊĠĠĠ Ġschema Dao . stub Ġ{ ĊĠĠĠĠĠ Ġon Generic Ġ{ Ġfind ById ( Stub s . schema . version ) Ġ} Ġdo Return ĠOptional . of ( Stub s . schema Db m ) ĊĠĠĠ Ġ} ĊĊĠĠĠ ĠassertThat Ġ{ Ġrepository . update ( Stub s . schema ) Ġ} ĊĠĠĠĠĠ Ġ. is Failure () ĊĠĠĠĠĠ Ġ. all Ġ{ ĊĠĠĠĠĠĠĠ Ġhas Class ( IllegalArgumentException :: class ) ĊĠĠĠĠĠĠĠ Ġmessage Contains (" already Ġinitialized ") ĊĠĠĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġ` updating Ġschema Ġwith Ġa Ġprevious Ġschema Ġnot Ġinitialized Ġworks `() Ġ{ ĊĠĠĠ Ġschema Dao . stub Ġ{ ĊĠĠĠĠĠ Ġval Ġschema Ġ= ĠSchema Db m ( Stub s . schema . version , Ġis Initialized Ġ= Ġfalse ) ĊĠĠĠĠĠ Ġon Generic Ġ{ Ġfind ById ( Stub s . schema . version ) Ġ} Ġdo Return ĠOptional . of ( schema ) ĊĠĠĠ Ġ} ĊĊĠĠĠ ĠassertThat Ġ{ Ġrepository . update ( Stub s . schema ) Ġ} ĊĠĠĠĠĠ Ġ. is Success () ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġ` updating Ġschema Ġwith Ġno Ġprevious Ġschema Ġworks `() Ġ{ ĊĠĠĠ Ġschema Dao . stub Ġ{ ĊĠĠĠĠĠ Ġon Generic Ġ{ Ġfind ById ( Stub s . schema . version ) Ġ} Ġdo Return ĠOptional . empty () ĊĠĠĠ Ġ} ĊĊĠĠĠ ĠassertThat Ġ{ Ġrepository . update ( Stub s . schema ) Ġ} ĊĠĠĠĠĠ Ġ. is Success () ĊĠ Ġ} ĊĊĠ Ġ// Ġend region ĊĊĠ Ġ// Ġregion ĠIs Ġinitialized Ġchecks ĊĊĠ Ġ@ Test Ġfun Ġ` fetch ing Ġ' is Ġinitialized ' Ġreturns Ġfalse Ġif ĠDAO Ġthrows `() Ġ{ ĊĠĠĠ Ġschema Dao . stub Ġ{ ĊĠĠĠĠĠ Ġon Generic Ġ{ Ġfind ById ( Stub s . schema . version ) Ġ} Ġdo Throw ĠIllegalStateException (" failed ") ĊĠĠĠ Ġ} ĊĊĠĠĠ ĠassertThat ( repository . isInitialized ( Stub s . schema . version )) ĊĠĠĠĠĠ Ġ. isFalse () ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġ` fetch ing Ġ' is Ġinitialized ' Ġreturns Ġfalse Ġif Ġschema Ġis Ġmissing `() Ġ{ ĊĠĠĠ Ġschema Dao . stub Ġ{ ĊĠĠĠĠĠ Ġon Generic Ġ{ Ġfind ById ( Stub s . schema . version ) Ġ} Ġdo Return ĠOptional . empty () ĊĠĠĠ Ġ} ĊĊĠĠĠ ĠassertThat ( repository . isInitialized ( Stub s . schema . version )) ĊĠĠĠĠĠ Ġ. isFalse () ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġ` fetch ing Ġ' is Ġinitialized ' Ġreturns Ġfalse Ġfor Ġnon - initialized Ġschemas `() Ġ{ ĊĠĠĠ Ġschema Dao . stub Ġ{ ĊĠĠĠĠĠ Ġval Ġschema Ġ= ĠSchema Db m ( Stub s . schema . version , Ġis Initialized Ġ= Ġfalse ) ĊĠĠĠĠĠ Ġon Generic Ġ{ Ġfind ById ( Stub s . schema . version ) Ġ} Ġdo Return ĠOptional . of ( schema ) ĊĠĠĠ Ġ} ĊĊĠĠĠ ĠassertThat ( repository . isInitialized ( Stub s . schema . version )) ĊĠĠĠĠĠ Ġ. isFalse () ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġ` fetch ing Ġ' is Ġinitialized ' Ġreturns Ġtrue Ġfor Ġinitialized Ġschemas `() Ġ{ ĊĠĠĠ Ġschema Dao . stub Ġ{ ĊĠĠĠĠĠ Ġon Generic Ġ{ Ġfind ById ( Stub s . schema . version ) Ġ} Ġdo Return ĠOptional . of ( Stub s . schema Db m ) ĊĠĠĠ Ġ} ĊĊĠĠĠ ĠassertThat ( repository . isInitialized ( Stub s . schema . version )) ĊĠĠĠĠĠ Ġ. isTrue () ĊĠ Ġ} ĊĊĠ Ġ// Ġend region Ċ Ċ } Ċ