package Ġcom . jo h ng ach i hi . park ing . services Ċ Ċ import Ġcom . jo h ng ach i hi . park ing . entities . Par king Tar iff Ċ import Ġcom . jo h ng ach i hi . park ing . repositories . Par king Tar iff Repository Ċ 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 Ġorg . assertj . core . api . Assertions . assertThat Ċ import Ġorg . junit . jupiter . api .* Ċ import Ġorg . junit . jupiter . api . extension . Extend With Ċ import Ġjava . time . Duration Ċ Ċ @ DisplayName (" Test ĠDefault Par king Tar iff ") Ċ @ Extend With ( Mock K Extension :: class ) Ċ internal Ġclass ĠDefault Par king Tar iff Service Test Ġ{ ĊĠĠĠ Ġ@ Mock K ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġpar king Tar iff Repository : ĠPark ing Tar iff Repository ĊĊĠĠĠ Ġ@ Inject Mock Ks ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġpar king Tar iff Service : ĠDefault Par king Tar iff Service ĊĊĠĠĠ Ġ@ Nested ĊĠĠĠ Ġ@ DisplayName (" When Ġthere Ġis Ġpar king - tar iff Ġdata ") ĊĠĠĠ Ġinner Ġclass ĠTest When There Is Par king Tar iff Data Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ BeforeEach ĊĠĠĠĠĠĠĠ Ġfun Ġinit () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpar king Tar iff Repository . getAll In Asc Order Of Upper Limit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġreturns ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmake Par king Tar iff ( 1 , ĠDuration . of Minutes ( 1 0 ), Ġfee Ġ= Ġ 1 . 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmake Par king Tar iff ( 2 , ĠDuration . of Minutes ( 2 0 ), Ġfee Ġ= Ġ 2 . 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmake Par king Tar iff ( 3 , ĠDuration . of Minutes ( 3 0 ), Ġfee Ġ= Ġ 3 . 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠ Ġfun Ġ` and Ġthere Ġis Ġan Ġoverlapping Ġtar iff , Ġthen Ġreturns Ġthe Ġoverlapping Ġtar iff 's Ġfee `() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfee Ġ= Ġpar king Tar iff Service . get Fee ( Duration . of Minutes ( 1 9 )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( fee ). isEqualTo ( 2 . 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠ Ġfun Ġ` and Ġthere Ġis Ġno Ġoverlapping Ġtar iff , Ġreturns Ġthe Ġfee Ġfor Ġthe Ġtar iff Ġwith Ġthe Ġhighest Ġupper Limit `() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfee Ġ= Ġpar king Tar iff Service . get Fee ( Duration . of Minutes ( 4 0 )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssertions . assertEquals ( 3 . 0 , Ġfee ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġmake Par king Tar iff ( id : ĠLong , Ġupper Limit : ĠDuration , Ġfee : ĠDouble Ġ= Ġ 1 . 0 ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPark ing Tar iff (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . id Ġ= Ġid ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . upper Limit Ġ= Ġupper Limit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . fee Ġ= Ġfee ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` When Ġthere Ġis Ġno Ġpar king Ġtar iff Ġdata , Ġreturns Ġ 0 `() Ġ{ ĊĠĠĠĠĠĠĠ Ġevery Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpar king Tar iff Repository . getAll In Asc Order Of Upper Limit () ĊĠĠĠĠĠĠĠ Ġ} Ġreturns Ġempty List () ĊĊĠĠĠĠĠĠĠ Ġval Ġfee Ġ= Ġpar king Tar iff Service . get Fee ( Duration . of Minutes ( 4 0 )) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( fee ). isEqualTo ( 0 . 0 ) ĊĠĠĠ Ġ} Ċ }