Skip to content

Commit

Permalink
NAV-23143: Legger til ValutakursRestClientMock for å forhindre at Dif…
Browse files Browse the repository at this point in the history
…feranseberegningIntegrasjonTest går mot det reelle endepunktet (#4889)

### 💰 Hva skal gjøres, og hvorfor?
Favro:
https://favro.com/organization/98c34fb974ce445eac854de0/1844bbac3b6605eacc8f5543?card=NAV-23143

Forhindrer at den faktiske testen skal gå mot det reelle endepunktet.
Slik det er nå vil testen feile om endepunktet er nede. Ved å mock dette
forhindrer vi denne avhengigheten.

Har brukt
[EfSakRestClientMock](https://github.com/navikt/familie-ba-sak/blob/37cbe2d8bd5e4f24efc8e5b991f5f63770a945ee/src/test/enhetstester/kotlin/no/nav/familie/ba/sak/config/EfSakRestClientMock.kt#L17)
som inspirasjon.

### 🔎️ Er det noe spesielt du ønsker tilbakemelding om?

- Ser de andre mockene bruker `clearMocks` men trenger vi egentlig det? 
- La inn logikk for å filtrere bort `ExchangeRates` slik at valideringen
ikke feilet, men jeg er usikker på om det gir helt mening i forhold til
logikken som ligger i `ECBService`. Om noen har en dypere forståelse så
kom gjerne med innspill.

### ✅ Checklist
_Har du husket alle punktene i listen?_
- [ ] Jeg har testet mine endringer i henhold til akseptansekriteriene
🕵️
- [ ] Jeg har config- eller sql-endringer. I så fall, husk manuell
deploy til miljø for å verifisere endringene.
- [x] Jeg har skrevet tester. Hvis du ikke har skrevet tester, beskriv
hvorfor under 👇

_Jeg har ikke skrevet tester fordi:_
Ikke relevant.

### 💬 Ønsker du en muntlig gjennomgang?
- [ ] Ja
- [x] Nei

---------

Co-authored-by: Uy Nguyen <[email protected]>
  • Loading branch information
thoalm and UyQuangNguyen authored Nov 14, 2024
1 parent 637f705 commit 1e7a02a
Show file tree
Hide file tree
Showing 2 changed files with 64 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import no.nav.familie.ba.sak.kjerne.tilbakekreving.TilbakekrevingKlient
import no.nav.familie.ba.sak.task.OpprettTaskService
import no.nav.familie.ba.sak.task.TaskRepositoryTestConfig
import no.nav.familie.unleash.UnleashService
import no.nav.familie.valutakurs.ValutakursRestClient
import org.junit.jupiter.api.BeforeEach
import org.slf4j.MDC
import org.springframework.beans.factory.annotation.Autowired
Expand Down Expand Up @@ -43,6 +44,9 @@ abstract class AbstractMockkSpringRunner {
@Autowired
private lateinit var mockEfSakRestClient: EfSakRestClient

@Autowired
private lateinit var mockValutakursRestClient: ValutakursRestClient

@Autowired
private lateinit var mockØkonomiKlient: ØkonomiKlient

Expand Down Expand Up @@ -119,6 +123,10 @@ abstract class AbstractMockkSpringRunner {
EfSakRestClientMock.clearEfSakRestMocks(mockEfSakRestClient)
}

if (isMockKMock(mockValutakursRestClient)) {
ValutakursRestClientMock.clearValutakursRestClient(mockValutakursRestClient)
}

if (isMockKMock(mockØkonomiKlient)) {
ØkonomiTestConfig.clearØkonomiMocks(mockØkonomiKlient)
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
package no.nav.familie.ba.sak.config

import io.mockk.clearMocks
import io.mockk.every
import io.mockk.mockk
import no.nav.familie.ba.sak.integrasjoner.ecb.ECBConstants
import no.nav.familie.valutakurs.ValutakursRestClient
import no.nav.familie.valutakurs.domene.ExchangeRate
import org.springframework.boot.test.context.TestConfiguration
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Primary
import java.math.BigDecimal
import java.time.LocalDate

@TestConfiguration
class ValutakursRestClientMock {
@Bean
@Primary
fun mockValutakursRestClientMock(): ValutakursRestClient {
val valutakursRestClientMock = mockk<ValutakursRestClient>()

clearValutakursRestClient(valutakursRestClientMock)

return valutakursRestClientMock
}

companion object {
fun clearValutakursRestClient(valutakursRestClientMock: ValutakursRestClient) {
clearMocks(valutakursRestClientMock)

every {
valutakursRestClientMock.hentValutakurs(
frequency = any(),
currencies = any(),
exchangeRateDate = any(),
)
} answers {
val currencies = secondArg<List<String>>()
val dagensDato = thirdArg<LocalDate>()
val exchangeRates =
currencies.map {
ExchangeRate(
currency = it,
exchangeRate = BigDecimal(10),
date = dagensDato,
)
}
if (ECBConstants.EUR in currencies) {
exchangeRates.filter { it.currency == ECBConstants.NOK }
} else {
exchangeRates
}
}
}
}
}

0 comments on commit 1e7a02a

Please sign in to comment.