package Ġcom . github . dav in ke vin . podcast server . messaging Ċ Ċ import Ġcom . github . dav in ke vin . podcast server . entity . Status Ċ import Ġcom . github . dav in ke vin . podcast server . manager . downloader . Downloading Item Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . jupiter . api . extension . Extend With Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġorg . springframework . context . annotation . Import Ċ import Ġorg . springframework . test . context . junit . jupiter . Spring Extension Ċ import Ġreactor . test . Step Verifier Ċ import Ġjava . net . URI Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġke vin Ġon Ġ 0 2 / 0 5 / 2 0 2 0 Ċ Ġ*/ Ċ @ Extend With ( Spring Extension :: class ) Ċ @ Import ( Messaging Template :: class ) Ċ class ĠMessaging Template Test ( ĊĠĠĠĠĠĠĠ Ġ@ Autowired Ġprivate Ġval Ġmessages : ĠMessaging Template Ċ ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġitem 1 Ġ= ĠDownloading Item ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= ĠUUID . randomUUID (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" Title Ġ 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Ġ= ĠStatus . NOT _ DOWN LOADED , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġurl Ġ= ĠURI (" https :// foo . bar . com / podcast / title - 1 "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠnumberOf Fail Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress ion Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpod cast Ġ= ĠDownloading Item . Pod cast ( UUID . randomUUID (), Ġ" podcast "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcover Ġ= ĠDownloading Item . Cover ( UUID . randomUUID (), ĠURI (" https :// foo . bar . com / podcast / title - 1 . jpg ")) ĊĠĠĠ Ġ) ĊĠĠĠ Ġprivate Ġval Ġitem 2 Ġ= ĠDownloading Item ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= ĠUUID . randomUUID (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" Title Ġ 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Ġ= ĠStatus . STARTED , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġurl Ġ= ĠURI (" https :// foo . bar . com / podcast / title - 2 "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠnumberOf Fail Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress ion Ġ= Ġ 5 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpod cast Ġ= ĠDownloading Item . Pod cast ( UUID . randomUUID (), Ġ" podcast "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcover Ġ= ĠDownloading Item . Cover ( UUID . randomUUID (), ĠURI (" https :// foo . bar . com / podcast / title - 2 . jpg ")) ĊĠĠĠ Ġ) ĊĠĠĠ Ġprivate Ġval Ġitem 3 Ġ= ĠDownloading Item ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= ĠUUID . randomUUID (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" Title Ġ 3 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Ġ= ĠStatus . STARTED , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġurl Ġ= ĠURI (" https :// foo . bar . com / podcast / title - 3 "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠnumberOf Fail Ġ= Ġ 3 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress ion Ġ= Ġ 7 5 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpod cast Ġ= ĠDownloading Item . Pod cast ( UUID . randomUUID (), Ġ" podcast "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcover Ġ= ĠDownloading Item . Cover ( UUID . randomUUID (), ĠURI (" https :// foo . bar . com / podcast / title - 3 . jpg ")) ĊĠĠĠ Ġ) ĊĠĠĠ Ġprivate Ġval Ġitem 4 Ġ= ĠDownloading Item ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= ĠUUID . randomUUID (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" Title Ġ 4 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Ġ= ĠStatus . FIN ISH , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġurl Ġ= ĠURI (" https :// foo . bar . com / podcast / title - 4 "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠnumberOf Fail Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress ion Ġ= Ġ 1 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpod cast Ġ= ĠDownloading Item . Pod cast ( UUID . randomUUID (), Ġ" podcast "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcover Ġ= ĠDownloading Item . Cover ( UUID . randomUUID (), ĠURI (" https :// foo . bar . com / podcast / title - 4 . jpg ")) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġsend Ġwaiting Ġqueue `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ/* ĠGiven Ġ*/ ĊĠĠĠĠĠĠĠ Ġ/* ĠWhen Ġ*/ ĊĠĠĠĠĠĠĠ ĠStep Verifier . create ( messages . messages . as Flux (). take ( 4 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĠThen Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Subscription () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. then Ġ{ Ġmessages . send Waiting Queue ( listOf ( item 1 , Ġitem 2 , Ġitem 3 )) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Next Matches Ġ{ Ġit Ġis ĠWaiting Queue Message Ġ&& Ġit . value . contains All ( listOf ( item 1 , Ġitem 2 , Ġitem 3 )) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. then Ġ{ Ġmessages . send Waiting Queue ( listOf ( item 1 , Ġitem 3 , Ġitem 4 )) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Next Matches Ġ{ Ġit Ġis ĠWaiting Queue Message Ġ&& Ġit . value . contains All ( listOf ( item 1 , Ġitem 3 , Ġitem 4 )) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. then Ġ{ Ġmessages . send Waiting Queue ( listOf ( item 1 , Ġitem 2 )) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Next Matches Ġ{ Ġit Ġis ĠWaiting Queue Message Ġ&& Ġit . value . contains All ( listOf ( item 1 , Ġitem 2 )) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. then Ġ{ Ġmessages . send Waiting Queue ( listOf ( item 4 )) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Next Matches Ġ{ Ġit Ġis ĠWaiting Queue Message Ġ&& Ġit . value . contains All ( listOf ( item 4 )) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. verify Complete () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġsend Ġdownloading Ġitem `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ/* ĠGiven Ġ*/ ĊĠĠĠĠĠĠĠ Ġ/* ĠWhen Ġ*/ ĊĠĠĠĠĠĠĠ ĠStep Verifier . create ( messages . messages . as Flux (). take ( 4 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĠThen Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Subscription () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. then Ġ{ Ġmessages . send Item ( item 1 ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Next Matches Ġ{ Ġit Ġis ĠDownloading Item Message Ġ&& Ġit . value Ġ== Ġitem 1 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. then Ġ{ Ġmessages . send Item ( item 2 ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Next Matches Ġ{ Ġit Ġis ĠDownloading Item Message Ġ&& Ġit . value Ġ== Ġitem 2 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. then Ġ{ Ġmessages . send Item ( item 3 ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Next Matches Ġ{ Ġit Ġis ĠDownloading Item Message Ġ&& Ġit . value Ġ== Ġitem 3 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. then Ġ{ Ġmessages . send Item ( item 4 ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Next Matches Ġ{ Ġit Ġis ĠDownloading Item Message Ġ&& Ġit . value Ġ== Ġitem 4 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. verify Complete () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġupdate `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ/* ĠGiven Ġ*/ ĊĠĠĠĠĠĠĠ Ġ/* ĠWhen Ġ*/ ĊĠĠĠĠĠĠĠ ĠStep Verifier . create ( messages . messages . as Flux (). take ( 3 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĠThen Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Subscription () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. then Ġ{ Ġmessages . is Updating ( true ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Next Matches Ġ{ Ġit Ġis ĠUpdate Message Ġ&& Ġit . value Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. then Ġ{ Ġmessages . is Updating ( false ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Next Matches Ġ{ Ġit Ġis ĠUpdate Message Ġ&& Ġ! it . value Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. then Ġ{ Ġmessages . is Updating ( true ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Next Matches Ġ{ Ġit Ġis ĠUpdate Message Ġ&& Ġit . value Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. verify Complete () ĊĠĠĠ Ġ} Ċ } Ċ