package Ġke k me ch . k ben . converter Ċ Ċ import Ġke k me ch . k ben . K ben Ċ import Ġke k me ch . k ben . Type Holder Ċ import Ġke k me ch . k ben . domain . Deserialization Context Ċ import Ġke k me ch . k ben . domain . Serialization Context Ċ import Ġke k me ch . k ben . domain . Type Adapter Ċ import Ġke k me ch . k ben . domain . dto . B encode Element Ċ import Ġke k me ch . k ben . domain . dto . B encode Element . B encode ByteString Ċ import Ġke k me ch . k ben . domain . dto . B encode Element . B encode Dictionary Ċ import Ġokhttp 3 . mock webserver . Mock Response Ċ import Ġokhttp 3 . mock webserver . Mock WebServer Ċ import Ġokhttp 3 . mock webserver . Re corded Request Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġretrofit 2 . Call Ċ import Ġretrofit 2 . Response Ċ import Ġretrofit 2 . Ret rofit Ċ import Ġretrofit 2 . http . Body Ċ import Ġretrofit 2 . http . POST Ċ import Ġkotlin . test . assertEquals Ċ Ċ internal Ġclass ĠK ben Converter Factory Test Ġ{ ĊĊĠĠĠ Ġdata Ġclass ĠSome Data Class ( val Ġname : ĠString ?) ĊĊĠĠĠ Ġclass ĠSome Data Class Adapter Ġ: ĠType Adapter < Some Data Class >() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġto B encode ( value : ĠSome Data Class , Ġcontext : ĠSerialization Context ): ĠB encode Element Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠB encode Dictionary ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf NotNull ( value . name ?. let Ġ{ Ġ" name " Ġto ĠB encode ByteString ( it ) Ġ}). toMap (). to Sorted Map () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġfrom B encode ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue : ĠB encode Element , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext : ĠDeserial ization Context , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Holder : ĠType Holder ĊĠĠĠĠĠĠĠ Ġ): ĠSome Data Class Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSome Data Class ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ(( value Ġas ĠB encode Dictionary ). entries [" name "] Ġas ? ĠB encode ByteString )?. asString ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġinterface ĠService Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ@ POST ("/") ĊĠĠĠĠĠĠĠ Ġfun Ġsome Data Class (@ Body Ġimpl : ĠSome Data Class ): ĠCall < Some Data Class > ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Rule ĊĠĠĠ Ġval Ġserver : ĠMock WebServer Ġ= ĠMock WebServer () ĊĊĠĠĠ Ġprivate Ġval Ġservice : ĠService Ġ= Ġcreate Service () ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Service (): ĠService Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġk ben Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠK ben ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Adapters Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSome Data Class :: class Ġto ĠSome Data Class Adapter (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġretrofit : ĠRet rofit Ġ= ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. baseUrl ( server . url ("/ ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( K ben Converter Factory . create ( k ben )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġreturn Ġretrofit . create ( Service :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsome Data Class () Ġ{ ĊĠĠĠĠĠĠĠ Ġserver . enqueue ( Mock Response (). set Body (" d 4 : name 5 : value e ")) ĊĠĠĠĠĠĠĠ Ġval Ġcall : ĠCall < Some Data Class > Ġ= Ġservice . some Data Class ( Some Data Class (" value ")) ĊĠĠĠĠĠĠĠ Ġval Ġresponse : ĠResponse < Some Data Class > Ġ= Ġcall . execute () ĊĠĠĠĠĠĠĠ Ġval Ġbody : ĠSome Data Class Ġ= Ġresponse . body () !! ĊĠĠĠĠĠĠĠ ĠassertEquals (" value ", Ġbody . name ) ĊĠĠĠĠĠĠĠ Ġval Ġrequest : ĠRe corded Request Ġ= Ġserver . take Request () ĊĠĠĠĠĠĠĠ ĠassertEquals (" d 4 : name 5 : value e ", Ġrequest . body . read Utf 8 ()) ĊĠĠĠĠĠĠĠ ĠassertEquals (" application / octet - stream ", Ġrequest . getHeader (" Content - Type ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġserialize Uses Configuration () Ġ{ ĊĠĠĠĠĠĠĠ Ġserver . enqueue ( Mock Response (). set Body (" de ")) ĊĠĠĠĠĠĠĠ Ġservice . some Data Class ( Some Data Class ( null )). execute () ĊĠĠĠĠĠĠĠ Ġval Ġrequest : ĠRe corded Request Ġ= Ġserver . take Request () ĊĠĠĠĠĠĠĠ ĠassertEquals (" de ", Ġrequest . body . read Utf 8 ()) Ġ// ĠNull Ġvalue Ġwas Ġnot Ġserialized . ĊĠĠĠĠĠĠĠ ĠassertEquals (" application / octet - stream ", Ġrequest . getHeader (" Content - Type ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġdeserialize Uses Configuration () Ġ{ ĊĠĠĠĠĠĠĠ Ġserver . enqueue ( Mock Response (). set Body (" de ")) ĊĠĠĠĠĠĠĠ Ġval Ġresponse : ĠResponse < Some Data Class > Ġ= Ġservice . some Data Class ( Some Data Class (" value ")). execute () ĊĠĠĠĠĠĠĠ ĠassertEquals ( null , Ġresponse . body ()?. name ) ĊĠĠĠ Ġ} Ċ }