package Ġorg . jes per anc in ha . con certs . mvc . controllers Ċ Ċ import Ġio . kot est . matchers . collections . shouldBe Empty Ċ import Ġio . kot est . matchers . collections . should Have Size Ċ import Ġio . kot est . matchers . collections . should Not Be Empty Ċ import Ġio . kot est . matchers . null s . should Not BeNull Ċ import Ġio . kot est . matchers . shouldBe Ċ import Ġio . kot est . matchers . should Not Be Ċ import Ġorg . jes per anc in ha . con certs . data . Artist Dto Ċ import Ġorg . jes per anc in ha . con certs . data . Listing Dto Ċ import Ġorg . jes per anc in ha . con certs . data . Music Dto Ċ import Ġorg . jes per anc in ha . con certs . mvc . controllers . Test K Utils . Companion . HE Y _ MA MA Ċ import Ġorg . jes per anc in ha . con certs . mvc . repos . Artist Repository Ċ import Ġorg . jes per anc in ha . con certs . mvc . repos . Con cert Repository Ċ import Ġorg . jes per anc in ha . con certs . mvc . repos . Listing Repository Ċ import Ġorg . jes per anc in ha . con certs . mvc . repos . Music Repository Ċ import Ġorg . jes per anc in ha . con certs . types . Gender . F EM ALE Ċ import Ġorg . junit . jupiter . api . BeforeEach Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġorg . springframework . boot . test . context . SpringBootTest Ċ import Ġorg . springframework . boot . test . context . SpringBootTest . Web Environment . RANDOM _ PORT Ċ import Ġorg . springframework . boot . web . server . Local Server Port Ċ import Ġorg . springframework . core . Parameterized Type Reference Ċ import Ġorg . springframework . http . HttpMethod Ċ import Ġorg . springframework . http . HttpMethod . GET Ċ import Ġorg . springframework . http . Request Entity Ċ import Ġorg . springframework . test . context . Active Profiles Ċ import Ġorg . springframework . web . client . Rest Template Ċ import Ġorg . springframework . web . client . post For Entity Ċ import Ġjava . net . URI Ċ import Ġjava . time . LocalDateTime Ċ Ċ @ SpringBootTest ( web Environment Ġ= ĠR AN DOM _ PORT ) Ċ @ Active Profiles (" test ") Ċ class ĠListing Controller Impl IT Test ( ĊĠĠĠ Ġ@ Local Server Port ĊĠĠĠ Ġval Ġport : ĠInt , ĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġval Ġlisting Repository : ĠListing Repository , ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġval Ġartist Repository : ĠArtist Repository , ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġval Ġmusic Repository : ĠMusic Repository , ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġval Ġcon cert Repository : ĠCon cert Repository , Ċ ) Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` retrieve Ġall Ġlist ings `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuri Ġ= Ġ" http :// localhost :${ port }/ con certs / data / list ings " ĊĠĠĠĠĠĠĠ Ġval Ġrest Template Ġ= ĠRest Template () ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠRequest Entity < Any >( GET , ĠURI . create ( uri )) ĊĠĠĠĠĠĠĠ Ġval Ġresp Type Ġ= Ġobject Ġ: ĠParameter ized Type Reference < List < Listing Dto >>() Ġ{} ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġrest Template . exchange ( request , Ġresp Type ) ĊĠĠĠĠĠĠĠ Ġval Ġresult : ĠList < Listing Dto > Ġ= Ġresponse . body Ġ?: ĠlistOf () ĊĠĠĠĠĠĠĠ Ġresult . shouldBe Empty () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` create Ġlist ings `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġartists Uri Ġ= Ġ" http :// localhost :${ port }/ con certs / data / artists " ĊĠĠĠĠĠĠĠ Ġval Ġmus ics Uri Ġ= Ġ" http :// localhost :${ port }/ con certs / data / mus ics " ĊĠĠĠĠĠĠĠ Ġval Ġlist ings Uri Ġ= Ġ" http :// localhost :${ port }/ con certs / data / list ings " ĊĠĠĠĠĠĠĠ Ġval Ġmusic Dto Ġ= ĠMusic Dto ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" H ey Ġm ama ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġl yr ics Ġ= ĠH EY _ MA MA ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġartist Dto Ġ= ĠArtist Dto ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" N icky ĠMin aj ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgender Ġ= ĠF EM ALE , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcareer Start Ġ= Ġ 1 0 0 0 L , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbirth Date Ġ= ĠLocalDateTime . now (). toString (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbirth City Ġ= Ġ" Port Ġof ĠSp ain ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcountry Ġ= Ġ" Tr in idad Ġen ĠT ob ago ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkeywords Ġ= Ġ" R ap " ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġrest Template Ġ= ĠRest Template () ĊĊĠĠĠĠĠĠĠ Ġval Ġsaved Artist Dto Ġ= Ġrest Template . post For Entity < Artist Dto >( artists Uri , Ġartist Dto , ĠArtist Dto :: class ). body ĊĠĠĠĠĠĠĠ Ġval Ġsaved Music Dto Ġ= Ġrest Template . post For Entity < Music Dto >( mus ics Uri , Ġmusic Dto , ĠMusic Dto :: class ). body ĊĊĠĠĠĠĠĠĠ Ġsaved Artist Dto . should Not BeNull () ĊĠĠĠĠĠĠĠ Ġsaved Music Dto . should Not BeNull () ĊĊĠĠĠĠĠĠĠ Ġval Ġlisting Dto Ġ= ĠListing Dto ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġartist Dto Ġ= Ġsaved Artist Dto , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreference Music Dto Ġ= Ġsaved Music Dto , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmusic Dto s Ġ= Ġmutable ListOf ( saved Music Dto ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġsaved Listing Dto Ġ= Ġrest Template . post For Entity < Listing Dto >( list ings Uri , Ġlisting Dto , ĠListing Dto :: class ). body ĊĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠRequest Entity < Any >( GET , ĠURI . create ( list ings Uri )) ĊĠĠĠĠĠĠĠ Ġval Ġresp Type Ġ= Ġobject Ġ: ĠParameter ized Type Reference < List < Listing Dto >>() Ġ{} ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġrest Template . exchange ( request , Ġresp Type ) ĊĠĠĠĠĠĠĠ Ġval Ġresult : ĠList < Listing Dto > Ġ= Ġresponse . body Ġ?: ĠlistOf () ĊĊĠĠĠĠĠĠĠ Ġresult . should Not Be Empty () ĊĠĠĠĠĠĠĠ Ġresult . should Have Size ( 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġlisting Dto 1 Ġ= Ġresult [ 0 ] ĊĠĠĠĠĠĠĠ Ġlisting Dto 1 Ġshould Not Be Ġ 0 ĊĠĠĠĠĠĠĠ Ġlisting Dto 1 . id ĠshouldBe Ġsaved Listing Dto ?. id ĊĠĠĠĠĠĠĠ Ġlisting Dto 1 . artist Dto ĠshouldBe Ġartist Dto ĊĠĠĠĠĠĠĠ Ġlisting Dto 1 . reference Music Dto ĠshouldBe Ġmusic Dto ĊĠĠĠĠĠĠĠ Ġlisting Dto 1 . music Dto s . should Have Size ( 1 ) ĊĠĠĠĠĠĠĠ Ġlisting Dto 1 . music Dto s . get ( 0 ). shouldBe ( music Dto ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠ Ġcon cert Repository . delete All () ĊĠĠĠĠĠĠĠ Ġlisting Repository . delete All () ĊĠĠĠĠĠĠĠ Ġartist Repository . delete All () ĊĠĠĠĠĠĠĠ Ġmusic Repository . delete All () ĊĠĠĠ Ġ} Ċ } Ċ