aboutsummaryrefslogtreecommitdiffstats
path: root/src/test/java/at/ac/tuwien/sepm/assignment/groupphase/util/Helper.java
blob: 618b06f65965215361fe2f5167b6bf1be1138431 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
package at.ac.tuwien.sepm.assignment.groupphase.util;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import javafx.stage.Modality;
import javafx.stage.Stage;
import javafx.stage.Window;
import org.dbunit.database.IDatabaseConnection;
import org.dbunit.dataset.DataSetException;
import org.dbunit.dataset.IDataSet;
import org.dbunit.dataset.ITable;
import org.dbunit.dataset.filter.DefaultColumnFilter;
import org.dbunit.util.fileloader.FlatXmlDataFileLoader;
import org.testfx.api.FxRobotContext;

public class Helper {

    public static Stage getTopModalStage(FxRobotContext robotContext) {

        List<Window> allWindows = new ArrayList<>(robotContext.getWindowFinder().listWindows());
        Collections.reverse(allWindows);
        return (Stage)
                allWindows
                        .stream()
                        .filter(window -> window instanceof Stage)
                        .filter(
                                window ->
                                        ((Stage) window).getModality()
                                                == Modality.APPLICATION_MODAL)
                        .findFirst()
                        .orElse(null);
    }

    public static ITable getActualFilteredTableData(
            IDatabaseConnection connection, String tableName, String[] excludedColumns)
            throws Exception {
        IDataSet actualDataSet = connection.createDataSet();
        ITable actualTable = actualDataSet.getTable(tableName);
        return getFilteredTableData(actualTable, excludedColumns);
    }

    public static ITable getExpectedFilteredTableData(
            String tableName, String[] excludedColumns, String expectedXmlDataFileName)
            throws Exception {
        IDataSet dataSet = loadDataSet(expectedXmlDataFileName);
        ITable table = dataSet.getTable(tableName);
        return getFilteredTableData(table, excludedColumns);
    }

    public static ITable getActualFilteredQueryTableData(
            IDatabaseConnection connection,
            String resultTableName,
            String sql,
            String[] excludedColumns)
            throws Exception {
        ITable queryData = connection.createQueryTable(resultTableName, sql);
        return getFilteredTableData(queryData, excludedColumns);
    }

    private static ITable getFilteredTableData(ITable tableData, String[] excludedColumns)
            throws DataSetException {
        return DefaultColumnFilter.excludedColumnsTable(tableData, excludedColumns);
    }

    private static IDataSet loadDataSet(String fileName) {
        return new FlatXmlDataFileLoader().load("/" + fileName);
    }
}