package Ġlibrary . service . metrics Ċ Ċ import Ġio . micro meter . core . instrument . Gauge Ċ import Ġio . micro meter . core . instrument . simple . Simple Meter Registry Ċ import Ġio . mock k . every Ċ import Ġio . mock k . mock k Ċ import Ġlibrary . service . database . Book Repository Ċ import Ġorg . assertj . core . api . Assertions . assertThat Ċ import Ġorg . junit . jupiter . api . BeforeEach Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġutils . classification . UnitTest Ċ Ċ @ UnitTest Ċ internal Ġclass ĠG auge Registrar Test Ġ{ ĊĊĠĠĠ Ġval Ġregistry Ġ= ĠSimple Meter Registry () ĊĠĠĠ Ġval Ġrepository : ĠBook Repository Ġ= Ġmock k () ĊĠĠĠ Ġval Ġcut Ġ= ĠG auge Registrar ( registry , Ġrepository ) ĊĊĠĠĠ Ġ@ BeforeEach Ġfun Ġinit () Ġ= Ġcut . register G au ges () ĊĊĠĠĠ Ġ@ Test Ġfun Ġ` total Ġnumber Ġof Ġbooks `() Ġ{ ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġrepository . count () Ġ} Ġreturns Ġ 4 2 ĊĠĠĠĠĠĠĠ Ġwith ( gauge (" library . books . total ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( value ()). isEqualTo ( 4 2 . 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġ` number Ġof Ġborrow ed Ġbooks `() Ġ{ ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġrepository . count By Borrow ed NotNull () Ġ} Ġreturns Ġ 4 2 ĊĠĠĠĠĠĠĠ Ġwith ( gauge (" library . books . borrow ed ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( value ()). isEqualTo ( 4 2 . 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġgauge ( name : ĠString ): ĠG auge Ġ= Ġregistry . meters . single Ġ{ Ġit . id . name Ġ== Ġname Ġ} Ġas ĠG auge Ċ Ċ }