package Ġnet . jp . v ss . visit scheduler . controller . schedules Ċ Ċ import Ġcom . fasterxml . jackson . databind . ObjectMapper Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . any Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . wh enever Ċ import Ġjava . lang . IllegalStateException Ċ import Ġnet . jp . v ss . visit scheduler . use case . schedules . Calculate UseCase Ċ import Ġnet . jp . v ss . visit scheduler . use case . schedules . Calculate UseCase Result Fixtures Ċ import Ġorg . hamcrest . Core Matchers .` is ` Ċ import Ġorg . hamcrest . Matchers . has Size Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . jupiter . api . extension . Extend With Ċ 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 . boot . test . mock . mockito . Mock Bean Ċ import Ġorg . springframework . http . MediaType Ċ import Ġorg . springframework . security . test . context . support . With Mock User Ċ import Ġorg . springframework . security . test . web . servlet . request . Security MockMvc Request Post Processors Ċ import Ġorg . springframework . test . context . junit . jupiter . Spring Extension Ċ 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 . json Path Ċ import Ġorg . springframework . test . web . servlet . result . MockMvc Result Matchers . status Ċ Ċ /** Ċ Ġ* ĠCalculate Schedule Api Controller Ġãģ® ãĥĨãĤ¹ãĥĪ . Ċ Ġ*/ Ċ @ Extend With ( Spring Extension :: class ) Ċ @ SpringBootTest Ċ @ Auto Configure MockMvc Ċ class ĠCalculate Schedule Api Controller Test Ġ{ ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmock Mvc : ĠMock Mvc ĊĊĠĠĠ Ġ@ Mock Bean ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcalculate UseCase : ĠCalculate UseCase ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ With Mock User ĊĠĠĠ Ġfun Ġtest Calculate Schedule () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġsetup ĊĠĠĠĠĠĠĠ Ġval Ġcalculate Result Ġ= ĠCalculate UseCase Result Fixtures . create () ĊĠĠĠĠĠĠĠ Ġwhenever ( calculate UseCase . calculate Schedule ( any ())). thenReturn ( calculate Result ) ĊĊĠĠĠĠĠĠĠ Ġval Ġparameter Ġ= ĠCalculate Schedule Api Parameter Fixtures . create () ĊĠĠĠĠĠĠĠ Ġval Ġmapper Ġ= ĠObjectMapper () ĊĠĠĠĠĠĠĠ Ġval Ġcontent Ġ= Ġmapper . writeValue AsString ( parameter ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġexecution ĊĠĠĠĠĠĠĠ Ġmock Mvc . perform ( post ("/ api / schedules /_ calculate ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType ( MediaType . APPLICATION _ JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with ( Security MockMvc Request Post Processors . csrf ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. content ( content )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġverify ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( status (). is Ok ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( json Path (" $. visit _ schedules ", Ġhas Size < Int >( 1 ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( json Path (" $. visit _ schedules [ 0 ]. school _ code "). value (` is ` (" school _ 0 0 1 "))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( json Path (" $. visit _ schedules [ 0 ]. visit _ day "). value (` is `( 5 ))) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ With Mock User ĊĠĠĠ Ġfun Ġtest Calculate Schedule _ Throw ISE _ 4 0 0 () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġsetup ĊĠĠĠĠĠĠĠ Ġval Ġexception Ġ= ĠIllegalStateException (" dummy ") ĊĠĠĠĠĠĠĠ Ġwhenever ( calculate UseCase . calculate Schedule ( any ())). then Throw ( exception ) ĊĊĠĠĠĠĠĠĠ Ġval Ġparameter Ġ= ĠCalculate Schedule Api Parameter Fixtures . create () ĊĠĠĠĠĠĠĠ Ġval Ġmapper Ġ= ĠObjectMapper () ĊĠĠĠĠĠĠĠ Ġval Ġcontent Ġ= Ġmapper . writeValue AsString ( parameter ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġexecution ĊĠĠĠĠĠĠĠ Ġmock Mvc . perform ( post ("/ api / schedules /_ calculate ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType ( MediaType . APPLICATION _ JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with ( Security MockMvc Request Post Processors . csrf ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. content ( content )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġverify ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( status (). is BadRequest ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ With Mock User ĊĠĠĠ Ġfun Ġtest Calculate Schedule _ Throw I AE _ 4 0 0 () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġsetup ĊĠĠĠĠĠĠĠ Ġval Ġexception Ġ= ĠIllegalArgumentException (" dummy ") ĊĠĠĠĠĠĠĠ Ġwhenever ( calculate UseCase . calculate Schedule ( any ())). then Throw ( exception ) ĊĊĠĠĠĠĠĠĠ Ġval Ġparameter Ġ= ĠCalculate Schedule Api Parameter Fixtures . create () ĊĠĠĠĠĠĠĠ Ġval Ġmapper Ġ= ĠObjectMapper () ĊĠĠĠĠĠĠĠ Ġval Ġcontent Ġ= Ġmapper . writeValue AsString ( parameter ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġexecution ĊĠĠĠĠĠĠĠ Ġmock Mvc . perform ( post ("/ api / schedules /_ calculate ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType ( MediaType . APPLICATION _ JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with ( Security MockMvc Request Post Processors . csrf ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. content ( content )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġverify ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( status (). is BadRequest ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ With Mock User ĊĠĠĠ Ġfun Ġtest Calculate Schedule _ Throw Calculate Exception _ 4 0 0 () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġsetup ĊĠĠĠĠĠĠĠ Ġval Ġexception Ġ= ĠCalculate UseCase . Calculate Exception (" dummy ") ĊĠĠĠĠĠĠĠ Ġwhenever ( calculate UseCase . calculate Schedule ( any ())). then Throw ( exception ) ĊĊĠĠĠĠĠĠĠ Ġval Ġparameter Ġ= ĠCalculate Schedule Api Parameter Fixtures . create () ĊĠĠĠĠĠĠĠ Ġval Ġmapper Ġ= ĠObjectMapper () ĊĠĠĠĠĠĠĠ Ġval Ġcontent Ġ= Ġmapper . writeValue AsString ( parameter ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġexecution ĊĠĠĠĠĠĠĠ Ġmock Mvc . perform ( post ("/ api / schedules /_ calculate ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType ( MediaType . APPLICATION _ JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with ( Security MockMvc Request Post Processors . csrf ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. content ( content )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġverify ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( status (). is BadRequest ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCSRF ĠToken Ġ æľª è¨Ńå®ļ . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ With Mock User ĊĠĠĠ Ġfun Ġtest Calculate Schedule _ Not Cs rf Token _ 4 0 3 () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġsetup ĊĠĠĠĠĠĠĠ Ġval Ġparameter Ġ= ĠCreate Schedule Api Parameter Fixtures . create () ĊĠĠĠĠĠĠĠ Ġval Ġmapper Ġ= ĠObjectMapper () ĊĠĠĠĠĠĠĠ Ġval Ġcontent Ġ= Ġmapper . writeValue AsString ( parameter ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġexecution ĊĠĠĠĠĠĠĠ Ġmock Mvc . perform ( post ("/ api / schedules /_ calculate ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType ( MediaType . APPLICATION _ JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. content ( content )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġverify ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( status (). is Forbidden ) ĊĠĠĠ Ġ} Ċ } Ċ