package Ġinfo . met ad ude . kotlin . library . session ize Ċ Ċ import Ġinfo . met ad ude . kotlin . library . session ize . grid table . models .* Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġokhttp 3 . logging . Http Logging Interceptor Ċ import Ġorg . assertj . core . api . Assertions . assertThat Ċ import Ġorg . assertj . core . api . Assertions . fail Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġru . g ild or . coroutines . ret rofit . await Response Ċ Ċ class ĠProduction Api Test Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠBASE _ URL Ġ= Ġ" https :// session ize . com " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠAPI _ KEY Ġ= Ġ" rx af xy j 8 " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Valid ates Ġa Ġconference Ġdays Ġresponse `() Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġservice . get Conference Days ( API _ KEY ). await Response () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconference Days Ġ= Ġresponse . body () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( conference Days ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconference Days ?. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Conference Day ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( t : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfail < Nothing >(" Should Ġnot Ġthrow Ġ$ t ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġassert Conference Day ( conference Day : ĠConference Day ) Ġ{ ĊĠĠĠĠĠĠĠ ĠassertNotNull ( conference Day . date ) ĊĠĠĠĠĠĠĠ ĠassertNotNull ( conference Day . rooms ) ĊĠĠĠĠĠĠĠ Ġconference Day . rooms . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Room ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertNotNull ( conference Day . time Slots ) ĊĠĠĠĠĠĠĠ Ġconference Day . time Slots . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Time Slot ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġassert Room ( room : ĠRoom ) Ġ{ ĊĠĠĠĠĠĠĠ ĠassertNotNull ( room . has Only P len um Sessions ) ĊĠĠĠĠĠĠĠ ĠassertNotNull ( room . id ) ĊĠĠĠĠĠĠĠ ĠassertNotNull ( room . name ) ĊĠĠĠĠĠĠĠ ĠassertNotNull ( room . sessions ) ĊĠĠĠĠĠĠĠ Ġroom . sessions . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Session ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġassert Session ( session : ĠSession ) Ġ{ ĊĠĠĠĠĠĠĠ ĠassertNotNull ( session . categories ) ĊĠĠĠĠĠĠĠ Ġsession . categories . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Category ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// assertNotNull ( session . description ) ĊĠĠĠĠĠĠĠ ĠassertNotNull ( session . ends At ) ĊĠĠĠĠĠĠĠ ĠassertNotNull ( session . id ) ĊĠĠĠĠĠĠĠ ĠassertNotNull ( session . is P len um Session ) ĊĠĠĠĠĠĠĠ ĠassertNotNull ( session . is Service Session ) ĊĠĠĠĠĠĠĠ ĠassertNotNull ( session . room ) ĊĠĠĠĠĠĠĠ ĠassertNotNull ( session . roomId ) ĊĠĠĠĠĠĠĠ ĠassertNotNull ( session . speak ers ) ĊĠĠĠĠĠĠĠ Ġsession . speak ers . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Speaker ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertNotNull ( session . starts At ) ĊĠĠĠĠĠĠĠ ĠassertNotNull ( session . title ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġassert Category ( category : ĠCategory ) Ġ{ ĊĠĠĠĠĠĠĠ ĠassertNotNull ( category . category Items ) ĊĠĠĠĠĠĠĠ Ġcategory . category Items . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Category Item ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertNotNull ( category . id ) ĊĠĠĠĠĠĠĠ ĠassertNotNull ( category . name ) ĊĠĠĠĠĠĠĠ ĠassertNotNull ( category . sort ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġassert Category Item ( category Item : ĠCategory Item ) Ġ{ ĊĠĠĠĠĠĠĠ ĠassertNotNull ( category Item . id ) ĊĠĠĠĠĠĠĠ ĠassertNotNull ( category Item . name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġassert Speaker ( speaker : ĠS peaker ) Ġ{ ĊĠĠĠĠĠĠĠ ĠassertNotNull ( speaker . id ) ĊĠĠĠĠĠĠĠ ĠassertNotNull ( speaker . name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġassert Time Slot ( time Slot : ĠTime Slot ) Ġ{ ĊĠĠĠĠĠĠĠ ĠassertNotNull ( time Slot . rooms ) ĊĠĠĠĠĠĠĠ Ġtime Slot . rooms . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Time Slot Room ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertNotNull ( time Slot . slot Start ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġassert Time Slot Room ( time Slot Room : ĠTime Slot Room ) Ġ{ ĊĠĠĠĠĠĠĠ ĠassertNotNull ( time Slot Room . id ) ĊĠĠĠĠĠĠĠ ĠassertNotNull ( time Slot Room . index ) ĊĠĠĠĠĠĠĠ ĠassertNotNull ( time Slot Room . name ) ĊĠĠĠĠĠĠĠ ĠassertNotNull ( time Slot Room . session ) ĊĠĠĠĠĠĠĠ Ġassert Session ( time Slot Room . session ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠassertNotNull ( it : ĠAny ?) Ġ= ĠassertThat ( it ). isNotNull ĊĊĠĠĠ Ġprivate Ġval Ġservice : ĠSession ize Service Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinterceptor Ġ= ĠHttp Logging Interceptor () ĊĠĠĠĠĠĠĠ Ġinterceptor . level Ġ= ĠHttp Logging Interceptor . Level . BASIC ĊĠĠĠĠĠĠĠ Ġval Ġok HttpClient Ġ= ĠOk HttpClient . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Network Interceptor ( interceptor ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ ĠApi Module . provide Session ize Service ( BASE _ URL , Ġok HttpClient ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ