/* Ċ Ġ* Ġspring - message - board - demo Ċ Ġ* ĠRefer Ġto ĠLIC ENCE . txt Ġfor Ġlicence Ġdetails . Ċ Ġ*/ Ċ package Ġtest case . service . post Ċ Ċ import Ġcom . github . fj . board . exception . client . board . Board NotFoundException Ċ import Ġcom . github . fj . board . exception . client . post . Post NotFoundException Ċ import Ġcom . github . fj . board . persistence . entity . post . Post Ċ import Ġcom . github . fj . board . persistence . model . board . Board Access Ċ import Ġcom . github . fj . board . service . post . Get Post Service Ċ import Ġcom . github . fj . board . service . post . impl . Get Post ServiceImpl Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . K Argument Captor Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . argument Captor Ċ import Ġorg . hamcrest . Matcher Assert . assertThat Ċ import Ġorg . hamcrest . Matchers .` is ` Ċ import Ġorg . junit . jupiter . api . Assertions . assertTrue Ċ import Ġorg . junit . jupiter . api . BeforeEach Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . jupiter . api . assert Throws Ċ import Ġorg . mockito . Mockito .` when ` Ċ import Ġorg . mockito . Mockito . times Ċ import Ġorg . mockito . Mockito . verify Ċ Ċ /** Ċ Ġ* Ġ@ author ĠFr ances co ĠJo ( nim bus ob @ gmail . com ) Ċ Ġ* Ġ@ since Ġ 0 3 Ġ- ĠAug Ġ- Ġ 2 0 2 0 Ċ Ġ*/ Ċ class ĠGet Post Single Service Test Ġ: ĠAbstract Post Service Test Template () Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġsut : ĠGet Post Service ĊĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġoverride Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . setup () ĊĊĠĠĠĠĠĠĠ Ġthis . sut Ġ= ĠGet Post ServiceImpl ( user Repo , Ġboard Repo , Ġpost Repo , Ġreply Repo ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` fail Ġif Ġtarget Ġpost Ġis Ġnot Ġfound `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġgiven : ĊĠĠĠĠĠĠĠ Ġval Ġ(_, Ġ_, Ġpost ) Ġ= Ġpost Preconditions () ĊĊĠĠĠĠĠĠĠ Ġ// Ġwhen : ĊĠĠĠĠĠĠĠ Ġ` when `( post Repo . findBy Access Id ( post . access Id )). thenReturn ( null ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġthen : ĊĠĠĠĠĠĠĠ ĠassertThrows < Post NotFoundException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsut . getOne ( post . access Id , Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` fail Ġif Ġuser Ġis Ġun authenticated Ġand Ġpost Ġis Ġin Ġnon - public Ġboard `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġgiven : ĊĠĠĠĠĠĠĠ Ġval Ġ(_, Ġ_, Ġpost ) Ġ= Ġpost Preconditions () ĊĠĠĠĠĠĠĠ Ġpost . board . access Ġ= ĠBoard Access . MEMBER S _ ONLY ĊĊĠĠĠĠĠĠĠ Ġ// Ġwhen : ĊĠĠĠĠĠĠĠ Ġ` when `( post Repo . findBy Access Id ( post . access Id )). thenReturn ( post ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġthen : ĊĠĠĠĠĠĠĠ ĠassertThrows < Board NotFoundException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsut . getOne ( post . access Id , Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` post Ġdetail Ġand Ġlatest Ġreplies Ġare Ġreturned `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġgiven : ĊĠĠĠĠĠĠĠ Ġval Ġ(_, Ġ_, Ġpost ) Ġ= Ġpost Preconditions () ĊĊĠĠĠĠĠĠĠ Ġ// Ġwhen : ĊĠĠĠĠĠĠĠ Ġ` when `( post Repo . findBy Access Id ( post . access Id )). thenReturn ( post ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġthen : ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġsut . getOne ( post . access Id , Ġnull ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġexpect : ĊĠĠĠĠĠĠĠ ĠassertThat ( actual . board Id , Ġ` is `( post . board . access Id )) ĊĠĠĠĠĠĠĠ ĠassertThat ( actual . access Id , Ġ` is `( post . access Id )) ĊĠĠĠĠĠĠĠ ĠassertTrue (! actual . edited ) ĊĠĠĠĠĠĠĠ ĠassertThat ( actual . writer Nick name , Ġ` is `( post . creator . nickname )) ĊĠĠĠĠĠĠĠ ĠassertThat ( actual . writer Login Name , Ġ` is `( post . creator . authentication . login Name )) ĊĠĠĠĠĠĠĠ ĠassertThat ( actual . title , Ġ` is `( post . title )) ĊĠĠĠĠĠĠĠ ĠassertThat ( actual . contents , Ġ` is `( post . contents )) ĊĠĠĠĠĠĠĠ ĠassertThat ( actual . attachments . size , Ġ` is `( post . attachments . size )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` view Count Ġis Ġincreased Ġif Ġdifferent Ġview ers Ġaccess Ġpost `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġgiven : ĊĠĠĠĠĠĠĠ Ġval Ġ(_, Ġ_, Ġpost ) Ġ= Ġpost Preconditions () ĊĠĠĠĠĠĠĠ Ġval Ġold View Count Ġ= Ġpost . view ed Count ĊĊĠĠĠĠĠĠĠ Ġ// Ġwhen : ĊĠĠĠĠĠĠĠ Ġ` when `( post Repo . findBy Access Id ( post . access Id )). thenReturn ( post ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġthen : ĊĠĠĠĠĠĠĠ Ġsut . getOne ( post . access Id , Ġnull ) ĊĠĠĠĠĠĠĠ Ġval Ġpost Captor : ĠK Argument Captor < Post > Ġ= Ġargument Captor () ĊĊĠĠĠĠĠĠĠ Ġ// Ġexpect : ĊĠĠĠĠĠĠĠ Ġverify ( post Repo , Ġtimes ( 1 )). save ( post Captor . capture ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġsaved Post Ġ= Ġpost Captor . first Value ĊĠĠĠĠĠĠĠ ĠassertThat ( saved Post . view ed Count , Ġ` is `( old View Count Ġ+ Ġ 1 )) ĊĠĠĠ Ġ} Ċ } Ċ