package Ġcom . ep am . br n . controller Ċ Ċ import Ġcom . ep am . br n . dto . Study History Dto Ċ import Ġcom . ep am . br n . dto . statistic . Day Study Statistic Ċ import Ġcom . ep am . br n . dto . statistic . Month Study Statistic Ċ import Ġcom . ep am . br n . service . Study History Service Ċ import Ġcom . ep am . br n . service . statistic . User Period Statistic Service Ċ import Ġio . kot est . matchers . shouldBe Ċ import Ġio . mock k . every Ċ import Ġio . mock k . impl . annotations . Inject Mock Ks Ċ import Ġio . mock k . impl . annotations . Mock K Ċ import Ġio . mock k . junit 5 . Mock K Extension Ċ import Ġio . mock k . mock k Ċ import Ġio . mock k . verify Ċ import Ġorg . apache . http . HttpStatus Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . jupiter . api . extension . Extend With Ċ import Ġjava . time . LocalDateTime Ċ Ċ @ Extend With ( Mock K Extension :: class ) Ċ class ĠAdmin Controller Test V 2 Ġ{ ĊĊĠĠĠ Ġ@ Inject Mock Ks ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġadmin Controller : ĠAdmin Controller V 2 ĊĊĠĠĠ Ġ@ Mock K ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġstudy History Service : ĠStudy History Service ĊĊĠĠĠ Ġ@ Mock K ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġuser Day Statistic Service : ĠUser Period Statistic Service < Day Study Statistic > ĊĊĠĠĠ Ġ@ Mock K ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġuser Month Statistic Service : ĠUser Period Statistic Service < Month Study Statistic > ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` get Hist ories Ġshould Ġreturn Ġhist ories `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠG IV EN ĊĠĠĠĠĠĠĠ Ġval ĠuserId Ġ= Ġ 1 L ĊĠĠĠĠĠĠĠ Ġval Ġdate Ġ= ĠLocalDateTime . now () ĊĠĠĠĠĠĠĠ Ġval Ġstudy History Dto Ġ= Ġmock k < Study History Dto >() ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġstudy History Service . get Hist ories ( userId , Ġdate , Ġdate ) Ġ} Ġreturns ĠlistOf ( study History Dto ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWHEN ĊĠĠĠĠĠĠĠ Ġval Ġhist ories Ġ= Ġadmin Controller . get Hist ories ( userId , Ġdate , Ġdate ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠTHEN ĊĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 1 ) Ġ{ Ġstudy History Service . get Hist ories ( userId , Ġdate , Ġdate ) Ġ} ĊĠĠĠĠĠĠĠ Ġhist ories . statusCode Value ĠshouldBe ĠHttpStatus . SC _ OK ĊĠĠĠĠĠĠĠ Ġhist ories . body !!. data ĠshouldBe ĠlistOf ( study History Dto ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` getUser Week ly Statistic Ġshould Ġreturn Ġweekly Ġstatistic `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠG IV EN ĊĠĠĠĠĠĠĠ Ġval ĠuserId Ġ= Ġ 1 L ĊĠĠĠĠĠĠĠ Ġval Ġdate Ġ= ĠLocalDateTime . now () ĊĠĠĠĠĠĠĠ Ġval Ġday Study Statistic Ġ= Ġmock k < Day Study Statistic >() ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġuser Day Statistic Service . get Statistic For Period ( date , Ġdate , ĠuserId ) Ġ} Ġreturns ĠlistOf ( day Study Statistic ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWHEN ĊĠĠĠĠĠĠĠ Ġval Ġuser Week ly Statistic Ġ= Ġadmin Controller . getUser Week ly Statistic ( date , Ġdate , ĠuserId ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠTHEN ĊĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 1 ) Ġ{ Ġuser Day Statistic Service . get Statistic For Period ( date , Ġdate , ĠuserId ) Ġ} ĊĠĠĠĠĠĠĠ Ġuser Week ly Statistic . statusCode Value ĠshouldBe ĠHttpStatus . SC _ OK ĊĠĠĠĠĠĠĠ Ġuser Week ly Statistic . body !!. data ĠshouldBe ĠlistOf ( day Study Statistic ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` getUser Year ly Statistic Ġshould Ġreturn Ġyear ly Ġstatistic `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠG IV EN ĊĠĠĠĠĠĠĠ Ġval ĠuserId Ġ= Ġ 1 L ĊĠĠĠĠĠĠĠ Ġval Ġdate Ġ= ĠLocalDateTime . now () ĊĠĠĠĠĠĠĠ Ġval Ġmonth Study Statistic Ġ= Ġmock k < Month Study Statistic >() ĊĠĠĠĠĠĠĠ Ġevery Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser Month Statistic Service . get Statistic For Period ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdate , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdate , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠuserId ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġreturns ĠlistOf ( month Study Statistic ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWHEN ĊĠĠĠĠĠĠĠ Ġval Ġuser Year ly Statistic Ġ= Ġadmin Controller . getUser Year ly Statistic ( date , Ġdate , ĠuserId ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠTHEN ĊĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 1 ) Ġ{ Ġuser Month Statistic Service . get Statistic For Period ( date , Ġdate , ĠuserId ) Ġ} ĊĠĠĠĠĠĠĠ Ġuser Year ly Statistic . statusCode Value ĠshouldBe ĠHttpStatus . SC _ OK ĊĠĠĠĠĠĠĠ Ġuser Year ly Statistic . body !!. data ĠshouldBe ĠlistOf ( month Study Statistic ) ĊĠĠĠ Ġ} Ċ } Ċ