1 package org.dbunit;
2
3 import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
4 import static org.junit.jupiter.api.Assertions.assertThrows;
5
6 import org.dbunit.assertion.DbComparisonFailure;
7 import org.dbunit.database.IDatabaseConnection;
8 import org.dbunit.operation.DatabaseOperation;
9 import org.dbunit.util.fileloader.DataFileLoader;
10 import org.dbunit.util.fileloader.FlatXmlDataFileLoader;
11 import org.junit.jupiter.api.Test;
12
13
14
15
16
17
18
19
20
21 class DefaultPrepAndExpectedTestCaseDiIT
22 {
23 private static final String PREP_DATA_FILE_NAME =
24 "/xml/flatXmlDataSetTest.xml";
25 private static final String EXP_DATA_FILE_NAME =
26 "/xml/flatXmlDataSetTestChanged.xml";
27
28 private static final VerifyTableDefinition TEST_TABLE =
29 makeVerifyTableDefinition("TEST_TABLE");
30 private static final VerifyTableDefinition SECOND_TABLE =
31 makeVerifyTableDefinition("SECOND_TABLE");
32 private static final VerifyTableDefinition EMPTY_TABLE =
33 makeVerifyTableDefinition("EMPTY_TABLE");
34 private static final VerifyTableDefinition PK_TABLE =
35 makeVerifyTableDefinition("PK_TABLE");
36 private static final VerifyTableDefinition ONLY_PK_TABLE =
37 makeVerifyTableDefinition("ONLY_PK_TABLE");
38 private static final VerifyTableDefinition EMPTY_MULTITYPE_TABLE =
39 makeVerifyTableDefinition("EMPTY_MULTITYPE_TABLE");
40
41 private final DataFileLoader dataFileLoader = new FlatXmlDataFileLoader();
42
43 private static VerifyTableDefinition makeVerifyTableDefinition(
44 final String tableName)
45 {
46 return new VerifyTableDefinition(tableName, new String[] {});
47 }
48
49 @Test
50 void testSuccessRun_withMatchingPrepAndExpectedFiles_doesNotThrowException() throws Exception
51 {
52
53 final String[] prepDataFiles = {PREP_DATA_FILE_NAME};
54 final String[] expectedDataFiles = {PREP_DATA_FILE_NAME};
55 final VerifyTableDefinition[] tables = {TEST_TABLE, SECOND_TABLE,
56 EMPTY_TABLE, PK_TABLE, ONLY_PK_TABLE, EMPTY_MULTITYPE_TABLE};
57
58 final IDatabaseTester databaseTester = makeDatabaseTester();
59 final DefaultPrepAndExpectedTestCase tc =
60 new DefaultPrepAndExpectedTestCase(dataFileLoader,
61 databaseTester);
62
63 tc.configureTest(tables, prepDataFiles, expectedDataFiles);
64
65 assertDoesNotThrow(() -> tc.preTest(),
66 "Did not expect tc.postTest() to throw, but it did!");
67
68
69
70 assertDoesNotThrow(() -> tc.postTest(),
71 "Did not expcte tc.postTest() to throw, but it did!");
72 }
73
74 @Test
75 void testFailRun_withMismatchedExpectedFile_throwsDbComparisonFailure() throws Exception
76 {
77 final String[] prepDataFiles = {PREP_DATA_FILE_NAME};
78 final String[] expectedDataFiles = {EXP_DATA_FILE_NAME};
79 final VerifyTableDefinition[] tables = {TEST_TABLE, SECOND_TABLE,
80 EMPTY_TABLE, PK_TABLE, ONLY_PK_TABLE, EMPTY_MULTITYPE_TABLE};
81
82 final IDatabaseTester databaseTester = makeDatabaseTester();
83 final DefaultPrepAndExpectedTestCase tc =
84 new DefaultPrepAndExpectedTestCase(dataFileLoader,
85 databaseTester);
86
87 tc.configureTest(tables, prepDataFiles, expectedDataFiles);
88
89 assertDoesNotThrow(() -> tc.preTest(),
90 "Did not expect tc.postTest() to throw, but it did!");
91
92
93
94 assertThrows(DbComparisonFailure.class, () -> tc.postTest(),
95 "Expected tc.postTest() to throw DbComparisonFailure, but it didn't");
96 }
97
98 protected IDatabaseTester makeDatabaseTester() throws Exception
99 {
100 final DatabaseEnvironment dbEnv = DatabaseEnvironment.getInstance();
101 final IDatabaseConnection connection = dbEnv.getConnection();
102 final IDatabaseTester databaseTester = new DefaultDatabaseTester(connection);
103
104
105 databaseTester.setTearDownOperation(DatabaseOperation.DELETE_ALL);
106 return databaseTester;
107 }
108 }