package no.valg.valgnatt.backend.rapport;

import java.util.HashMap;

import no.valg.valgnatt.backend.GrunnlagsdataMockup;
import no.valg.valgnatt.database.domene.ValgType;

import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;

public class TotalRapportTest {

    private static GrunnlagsdataMockup gdm;

    @BeforeClass
    public static void initialiser() {
        gdm = new GrunnlagsdataMockup();
        gdm.initialiser(ValgType.ST, 2017);
        // NB! Stemmetall i PartiMandater stemmer ikke overens med stemmetall i PartiStemmer i Stemmekretser.
        // NB! Mandater i PartiMandater stemmer ikke overens med antall mandater i Valgdistriktet
        // Dette er ikke noe problem for rapport-genereringen, men i virkeligheten (altså ikke i test) gjør man
        // Stemmetall.beregnOgOppdater(), Distriktmandat.beregnOgOppdater() og Utjevningsmandat.bereg() før man til slutt genererer
        // rapporten. Dette gjøres ikke her, fordi det vil komplisere feilsøking i denne testen. Da er det bedre
        // å legge inn noe dummy-data (som er lett å teste med)
        gdm.leggTilMandaterOgKandidater();
    }
    @Test
    public void lagRapport_2017StStemmerLand() throws Exception {

        // Lager resultatrapport (selve testen)
        String rapportTestStr = TotalRapport.lagRapport("totalrapport/st/stemmer/land", 2017, gdm.getLand(), new HashMap<>());
        Assert.assertNotNull(rapportTestStr);
    }
    @Test
    public void lagRapport_2017StStemmerFylke() throws Exception {

        // Lager resultatrapport (selve testen)
        String rapportTestStr = TotalRapport.lagRapport("totalrapport/st/stemmer/fylke", 2017, gdm.getLand(), new HashMap<>());
        Assert.assertNotNull(rapportTestStr);
    }
    @Test
    public void lagRapport_2017StStemmerKommune() throws Exception {

        // Lager resultatrapport (selve testen)
        String rapportTestStr = TotalRapport.lagRapport("totalrapport/st/stemmer/kommune", 2017, gdm.getLand(), new HashMap<>());
        Assert.assertNotNull(rapportTestStr);
    }
    @Test
    public void lagRapport_2017StStemmerStemmekrets() throws Exception {

        // Lager resultatrapport (selve testen)
        String rapportTestStr = TotalRapport.lagRapport("totalrapport/st/stemmer/stemmekrets", 2017, gdm.getLand(), new HashMap<>());
        Assert.assertNotNull(rapportTestStr);
    }

    @Test
    public void lagRapport_2017StPartierLand() throws Exception {

        // Lager resultatrapport (selve testen)
        String rapportTestStr = TotalRapport.lagRapport("totalrapport/st/partier/land", 2017, gdm.getLand(), new HashMap<>());
        Assert.assertNotNull(rapportTestStr);
    }
    @Test
    public void lagRapport_2017StPartierFylke() throws Exception {

        // Lager resultatrapport (selve testen)
        String rapportTestStr = TotalRapport.lagRapport("totalrapport/st/partier/fylke", 2017, gdm.getLand(), new HashMap<>());
        Assert.assertNotNull(rapportTestStr);
    }
    @Test
    public void lagRapport_2017StPartierKommune() throws Exception {

        // Lager resultatrapport (selve testen)
        String rapportTestStr = TotalRapport.lagRapport("totalrapport/st/partier/kommune", 2017, gdm.getLand(), new HashMap<>());
        Assert.assertNotNull(rapportTestStr);
    }
    @Test
    public void lagRapport_2017StPartierStemmekrets() throws Exception {

        // Lager resultatrapport (selve testen)
        String rapportTestStr = TotalRapport.lagRapport("totalrapport/st/partier/stemmekrets", 2017, gdm.getLand(), new HashMap<>());
        Assert.assertNotNull(rapportTestStr);
    }
}
