package Ġde . l arm ic . unit testing . rest Ċ Ċ import Ġcom . nin jas quad . spring mock k . Mock k Bean Ċ import Ġde . l arm ic . unit testing . database . Book Repository Ċ import Ġde . l arm ic . unit testing . rest . mapper . Dto To Domain Mapper Ċ import Ġio . mock k . verify Ċ import Ġorg . assertj . core . api . Assertions . assertThat Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġorg . springframework . boot . test . autoconfigure . web . servlet . Web Mvc Test Ċ import Ġorg . springframework . http . MediaType Ċ 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 Handlers . print Ċ import Ġorg . springframework . test . web . servlet . result . MockMvc Result Matchers . status Ċ import Ġjava . time . LocalDate Ċ import Ġjava . time . Month Ċ Ċ @ Web Mvc Test ( Book RestController :: class , ĠD to To Domain Mapper :: class ) Ċ internal Ġclass ĠGood Book RestController Test Ġ{ ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmock Mvc : ĠMock Mvc ĊĊĠĠĠ Ġ@ Mock k Bean ( relax ed Ġ= Ġtrue ) ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbook Repository Mock : ĠBook Repository ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġinternal Ġfun Ġ` store Ġnew Ġbook `() Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . mock Mvc . post Json ( json Ġ= Ġ""" ĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" title ": Ġ" Re invent ing ĠOrgan izations ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" create Date ": Ġ" 1 8 . 1 0 . 2 0 1 4 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" author ": Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" firstName ": Ġ" Fre der ic ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" lastName ": Ġ" L al ou x " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġverify Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbook Repository Mock . store ( with Arg Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( it . id ). isNotNull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( it . title ). isEqualTo (" Re invent ing ĠOrgan izations ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( it . author . firstName ). isEqualTo (" Fre der ic ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( it . author . lastName ). isEqualTo (" L al ou x ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( it . create Date ). isEqualTo ( LocalDate . of ( 2 0 1 4 , ĠMonth . OCT OB ER , Ġ 1 8 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun ĠMock Mvc . post Json ( json : ĠString ) Ġ= Ġthis . perform ( ĊĠĠĠ Ġpost ("/ api / book ") ĊĠĠĠĠĠĠĠ Ġ. contentType ( MediaType . APPLICATION _ JSON ) ĊĠĠĠĠĠĠĠ Ġ. content ( json . trim Indent ())) ĊĠĠĠ Ġ. and Do ( print ()) ĊĠĠĠ Ġ. andExpect ( status (). is Ok )