package Ġorg . w 4 . api . movies . domain Ċ Ċ import Ġio . mock k . every Ċ import Ġio . mock k . mock k Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . jupiter . api . Assertions . assertEquals Ċ import Ġorg . springframework . http . HttpStatus Ċ import Ġorg . springframework . http . Response Entity Ċ import Ġorg . springframework . web . client . Rest Template Ċ import Ġorg . w 4 . api . movies . dto . Movie Details Dto Ċ import Ġjava . math . BigDecimal Ċ import Ġjava . util .* Ċ Ċ internal Ġclass ĠMovie Details Fetcher Test Ġ{ ĊĠĠĠ Ġprivate Ġval Ġrepository : ĠMov ies Repository Ġ= Ġmock k () ĊĠĠĠ Ġprivate Ġval Ġrest Template : ĠRest Template Ġ= Ġmock k () ĊĠĠĠ Ġprivate Ġval Ġfetch er : ĠMovie Details Fetcher Ġ= ĠMovie Details Fetcher ( repository , Ġrest Template ). apply Ġ{ ĊĠĠĠĠĠĠĠ ĠapiKey Ġ= Ġ" 0 9 8 7 6 5 " ĊĠĠĠĠĠĠĠ Ġprovider Url Ġ= Ġ" http :// provider . url " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġget Ġdata Ġfrom Ġexternal Ġsource Ġand Ġparse Ġit Ġcorrectly `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// given ĊĠĠĠĠĠĠĠ Ġval Ġtest Movie Id Ġ= Ġ 1 L ĊĠĠĠĠĠĠĠ Ġval Ġtest Title Ġ= Ġ" test Movie " ĊĠĠĠĠĠĠĠ Ġval Ġtest Ext Id Ġ= Ġ" 1 2 3 4 5 " ĊĠĠĠĠĠĠĠ Ġval Ġtest Rating Ġ= ĠBigDecimal (" 8 . 1 ") ĊĠĠĠĠĠĠĠ Ġval Ġtest Runtime Ġ= Ġ" 1 2 0 Ġmin " ĊĠĠĠĠĠĠĠ Ġval Ġexpected Result Ġ= ĠMovie Details Dto ( test Title , Ġtest Rating . toFloat (), Ġtest Runtime ) ĊĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġ" http :// provider . url ? apiKey = 0 9 8 7 6 5 & i = 1 2 3 4 5 " ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġrepository . findById ( test Movie Id ) Ġ} Ġreturns ĠOptional . of ( Movie ( test Movie Id , Ġtest Title , Ġtest Ext Id , Ġmutable ListOf ())) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġrest Template . get For Entity ( url , ĠProvider Response :: class . java ) Ġ} Ġreturns ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResponseEntity ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProvider Response (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġtest Title ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġim db Rating Ġ= Ġtest Rating ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġruntime Ġ= Ġtest Runtime ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHttpStatus . OK ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// when ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġfetch er . get Movie Details ( test Movie Id ) ĊĊĠĠĠĠĠĠĠ Ġ// then ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected Result , Ġresult ) ĊĠĠĠ Ġ} Ċ }