package Ġapp . load . map reduce Ċ Ċ import Ġapp . load . domain . Data Key Result Ċ import Ġapp . load . domain . Encryption Result Ċ import Ġapp . load . services . Cipher Service Ċ import Ġapp . load . services . Filter Service Ċ import Ġcom . google . gson . Gson Ċ import Ġcom . google . gson . Gson Builder Ċ import Ġcom . google . gson . Json Primitive Ċ import Ġcom . n ha ar man . mock it ok otlin 2 .* Ċ import Ġio . kot est . core . spec . style . String Spec Ċ import Ġio . kot est . matchers . shouldBe Ċ Ċ class ĠMap Utility Impl Test : ĠString Spec () Ġ{ ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġ" Object Ġis Ġupdated Ġprior Ġto Ġencryption " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdate Ġ= Ġ"\ $ date " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalid Json Ġ= Ġ""" { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġ"_ id ": Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġ" declaration Id ":" 8 7 a 4 fad 9 - 4 9 af - 4 cb 2 - 9 1 b 0 - 0 0 5 6 e 2 ac 0 eef ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġ" created DateTime ": Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠĠĠĠ Ġ"$ date ": Ġ" 2 0 0 0 - 0 1 - 0 1 T 0 0 : 0 0 : 0 0 . 0 0 0 Z " ĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġ" nul lf ield ": Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġ" type ":" address Declaration ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġ"_ lastModified DateTime ": Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠĠĠĠ Ġ"$ date ": Ġ" 2 0 1 0 - 0 1 - 0 1 T 0 0 : 0 0 : 0 0 . 0 0 0 Z " ĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| } """. trim Margin () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Ġ= ĠGson (). fromJson ( valid Json , Ġcom . google . gson . JsonObject :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdump Line Ġ= Ġjson . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgson Ġ= ĠGson Builder (). serialize Null s (). create () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Key Result Ġ= ĠData Key Result (" data Key Encryption KeyId ", Ġ" plaintext Data Key ", Ġ" ciphertext Data Key ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġencryption Result Ġ= ĠEncryption Result (" initial isation Vector ", Ġ" encrypted ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcipher Service Ġ= Ġmock < Cipher Service > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Ġ{ Ġencrypt ( any (), Ġany ()) Ġ} Ġdo Return Ġencryption Result ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfilter Service Ġ= Ġmock < Filter Service > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Ġ{ Ġfilter Status ( any ()) } Ġdo Return ĠFilter Service . Filter Status . DoNot Filter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmap Utility Ġ= ĠMap Utility Impl ( cipher Service , Ġfilter Service ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Utility . mapped Record ( gson , Ġdata Key Result , Ġdump Line ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Key Captor Ġ= Ġargument Captor < String >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġline Captor Ġ= Ġargument Captor < ByteArray >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( cipher Service , Ġtimes ( 1 )). encrypt ( data Key Captor . capture (), Ġline Captor . capture ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexpected Argument Json Ġ= Ġ""" { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġ" type ":" address Declaration ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġ"_ id ": Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġ" declaration Id ":" 8 7 a 4 fad 9 - 4 9 af - 4 cb 2 - 9 1 b 0 - 0 0 5 6 e 2 ac 0 eef ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġ" created DateTime ": Ġ" 2 0 0 0 - 0 1 - 0 1 T 0 0 : 0 0 : 0 0 . 0 0 0 + 0 0 0 0 " ĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġ" nul lf ield ": Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġ"_ lastModified DateTime ": Ġ" 2 0 1 0 - 0 1 - 0 1 T 0 0 : 0 0 : 0 0 . 0 0 0 + 0 0 0 0 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| } """. trim Margin () ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠGson (). fromJson ( String ( line Captor . first Value ), Ġcom . google . gson . JsonObject :: class . java ) ĠshouldBe ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGson (). fromJson ( expected Argument Json , Ġcom . google . gson . JsonObject :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" Id Ġobject Ġreturned Ġas Ġobject " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcipher Service Ġ= Ġmock < Cipher Service >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfilter Service Ġ= Ġmock < Filter Service >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmap Utility Ġ= ĠMap Utility Impl ( cipher Service , Ġfilter Service ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġcom . google . gson . JsonObject () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid . addProperty (" key ", Ġ" value ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexpected Id Ġ= ĠGson (). toJson ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ( actual Id , Ġactual Modified ) Ġ= Ġmap Utility . normal ised Id ( Gson (), Ġid ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpected Id ĠshouldBe Ġactual Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Modified ĠshouldBe ĠMap Utility Impl . Companion . Id Modification . Un modified ObjectId ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" test Id Object With Inner Created Date In Kafka Format Returned As Object With Flatten ed Date In Kafka Format " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Id Object With Inner Date In Kafka Format Returned As Object With Flatten ed Date In Kafka Format ( Map Utility Impl . CREATED _ DATE _ TIME _ FIELD ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" test Id Object With Inner ModifiedDate In Kafka Format Returned As Object With Flatten ed Date In Kafka Format " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Id Object With Inner Date In Kafka Format Returned As Object With Flatten ed Date In Kafka Format ( Map Utility Impl . LAST _ MODI FIED _ DATE _ TIME _ FIELD ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" test Id Object With Inner Removed Date In Kafka Format Returned As Object With Flatten ed Date In Kafka Format " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Id Object With Inner Date In Kafka Format Returned As Object With Flatten ed Date In Kafka Format ( Map Utility Impl . RE MOVED _ DATE _ TIME _ FIELD ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" test Id Object With Inner Arch ived Date In Kafka Format Returned As Object With Flatten ed Date In Kafka Format " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Id Object With Inner Date In Kafka Format Returned As Object With Flatten ed Date In Kafka Format ( Map Utility Impl . ARCH IVED _ DATE _ TIME _ FIELD ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" test Id Object With Inner Created Date In Dump Format Returned As Object With Flatten ed Date In Kafka Format " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Id Object With Inner Date In Dump Format Returned As Object With Flatten ed Date In Kafka Format ( Map Utility Impl . CREATED _ DATE _ TIME _ FIELD ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" test Id Object With Inner ModifiedDate In Dump Format Returned As Object With Flatten ed Date In Kafka Format " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Id Object With Inner Date In Dump Format Returned As Object With Flatten ed Date In Kafka Format ( Map Utility Impl . LAST _ MODI FIED _ DATE _ TIME _ FIELD ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" test Id Object With Inner Removed Date In Dump Format Returned As Object With Flatten ed Date In Kafka Format " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Id Object With Inner Date In Dump Format Returned As Object With Flatten ed Date In Kafka Format ( Map Utility Impl . RE MOVED _ DATE _ TIME _ FIELD ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" test Id Object With Inner Arch ived Date In Dump Format Returned As Object With Flatten ed Date In Kafka Format " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Id Object With Inner Date In Dump Format Returned As Object With Flatten ed Date In Kafka Format ( Map Utility Impl . ARCH IVED _ DATE _ TIME _ FIELD ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" test Id Object With Inner Created DateString Returned Un changed " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Id Object With Inner DateString Returned Un changed ( Map Utility Impl . CREATED _ DATE _ TIME _ FIELD ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" test Id Object With Inner ModifiedDate String Returned Un changed " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Id Object With Inner DateString Returned Un changed ( Map Utility Impl . LAST _ MODI FIED _ DATE _ TIME _ FIELD ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" test Id Object With Inner Removed DateString Returned Un changed " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Id Object With Inner DateString Returned Un changed ( Map Utility Impl . RE MOVED _ DATE _ TIME _ FIELD ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" test Id Object With Inner Arch ived DateString Returned Un changed " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Id Object With Inner DateString Returned Un changed ( Map Utility Impl . ARCH IVED _ DATE _ TIME _ FIELD ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" test Id String Returned AsString " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmap Utility Ġ= ĠMap Utility Impl ( mock (), Ġmock ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= ĠJson Primitive (" id ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġmap Utility . normal ised Id ( Gson (), Ġid ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual ĠshouldBe ĠPair (" id ", ĠMap Utility Impl . Companion . Id Modification . Un modified String Id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" test Mongo Id String Returned AsString " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmap Utility Ġ= ĠMap Utility Impl ( mock (), Ġmock ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoid Ġ= Ġcom . google . gson . JsonObject () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoid Value Ġ= Ġ" OID _ VALUE " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoid . addProperty ("\ $ oid ", Ġoid Value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġmap Utility . normal ised Id ( Gson (), Ġoid ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual ĠshouldBe ĠPair ( oid Value , ĠMap Utility Impl . Companion . Id Modification . Flatten ed Mongo Id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" test Id Number Returned As Object " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmap Utility Ġ= ĠMap Utility Impl ( mock (), Ġmock ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= ĠJson Primitive ( Ġ 1 2 3 4 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġmap Utility . normal ised Id ( Gson (), Ġid ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexpected Id Ġ= Ġ" 1 2 3 4 5 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual ĠshouldBe ĠPair ( expected Id , ĠMap Utility Impl . Companion . Id Modification . Un modified String Id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" test Id Array Returned As Null " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmap Utility Ġ= ĠMap Utility Impl ( mock (), Ġmock ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġarray Value Ġ= Ġcom . google . gson . JsonArray () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarray Value . add (" 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarray Value . add (" 2 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġmap Utility . normal ised Id ( Gson (), Ġarray Value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĠPair ("", ĠMap Utility Impl . Companion . Id Modification . Invalid Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual ĠshouldBe Ġexpected ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" test Id Null Returned As Empty " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmap Utility Ġ= ĠMap Utility Impl ( mock (), Ġmock ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnull Value Ġ= Ġcom . google . gson . Json Null . INSTANCE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġmap Utility . normal ised Id ( Gson (), Ġnull Value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĠPair ("", ĠMap Utility Impl . Companion . Id Modification . Invalid Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual ĠshouldBe Ġexpected ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" test Over writeField Value Over writes Correct Value " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmap Utility Ġ= ĠMap Utility Impl ( mock (), Ġmock ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġ" OID _ W REN CH ED _ FROM _ MONGO _ ID " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlast Modified DateTime Ġ= Ġ" DATETIME _ W REN CH ED _ FROM _ MONGO _ ID " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlast Modified DateTime New Ġ= Ġ" NEW _ DATETIME " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġobj Ġ= Ġcom . google . gson . JsonObject () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobj . addProperty ("_ id ", Ġid ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobj . addProperty ("_ lastModified DateTime ", Ġlast Modified DateTime ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobj . addProperty (" other ", Ġ" TEST ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġcom . google . gson . JsonObject () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpected . addProperty ("_ id ", Ġid ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpected . addProperty ("_ lastModified DateTime ", Ġlast Modified DateTime New ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpected . addProperty (" other ", Ġ" TEST ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġmap Utility . over writeField Value ("_ lastModified DateTime ", Ġlast Modified DateTime New , Ġobj ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual ĠshouldBe Ġexpected ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" test Over writeField With Object Over writes Correct Value " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmap Utility Ġ= ĠMap Utility Impl ( mock (), Ġmock ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= ĠGson (). fromJson (""" { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġ" key 1 ": Ġ" val 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġ" key 2 ": Ġ" val 2 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| } """. trim Margin (), Ġcom . google . gson . JsonObject :: class . java ) ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġobj Ġ= ĠGson (). fromJson (""" { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġ"_ id ": Ġ" OLD _ ID ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġ" other _ field ": Ġ" OTHER _ FIELD _ VALUE " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| } """. trim Margin (), Ġcom . google . gson . JsonObject :: class . java ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġmap Utility . over writeField Value With Object ("_ id ", Ġid , Ġobj ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĠGson (). fromJson (""" { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠ Ġ"_ id ": Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠ Ġ" key 1 ": Ġ" val 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠ Ġ" key 2 ": Ġ" val 2 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠ Ġ" other _ field ": Ġ" OTHER _ FIELD _ VALUE " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} """. trim Margin (), Ġcom . google . gson . JsonObject :: class . java ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual ĠshouldBe Ġexpected ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" test Copy When Field Exists In Source But Not Target " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmap Utility Ġ= ĠMap Utility Impl ( mock (), Ġmock ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsource Record Ġ= ĠGson (). fromJson (""" { Ġ" SOURCE _ KEY ": Ġ" SOURCE _ VALUE " Ġ} """, Ġcom . google . gson . JsonObject :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtarget Record Ġ= ĠGson (). fromJson (""" { Ġ" TARGET _ KEY ": Ġ" TARGET _ VALUE " Ġ} """, Ġcom . google . gson . JsonObject :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĠGson (). fromJson (""" { Ġ" SOURCE _ KEY ": Ġ" SOURCE _ VALUE ", Ġ" TARGET _ KEY ": Ġ" TARGET _ VALUE " Ġ} """, Ġcom . google . gson . JsonObject :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Utility . copy Field (" SOURCE _ KEY ", Ġsource Record , Ġtarget Record ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Record ĠshouldBe Ġexpected ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" test Copy When Field Exists In Source And Target " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmap Utility Ġ= ĠMap Utility Impl ( mock (), Ġmock ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsource Record Ġ= ĠGson (). fromJson (""" { Ġ" SHARED _ KEY ": Ġ" SOURCE _ VALUE " Ġ} """, Ġcom . google . gson . JsonObject :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtarget Record Ġ= ĠGson (). fromJson (""" { Ġ" SHARED _ KEY ": Ġ" TARGET _ VALUE " Ġ} """, Ġcom . google . gson . JsonObject :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĠGson (). fromJson (""" { Ġ" SHARED _ KEY ": Ġ" SOURCE _ VALUE " Ġ} """, Ġcom . google . gson . JsonObject :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Utility . copy Field (" SHARED _ KEY ", Ġsource Record , Ġtarget Record ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Record ĠshouldBe Ġexpected ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" test Copy When Field NotIn Source " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmap Utility Ġ= ĠMap Utility Impl ( mock (), Ġmock ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsource Record Ġ= ĠGson (). fromJson (""" { Ġ" SOURCE _ KEY ": Ġ" SOURCE _ VALUE " Ġ} """, Ġcom . google . gson . JsonObject :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtarget Record Ġ= ĠGson (). fromJson (""" { Ġ" TARGET _ KEY ": Ġ" TARGET _ VALUE " Ġ} """, Ġcom . google . gson . JsonObject :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĠGson (). fromJson (""" { Ġ" TARGET _ KEY ": Ġ" TARGET _ VALUE " Ġ} """, Ġcom . google . gson . JsonObject :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Utility . copy Field (" AB SENT _ KEY ", Ġsource Record , Ġtarget Record ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Record ĠshouldBe Ġexpected ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtest Id Object With Inner Date In Kafka Format Returned As Object With Flatten ed Date In Kafka Format ( date Field : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmap Utility Ġ= ĠMap Utility Impl ( mock (), Ġmock ()) ĊĠĠĠĠĠĠĠ Ġval Ġdate Inner Field Ġ= Ġ"\ $ date " ĊĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" id ": Ġ" ID ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ date Field ": Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ$ date Inner Field : Ġ" 2 0 1 9 - 0 8 - 0 5 T 0 2 : 1 0 : 1 9 . 8 8 7 + 0 0 0 0 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠĠĠĠĠ Ġval Ġoriginal Id Ġ= ĠGson (). fromJson ( id , Ġcom . google . gson . JsonObject :: class . java ) ĊĠĠĠĠĠĠĠ Ġval Ġcopy Of Original Id Ġ= Ġoriginal Id . deep Copy () ĊĠĠĠĠĠĠĠ Ġval Ġ( actual Id , Ġactual Modified ) Ġ= Ġmap Utility . normal ised Id ( Gson (), Ġoriginal Id ) ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected Id Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" id ": Ġ" ID ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ date Field ": Ġ" 2 0 1 9 - 0 8 - 0 5 T 0 2 : 1 0 : 1 9 . 8 8 7 + 0 0 0 0 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠĠĠĠĠ Ġactual Id ĠshouldBe ĠGson (). fromJson ( expected Id , Ġcom . google . gson . JsonObject :: class . java ). toString () ĊĠĠĠĠĠĠĠ Ġactual Modified ĠshouldBe ĠMap Utility Impl . Companion . Id Modification . Flatten ed Inner Date ĊĠĠĠĠĠĠĠ Ġcopy Of Original Id ĠshouldBe Ġoriginal Id ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtest Id Object With Inner Date In Dump Format Returned As Object With Flatten ed Date In Kafka Format ( date Field : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinner Date Field Ġ= Ġ"\ $ date " ĊĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" id ": Ġ" ID ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ date Field ": Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ$ inner Date Field : Ġ" 2 0 1 9 - 0 8 - 0 5 T 0 2 : 1 0 : 1 9 . 8 8 7 Z " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠĠĠĠĠ Ġval Ġmap Utility Ġ= ĠMap Utility Impl ( mock (), Ġmock ()) ĊĠĠĠĠĠĠĠ Ġval Ġ( actual Id , Ġactual Modified ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap Utility . normal ised Id ( Gson (), ĠGson (). fromJson ( id , Ġcom . google . gson . JsonObject :: class . java )) ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected Id Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" id ": Ġ" ID ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ date Field ": Ġ" 2 0 1 9 - 0 8 - 0 5 T 0 2 : 1 0 : 1 9 . 8 8 7 + 0 0 0 0 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠĠĠĠĠ Ġactual Id ĠshouldBe ĠGson (). fromJson ( expected Id , Ġcom . google . gson . JsonObject :: class . java ). toString () ĊĠĠĠĠĠĠĠ Ġactual Modified ĠshouldBe ĠMap Utility Impl . Companion . Id Modification . Flatten ed Inner Date ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtest Id Object With Inner DateString Returned Un changed ( date Field : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmap Utility Ġ= ĠMap Utility Impl ( mock (), Ġmock ()) ĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" id ": Ġ" ID ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ date Field ": Ġ" EMB ED DED _ DATE _ FIELD " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠĠĠĠĠ Ġval Ġ( actual Id , Ġactual Modified ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap Utility . normal ised Id ( Gson (), ĠGson (). fromJson ( id , Ġcom . google . gson . JsonObject :: class . java )) ĊĊĠĠĠĠĠĠĠ Ġactual Id ĠshouldBe ĠGson (). fromJson ( id , Ġcom . google . gson . JsonObject :: class . java ). toString () ĊĠĠĠĠĠĠĠ Ġactual Modified ĠshouldBe Ġ ĠMap Utility Impl . Companion . Id Modification . Un modified ObjectId ĊĠĠĠ Ġ} Ċ Ċ } Ċ