/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 1 Ġsp are time devs Ġand Ġrespective Ġauthors Ġand Ġdevelopers . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . sp are time devs . win . trigger . handler Ċ Ċ import Ġarrow . core . get Or Handle Ċ import Ġcom . microsoft . azure . functions . HttpRequest Message Ċ import Ġcom . microsoft . azure . functions . HttpStatus Ċ import Ġcom . sp are time devs . HttpResponse Message Mock Ċ import Ġcom . sp are time devs . test . data . candidates Ċ import Ġcom . sp are time devs . test . data . date 1 Ċ import Ġcom . sp are time devs . test . data . date 2 Ċ import Ġcom . sp are time devs . test . data . date 3 Ċ import Ġcom . sp are time devs . test . data . date 4 Ċ import Ġcom . sp are time devs . test . data . date 5 Ċ import Ġcom . sp are time devs . test . data . date 6 Ċ import Ġcom . sp are time devs . test . data . date 7 Ċ import Ġcom . sp are time devs . win . model . Candidate Response Ċ import Ġcom . sp are time devs . win . util . to Response Ċ import Ġio . kot est . assertions . fail Ċ import Ġio . kot est . core . spec . style . Behavior Spec Ċ import Ġio . kot est . matchers . shouldBe Ċ import Ġio . mock k . clear All Mocks Ċ import Ġio . mock k . every Ċ import Ġio . mock k . mock k Ċ import Ġjava . time . Zone Id Ċ import Ġjava . time . Zone Offset Ċ import Ġjava . time . format . DateTime Formatter Ċ Ċ class ĠText Plain Handler Kt Test Ġ: ĠBehavior Spec ({ ĊĠĠĠĠĊĠĠĠ Ġgiven (" a Ġlist Ġof ĠC andidate Response ") Ġ{ ĊĠĠĠĠĠĠĠ Ġ` when ` (" handle Success With Text Plain Handler ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthen (" returns ĠHttpResponse Message Ġwith Ġstatus Ġcode ĠOK , Ġcontent Ġtype Ġheader Ġtext / plain Ġand Ġresponse Ġbody Ġin Ġexpected Ġformat ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclear All Mocks () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= Ġmock k < HttpRequest Message < String ? >>() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcandidates : ĠList < Candidate Response > Ġ= Ġcandidates . map Ġ{ Ġit . to Response (). get Or Handle Ġ{ Ġthrow ĠException (" test Ġfailed Ġbecause Ġof Ġsetup .") Ġ} Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġrequest . create Response Builder ( any ()) Ġ} Ġreturns ĠHttpResponse Message Mock . HttpResponse Message Builder Mock ( HttpStatus . OK ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġhandle Success With Text Plain Handler ( request , Ġcandidates ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . fold ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfail (" Test Ġcase Ġshould Ġyield Ġa ĠRight .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . status ĠshouldBe ĠHttpStatus . OK ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . getHeader ( CONTENT _ TYPE ) ĠshouldBe ĠCONTENT _ TYPE _ TEXT _ PLAIN _ UTF _ 8 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . body ĠshouldBe ĠEXPECT ED _ BODY ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDATE _ FORMAT _ PATTERN Ġ= Ġ" yyyy - MM - dd " ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠDATE _ TIME _ FORMAT TER : ĠDateTime Formatter Ġ= ĠDateTime Formatter . of Pattern ( DATE _ FORMAT _ PATTERN ). with Zone ( Zone Id . from ( Zone Offset . UTC )) ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠEXPECT ED _ BODY Ġ= Ġ""" | ĠNumber Ġin Ġlist Ġ| ĠName Ġ| ĠD ates Ġ| ĠFirst Ġatt endance Ġ| Ċ |-- |-- |-- |-- | Ċ | Ġ 1 Ġ| ĠR ose Ġ| Ġ${ DATE _ TIME _ FORMAT TER . format ( date 2 )}, Ġ${ DATE _ TIME _ FORMAT TER . format ( date 5 )}, Ġ${ DATE _ TIME _ FORMAT TER . format ( date 6 )} Ġ| Ġ${ DATE _ TIME _ FORMAT TER . format ( date 7 )} Ġ| Ċ | Ġ 2 Ġ| ĠA bb ie Ġ| Ġ${ DATE _ TIME _ FORMAT TER . format ( date 3 )} Ġ| Ġ${ DATE _ TIME _ FORMAT TER . format ( date 7 )} Ġ| Ċ | Ġ 3 Ġ| ĠTom my Ġ| Ġ Ġ| Ġ${ DATE _ TIME _ FORMAT TER . format ( date 7 )} Ġ| Ċ | Ġ 4 Ġ| ĠJose ph Ġ| Ġ${ DATE _ TIME _ FORMAT TER . format ( date 1 )}, Ġ${ DATE _ TIME _ FORMAT TER . format ( date 4 )} Ġ| Ġ${ DATE _ TIME _ FORMAT TER . format ( date 7 )} Ġ| Ċ | Ġ 5 Ġ| ĠF ani Ġ| Ġ Ġ| Ġ${ DATE _ TIME _ FORMAT TER . format ( date 7 )} Ġ| Ċ | Ġ 6 Ġ| ĠEd en Ġ| Ġ Ġ| Ġ${ DATE _ TIME _ FORMAT TER . format ( date 7 )} Ġ| Ċ | Ġ 7 Ġ| ĠT iff any Ġ| Ġ Ġ| Ġ${ DATE _ TIME _ FORMAT TER . format ( date 7 )} Ġ| Ċ | Ġ 8 Ġ| ĠA ish a Ġ| Ġ Ġ| Ġ${ DATE _ TIME _ FORMAT TER . format ( date 7 )} Ġ| Ċ | Ġ 9 Ġ| ĠEl sa Ġ| Ġ Ġ| Ġ${ DATE _ TIME _ FORMAT TER . format ( date 3 )} Ġ| Ċ | Ġ 1 0 Ġ| ĠE llen Ġ| Ġ Ġ| Ġ${ DATE _ TIME _ FORMAT TER . format ( date 7 )} Ġ| Ċ | Ġ 1 1 Ġ| ĠC ery s Ġ| Ġ Ġ| Ġ${ DATE _ TIME _ FORMAT TER . format ( date 7 )} Ġ| Ċ | Ġ 1 2 Ġ| ĠJames Ġ| Ġ Ġ| Ġ${ DATE _ TIME _ FORMAT TER . format ( date 2 )} Ġ| Ċ | Ġ 1 3 Ġ| ĠKevin Ġ| Ġ Ġ| Ġ${ DATE _ TIME _ FORMAT TER . format ( date 7 )} Ġ| Ċ | Ġ 1 4 Ġ| ĠW illiam Ġ| Ġ Ġ| Ġ${ DATE _ TIME _ FORMAT TER . format ( date 7 )} Ġ| Ċ | Ġ 1 5 Ġ| ĠEl le Ġ| Ġ Ġ| Ġ${ DATE _ TIME _ FORMAT TER . format ( date 7 )} Ġ| Ċ | Ġ 1 6 Ġ| ĠLo is Ġ| Ġ Ġ| Ġ${ DATE _ TIME _ FORMAT TER . format ( date 7 )} Ġ| Ċ | Ġ 1 7 Ġ| ĠAlex a Ġ| Ġ Ġ| Ġ${ DATE _ TIME _ FORMAT TER . format ( date 7 )} Ġ| Ċ | Ġ 1 8 Ġ| ĠKim ber ley Ġ| Ġ Ġ| Ġ${ DATE _ TIME _ FORMAT TER . format ( date 7 )} Ġ| Ċ | Ġ 1 9 Ġ| ĠS aff ron Ġ| Ġ Ġ| Ġ${ DATE _ TIME _ FORMAT TER . format ( date 7 )} Ġ| Ċ | Ġ 2 0 Ġ| ĠPen ny Ġ| Ġ Ġ| Ġ${ DATE _ TIME _ FORMAT TER . format ( date 7 )} Ġ| Ċ | Ġ 2 1 Ġ| ĠGe orge Ġ| Ġ Ġ| Ġ${ DATE _ TIME _ FORMAT TER . format ( date 7 )} Ġ| Ċ | Ġ 2 2 Ġ| ĠM arg aret Ġ| Ġ Ġ| Ġ${ DATE _ TIME _ FORMAT TER . format ( date 7 )} Ġ| """ ĊĠĠĠ Ġ} Ċ } Ċ