package Ġio . el ders c roll s leg ends Ċ Ċ import Ġio . mock k . every Ċ import Ġio . mock k . mock k Ċ import Ġio . mock k . slot Ċ import Ġk ong . un ire st .* Ċ import Ġorg . assertj . core . api . Assertions . assertThat Ċ import Ġorg . junit . jupiter . api . BeforeEach Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġjava . util . function . Function Ċ Ċ class ĠAttribute Tests Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġclient : ĠClient ĊĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġfun Ġbefore () Ġ{ ĊĠĠĠĠĠĠĠ Ġclient Ġ= Ġmock k () ĊĠĠĠĠĠĠĠ ĠUn ire st Initializer . set Client ( client ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` all () Ġreturns Ġall Ġattributes `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġmock k < HttpResponse < JsonNode >>() ĊĠĠĠĠĠĠĠ Ġval Ġattributes Ġ= ĠString ( this :: class . java . getResource ("/ attributes . json "). read Bytes ()) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġclient . request ( any (), Ġany < Function < Raw Response , ĠHttpResponse < JsonNode >>> ()) Ġ} Ġreturns Ġresponse ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġresponse . is Success Ġ} Ġreturns Ġtrue ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġresponse . body Ġ} Ġreturns ĠJsonNode ( attributes ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġwhen ĊĠĠĠĠĠĠĠ Ġval Ġall Attributes Ġ= ĠAttribute . all () ĊĊĠĠĠĠĠĠĠ Ġ// Ġthen ĊĠĠĠĠĠĠĠ ĠassertThat ( all Attributes ). isEqualTo ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ag ility ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" End urance ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Int elligence ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Neutral ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Strength ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Will power " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` all Ġinvokes Ġcorrect Ġapi Ġcalls Ġover Ġmultiple Ġpages Ġwhen Ġno Ġpage Ġis Ġspecified Ġand Ġassemb les Ġthem Ġinto Ġsingle Ġlist `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġmock k < HttpResponse < JsonNode >>() ĊĠĠĠĠĠĠĠ Ġval Ġattr 1 Ġ= ĠString ( this :: class . java . getResource ("/ attributes - page 1 . json "). read Bytes ()) ĊĠĠĠĠĠĠĠ Ġval Ġattr 2 Ġ= ĠString ( this :: class . java . getResource ("/ attributes - page 2 . json "). read Bytes ()) ĊĠĠĠĠĠĠĠ Ġval Ġattr 3 Ġ= ĠString ( this :: class . java . getResource ("/ attributes - page 3 . json "). read Bytes ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġcaptured HttpRequest Ġ= Ġslot < HttpRequest <* >>() ĊĠĠĠĠĠĠĠ Ġval Ġrequests Ġ= Ġmutable ListOf < HttpRequest <* >>() ĊĠĠĠĠĠĠĠ Ġevery Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient . request ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcapture ( captured HttpRequest ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġany < Function < Raw Response , ĠHttpResponse < JsonNode >> >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġanswers Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequests . add ( captured HttpRequest . captured ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġresponse . is Success Ġ} Ġreturns Ġtrue ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġresponse . body Ġ} Ġreturns Many ĠlistOf ( JsonNode ( attr 1 ), ĠJsonNode ( attr 2 ), ĠJsonNode ( attr 3 )) ĊĊĠĠĠĠĠĠĠ Ġ// Ġwhen ĊĠĠĠĠĠĠĠ Ġval Ġall Attributes Ġ= ĠAttribute . all () ĊĊĠĠĠĠĠĠĠ ĠassertThat ( requests . map Ġ{ Ġit . url Ġ}). isEqualTo ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" https :// api . el ders c roll s leg ends . io / v 1 / attributes ? page = 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" https :// api . el ders c roll s leg ends . io / v 1 / attributes ? page = 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" https :// api . el ders c roll s leg ends . io / v 1 / attributes ? page = 3 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( all Attributes ). isEqualTo ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ag ility ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" End urance ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Int elligence ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Neutral ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Strength ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Will power " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġ} Ċ Ċ } Ċ