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:
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.