package Ġdev . e vo . kafka . elasticsearch Ċ Ċ import Ġio . kot est . assertions . throw ables . should Throw Ċ import Ġio . kot est . core . spec . style . String Spec Ċ import Ġio . kot est . matchers . shouldBe Ċ Ċ import Ġkotlinx . serialization . json . build JsonObject Ċ import Ġkotlinx . serialization . json . put Ċ import Ġkotlinx . serialization . json . put JsonObject Ċ Ċ import Ġorg . apache . kafka . common . header . internals . Record Headers Ċ import Ġorg . apache . kafka . connect . errors . DataException Ċ Ċ class ĠJson Converter Tests Ġ: ĠString Spec ({ ĊĠĠĠ Ġval Ġconverter Ġ= ĠJson Converter (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġconfigure ( mutable Map Of < String , ĠAny >(), Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" not Ġconfigured " Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnot Configured Converter Ġ= ĠJson Converter () ĊĠĠĠĠĠĠĠ Ġshould Throw < Un initialized Property AccessException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnot Configured Converter . to Connect Data ("< test >", Ġnull , Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" deserialize Ġmissing Ġaction " Ġ{ ĊĠĠĠĠĠĠĠ Ġshould Throw < DataException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconverter . to Connect Data ("< test >", ĠRecord Headers (), Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" deserialize Ġindex Ġaction " Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġheaders Ġ= ĠRecord Headers (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" action ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" {" index ": Ġ{" _ id ": Ġ" 1 2 3 ", Ġ"_ type ": Ġ"_ doc ", Ġ"_ index ": Ġ" test ", Ġ" routing ": Ġ" 4 5 6 "}} """. toByteArray () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġconnect Data Ġ= Ġconverter . to Connect Data ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"< test >", Ġheaders , Ġ""" {" name ": Ġ" Test "} """. toByteArray () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġconnect Data . schema () ĠshouldBe Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġaction Ġ= Ġconnect Data . value () Ġas ĠBulk Action ĊĠĠĠĠĠĠĠ Ġaction ĠshouldBe ĠBulk Action . Index ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġ" 1 2 3 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġ"_ doc ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindex Ġ= Ġ" test ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrouting Ġ= Ġ" 4 5 6 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsource Ġ= ĠJson Source ( build JsonObject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput (" name ", Ġ" Test ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" deserialize Ġindex Ġaction Ġwithout Ġsource " Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġheaders Ġ= ĠRecord Headers (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" action ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" {" index ": Ġ{" _ id ": Ġ" 1 2 3 ", Ġ"_ type ": Ġ"_ doc "}} """. toByteArray () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġshould Throw < DataException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconverter . to Connect Data ("< test >", Ġheaders , Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" deserialize Ġdelete Ġaction " Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġheaders Ġ= ĠRecord Headers (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" action ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" {" delete ": Ġ{" _ id ": Ġ" 1 2 3 ", Ġ"_ type ": Ġ"_ doc ", Ġ"_ index ": Ġ" test ", Ġ" routing ": Ġ" 4 5 6 "}} """. toByteArray () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġconnect Data Ġ= Ġconverter . to Connect Data ("< test >", Ġheaders , Ġnull ) ĊĠĠĠĠĠĠĠ Ġconnect Data . schema () ĠshouldBe Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġaction Ġ= Ġconnect Data . value () Ġas ĠBulk Action ĊĠĠĠĠĠĠĠ Ġaction ĠshouldBe ĠBulk Action . Delete ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġ" 1 2 3 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġ"_ doc ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindex Ġ= Ġ" test ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrouting Ġ= Ġ" 4 5 6 ", ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" deserialize Ġupdate Ġaction " Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġheaders Ġ= ĠRecord Headers (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" action ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" update ": Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"_ id ": Ġ" 1 2 3 ", Ġ"_ type ": Ġ"_ doc ", Ġ"_ index ": Ġ" test ", ĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" routing ": Ġ" 4 5 6 ", Ġ" retry _ on _ conflict ": Ġ 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent (). toByteArray () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġconnect Data Ġ= Ġconverter . to Connect Data ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"< test >", Ġheaders , Ġ""" {" doc ": Ġ{" name ": Ġ" Test "}} """. toByteArray () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġconnect Data . schema () ĠshouldBe Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġaction Ġ= Ġconnect Data . value () Ġas ĠBulk Action ĊĠĠĠĠĠĠĠ Ġaction ĠshouldBe ĠBulk Action . Update ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġ" 1 2 3 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġ"_ doc ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindex Ġ= Ġ" test ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrouting Ġ= Ġ" 4 5 6 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġretry On Conflict Ġ= Ġ 3 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsource Ġ= ĠJson Source ( build JsonObject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput JsonObject (" doc ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput (" name ", Ġ" Test ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ })