package Ġpl . gw yn der . general . data . storage . repositories . strategy . reading Ċ Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . do Return Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . mock Ċ import Ġorg . assertj . core . api . Assertions . assertThat Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġpl . gw yn der . general . data . storage . entities . DataStore Context Ċ import Ġpl . gw yn der . general . data . storage . entities . Mock DataStore Entity Ċ import Ġpl . gw yn der . general . data . storage . files . DataStore File Ċ import Ġpl . gw yn der . general . data . storage . files . DataStore File Service Ċ import Ġpl . gw yn der . general . data . storage . parsers . DataStore Entity Parser Ċ import Ġpl . gw yn der . general . data . storage . repositories . strategy . ENT ITIES Ċ import Ġpl . gw yn der . general . data . storage . repositories . strategy . ENTR IES Ċ import Ġpl . gw yn der . general . data . storage . repositories . strategy . ID _ LIST Ċ import Ġjava . io . InputStream ĊĊ Ċ internal Ġclass ĠMulti File DataStore Reading Strategy Test Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġentity Class Ġ= ĠMock DataStore Entity :: class . java ĊĠĠĠ Ġprivate Ġval Ġcontext Ġ= ĠData Store Context ( entity Class ) ĊĠĠĠ Ġprivate Ġval Ġmissing Ġ= Ġ" missing " ĊĠĠĠ Ġprivate Ġval Ġmissing Context Ġ= ĠData Store Context ( entity Class , Ġmissing ) ĊĊĠĠĠ Ġprivate Ġval Ġentity Id Ġ= Ġ" entity " ĊĠĠĠ Ġprivate Ġval Ġentity Ġ= ĠMock DataStore Entity ( entityId ) ĊĠĠĠ Ġprivate Ġval Ġanother Id Ġ= Ġ" another " ĊĠĠĠ Ġprivate Ġval Ġanother Ġ= ĠMock DataStore Entity ( another Id ) ĊĠĠĠ Ġprivate Ġval Ġentities Ids Ġ= Ġset Of ( entityId , Ġanother Id ) ĊĠĠĠ Ġprivate Ġval Ġentities Ġ= Ġset Of ( entity , Ġanother ) ĊĊĠĠĠ Ġprivate Ġval Ġlist Input Ġ= Ġmock < InputStream >() ĊĠĠĠ Ġprivate Ġval Ġlist File Ġ= Ġmock < DataStore File > Ġ{ ĊĠĠĠĠĠĠĠ Ġon Ġ{ Ġinput () Ġ} Ġdo Return Ġlist Input ĊĠĠĠĠĠĠĠ Ġon Ġ{ Ġexists () Ġ} Ġdo Return Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġentity Input Ġ= Ġmock < InputStream >() ĊĠĠĠ Ġprivate Ġval Ġentity File Ġ= Ġmock < DataStore File > Ġ{ ĊĠĠĠĠĠĠĠ Ġon Ġ{ Ġinput () Ġ} Ġdo Return Ġentity Input ĊĠĠĠĠĠĠĠ Ġon Ġ{ Ġexists () Ġ} Ġdo Return Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġanother Input Ġ= Ġmock < InputStream >() ĊĠĠĠ Ġprivate Ġval Ġanother File Ġ= Ġmock < DataStore File > Ġ{ ĊĠĠĠĠĠĠĠ Ġon Ġ{ Ġinput () Ġ} Ġdo Return Ġanother Input ĊĠĠĠĠĠĠĠ Ġon Ġ{ Ġexists () Ġ} Ġdo Return Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġmissing File Ġ= Ġmock < DataStore File > Ġ{ ĊĠĠĠĠĠĠĠ Ġon Ġ{ Ġexists () Ġ} Ġdo Return Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġfile Service Ġ= Ġmock < DataStore File Service > Ġ{ ĊĠĠĠĠĠĠĠ Ġon Ġ{ Ġjson ( ENT ITIES , Ġcontext . name , ĠID _ LIST ) Ġ} Ġdo Return Ġlist File ĊĠĠĠĠĠĠĠ Ġon Ġ{ Ġjson ( ENT ITIES , Ġcontext . name , ĠEN TR IES , Ġentity Id ) Ġ} Ġdo Return Ġentity File ĊĠĠĠĠĠĠĠ Ġon Ġ{ Ġjson ( ENT ITIES , Ġcontext . name , ĠEN TR IES , Ġanother Id ) Ġ} Ġdo Return Ġanother File ĊĠĠĠĠĠĠĠ Ġon Ġ{ Ġjson ( ENT ITIES , Ġmissing Context . name , ĠID _ LIST ) Ġ} Ġdo Return Ġmissing File ĊĠĠĠĠĠĠĠ Ġon Ġ{ Ġjson ( ENT ITIES , Ġmissing Context . name , ĠEN TR IES , Ġentity Id ) Ġ} Ġdo Return Ġmissing File ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġparser Ġ= Ġmock < DataStore Entity Parser > Ġ{ ĊĠĠĠĠĠĠĠ Ġon Ġ{ Ġread Strings ( list Input ) Ġ} Ġdo Return Ġentities Ids ĊĠĠĠĠĠĠĠ Ġon Ġ{ Ġread Single ( entity Input , Ġentity Class ) Ġ} Ġdo Return Ġentity ĊĠĠĠĠĠĠĠ Ġon Ġ{ Ġread Single ( another Input , Ġentity Class ) Ġ} Ġdo Return Ġanother ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġtest Exists Ġ= ĠMulti File DataStore Reading Strategy ( file Service , Ġparser , Ġcontext ) ĊĠĠĠ Ġprivate Ġval Ġtest Missing Ġ= ĠMulti File DataStore Reading Strategy ( file Service , Ġparser , Ġmissing Context ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġall Exists () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġtest Exists . all () ĊĠĠĠĠĠĠĠ ĠassertThat ( result ). contains Exactly In Any Order (* entities . to Typed Array ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġall Missing () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġtest Missing . all () ĊĠĠĠĠĠĠĠ ĠassertThat ( result ). isEmpty () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsing Exists () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġtest Exists . single ( entityId ) ĊĠĠĠĠĠĠĠ ĠassertThat ( result . isPresent ). isTrue () ĊĠĠĠĠĠĠĠ ĠassertThat ( result . get ()). isEqualTo ( entity ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsingle Missing () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġtest Missing . single ( entityId ) ĊĠĠĠĠĠĠĠ ĠassertThat ( result . isPresent ). isFalse () ĊĠĠĠ Ġ} Ċ Ċ } Ċ