package Ġorg . be ck n . one . sandbox . b ap . protocol . select . controllers Ċ Ċ import Ġarrow . core . Either Ċ import Ġcom . fasterxml . jackson . databind . ObjectMapper Ċ import Ġio . kot est . core . spec . style . Describe Spec Ċ import Ġio . kot est . matchers . ints . shouldBe Exactly Ċ import Ġio . kot est . matchers . shouldBe Ċ import Ġorg . be ck n . one . sandbox . b ap . errors . database . Database Error Ċ import Ġorg . be ck n . one . sandbox . b ap . message . entities . On Select Dao Ċ import Ġorg . be ck n . one . sandbox . b ap . message . factories . Protocol Context Factory Ċ import Ġorg . be ck n . one . sandbox . b ap . message . factories . Protocol On Select Message Selected Factory Ċ import Ġorg . be ck n . one . sandbox . b ap . message . repositories . Be ck n Response Repository Ċ import Ġorg . be ck n . one . sandbox . b ap . message . services . Response Storage Service Ċ import Ġorg . be ck n . protocol . schemas . Protocol On Select Ċ import Ġorg . be ck n . protocol . schemas . Protocol On Select Message Ċ 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 . post Ċ import Ġorg . springframework . test . web . servlet . result . MockMvc Result Matchers . status Ċ Ċ @ SpringBootTest Ċ @ Auto Configure MockMvc Ċ @ Active Profiles ( value Ġ= Ġ[" test "]) Ċ @ Test Property Source ( locations Ġ= Ġ["/ application - test . yml "]) Ċ internal Ġclass ĠOn Select Callback Controller Spec Ġ@ Autowired Ġconstructor ( ĊĠ Ġ@ Autowired ĊĠ Ġprivate Ġval Ġmock Mvc : ĠMock Mvc , ĊĠ Ġ@ Autowired ĊĠ Ġprivate Ġval Ġmapper : ĠObjectMapper , ĊĠ Ġ@ Autowired ĊĠ Ġprivate Ġval ĠonSelect Response Repo : ĠBe ck n Response Repository < On Select Dao >, Ċ ) Ġ: ĠDescribe Spec () Ġ{ ĊĠ Ġprivate Ġval Ġpost On Select Url Ġ= Ġ"/ protocol / v 1 / on _ select " ĊĠ Ġval ĠonSelect Response Ġ= ĠProtocol On Select ( ĊĠĠĠ Ġcontext Ġ= ĠProtocol Context Factory . fixed , ĊĠĠĠ Ġmessage Ġ= ĠProtocol On Select Message ( ĊĠĠĠĠĠ Ġorder Ġ= ĠProtocol On Select Message Selected Factory . create ( 1 , Ġ 2 ) ĊĠĠĠ Ġ) ĊĠ Ġ) ĊĊĠ Ġinit Ġ{ ĊĊĠĠĠ Ġdescribe (" Protocol ĠOn Select ĠAPI ") Ġ{ ĊĊĠĠĠĠĠ Ġcontext (" when Ġposted Ġto Ġwith Ġa Ġvalid Ġresponse ") Ġ{ ĊĠĠĠĠĠĠĠ ĠonSelect Response Repo . clear () ĊĠĠĠĠĠĠĠ Ġval Ġpost On Select Response Ġ= Ġmock Mvc ĊĠĠĠĠĠĠĠĠĠ Ġ. perform ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost ( post On Select Url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. header ( HttpHeaders . CONTENT _ TYPE , ĠMediaType . APPLICATION _ JSON _ VALUE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. content ( mapper . writeValue As Bytes ( on Select Response )) ĊĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġrespond Ġwith Ġstatus Ġas Ġ 2 0 0 ") Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġpost On Select Response . andExpect ( status (). is Ok ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġsave Ġon Ġselect Ġresponse Ġin Ġdb ") Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠonSelect Response Repo . findBy MessageId ( on Select Response . context !!. message Id ). size ĠshouldBe Exactly Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġcontext (" when Ġerror Ġoccurs Ġwhen Ġprocessing Ġrequest ") Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmock Service Ġ= Ġmock < Response Storage Service < Protocol On Select >> Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġon Generic Ġ{ Ġsave ( on Select Response ) Ġ}. thenReturn ( Either . Left ( Database Error . On Write )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġcontroller Ġ= ĠOn Select Callback Controller ( mock Service ) ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġrespond Ġwith Ġinternal Ġserver Ġerror ") Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġcontroller . on Select ( on Select Response ) ĊĠĠĠĠĠĠĠĠĠ Ġresponse . statusCode ĠshouldBe ĠDatabase Error . On Write . status () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ Ċ }