package Ġru . ot us . ot us kotlin . marketplace . transport . k mp . models Ċ Ċ import Ġkotlinx . serialization . encode ToString Ċ import Ġkotlinx . serialization . json . Json Ċ import Ġkotlinx . serialization . modules . Serial izers Module Ċ import Ġkotlinx . serialization . modules . pol ymorphic Ċ import Ġru . ot us . ot us kotlin . marketplace . transport . k mp . models . common . Mp Message Ċ import Ġru . ot us . ot us kotlin . marketplace . transport . k mp . models . common . Tech Det s Dto Ċ import Ġru . ot us . ot us kotlin . marketplace . transport . k mp . models . demand s . Mp Demand Create Dto Ċ import Ġru . ot us . ot us kotlin . marketplace . transport . k mp . models . demand s . Mp Request Demand Create Ċ import Ġkotlin . test . Test Ċ import Ġkotlin . test . assertEquals Ċ import Ġkotlin . test . assertTrue Ċ Ċ class ĠSerialization Test Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġserialize Mp Request Demand Create Test (){ ĊĠĠĠĠĠĠĠ Ġval Ġjson Ġ= ĠJson Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpretty Print Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġdto Ġ= ĠM p Request Demand Create ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠrequestId Ġ= Ġ" create - id ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartTime Ġ= Ġ" 2 0 2 1 - 0 2 - 1 3 T 1 2 : 0 0 : 0 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Data Ġ= ĠM p Demand Create Dto ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" demand - 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" some Ġdescription ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtech Det s Ġ= Ġset Of ( Tech Det s Dto ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġ" tech - det - id " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġserialized String Ġ= Ġjson . encode ToString ( Mp Request Demand Create . serializer (), Ġdto ) ĊĠĠĠĠĠĠĠ Ġprintln ( serialized String ) ĊĠĠĠĠĠĠĠ ĠassertTrue Ġ{ Ġserialized String . contains (" demand - 1 ") Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġdeserialized Dto Ġ= Ġjson . decode FromString ( Mp Request Demand Create . serializer (), Ġserialized String ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" tech - det - id ", Ġdeserialized Dto . create Data ?. tech Det s ?. first OrNull ()?. id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġserialize Mp Request Test (){ ĊĠĠĠĠĠĠĠ Ġval Ġjson Request Ġ= ĠJson Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpretty Print Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġserializers Module Ġ= ĠSerial izers Module Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpol ymorphic ( Mp Message :: class ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsubclass ( Mp Request Demand Create :: class , ĠM p Request Demand Create . serializer ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass Discriminator Ġ= Ġ" type " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġdto : Mp Message Ġ= ĠM p Request Demand Create ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠrequestId Ġ= Ġ" create - id ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartTime Ġ= Ġ" 2 0 2 1 - 0 2 - 1 3 T 1 2 : 0 0 : 0 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Data Ġ= ĠM p Demand Create Dto ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" demand - 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" some Ġdescription ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtech Det s Ġ= Ġset Of ( Tech Det s Dto ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġ" tech - det - id " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġserialized String Ġ= Ġjson Request . encode ToString ( dto ) ĊĠĠĠĠĠĠĠ Ġprintln ( serialized String ) ĊĠĠĠĠĠĠĠ ĠassertTrue Ġ{ Ġserialized String . contains (" demand - 2 ") Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġdeserialized Dto Ġ= Ġjson Request . decode FromString ( Mp Message . serializer (), Ġserialized String ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" tech - det - id ", Ġ( de serialized Dto Ġas ? ĠM p Request Demand Create )?. create Data ?. tech Det s ?. first OrNull ()?. id ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ