package Ġcom . github . c et one k . big biz nis . domain . repository Ċ Ċ import Ġcom . github . c et one k . big biz nis . Database Test Ċ import Ġcom . github . c et one k . big biz nis . domain . entity . pers isted . Une mploy ment Rate Ċ import Ġcom . github . c et one k . big biz nis . domain . entity . Une mploy ment Rate Per Year Avg Ċ import Ġorg . assertj . core . api . Assertions . assertThat Ċ import Ġorg . junit . jupiter . api . BeforeEach Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . jupiter . api . assert Throws Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġorg . springframework . dao . Data Integr ity Violation Exception Ċ Ċ @ Database Test Ċ class ĠU ne mploy ment Rate Repository Test Ġ{ ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġlateinit Ġvar Ġrepository : ĠU ne mploy ment Rate Repository ĊĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġrepository . delete All In Batch () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` entity Ġcan Ġbe Ġsaved Ġand Ġretrieved `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsaved Entity Ġ= Ġrepository . save ( Une mploy ment Rate ( 2 0 2 0 , Ġ 1 2 , Ġ 1 0 f )) ĊĊĠĠĠĠĠĠĠ Ġval Ġfound Entity Ġ= Ġrepository . findById ( saved Entity . id !! ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( found Entity ). isNotNull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` entity Ġwith Ġnegative Ġun employment Ġcannot Ġbe Ġsaved `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertThrows < Data Integr ity Violation Exception > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepository . save ( Une mploy ment Rate ( 2 0 2 0 , Ġ 1 2 , Ġ- 1 0 f )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test Ġgetting Ġyear ly Ġaver aged Ġun employment `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĊĠĠĠĠĠĠĠ Ġval Ġfirst Qu ater 2 0 1 6 Ġ= ĠU ne mploy ment Rate ( year Ġ= Ġ 2 0 1 6 , Ġmonth Ġ= Ġ 1 , Ġun employment Percent Ġ= Ġ 5 . 0 F ) ĊĠĠĠĠĠĠĠ Ġval Ġsecond Qu ater 2 0 1 6 Ġ= ĠU ne mploy ment Rate ( year Ġ= Ġ 2 0 1 6 , Ġmonth Ġ= Ġ 2 , Ġun employment Percent Ġ= Ġ 1 0 . 0 f ) ĊĠĠĠĠĠĠĠ Ġval Ġthird Qu arter 2 0 1 6 Ġ= ĠU ne mploy ment Rate ( year Ġ= Ġ 2 0 1 6 , Ġmonth Ġ= Ġ 3 , Ġun employment Percent Ġ= Ġ 1 5 . 0 f ) ĊĊĠĠĠĠĠĠĠ Ġval Ġfirst Qu ater 2 0 1 9 Ġ= ĠU ne mploy ment Rate ( year Ġ= Ġ 2 0 1 9 , Ġmonth Ġ= Ġ 1 , Ġun employment Percent Ġ= Ġ 2 5 . 0 f ) ĊĊĠĠĠĠĠĠĠ Ġval Ġthird Qu arter 2 0 2 0 Ġ= ĠU ne mploy ment Rate ( year Ġ= Ġ 2 0 2 0 , Ġmonth Ġ= Ġ 3 , Ġun employment Percent Ġ= Ġ 5 0 . 0 f ) ĊĠĠĠĠĠĠĠ Ġval Ġfourth Qu arter 2 0 2 0 Ġ= ĠU ne mploy ment Rate ( year Ġ= Ġ 2 0 2 0 , Ġmonth Ġ= Ġ 4 , Ġun employment Percent Ġ= Ġ 2 5 . 0 f ) ĊĊĠĠĠĠĠĠĠ Ġrepository . save All ( listOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfirst Qu ater 2 0 1 6 , Ġsecond Qu ater 2 0 1 6 , Ġthird Qu arter 2 0 1 6 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfirst Qu ater 2 0 1 9 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthird Qu arter 2 0 2 0 , Ġfourth Qu arter 2 0 2 0 )) ĊĠĠĠĠĠĠĠ Ġ// Ġwhen ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġrepository . getAll Year ly A ver aged Une mploy ment Rates () ĊĠĠĠĠĠĠĠ Ġ// Ġthen ĊĊĠĠĠĠĠĠĠ Ġprint ("\ n \ n \ n ĠRESULT :") ĊĠĠĠĠĠĠĠ Ġprint ( result ) ĊĠĠĠĠĠĠĠ Ġprint ("\ n \ n \ n ") ĊĊĠĠĠĠĠĠĠ ĠassertThat ( result . size ). isEqualTo ( 3 ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( result . first ()). isEqualTo ( Une mploy ment Rate Per Year Avg ( 2 0 1 6 , Ġ 1 0 . 0 )) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( result [ 1 ]). isEqualTo ( Une mploy ment Rate Per Year Avg ( 2 0 1 9 , Ġ 2 5 . 0 )) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( result [ 2 ]). isEqualTo ( Une mploy ment Rate Per Year Avg ( 2 0 2 0 , Ġ 3 7 . 5 )) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test Ġgetting Ġlatest Ġun employment `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĠĠĠĠĠĠĠ Ġval Ġfirst Qu ater 2 0 1 6 Ġ= ĠU ne mploy ment Rate ( year Ġ= Ġ 2 0 1 6 , Ġmonth Ġ= Ġ 1 , Ġun employment Percent Ġ= Ġ 5 . 0 f ) ĊĠĠĠĠĠĠĠ Ġval Ġsecond Qu ater 2 0 1 6 Ġ= ĠU ne mploy ment Rate ( year Ġ= Ġ 2 0 1 6 , Ġmonth Ġ= Ġ 2 , Ġun employment Percent Ġ= Ġ 1 0 . 0 f ) ĊĠĠĠĠĠĠĠ Ġval Ġthird Qu arter 2 0 1 6 Ġ= ĠU ne mploy ment Rate ( year Ġ= Ġ 2 0 1 6 , Ġmonth Ġ= Ġ 3 , Ġun employment Percent Ġ= Ġ 1 5 . 0 f ) ĊĊĠĠĠĠĠĠĠ Ġval Ġfirst Qu ater 2 0 1 9 Ġ= ĠU ne mploy ment Rate ( year Ġ= Ġ 2 0 1 9 , Ġmonth Ġ= Ġ 1 , Ġun employment Percent Ġ= Ġ 2 5 . 0 f ) ĊĊĠĠĠĠĠĠĠ Ġval Ġthird Qu arter 2 0 2 0 Ġ= ĠU ne mploy ment Rate ( year Ġ= Ġ 2 0 2 0 , Ġmonth Ġ= Ġ 3 , Ġun employment Percent Ġ= Ġ 5 0 . 0 f ) ĊĠĠĠĠĠĠĠ Ġval Ġfourth Qu arter 2 0 2 0 Ġ= ĠU ne mploy ment Rate ( year Ġ= Ġ 2 0 2 0 , Ġmonth Ġ= Ġ 4 , Ġun employment Percent Ġ= Ġ 2 5 . 0 f ) ĊĊĠĠĠĠĠĠĠ Ġrepository . save All ( listOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfirst Qu ater 2 0 1 6 , Ġsecond Qu ater 2 0 1 6 , Ġthird Qu arter 2 0 1 6 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfirst Qu ater 2 0 1 9 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthird Qu arter 2 0 2 0 , Ġfourth Qu arter 2 0 2 0 )) ĊĠĠĠĠĠĠĠ Ġ// Ġwhen ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġrepository . findFirst By OrderBy Year Desc Month Desc () ĊĠĠĠĠĠĠĠ Ġ// Ġthen ĊĊĠĠĠĠĠĠĠ Ġprint ("\ n \ n \ n ĠRESULT :") ĊĠĠĠĠĠĠĠ Ġprint ( result ) ĊĠĠĠĠĠĠĠ Ġprint ("\ n \ n \ n ") ĊĊĠĠĠĠĠĠĠ ĠassertThat ( result ). isEqualTo ( four th Qu arter 2 0 2 0 ) ĊĊĠĠĠ Ġ} Ċ Ċ }