package no.valg.valgnatt.common;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonElement;
import com.google.gson.JsonParser;
import org.junit.Test;

import java.nio.file.Files;
import java.nio.file.Paths;

import static org.junit.Assert.assertEquals;

public class JsonObjektKollapserTest {


    @Test
    public void kollapsObjekt_prettyPrinted_egendefinertFormatering() throws Exception {
        String jsonFil = new String(Files.readAllBytes(Paths.get(this.getClass().getResource("/st-01.json").getPath())));


        Gson gson = new GsonBuilder().setPrettyPrinting().serializeNulls().create();
        JsonParser jsonParser = new JsonParser();
        JsonElement jsonElement = jsonParser.parse(jsonFil);
        String json = gson.toJson(jsonElement);




        String kollapsetJson = json;
        kollapsetJson = JsonObjektKollapser.kollapsObjekt(kollapsetJson, "id", false);
        kollapsetJson = JsonObjektKollapser.kollapsObjekt(kollapsetJson, "tidspunkt", true);
        kollapsetJson = JsonTabellKollapser.kollapsTabellUtenObjekter(kollapsetJson, "merknader");
        kollapsetJson = JsonObjektKollapser.kollapsObjekt(kollapsetJson, "mandater", true);
        kollapsetJson = JsonObjektKollapser.kollapsObjekt(kollapsetJson, "stemmer", true);
        kollapsetJson = JsonObjektKollapser.kollapsObjekt(kollapsetJson, "stemmegiving", true);
        kollapsetJson = JsonObjektKollapser.kollapsObjekt(kollapsetJson, "frammote", true);
        kollapsetJson = JsonObjektKollapser.kollapsObjekt(kollapsetJson, "opptalt", true);
        kollapsetJson = JsonObjektKollapser.kollapsObjekt(kollapsetJson, "prognose", false, "representanter");
        kollapsetJson = JsonObjektKollapser.kollapsObjekt(kollapsetJson, "resultat", false, "representanter");
        kollapsetJson = JsonObjektKollapser.kollapsObjekt(kollapsetJson, "ekvivalent", false);
        kollapsetJson = JsonTabellKollapser.kollapsTabell(kollapsetJson, "representanter", "navn");
        kollapsetJson = JsonTabellKollapser.kollapsTabell(kollapsetJson, "related", "nr");
        kollapsetJson = JsonObjektKollapser.kollapsObjekt(kollapsetJson, "self", false);
        kollapsetJson = JsonObjektKollapser.kollapsObjekt(kollapsetJson, "up", false);
        kollapsetJson = kollapsetJson + "\n"; // Må legge til linjeskift fordi det legges til på slutten av testfilen.
        
        assertEquals(jsonFil, kollapsetJson);
        
    }
    
}
