package Ġme . rus lan ys . if un ny . repository Ċ Ċ import Ġme . rus lan ys . if un ny . base . Redis Repository Tests Ċ import Ġme . rus lan ys . if un ny . channel . De best e Channel Ċ import Ġorg . assertj . core . api . Assertions . assertThat Ċ import Ġorg . junit . jupiter . api . BeforeEach Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġjava . time . Duration Ċ Ċ class ĠPage Repository Tests Ġ: ĠRedis Repository Tests () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġrepository : ĠPage Repository ĊĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġrepository Ġ= ĠPage Repository ( redis Template ) ĊĠĠĠĠĠĠĠ Ġredis Template . execute Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . server Commands (). flush All () ĊĠĠĠĠĠĠĠ Ġ}. block First () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠgetCurrent Should Return First () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġchannel Ġ= ĠDeb este Channel () ĊĠĠĠĠĠĠĠ Ġval ĠcurrentPage Number Ġ= Ġrepository . getCurrent ( channel ). block () ĊĠĠĠĠĠĠĠ ĠassertThat ( currentPage Number ). isEqualTo ( 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠgetCurrent Should Return Pers isted Value () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġchannel Ġ= ĠDeb este Channel () ĊĠĠĠĠĠĠĠ Ġredis Template . ops ForValue (). set ("$ channel : current ", Ġ 7 7 7 ). block () ĊĊĠĠĠĠĠĠĠ Ġval Ġpage Number Ġ= Ġrepository . getCurrent ( channel ). block () ĊĊĠĠĠĠĠĠĠ ĠassertThat ( pageNumber ). isEqualTo ( 7 7 7 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġinc Current Should Return First ByDefault () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġchannel Ġ= ĠDeb este Channel () ĊĊĠĠĠĠĠĠĠ Ġval Ġpage Number Ġ= Ġrepository . inc Current ( channel ). block () ĊĠĠĠĠĠĠĠ ĠassertThat ( pageNumber ). isEqualTo ( 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġinc Current Should Return Sequence () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġchannel Ġ= ĠDeb este Channel () ĊĊĠĠĠĠĠĠĠ ĠassertThat ( repository . inc Current ( channel ). block ()). isEqualTo ( 1 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( repository . inc Current ( channel ). block ()). isEqualTo ( 2 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( repository . inc Current ( channel ). block ()). isEqualTo ( 3 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġinc Current Should Return Next () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġchannel Ġ= ĠDeb este Channel () ĊĠĠĠĠĠĠĠ Ġredis Template . ops ForValue (). set ("$ channel : current ", Ġ 1 2 3 ). block () ĊĊĠĠĠĠĠĠĠ Ġval Ġpage Number Ġ= Ġrepository . inc Current ( channel ). block () ĊĊĠĠĠĠĠĠĠ ĠassertThat ( pageNumber ). isEqualTo ( 1 2 4 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠgetLast Should Return Null If Absent () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlast Ġ= Ġrepository . getLast ( De best e Channel ()). block () ĊĠĠĠĠĠĠĠ ĠassertThat ( last ). isNull () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġlast Page Should Expire () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġchannel Ġ= ĠDeb este Channel () ĊĠĠĠĠĠĠĠ Ġval Ġduration Ġ= ĠDuration . of Seconds ( 2 ) ĊĊĠĠĠĠĠĠĠ Ġrepository . set Last ( channel , Ġ 1 2 3 , Ġduration ). block () ĊĊĠĠĠĠĠĠĠ Ġ// Ġ-- ĊĠĠĠĠĠĠĠ Ġval Ġlast Ġ= Ġrepository . getLast ( channel ). block () ĊĠĠĠĠĠĠĠ ĠassertThat ( last ). isEqualTo ( 1 2 3 ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġ-- ĊĠĠĠĠĠĠĠ ĠThread . sleep ( 3 _ 0 0 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġlast Expired Ġ= Ġrepository . getLast ( channel ). block () ĊĠĠĠĠĠĠĠ ĠassertThat ( last Expired ). isNull () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġclear Current Should Remove Key () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġchannel Ġ= ĠDeb este Channel () ĊĠĠĠĠĠĠĠ Ġval Ġkey Ġ= Ġ"$ channel : current " ĊĊĠĠĠĠĠĠĠ Ġredis Template . ops ForValue (). set ( key , Ġ 1 2 3 ). block () ĊĠĠĠĠĠĠĠ ĠassertThat ( repository . getCurrent ( channel ). block ()). isEqualTo ( 1 2 3 ) ĊĊĠĠĠĠĠĠĠ Ġrepository . clear Current ( channel ). block () ĊĠĠĠĠĠĠĠ ĠassertThat ( redis Template . ops ForValue (). get ( key ). block ()). isNull () ĊĠĠĠ Ġ} ĊĊ Ċ } Ċ