package Ġorg . ire ader . data Ċ Ċ import Ġandroidx . room . Room Ċ import Ġandroidx . room . testing . Migration TestHelper Ċ import Ġandroidx . sqlite . db . Support SQLite Database Ċ import Ġandroidx . sqlite . db . framework . Framework SQLite Open Helper Factory Ċ import Ġandroidx . test . ext . junit . runners . Android JUnit 4 Ċ import Ġandroidx . test . platform . app . Instrumentation Registry Ċ import Ġcom . google . common . truth . Truth . assertThat Ċ import Ġorg . ire ader . data . local . App Database Ċ import Ġorg . ire ader . data . local . M IG RATION _ 1 0 _ 1 1 Ċ import Ġorg . ire ader . data . local . M IG RATION _ 1 1 _ 1 2 Ċ import Ġorg . junit . Assert . assertTrue Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ Ċ @ RunWith ( Android JUnit 4 :: class ) Ċ class ĠMigration Test Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdatabase : ĠSupport SQLite Database ĊĊĠĠĠ Ġprivate Ġval ĠTEST _ DB Ġ= Ġ" migration - test " ĊĊĠĠĠ Ġ// ĠArray Ġof Ġall Ġmigrations ĊĠĠĠ Ġprivate Ġval ĠALL _ M IG R ATIONS Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠ ĠM IG RATION _ 1 1 _ 1 2 , ĠM IG RATION _ 1 0 _ 1 1 ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġval Ġhelper : ĠMigration TestHelper Ġ= ĠMigration TestHelper ( ĊĠĠĠĠĠĠĠ ĠInstrument ation Registry . get Instrumentation (), ĊĠĠĠĠĠĠĠ ĠApp Database :: class . java . canonical Name , ĊĠĠĠĠĠĠĠ ĠFramework SQLite Open Helper Factory () ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġmigrate 1 1 to 1 2 () Ġ{ ĊĠĠĠĠĠĠĠ Ġdatabase Ġ= Ġhelper . create Database ( TEST _ DB , Ġ 1 1 ). apply Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ( id , source Id , link , title , author , description , genres , status , cover , custom Cover , favorite , last Updated , last Read , data Added , viewer , flags ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexec SQL ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠINSERT ĠINTO Ġlibrary Ġ ĠVALUES Ġ( 0 , 0 ,' google . com ',' test Ġbook ',' my self ',' this Ġis Ġtest ','', 0 ,' ','', 0 , 0 , 0 , 0 , 0 , 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġclose () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠAD DED Ġa Ġtable Id ĊĠĠĠĠĠĠĠ Ġdatabase Ġ= Ġhelper . run Migrations And Validate ( TEST _ DB , Ġ 1 2 , Ġtrue , ĠM IG RATION _ 1 1 _ 1 2 ) ĊĠĠĠĠĠĠĠ Ġval Ġresult Cursor Ġ= Ġdatabase . query (" SELECT Ġ* ĠFROM Ġlibrary ") ĊĠĠĠĠĠĠĠ ĠassertTrue ( result Cursor . moveTo First ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġtable Id Index Ġ= Ġresult Cursor . getColumnIndex (" table Id ") ĊĊĠĠĠĠĠĠĠ Ġval Ġtable Id From Database Ġ= Ġresult Cursor . getLong ( table Id Index ) ĊĠĠĠĠĠĠĠ ĠassertThat ( table Id From Database ). isEqualTo ( 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġmigrate All () Ġ{ ĊĠĠĠĠĠĠĠ Ġhelper . create Database ( TEST _ DB , Ġ 1 2 ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclose () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠOpen Ġlatest Ġversion Ġof Ġthe Ġdatabase . ĠRoom Ġwill Ġvalidate Ġthe Ġschema ĊĠĠĠĠĠĠĠ Ġ// Ġonce Ġall Ġmigrations Ġexecute . ĊĠĠĠĠĠĠĠ ĠRoom . database Builder ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInstrument ation Registry . get Instrumentation (). target Context , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠApp Database :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTEST _ DB ĊĠĠĠĠĠĠĠ Ġ). add Migrations ( M IG RATION _ 1 1 _ 1 2 , ĠM IG RATION _ 1 0 _ 1 1 ). build (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopen Helper . writable Database . close () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ