package Ġme tri k . project . domain . repository Ċ Ċ import Ġme tri k . infrastructure . ut lil s . to Timestamp Ċ import Ġme tri k . project . domain . model . Commit Ċ import Ġme tri k . project . domain . service . github actions . Github Commit Ċ import Ġorg . assertj . core . api . Assertions . assertThat Ċ import Ġorg . junit . jupiter . api . Assertions . assertTrue Ċ import Ġorg . junit . jupiter . api . BeforeEach Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . jupiter . api . extension . Extend With Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġorg . springframework . boot . test . autoconfigure . data . mongo . Data Mongo Test Ċ import Ġorg . springframework . context . annotation . Import Ċ import Ġorg . springframework . data . mongodb . core . Mongo Template Ċ import Ġorg . springframework . test . context . junit . jupiter . Spring Extension Ċ import Ġjava . time . Zone Id Ċ import Ġjava . time . Z onedDateTime Ċ Ċ @ Data Mongo Test Ċ @ Extend With ( Spring Extension :: class ) Ċ @ Import ( Commit Repository :: class ) Ċ internal Ġclass ĠCommit Repository Test Ġ{ ĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmongo Template : ĠMongo Template ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcommit Repository : ĠCommit Repository ĊĠĠĠ Ġprivate Ġval Ġcollection Name Ġ= Ġ" commit " ĊĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġfun ĠsetUp (@ Autowired Ġmongo Template : ĠMongo Template ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmongo Template . drop Collection ( collection Name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġinternal Ġfun Ġ` should Ġget Ġlatest Ġcommit Ġgiven Ġthere Ġare Ġrecords Ġin ĠDB `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpipeline Id Ġ= Ġ" test Ġpipeline " ĊĠĠĠĠĠĠĠ Ġval Ġearly TimeStamp Ġ= ĠZ onedDateTime . of ( 2 0 2 1 , Ġ 1 , Ġ 1 , Ġ 0 , Ġ 0 , Ġ 0 , Ġ 0 , ĠZone Id . system Default ()). to Timestamp () ĊĠĠĠĠĠĠĠ Ġval Ġlate TimeStamp Ġ= ĠZ onedDateTime . of ( 2 0 2 1 , Ġ 1 , Ġ 2 , Ġ 0 , Ġ 0 , Ġ 0 , Ġ 0 , ĠZone Id . system Default ()). to Timestamp () ĊĊĠĠĠĠĠĠĠ Ġmongo Template . save ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCommit ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtimestamp Ġ= Ġearly TimeStamp , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpipeline Id Ġ= Ġpipeline Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcollection Name ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġmongo Template . save ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCommit ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtimestamp Ġ= Ġlate TimeStamp , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpipeline Id Ġ= Ġpipeline Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcollection Name ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( commit Repository . get The Latest Commit ( pipeline Id ) !!. timestamp ). isEqualTo ( late TimeStamp ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġinternal Ġfun Ġ` should Ġfind Ġcommit Ġby Ġtime Ġperiod `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpipeline Id Ġ= Ġ" test Ġpipeline " ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( day Ġin Ġ 1 .. 5 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmongo Template . save ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCommit ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtimestamp Ġ= ĠZ onedDateTime . of ( 2 0 2 1 , Ġ 1 , Ġday , Ġ 0 , Ġ 0 , Ġ 0 , Ġ 0 , ĠZone Id . system Default ()). to Timestamp (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpipeline Id Ġ= Ġpipeline Id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcollection Name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertThat ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcommit Repository . findBy Time Period ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpipeline Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠZ onedDateTime . of ( 2 0 2 1 , Ġ 1 , Ġ 2 , Ġ 0 , Ġ 0 , Ġ 0 , Ġ 0 , ĠZone Id . system Default ()). to Timestamp (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠZ onedDateTime . of ( 2 0 2 1 , Ġ 1 , Ġ 4 , Ġ 0 , Ġ 0 , Ġ 0 , Ġ 0 , ĠZone Id . system Default ()). to Timestamp () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). size ĊĠĠĠĠĠĠĠ Ġ). isEqualTo ( 3 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġinternal Ġfun Ġ` should Ġdetect Ġduplication `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpipeline Id Ġ= Ġ" test Ġpipeline " ĊĠĠĠĠĠĠĠ Ġmongo Template . save ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCommit ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcommit Id Ġ= Ġ" 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtimestamp Ġ= ĠZ onedDateTime . of ( 2 0 2 1 , Ġ 1 , Ġ 1 , Ġ 0 , Ġ 0 , Ġ 0 , Ġ 0 , ĠZone Id . system Default ()). to Timestamp (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpipeline Id Ġ= Ġpipeline Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcollection Name ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġcommits ToCheck Ġ= Ġ( 1 .. 3 ). map Ġ{ ĠGithub Commit ( it . toString (), ĠZ onedDateTime . now ()) Ġ} ĊĠĠĠĠĠĠĠ ĠassertTrue ( commit Repository . has Dup lication ( commits ToCheck )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġinternal Ġfun Ġ` should Ġsave Ġor Ġreplace Ġcommits `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpipeline Id Ġ= Ġ" test Ġpipeline " ĊĠĠĠĠĠĠĠ Ġmongo Template . save ( Commit ( pipeline Id Ġ= Ġpipeline Id , Ġcommit Id Ġ= Ġ" 1 ")) ĊĊĠĠĠĠĠĠĠ Ġval Ġcommits To Save Ġ= Ġ( 1 .. 3 ). map Ġ{ ĠGithub Commit ( it . toString (), ĠZ onedDateTime . now ()) Ġ} ĊĠĠĠĠĠĠĠ Ġcommit Repository . save ( pipeline Id , Ġcommits To Save . to Mutable List ()) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( mongo Template . findAll ( Commit :: class . java ). size ). isEqualTo ( 3 ) ĊĠĠĠ Ġ} Ċ } Ċ