package Ġio . mic ronaut . problem Ċ Ċ import Ġio . mic ronaut . context . annotation . Property Ċ import Ġio . mic ronaut . http . HttpRequest Ċ import Ġio . mic ronaut . http . HttpStatus Ċ import Ġio . mic ronaut . http . client . HttpClient Ċ import Ġio . mic ronaut . http . client . annotation . Client Ċ import Ġio . mic ronaut . http . client . exceptions . HttpClient Response Exception Ċ import Ġio . mic ronaut . http . uri . Uri Builder Ċ import Ġio . mic ronaut . test . extensions . junit 5 . annotation . Mic ronaut Test Ċ import Ġjak arta . inject . Inject Ċ import Ġorg . junit . jupiter . api . Assertions Ċ import Ġorg . junit . jupiter . api . Test Ċ Ċ @ Property ( name Ġ= Ġ" spec . name ", Ġvalue Ġ= Ġ" Task NotFound Problem Spec ") Ċ @ Mic ronaut Test Ċ class ĠOut Of Stock Test Ġ{ ĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġ@ field : Client ("/") ĊĠĠĠ Ġlateinit Ġvar ĠhttpClient : ĠHttpClient ĊĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcustom P ob lem Is Rendered () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// given : ĊĠĠĠĠĠĠĠ Ġval Ġclient Ġ= ĠhttpClient . to Blocking () ĊĊĠĠĠĠĠĠĠ Ġ// when : ĊĠĠĠĠĠĠĠ Ġval Ġuri Ġ= ĠUri Builder . of ("/ product "). build (); ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠHttpRequest . GET < Any >( uri ) ĊĠĠĠĠĠĠĠ Ġval Ġe Ġ= ĠAssertions . assert Throws ( HttpClient Response Exception :: class . java ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient . exchange ( request , ĠString :: class . java ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// then : ĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals ( HttpStatus . BAD _ REQUEST , Ġe . status ) ĊĠĠĠĠĠĠĠ ĠAssertions . assertTrue ( e . response . contentType . isPresent ) ĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals (" application / problem + json ", Ġe . response . contentType . get (). toString ()) ĊĊĠĠĠĠĠĠĠ Ġ// when : ĊĠĠĠĠĠĠĠ Ġval Ġbody Optional Ġ= Ġe . response . getBody ( Map :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġ// then : ĊĠĠĠĠĠĠĠ ĠAssertions . assertTrue ( body Optional . isPresent ) ĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals ( 5 , Ġbody Optional . get (). keys . size ) ĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals ( 4 0 0 , Ġbody Optional . get ()[" status "]) ĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals (" Out Ġof ĠStock ", Ġbody Optional . get ()[" title "]) ĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Item ĠB 0 0 0 2 7 Y 5 Q G Ġis Ġno Ġlonger Ġavailable ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbody Optional . get ()[" detail "] ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals (" https :// example . org / out - of - stock ", Ġbody Optional . get ()[" type "]) ĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of (" product " Ġto Ġ" B 0 0 0 2 7 Y 5 Q G "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbody Optional . get ()[" parameters "] ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ }