About

The tests in this class applies to the product controller. 
In SonWIn terms, an account is somewhat equivilant to an contract record. 

Included in the tests for this controller is the Common Data Tests.

Information

Information about the controller can be found in this link: 

Product Controller

Information (Dansk)

TEST MÅ IKKE I GANGSÆTTES FØR KOMMUNIKATION MED PAW !!!!

FORMÅL
Endpointet returnerer prisprodukter og tariffer for ét bestemt målepunkt i et
angivet datointerval. "serviceId" SKAL være målepunktets EAN-/aftagenummer
(edielnummer), ellers svarer kaldet ikke med korrekte data.

Svaret er en liste af produkt-objekter (ét pr. målepunkt). Hvert produkt har:
  ServiceId, ValidFrom, ValidTo, Prices[]
Hver prislinje (Prices) har:
  Value, Type, Name, Note, ValidFrom, ValidTo, ValidHours, ValidMonth,
  ValidPart, ValidFraction, SubtractMeasurement.


SÅDAN LÆSES TESTENE
- Disse er MANUELLE, datakritiske tests. Trivielle kald og det, der allerede er
  dækket af unit-/integrationstests, er udeladt. Fokus er DATA, som kun kan
  bevises mod RIGTIGE kundedata ved sammenligning med klientprogrammet.
- Hver test beskriver HVAD værdien betyder (ikke hvor i databasen den kommer
  fra) og peger på, hvor i klienten du selv kan kontrollere den.
- VIGTIGT: Den vigtigste datakritiske værdi er prisen (Value) og dens type/navn
  (Type/Name). Flere andre felter er FASTE eller endnu ikke udfyldt - se afsnit
  B FØRST, så du ikke fejlmelder en bevidst tom værdi.
- Fejl: når en test forventer, at kaldet AFVISES, skal du bekræfte, at fejlen er
  synlig i SonWin-databasens log "BLOG", og at der IKKE returneres data til
  kunden (svaret er HTTP 500 med en fejlbesked, ikke en dataliste).


ORDLISTE (svarfelt -> klient-/kundebegreb)
  ServiceId            -> målepunktets id (EAN/aftagenummer)
  Value                -> prisens beløb (kun udfyldt for fastpris; 0 for spot)
  Type                 -> pristype: "kWh" (fastpris) / "spotkWh" (spot)
  Name                 -> prisnavn: "kWhPrice" (fastpris) / "spotPrice" (spot)
  Note                 -> note til prislinjen
  Prices[].ValidFrom   -> prislinjens gyldig-fra (følger kontraktens startdato)
  Prices[].ValidTo     -> prislinjens gyldig-til (følger kontraktens slutdato)
  ValidHours/ValidMonth -> tidsbånd/måneder for tariffen
  customerId           -> kundenummer
  serviceId            -> målepunktets EAN-/aftagenummer
  DateFrom / DateTo    -> det datointerval, der spørges på

Tests

PRISVÆRDI OG PRISTYPE  (kernen - det mest datakritiske)

  • Fastpris-produkt: Value er den korrekte faste kWh-pris
      Gør: Kald for en kunde/målepunkt med et FASTPRIS-produkt i intervallet.
      Forvent: Prislinjens Value er den faste kWh-pris, kunden betaler. Type er "kWh" og Name er "kWhPrice".
      Kontrollér i klienten: Den aftalte faste kWh-pris på kontrakten. Value skal stemme med dette beløb (inkl. evt. fast tillæg, der lægges oven i grundprisen).
  • Spot-produkt: Value er ALTID 0 (spotprisen leveres ikke her)
      Gør: Kald for en kunde/målepunkt med et SPOT-produkt.
      Forvent: Prislinjens Value er 0. Type er "spotkWh" og Name er "spotPrice".
      Kontrollér i klienten: Kontrakten er en spotpris-aftale.
  • Pristype/-navn følger kontrakttypen
      Gør: Sammenlign Type/Name for hhv. et fastpris- og et spot-produkt.
      Forvent: Fastpris -> Type "kWh", Name "kWhPrice". Spot -> Type "spotkWh", Name "spotPrice".

FASTE / IKKE-UDFYLDTE FELTER  (felter der IKKE er rigtige data endnu)
(Dette afsnit beskriver bevidst begrænsningerne i svaret, så du ikke fejlmelder
tomme felter som datafejl.)

  • Produktets ServiceId er altid det indtastede målepunkt (EAN)
      Gør: Se på produktets ServiceId.
      Forvent: Nøjagtigt det serviceId/EAN, du sendte ind..

  • Prislinjens ValidFrom/ValidTo følger kontraktens periode
      Gør: Se på ValidFrom/ValidTo PÅ PRISLINJEN.
      Forvent: De afspejler kontraktens start- og slutdato (slutdato kan være tom for en løbende kontrakt).
      Kontrollér i klienten: Kontraktens periode. Datoerne på prislinjen skal stemme.

DATOINTERVAL  (DateFrom / DateTo)

  • Kun produkter der overlapper det forespurgte interval
      Gør: Vælg et interval [DateFrom, DateTo], hvor du i klienten ved præcis hvilke kontrakter der er gyldige helt eller delvist i perioden.
      Forvent: Kun produkter, hvis kontraktperiode overlapper intervallet, er med.
      Kontrollér i klienten: Kontrakternes perioder mod det valgte interval.

  • Kontrakt der slutter før intervallet starter udelades
      Gør: Vælg et interval, der starter EFTER en kontrakts slutdato.
      Forvent: Den afsluttede kontrakt er ikke med.

  • Kontrakt der starter efter intervallet slutter udelades
      Gør: Vælg et interval, der slutter FØR en kontrakts startdato.
      Forvent: Den endnu ikke startede kontrakt er ikke med.

  • DateFrom skal ligge før DateTo
      Gør:
    (a) Kald med DateFrom = DateTo.
    (b) Kald med DateFrom efter DateTo.
    (c) Kald uden DateFrom eller uden DateTo.

    Forvent: Alle afvises. Ingen data. Fejl synlig i BLOG.

KORREKT TILKNYTNING - målepunkt (EAN), kunde og forsyningsart

  • Alle prislinjer hører til det forespurgte målepunkt
      Gør: Kald med ét EAN, og kontrollér produkternes ServiceId og at indholdet svarer til netop det målepunkt. Gentag for et andet af kundens målepunkter.
      Forvent: Hvert kald giver kun data for det forespurgte målepunkt. (Skulle det underliggende grundlag indeholde en linje for et andet målepunkt, AFVISES hele kaldet)

  • Kun el-produkter returneres
      Gør: Vælg en kunde, der ud over el også har fx gas/varme/vand.
      Forvent: Kun el-produkter er med.
      Kontrollér i klienten: Kundens forsyningsarter på installationen.

  • E3 - Produkt for forkert målepunkt vælter kaldet
      Gør: (datagrundlags-/defensiv kontrol) Hvis grundlaget for et kald indeholder
           en prislinje for et ANDET målepunkt end det forespurgte.
      Forvent: Hele kaldet afvises. Fejl i BLOG (nævner det forkerte og det forventede
           ServiceId).
      Kritisk fordi: Sikrer at en kunde aldrig kan få priser for et fremmed målepunkt.

Result:

Update User Account



  • No labels