package Ġhelpers Ċ Ċ import Ġcom . real world . spring mongo . api . Article Wrapper Ċ import Ġcom . real world . spring mongo . api . Comment Wrapper Ċ import Ġcom . real world . spring mongo . api . to Article Wrapper Ċ import Ġcom . real world . spring mongo . api . to Comment Wrapper Ċ import Ġcom . real world . spring mongo . article . dto .* Ċ import Ġcom . real world . spring mongo . user . dto . User View Ċ import Ġorg . springframework . test . web . reactive . server . Web Test Client Ċ import Ġorg . springframework . test . web . reactive . server . expect Body Ċ Ċ class ĠArticle Api Support ( private Ġval Ġclient : ĠWeb Test Client ) Ġ{ ĊĊĠĠĠ Ġfun Ġcreate Article ( ĊĠĠĠĠĠĠĠ Ġcreate Request : ĠCreate Article Request Ġ= ĠArticle Samples . sample Create Article Request (), ĊĠĠĠĠĠĠĠ Ġauthor : ĠUser View , ĊĠĠĠ Ġ): ĠArticle View Ġ= Ġclient . post () ĊĠĠĠĠĠĠĠ Ġ. uri ("/ api / articles ") ĊĠĠĠĠĠĠĠ Ġ. body Value ( create Request . to Article Wrapper ()) ĊĠĠĠĠĠĠĠ Ġ. authorization Token ( author . token ) ĊĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠ Ġ. expect Body < Article Wrapper < Article View >>() ĊĠĠĠĠĠĠĠ Ġ. return Result () ĊĠĠĠĠĠĠĠ Ġ. response Body !! ĊĠĠĠĠĠĠĠ Ġ. content ĊĊĠĠĠ Ġfun Ġget Article ( slug : ĠString , Ġuser : ĠUser View ): ĠArticle View Ġ= Ġclient . get () ĊĠĠĠĠĠĠĠ Ġ. uri ("/ api / articles /$ slug ") ĊĠĠĠĠĠĠĠ Ġ. authorization Token ( user . token ) ĊĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠ Ġ. expect Body < Article Wrapper < Article View >>() ĊĠĠĠĠĠĠĠ Ġ. return Result () ĊĠĠĠĠĠĠĠ Ġ. response Body !! ĊĠĠĠĠĠĠĠ Ġ. content ĊĊĠĠĠ Ġfun Ġupdate Article ( slug : ĠString , Ġrequest : ĠUpdate Article Request , Ġuser : ĠUser View ): ĠArticle View Ġ= Ġclient . put () ĊĠĠĠĠĠĠĠ Ġ. uri ("/ api / articles /$ slug ") ĊĠĠĠĠĠĠĠ Ġ. body Value ( request . to Article Wrapper ()) ĊĠĠĠĠĠĠĠ Ġ. authorization Token ( user . token ) ĊĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠ Ġ. expect Body < Article Wrapper < Article View >>() ĊĠĠĠĠĠĠĠ Ġ. return Result () ĊĠĠĠĠĠĠĠ Ġ. response Body !! ĊĠĠĠĠĠĠĠ Ġ. content ĊĊĠĠĠ Ġfun Ġdelete Article ( slug : ĠString , Ġuser : ĠUser View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġclient . delete () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. uri ("/ api / articles /$ slug ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. authorization Token ( user . token ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfeed ( user : ĠUser View , Ġoffset : ĠLong Ġ= Ġ 0 , Ġlimit : ĠInt Ġ= Ġ 2 0 ): ĠMultiple Articles View Ġ= Ġclient . get () ĊĠĠĠĠĠĠĠ Ġ. build Uri Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpath ("/ api / articles / feed ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquery Param (" limit ", Ġlimit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquery Param (" offset ", Ġoffset ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ. authorization Token ( user . token ) ĊĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠ Ġ. expect Body < Multiple Articles View >() ĊĠĠĠĠĠĠĠ Ġ. return Result () ĊĠĠĠĠĠĠĠ Ġ. response Body !! ĊĊĠĠĠ Ġfun Ġfind Articles ( ĊĠĠĠĠĠĠĠ Ġtag : ĠString ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġauthor : ĠString ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġfavor ited By : ĠString ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġoffset : ĠInt Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠ Ġlimit : ĠInt Ġ= Ġ 2 0 , ĊĠĠĠĠĠĠĠ Ġuser : ĠUser View ? Ġ= Ġnull , ĊĠĠĠ Ġ): ĠMultiple Articles View Ġ= Ġclient . get () ĊĠĠĠĠĠĠĠ Ġ. build Uri Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpath ("/ api / articles ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquery Param (" limit ", Ġlimit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquery Param (" offset ", Ġoffset ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquery Param If Present (" tag ", Ġtag ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquery Param If Present (" author ", Ġauthor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquery Param If Present (" f avor ited ", Ġfavor ited By ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( user Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġauthorization Token ( user . token ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠ Ġ. expect Body < Multiple Articles View >() ĊĠĠĠĠĠĠĠ Ġ. return Result () ĊĠĠĠĠĠĠĠ Ġ. response Body !! ĊĊĠĠĠ Ġfun Ġfavorite Article ( slug : ĠString , Ġuser : ĠUser View ) Ġ= Ġclient . post () ĊĠĠĠĠĠĠĠ Ġ. uri ("/ api / articles /$ slug / favorite ") ĊĠĠĠĠĠĠĠ Ġ. authorization Token ( user . token ) ĊĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠ Ġ. expect Body < Article Wrapper < Article View >>() ĊĠĠĠĠĠĠĠ Ġ. return Result () ĊĠĠĠĠĠĠĠ Ġ. response Body !! ĊĠĠĠĠĠĠĠ Ġ. content ĊĊĠĠĠ Ġfun Ġun favorite Article ( slug : ĠString , Ġuser : ĠUser View ) Ġ= Ġclient . delete () ĊĠĠĠĠĠĠĠ Ġ. uri ("/ api / articles /$ slug / favorite ") ĊĠĠĠĠĠĠĠ Ġ. authorization Token ( user . token ) ĊĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠ Ġ. expect Body < Article Wrapper < Article View >>() ĊĠĠĠĠĠĠĠ Ġ. return Result () ĊĠĠĠĠĠĠĠ Ġ. response Body !! ĊĠĠĠĠĠĠĠ Ġ. content ĊĊĠĠĠ Ġfun Ġadd Comment ( slug : ĠString , Ġcomment Body : ĠString , Ġuser : ĠUser View ): ĠComment View Ġ= Ġclient . post () ĊĠĠĠĠĠĠĠ Ġ. uri ("/ api / articles /$ slug / comments ") ĊĠĠĠĠĠĠĠ Ġ. body Value ( Create Comment Request ( comment Body ). to Comment Wrapper ()) ĊĠĠĠĠĠĠĠ Ġ. authorization Token ( user . token ) ĊĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠ Ġ. expect Body < Comment Wrapper < Comment View >>() ĊĠĠĠĠĠĠĠ Ġ. return Result () ĊĠĠĠĠĠĠĠ Ġ. response Body !! ĊĠĠĠĠĠĠĠ Ġ. content ĊĊĠĠĠ Ġfun Ġdelete Comment ( slug : ĠString , Ġcomment Id : ĠString , Ġuser : ĠUser View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġclient . delete () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. uri ("/ api / articles /$ slug / comments /$ comment Id ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. authorization Token ( user . token ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Comments ( slug : ĠString , Ġuser : ĠUser View ): ĠMultiple Comments View Ġ= Ġclient . get () ĊĠĠĠĠĠĠĠ Ġ. uri ("/ api / articles /$ slug / comments ") ĊĠĠĠĠĠĠĠ Ġ. authorization Token ( user . token ) ĊĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠ Ġ. expect Body < Multiple Comments View >() ĊĠĠĠĠĠĠĠ Ġ. return Result () ĊĠĠĠĠĠĠĠ Ġ. response Body !! ĊĊĠĠĠ Ġfun Ġget Tags (): ĠTag ListView Ġ= Ġclient . get () ĊĠĠĠĠĠĠĠ Ġ. uri ("/ api / tags ") ĊĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠ Ġ. expect Body < Tag ListView >() ĊĠĠĠĠĠĠĠ Ġ. return Result () ĊĠĠĠĠĠĠĠ Ġ. response Body !! Ċ }