package Ġmy . company . app . web . controller . user Ċ Ċ import Ġassert k . assertThat Ċ import Ġassert k . assertions . isEqualTo Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . capture Ċ import Ġio . ktor . http . HttpStatusCode Ċ import Ġmy . company . app . business _ logic . user . Create User Action Ċ import Ġmy . company . app . business _ logic . user . Create UserRequest Ċ import Ġmy . company . app . lib . F aker Ċ import Ġmy . company . app . test . capt or Ċ import Ġmy . company . app . test . declare Mock Ċ import Ġmy . company . app . test . expect Email Validation Ċ import Ġmy . company . app . test . expect NotBlank Validation Ċ import Ġmy . company . app . test . expect Password Validation Ċ import Ġmy . company . app . test . single Value Ċ import Ġmy . company . app . web . controller . Base Web Controller Test Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . mockito . Mockito Ċ Ċ class ĠWeb Create User Test Ġ: ĠBase Web Controller Test ( Web Create User Location :: class ) Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġrequest IsValid ated () Ġ{ ĊĠĠĠĠĠĠĠ Ġexpect Email Validation ( Web Create UserRequest :: email ) ĊĠĠĠĠĠĠĠ Ġexpect NotBlank Validation ( Web Create UserRequest :: firstName ) ĊĠĠĠĠĠĠĠ Ġexpect NotBlank Validation ( Web Create UserRequest :: lastName ) ĊĠĠĠĠĠĠĠ Ġexpect Password Validation ( Web Create UserRequest :: password ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġreturns Correct Result () Ġ= Ġcontroller Test Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġaction Mock Ġ= Ġdeclare Mock < Create User Action >() ĊĠĠĠĠĠĠĠ Ġval Ġvalidator Ġ= Ġmock Validator () ĊĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠWeb Create UserRequest ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġemail Ġ= ĠFaker . internet (). email Address (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠfirstName Ġ= ĠFaker . name (). firstName (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlastName Ġ= ĠFaker . name (). lastName (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpassword Ġ= ĠFaker . internet (). password () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġaction Request Ġ= Ġcapt or < Create UserRequest >() ĊĠĠĠĠĠĠĠ Ġval Ġmocked Response Ġ= Ġfixtures . user () ĊĠĠĠĠĠĠĠ ĠMockito . do Return ( mocked Response ). ` when `( action Mock ). execute ( capture ( action Request )) ĊĊĠĠĠĠĠĠĠ Ġjson Post ( request ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpect JsonResponse ( HttpStatusCode . Created , ĠWeb Create User Response ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġmocked Response . id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemail Ġ= Ġmocked Response . email , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠfirstName Ġ= Ġmocked Response . firstName , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlastName Ġ= Ġmocked Response . lastName ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( action Request . single Value ). isEqualTo ( Create UserRequest ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemail Ġ= Ġrequest . email , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠfirstName Ġ= Ġrequest . firstName , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlastName Ġ= Ġrequest . lastName , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpassword Clean Ġ= Ġrequest . password ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġvalidator . has Validated ( request ) ĊĠĠĠ Ġ} Ċ } Ċ