Skip to content

navikt/helse-spesialist

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Spesialist

Bygg og deploy

Beskrivelse

Backend for saksbehandling av sykepengesøknader

Moduler

Spesialist er inndelt i moduler etter lag i en onion architecture:

Lagdeling - Onionarkitektur

Alle lag på samme nivå har kun avhengighet og kjennskap til lag på nivå innenfor seg selv. De har ikke kjennskap til lag på samme nivå, eller nivåer utenfor.

Modulene er:

  • e2e-tests - Integrasjonstester som sjekker detaljer i resultat av forskjellige typer ekstern input til Spesialist. Simulerer konsumenter i så stor grad som mulig. Er avhengig av en ferdigsammensydd applikasjon fordi den tester den satt i system. Tester er black box med unntak av verifisering av forventet resultat (lagring i databaser, nye meldinger publisert, JSON-svar via HTTP, etc.).
  • bootstrap - Instansiering av alle implementasjoner av hvert interface (dependency injection). Sørger for at applikasjonen starter med riktig oppsett, og syr sådan sammen alle lagene til noe kjørbart.
  • kafka - Integrasjon med Rapids and Rivers. All kunnskap om eksterne meldinger med syntaks. Serialisering / deserialisering av meldinger fra/til JSON
  • api - GraphQL-schema og implementasjon av det. Eventuelle andre HTTP-baserte endepunkt (f.eks. REST API). Eksponerer egne typer og ikke direkte domenemodeller.
  • db - Faktisk integrasjon med og oppsett av databaser, med kunnskap om tabeller, kolonner og format. Mapper til og fra domeneobjekter, eller DTO-er.
  • application - Interfaces for de abstrakte tingene infrastrukturslagene tar seg av med implementasjoner, f.eks. mulighet til å publisere hendelser og Repositories for å lagre/hente domeneobjekter. Kommando-oppsettet ligger også her. Inneholder også koordineringen ved én operasjon som medfører en serie av operasjoner på domeneobjekter.
  • domain - Det innerste laget som inneholder en modell av domenet applikasjonen representerer og så mange forretningsregler som mulig. Inneholder også tester som representerer regler i domenet.

Komme i gang

Gradleoppsett

Ktlint

Vi bruker Ktlint for linting av koden, for å sette dette opp må man kjøre følgende kommando:

./gradlew addKtlintFormatGitPreCommitHook

Det holder å kjøre kommandoen en gang, så er commithooken satt opp for fremtidige commits.

Credentials

For å kunne kjøre gradle må du legge til githubUser og githubPassword i ~/.gradle/gradle.properties filen.

githubUser=x-access-token
githubPassword=<token>

Docker

For å kjøre tester trenger du docker. Du kan enten installere klienten fra docker eller bruke colima.

Colima

brew install colima docker

For at colima skal virke må disse env variablene settes opp i ~/.zshrc:

export TESTCONTAINERS_DOCKER_SOCKET_OVERRIDE=/var/run/docker.sock
export DOCKER_HOST=unix://$HOME/.colima/default/docker.sock
colima start

Oppdatere GraphQL schema mot spleis

  • Kjør tasken graphqlIntrospectSchema i spesialist-api, enten i IntelliJ eller fra kommandolinja
    • Fra kommandolinja: ./gradlew :spesialist-api:graphqlIntrospectSchema
  • Gjør eventuelt endringer i hva som skal hentes fra spleis i filen hentSnapshot.graphql
  • Kjør tasken graphqlGenerateClient for å få generert klassene

ℹ️ graphqlGenerateClient vil også kjøres som en del av et vanlig bygg, i motsetning til graphqlIntrospectSchema.

Oppdatere GraphQL schema for tester

Hvis du nylig har gjort endringer i GraphQL-typer, -mutations, -queries eller -subscriptions og ønsker å teste disse endringene, er det lurt å først oppdatere lokalt testskjema, slik at du får syntax highlighting, code completion og et bedre liv. Da gjør du følgende:

  • Kjør opp LocalApp.kt sin main-metode, det starter en lokal GraphQL-server.
  • Finn filen graphql.config.yml og kjør spesialist-local, som vil oppdatere schema_til_bruk_fra_tester.grapqhl.
  • Eller trykk på oppdater-ikonet i schema_til_bruk_fra_tester.grapqhl, ser ut til å gjøre det samme.
  • Commit endringene i schema_til_bruk_fra_tester.graphql.

Kjøre lokal GraphQL Playground

  • kjør main-funksjonen i LocalApp.kt
  • gå til http://localhost:4321/graphql/playground i en nettleser
  • TODO: finn ut hvordan man veksler inn tokenet som skrives ut under oppstart av LocalApp til et bearer token, og sett det som header i playgrounden

Kjøre tester raskere

  • Finn filen .testcontainers.properties, ligger ofte på hjemmeområdet ditt, eksempelvis ~/.testcontainers.properties
  • Legg til denne verdien: testcontainers.reuse.enable=true

Oppgradering av gradle wrapper

Spesialist-opprydding-dev

En selvstendig app for å slette testpersoner, kjører kun i dev.

Spleis-testdata fyrer av et kafka-event som spesialist-opprydding-dev lytter på og sletter testpersoner.

Henvendelser

Spørsmål knyttet til koden eller prosjektet kan stilles som issues her på GitHub.

For NAV-ansatte

Interne henvendelser kan sendes via Slack i kanalen #team-bømlo-værsågod.

About

Backend for saksbehandling av sykepengesøknader

Topics

Resources

License

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages