package Ġorg . be ck n . one . sandbox . b ap . client . order . init . controllers Ċ Ċ import Ġarrow . core . Either Ċ import Ġcom . fasterxml . jackson . core . type . Type Reference Ċ import Ġcom . fasterxml . jackson . databind . ObjectMapper Ċ import Ġcom . github . tom ake hur st . wire mock . client . Wire Mock Ċ import Ġio . kot est . core . spec . style . Describe Spec Ċ import Ġio . kot est . matchers . shouldBe Ċ import Ġio . kot est . matchers . should Not Be Ċ import Ġorg . be ck n . one . sandbox . b ap . client . external . b ap . Protocol Client Ċ import Ġorg . be ck n . one . sandbox . b ap . client . shared . d tos . Client Init Response Ċ import Ġorg . be ck n . one . sandbox . b ap . client . shared . services . Generic On Poll Service Ċ import Ġorg . be ck n . one . sandbox . b ap . common . factories . Mock Protocol B ap Ċ import Ġorg . be ck n . one . sandbox . b ap . errors . database . Database Error Ċ import Ġorg . be ck n . one . sandbox . b ap . factories . Context Factory Ċ import Ġorg . be ck n . one . sandbox . b ap . message . factories . Protocol OnInit Message Initialized Factory Ċ import Ġorg . be ck n . protocol . schemas . Protocol Ack Response Ċ import Ġorg . be ck n . protocol . schemas . Protocol OnInit Ċ import Ġorg . be ck n . protocol . schemas . Protocol OnInit Message Ċ import Ġorg . mockito . kotlin . any Ċ import Ġorg . mockito . kotlin . mock Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġorg . springframework . boot . test . autoconfigure . web . servlet . Auto Configure MockMvc Ċ import Ġorg . springframework . boot . test . context . SpringBootTest Ċ import Ġorg . springframework . http . HttpHeaders Ċ import Ġorg . springframework . http . MediaType Ċ import Ġorg . springframework . test . context . Active Profiles Ċ import Ġorg . springframework . test . context . Test Property Source Ċ import Ġorg . springframework . test . web . servlet . MockMvc Ċ import Ġorg . springframework . test . web . servlet . request . MockMvc Request Builders Ċ import Ġorg . springframework . test . web . servlet . result . MockMvc Result Matchers Ċ Ċ @ SpringBootTest Ċ @ Auto Configure MockMvc ( add Filters Ġ= Ġfalse ) Ċ @ Active Profiles ( value Ġ= Ġ[" test "]) Ċ @ Test Property Source ( locations Ġ= Ġ["/ application - test . yml "]) Ċ internal Ġclass ĠOnInit Order Controller Spec Ġ@ Autowired Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġcontext Factory : ĠContext Factory , ĊĠĠĠ Ġprivate Ġval Ġmapper : ĠObjectMapper , ĊĠĠĠ Ġprivate Ġval Ġprotocol Client : ĠProtocol Client , ĊĠĠĠ Ġprivate Ġval Ġmock Mvc : ĠMock Mvc Ċ ) Ġ: ĠDescribe Spec () Ġ{ ĊĠ Ġval Ġcontext Ġ= Ġcontext Factory . create () ĊĠ Ġprivate Ġval Ġprotocol OnInit Ġ= ĠProtocol OnInit ( ĊĠĠĠ Ġcontext , ĊĠĠĠ Ġmessage Ġ= ĠProtocol OnInit Message ( Protocol OnInit Message Initialized Factory . create ( id Ġ= Ġ 1 , ĠnumberOf Items Ġ= Ġ 1 )) ĊĠ Ġ) ĊĠ Ġval Ġmock Protocol B ap Ġ= ĠMock Protocol B ap . with Reset Instance () ĊĠ Ġinit Ġ{ ĊĠĠĠ Ġdescribe (" On Initialize Ġcallback ") Ġ{ ĊĊĠĠĠĠĠ Ġcontext (" when Ġcalled Ġfor Ġgiven Ġmessage Ġid ") Ġ{ ĊĠĠĠĠĠĠĠ Ġmock Protocol B ap . stub For ( ĊĠĠĠĠĠĠĠĠĠ ĠWire Mock . get ("/ protocol / response / v 1 / on _ init ? message Id =${ context . message Id }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. willReturn ( Wire Mock . ok Json ( mapper . writeValue AsString ( entity OnInit Results ()))) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġon Init CallBack Ġ= Ġmock Mvc ĊĠĠĠĠĠĠĠĠĠ Ġ. perform ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMock Mvc Request Builders . get ("/ client / v 1 / on _ initialize _ order ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. header ( HttpHeaders . CONTENT _ TYPE , ĠMediaType . APPLICATION _ JSON _ VALUE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. param (" message Id ", Ġcontext . message Id ) ĊĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġrespond Ġwith Ġstatus Ġok ") Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġon Init CallBack . andExpect ( MockMvc Result Matchers . status (). is Ok ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġrespond Ġwith Ġall Ġon Ġinit Ġresponses Ġin Ġbody ") Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġval Ġresults Ġ= Ġon Init CallBack . andReturn () ĊĠĠĠĠĠĠĠĠĠ Ġval Ġbody Ġ= Ġresults . response . content AsString ĊĠĠĠĠĠĠĠĠĠ Ġval Ġclient Response Ġ= Ġmapper . readValue ( body , ĠClient Init Response :: class . java ) ĊĠĠĠĠĠĠĠĠĠ Ġclient Response . message Ġshould Not Be Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġcontext (" when Ġfailure Ġoccurs Ġduring Ġrequest Ġprocessing ") Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmock On Poll Service Ġ= Ġmock < Generic On Poll Service < Protocol OnInit , ĠClient Init Response >> Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġon Generic Ġ{ Ġon Poll ( any (), Ġany ()) Ġ}. thenReturn ( Either . Left ( Database Error . On Read )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġon Init Poll Controller Ġ= ĠOnInit Order Controller ( mock On Poll Service , Ġcontext Factory , Ġprotocol Client ) ĊĠĠĠĠĠĠĠ Ġit (" should Ġrespond Ġwith Ġfailure ") Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġon Init Poll Controller . on Init Order V 1 ( context . message Id ) ĊĠĠĠĠĠĠĠĠĠ Ġresponse . statusCode ĠshouldBe ĠDatabase Error . On Read . status () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġfun Ġentity OnInit Results (): ĠList < Protocol OnInit > Ġ{ ĊĠĠĠ Ġreturn ĠlistOf ( ĊĠĠĠĠĠ Ġprotocol OnInit , ĊĠĠĠĠĠ Ġprotocol OnInit , ĊĠĠĠ Ġ) ĊĠ Ġ} Ċ }