package Ġorg . bible translation tools . fetcher Ċ Ċ import Ġcom . fasterxml . jackson . module . kotlin . jackson ObjectMapper Ċ import Ġcom . fasterxml . jackson . module . kotlin . readValue Ċ import Ġjava . io . File Ċ import Ġjava . net . URL Ċ import Ġorg . bible translation tools . fetcher . data . Language Ċ import Ġorg . bible translation tools . fetcher . impl . repository . Language Repository Impl Ċ import Ġorg . bible translation tools . fetcher . repository . Language Catalog Ċ import Ġorg . bible translation tools . fetcher . repository . Storage Access Ċ import Ġorg . junit . Assert . assertEquals Ċ import Ġorg . junit . Test Ċ import Ġorg . mockito . Mockito Ċ import Ġorg . mockito . Mockito .` when ` Ċ import Ġorg . slf 4 j . LoggerFactory Ċ Ċ class ĠLanguage Repository Impl Test Ġ{ ĊĊĠĠĠ Ġdata Ġclass ĠGet Languages TestCase ( ĊĠĠĠĠĠĠĠ Ġval Ġlanguage Codes : ĠList < String >, ĊĠĠĠĠĠĠĠ Ġval Ġcatalog Languages : ĠList < Language >, ĊĠĠĠĠĠĠĠ Ġval Ġexpected Result : ĠList < Language > ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġval Ġlogger Ġ= ĠLoggerFactory . getLogger ( java Class ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠtestGet Languages () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmock Storage Access Ġ= ĠMockito . mock ( Storage Access :: class . java ) ĊĠĠĠĠĠĠĠ Ġval Ġmock Language Catalog Ġ= ĠMockito . mock ( Language Catalog :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( testCase Ġin Ġretrieve Get Languages TestCase s ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ` when `( mock Storage Access . get Language Codes ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. thenReturn ( testCase . language Codes ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ` when `( mock Language Catalog . getAll ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. thenReturn ( testCase . catalog Languages ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlanguage Repository Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLanguage Repository Impl ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmock Storage Access , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmock Language Catalog ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtestCase . expected Result , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlanguage Repository . get Languages () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġretrieve Get Languages TestCase s (): ĠList < Get Languages TestCase > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtest Cases Resource : ĠURL ? Ġ= Ġjava Class . class Loader . getResource ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Language Repository Impl _ Get Languages _ TestCase s . json " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġif Ġ( test Cases Resource Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error (" Language ĠRepository ĠImplementation ĠJSON Ġtest Ġfile Ġnot Ġfound .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠlistOf () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġtest Cases File Ġ= ĠFile ( test Cases Resource . file ) ĊĠĠĠĠĠĠĠ Ġreturn Ġj ack son ObjectMapper (). readValue ( test Cases File . read Text ()) ĊĠĠĠ Ġ} Ċ } Ċ