package Ġorg . plan x . man aging . controller Ċ Ċ import Ġcom . github . tom ake hur st . wire mock . common . Json Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . do Return Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . eq Ċ import Ġorg . plan x . man aging . models . core . Function ality Status Ċ import Ġorg . plan x . man aging . models . core . Pl anning Request Response Ċ import Ġorg . plan x . man aging . models . rest . Sol ving RequestBody Ċ import Ġorg . plan x . man aging . services . Man aging Service Ċ import Ġorg . junit . jupiter . api . Nested Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . jupiter . api . extension . Extend With Ċ import Ġorg . mockito . Mockito Ċ import Ġorg . mockito . Mockito .` when ` Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġorg . springframework . boot . act uate . health . Health Ċ import Ġorg . springframework . boot . test . autoconfigure . web . reactive . Web Flux Test Ċ import Ġorg . springframework . boot . test . mock . mockito . Mock Bean Ċ import Ġorg . springframework . test . context . junit . jupiter . Spring Extension Ċ import Ġorg . springframework . test . web . reactive . server . Web Test Client Ċ import Ġreactor . core . publisher . Flux Ċ import Ġreactor . core . publisher . Mono Ċ import Ġorg . plan x . models . endpoint . sol ving . Language Ċ import Ġorg . plan x . models . endpoint . sol ving . Planner Ċ import Ġorg . plan x . models . endpoint . sol ving . Sol ving Results Body Ċ import Ġjava . time . Instant Ċ Ċ @ Extend With ( Spring Extension :: class ) Ċ @ Web Flux Test ( Man aging Controller :: class ) Ċ internal Ġclass ĠMan aging Controller Int Test Ġ{ ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġweb Test Client : ĠWeb Test Client ĊĊĠĠĠ Ġ@ Mock Bean ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmanaging Service : ĠMan aging Service ĊĊĠĠĠ Ġ@ Nested ĊĠĠĠ Ġinner Ġclass ĠGetAll Functional ities Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠ Ġfun Ġ` happy Ġpath Ġ- Ġvalid Ġrequest , Ġ 1 Ġelement `() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfunctionality Status Ġ= Ġvalid Function ality () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ` when `( man aging Service . getAll Functional ities ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do Return ( Flux . just ( function ality Status )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġassert ĊĠĠĠĠĠĠĠĠĠĠĠ Ġweb Test Client . get (). uri ("/ v 1 / man aging / functional ities ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Status (). is Ok ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Header (). value Equals (" Application - Name ", Ġ" Plan X _ Man aging _ Service ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Body () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. json Path (" $. length () "). isEqualTo ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. json Path ("[ 0 ]. name "). isEqualTo ( function ality Status . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. json Path ("[ 0 ]. health . status "). isEqualTo ( function ality Status . status . status . code ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġvalid Function ality (): ĠFunction ality Status Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠFunction ality Status ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" v 1 . router . man aging - service # toolbox ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Ġ= ĠHealth . up (). build (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconnected At Ġ= ĠInstant . now () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Nested ĊĠĠĠ Ġinner Ġclass ĠRequest Pl anning Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠ Ġfun Ġ` happy Ġpath Ġ- Ġvalid Ġrequest `() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalid Sol ving Request Ġ= Ġvalid Sol ving Request () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalid Pl anning Request Response Ġ= ĠPl anning Request Response ( valid Sol ving Request . requestId ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ` when `( man aging Service . handle Sol ving Request ( any NonNull (), Ġeq ( valid Sol ving Request . requestId ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. thenReturn ( Mono . just ( valid Pl anning Request Response )) ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġassert ĊĠĠĠĠĠĠĠĠĠĠĠ Ġweb Test Client . post (). uri ("/ v 1 / man aging / sol ving ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ( Mono . just ( valid Sol ving Request ), ĠSol ving RequestBody :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Status (). is Ok ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Header (). value Equals (" Application - Name ", Ġ" UI R _ Planner _ Man aging _ Cap ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Body (). json ( Json . write ( valid Pl anning Request Response )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠ Ġfun Ġ` un happy Ġpath Ġ- Ġinvalid Ġrequest Ġ- Ġpl anner Ġnot Ġfound `() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsolving RequestBody Ġ= Ġinvalid Sol ving Request Planner NotFound () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġassert ĊĠĠĠĠĠĠĠĠĠĠĠ Ġweb Test Client . post (). uri ("/ v 1 / man aging / sol ving ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ( Mono . just ( sol ving RequestBody ), ĠSol ving RequestBody :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Status (). is BadRequest ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Header (). value Equals (" Application - Name ", Ġ" UI R _ Planner _ Man aging _ Cap ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Body () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. json Path (" $. message ", Ġ" Unsupported Ġpl anner Ġtype Ġ${ sol ving RequestBody . planner }") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠ Ġfun Ġ` un happy Ġpath Ġ- Ġinvalid Ġrequest Ġ- Ġlanguage Ġnot Ġfound `() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsolving RequestBody Ġ= Ġinvalid Sol ving Request Language NotFound () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġassert ĊĠĠĠĠĠĠĠĠĠĠĠ Ġweb Test Client . post (). uri ("/ v 1 / man aging / sol ving ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ( Mono . just ( sol ving RequestBody ), ĠSol ving RequestBody :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Status (). is BadRequest ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Header (). value Equals (" Application - Name ", Ġ" UI R _ Planner _ Man aging _ Cap ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Body () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. json Path (" $. message ", Ġ" Unsupported Ġinput Ġlanguage Ġtype Ġ${ sol ving RequestBody . language }") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġvalid Sol ving Request (): ĠSol ving RequestBody Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSol ving RequestBody ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠrequestId Ġ= Ġ" 6 0 9 2 0 3 4 d - 5 c 7 a - 4 de 8 - 9 1 7 9 - 0 a 5 7 cd 8 8 fe 8 a ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdomain Ġ= ĠP DDL _ LOG ISTICS _ DOMAIN , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproblem Ġ= ĠP DDL _ LOG ISTICS _ PRO BLE M _ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpl anner Ġ= ĠPl anner . H SP . value , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlanguage Ġ= ĠLanguage . P DDL . name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġinvalid Sol ving Request Planner NotFound (): ĠSol ving RequestBody Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSol ving RequestBody ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠrequestId Ġ= Ġ" 6 0 9 2 0 3 4 d - 5 c 7 a - 4 de 8 - 9 1 7 9 - 0 a 5 7 cd 8 8 fe 8 a ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdomain Ġ= ĠP DDL _ LOG ISTICS _ DOMAIN , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproblem Ġ= ĠP DDL _ LOG ISTICS _ PRO BLE M _ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpl anner Ġ= Ġ" invalid - planner - name ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlanguage Ġ= ĠLanguage . P DDL . name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġinvalid Sol ving Request Language NotFound (): ĠSol ving RequestBody Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSol ving RequestBody ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠrequestId Ġ= Ġ" 6 0 9 2 0 3 4 d - 5 c 7 a - 4 de 8 - 9 1 7 9 - 0 a 5 7 cd 8 8 fe 8 a ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdomain Ġ= ĠP DDL _ LOG ISTICS _ DOMAIN , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproblem Ġ= ĠP DDL _ LOG ISTICS _ PRO BLE M _ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpl anner Ġ= ĠPl anner . FF . value , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlanguage Ġ= Ġ" invalid - lang " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Nested ĊĠĠĠ Ġinner Ġclass ĠGetAll Function ality Interfaces Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠ Ġfun Ġ` happy Ġpath Ġ- Ġvalid Ġrequest `() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinterface Name 1 Ġ= ĠSol ving Results Body :: class . java . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ` when `( man aging Service . getAll Function ality Interfaces ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. thenReturn ( Flux . just ( interface Name 1 )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexpected Json Ġ= ĠJson . write ( array Of ( interface Name 1 )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġassert ĊĠĠĠĠĠĠĠĠĠĠĠ Ġweb Test Client . get (). uri ("/ v 1 / man aging / function ality / interfaces ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Status (). is Ok ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Header (). value Equals (" Application - Name ", Ġ" Plan X _ Man aging _ Service ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Body (). json ( expected Json ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ// ĠBASE Ġ 6 4 Ġencoded ĊĠĠĠ Ġval ĠP DDL _ LOG ISTICS _ DOMAIN Ġ= Ġ"" ĊĠĠĠ Ġval ĠP DDL _ LOG ISTICS _ PRO BLE M _ 1 Ġ= Ġ"" ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT > Ġany NonNull (): ĠT Ġ= ĠMockito . any < T >( T :: class . java ) Ċ }