package Ġorg . ion project . integration . application . job . task let Ċ Ċ import Ġorg . ion project . integration . application . dispatcher . Dispatch Result Ċ import Ġorg . ion project . integration . application . dispatcher . ID is patch er Ċ import Ġorg . ion project . integration . application . job . I SEL Time table Job Ċ import Ġorg . ion project . integration . application . job . chunk based . Spring Batch TestUtils Ċ import Ġorg . ion project . integration . domain . common . Program me Ċ import Ġorg . ion project . integration . domain . common . School Ċ import Ġorg . ion project . integration . domain . common . dto . Program me Dto Ċ import Ġorg . ion project . integration . domain . common . dto . School Dto Ċ import Ġorg . ion project . integration . domain . timetable . Time table Ċ import Ġorg . ion project . integration . domain . timetable . Time table Te achers Ċ import Ġorg . ion project . integration . domain . timetable . dto . Time table Dto Ċ import Ġorg . junit . jupiter . api . Assertions . assertEquals Ċ import Ġorg . junit . jupiter . api . BeforeEach Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . mockito . junit . Mockito JUnit Runner Ċ import Ġorg . mockito . kotlin . any Ċ import Ġorg . mockito . kotlin . do Return Ċ import Ġorg . mockito . kotlin . mock Ċ import Ġorg . springframework . batch . core . Step Contribution Ċ import Ġorg . springframework . batch . core . Step Execution Ċ import Ġorg . springframework . batch . core . scope . context . Chunk Context Ċ import Ġorg . springframework . batch . repeat . Repeat Status Ċ import Ġorg . springframework . batch . test . MetaData Instance Factory Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġorg . springframework . boot . test . context . SpringBootTest Ċ import Ġjava . time . Z onedDateTime Ċ Ċ internal Ġclass ĠWrite File Task let Test Fixtures Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtime table Te achers Ġ= ĠTime table Te achers ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTime table ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠZ onedDateTime . parse (" 2 0 2 1 - 0 4 - 2 1 T 2 0 : 4 9 : 1 6 Z "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠZ onedDateTime . parse (" 2 0 2 1 - 0 4 - 2 1 T 2 0 : 4 9 : 1 6 Z "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSchool ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" INST IT UTO ĠSUP ER IOR ĠDE ĠEN GEN H AR IA ĠDE ĠL IS BO A ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" I SEL " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProgram me ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Lic enci atura Ġem ĠEng en har ia ĠInform Ã¡t ica Ġe Ġde ĠComput adores ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" LE IC " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 2 0 2 0 - 2 0 2 1 - 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" LE IC 1 1 Da ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ RunWith ( Mockito JUnit Runner :: class ) Ċ @ SpringBootTest Ċ Ċ class ĠWrite File Task let Tests Ġ{ ĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġstate : ĠI SEL Time table Job . State ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġwrite File Task let Success : ĠWrite File Task let ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġwrite File Task let Failure : ĠWrite File Task let ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġstep Contribution : ĠStep Contribution ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġchunk Context : ĠChunk Context ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtime table Dto : ĠTime table Dto ĊĊĠĠĠ Ġval Ġmock Dispatcher Success Ġ= Ġmock < ID is patch er > Ġ{ ĊĠĠĠĠĠĠĠ Ġon Ġ{ Ġdispatch ( any (), Ġany (), Ġany ()) Ġ} Ġdo Return ĠDispatch Result . SUCCESS ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġmock Dispatcher Failure Ġ= Ġmock < ID is patch er > Ġ{ ĊĠĠĠĠĠĠĠ Ġon Ġ{ Ġdispatch ( any (), Ġany (), Ġany ()) Ġ} Ġdo Return ĠDispatch Result . FAILURE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġtime table Dto Ġ= ĠTime table Dto ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 2 0 2 1 - 0 4 - 2 1 T 2 0 : 4 9 : 1 6 + 0 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 2 0 2 1 - 0 4 - 2 1 T 2 0 : 4 9 : 1 6 + 0 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSchool Dto ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" INST IT UTO ĠSUP ER IOR ĠDE ĠEN GEN H AR IA ĠDE ĠL IS BO A ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" I SEL " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠProgram me Dto ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Lic enci atura Ġem ĠEng en har ia ĠInform Ã¡t ica Ġe Ġde ĠComput adores ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" LE IC " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 2 0 2 0 - 2 0 2 1 - 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġstep Contribution Ġ= ĠStep Contribution ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠStep Execution ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" WriteFile Task let Tests ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMeta Data Instance Factory . create Job Execution () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġchunk Context Ġ= ĠSpring Batch TestUtils (). create Chunk Context () ĊĊĠĠĠĠĠĠĠ Ġstate . timetable Te achers Ġ= ĠWrite File Task let Test Fixtures . timetable Te achers ĊĠĠĠĠĠĠĠ Ġwrite File Task let Success Ġ= ĠWrite File Task let ( mock Dispatcher Success ) ĊĠĠĠĠĠĠĠ Ġwrite File Task let Failure Ġ= ĠWrite File Task let ( mock Dispatcher Failure ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` when Ġdispatcher Ġreturns Ġsuccess Ġthen Ġexecute Ġtask let Ġexecution Ġends `() Ġ{ ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( Repeat Status . FINISHED , Ġwrite File Task let Success . execute ( step Contribution , Ġchunk Context )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` when Ġdispatcher Ġreturns Ġfailure Ġthen Ġexecute Ġtask let Ġexecution Ġends `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( Repeat Status . FINISHED , Ġwrite File Task let Failure . execute ( step Contribution , Ġchunk Context )) ĊĠĠĠ Ġ} Ċ } Ċ