CgmesDLModelTest.java

/**
 * Copyright (c) 2019, RTE (http://www.rte-france.com)
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 */
package com.powsybl.sld.cgmes.dl.conversion;

import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.Mockito;

import com.powsybl.triplestore.api.PropertyBags;
import com.powsybl.triplestore.api.QueryCatalog;
import com.powsybl.triplestore.api.TripleStore;

import java.util.Arrays;
import java.util.HashSet;

import static org.junit.jupiter.api.Assertions.assertEquals;

/**
 *
 * @author Massimo Ferraro {@literal <massimo.ferraro@techrain.eu>}
 */
class CgmesDLModelTest extends AbstractCgmesDLTest {

    protected TripleStore tripleStore;
    protected QueryCatalog queryCatalog;
    protected CgmesDLModel cgmesDLModel;

    @BeforeEach
    public void setUp() {
        super.setUp();
        tripleStore = Mockito.mock(TripleStore.class);
        queryCatalog = Mockito.mock(QueryCatalog.class);
        setQuery(CgmesDLModel.TERMINAL_DIAGRAM_DATA_QUERY_KEY, "TerminalQuery", terminalsPropertyBags);
        setQuery(CgmesDLModel.BUS_DIAGRAM_DATA_QUERY_KEY, "BusQuery", busesPropertyBags);
        setQuery(CgmesDLModel.BUSBAR_DIAGRAM_DATA_QUERY_KEY, "BusbarQuery", busbarsPropertyBags);
        setQuery(CgmesDLModel.LINE_DIAGRAM_DATA_QUERY_KEY, "LineQuery", linesPropertyBags);
        setQuery(CgmesDLModel.GENERATOR_DIAGRAM_DATA_QUERY_KEY, "GeneratorQuery", generatorsPropertyBags);
        setQuery(CgmesDLModel.LOAD_DIAGRAM_DATA_QUERY_KEY, "LoadQuery", loadsPropertyBags);
        setQuery(CgmesDLModel.SHUNT_DIAGRAM_DATA_QUERY_KEY, "ShuntQuery", shuntsPropertyBags);
        setQuery(CgmesDLModel.SWITCH_DIAGRAM_DATA_QUERY_KEY, "SwitchQuery", switchesPropertyBags);
        setQuery(CgmesDLModel.TRANSFORMER_DIAGRAM_DATA_QUERY_KEY, "TransformerQuery", tranformersPropertyBags);
        setQuery(CgmesDLModel.HVDC_LINE_DIAGRAM_DATA_QUERY_KEY, "HvdcLineQuery", hvdcLinesPropertyBags);
        setQuery(CgmesDLModel.SVC_DIAGRAM_DATA_QUERY_KEY, "SvcLineQuery", svcsPropertyBags);
        setQuery(CgmesDLModel.TERMINALS_QUERY_KEY, "TerminalsQuery", terminals);
        setQuery(CgmesDLModel.BUSBAR_NODES_QUERY_KEY, "BusbarNodesQuery", busbarNodes);
        Mockito.when(tripleStore.contextNames()).thenReturn(new HashSet<>(Arrays.asList("Network_EQ.xml", "Network_SV.xml", "Network_TP.xml", "Network_DL.xml")));
        cgmesDLModel = new CgmesDLModel(tripleStore, queryCatalog);
    }

    protected void setQuery(String key, String query, PropertyBags queryResults) {
        Mockito.when(queryCatalog.get(key)).thenReturn(query);
        Mockito.when(tripleStore.query(query)).thenReturn(queryResults);
    }

    protected void removeQueryCatalogKey(String key) {
        Mockito.when(queryCatalog.get(key)).thenReturn(null);
    }

    @Test
    void getTerminalsDiagramData() {
        assertEquals(terminalsPropertyBags, cgmesDLModel.getTerminalsDiagramData());
        removeQueryCatalogKey(CgmesDLModel.TERMINAL_DIAGRAM_DATA_QUERY_KEY);
        assertEquals(new PropertyBags(), cgmesDLModel.getTerminalsDiagramData());
    }

    @Test
    void getBusesDiagramData() {
        assertEquals(busesPropertyBags, cgmesDLModel.getBusesDiagramData());
        removeQueryCatalogKey(CgmesDLModel.BUS_DIAGRAM_DATA_QUERY_KEY);
        assertEquals(new PropertyBags(), cgmesDLModel.getBusesDiagramData());
    }

    @Test
    void getBusbarsDiagramData() {
        assertEquals(busbarsPropertyBags, cgmesDLModel.getBusbarsDiagramData());
        removeQueryCatalogKey(CgmesDLModel.BUSBAR_DIAGRAM_DATA_QUERY_KEY);
        assertEquals(new PropertyBags(), cgmesDLModel.getBusbarsDiagramData());
    }

    @Test
    void getLinesDiagramData() {
        assertEquals(busbarsPropertyBags, cgmesDLModel.getLinesDiagramData());
        removeQueryCatalogKey(CgmesDLModel.LINE_DIAGRAM_DATA_QUERY_KEY);
        assertEquals(new PropertyBags(), cgmesDLModel.getLinesDiagramData());
    }

    @Test
    void getGeneratorsDiagramData() {
        assertEquals(generatorsPropertyBags, cgmesDLModel.getGeneratorsDiagramData());
        removeQueryCatalogKey(CgmesDLModel.GENERATOR_DIAGRAM_DATA_QUERY_KEY);
        assertEquals(new PropertyBags(), cgmesDLModel.getGeneratorsDiagramData());
    }

    @Test
    void getLoadsDiagramData() {
        assertEquals(loadsPropertyBags, cgmesDLModel.getLoadsDiagramData());
        removeQueryCatalogKey(CgmesDLModel.LOAD_DIAGRAM_DATA_QUERY_KEY);
        assertEquals(new PropertyBags(), cgmesDLModel.getLoadsDiagramData());
    }

    @Test
    void getShuntsDiagramData() {
        assertEquals(shuntsPropertyBags, cgmesDLModel.getShuntsDiagramData());
        removeQueryCatalogKey(CgmesDLModel.SHUNT_DIAGRAM_DATA_QUERY_KEY);
        assertEquals(new PropertyBags(), cgmesDLModel.getShuntsDiagramData());
    }

    @Test
    void getSwitchesDiagramData() {
        assertEquals(switchesPropertyBags, cgmesDLModel.getSwitchesDiagramData());
        removeQueryCatalogKey(CgmesDLModel.SWITCH_DIAGRAM_DATA_QUERY_KEY);
        assertEquals(new PropertyBags(), cgmesDLModel.getSwitchesDiagramData());
    }

    @Test
    void getTransformersDiagramData() {
        assertEquals(tranformersPropertyBags, cgmesDLModel.getTransformersDiagramData());
        removeQueryCatalogKey(CgmesDLModel.TRANSFORMER_DIAGRAM_DATA_QUERY_KEY);
        assertEquals(new PropertyBags(), cgmesDLModel.getTransformersDiagramData());
    }

    @Test
    void getHvdcLineDiagramData() {
        assertEquals(hvdcLinesPropertyBags, cgmesDLModel.getHvdcLinesDiagramData());
        removeQueryCatalogKey(CgmesDLModel.HVDC_LINE_DIAGRAM_DATA_QUERY_KEY);
        assertEquals(new PropertyBags(), cgmesDLModel.getHvdcLinesDiagramData());
    }

    @Test
    void getSvcsDiagramData() {
        assertEquals(svcsPropertyBags, cgmesDLModel.getSvcsDiagramData());
        removeQueryCatalogKey(CgmesDLModel.SVC_DIAGRAM_DATA_QUERY_KEY);
        assertEquals(new PropertyBags(), cgmesDLModel.getSvcsDiagramData());
    }

    @Test
    void getTerminals() {
        assertEquals(terminals, cgmesDLModel.getTerminals());
        removeQueryCatalogKey(CgmesDLModel.TERMINALS_QUERY_KEY);
        assertEquals(new PropertyBags(), cgmesDLModel.getTerminals());
    }

    @Test
    void getBusbarNodes() {
        assertEquals(busbarNodes, cgmesDLModel.getBusbarNodes());
        removeQueryCatalogKey(CgmesDLModel.BUSBAR_NODES_QUERY_KEY);
        assertEquals(new PropertyBags(), cgmesDLModel.getBusbarNodes());
    }

}