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
66
67
68
69 final IDatabaseTester databaseTesterNew1 = makeDatabaseTester();
70 tc.setDatabaseTester(databaseTesterNew1);
71
72 assertDoesNotThrow(() -> tc.preTest(),
73 "Did not expect tc.postTest() to throw, but it did!");
74
75
76
77 assertDoesNotThrow(() -> tc.postTest(),
78 "Did not expcte tc.postTest() to throw, but it did!");
79 }
80
81 @Test
82 void testFailRun_withMismatchedExpectedFile_throwsDbComparisonFailure() throws Exception
83 {
84 final String[] prepDataFiles = {PREP_DATA_FILE_NAME};
85 final String[] expectedDataFiles = {EXP_DATA_FILE_NAME};
86 final VerifyTableDefinition[] tables = {TEST_TABLE, SECOND_TABLE,
87 EMPTY_TABLE, PK_TABLE, ONLY_PK_TABLE, EMPTY_MULTITYPE_TABLE};
88
89 final IDatabaseTester databaseTester = makeDatabaseTester();
90 final DefaultPrepAndExpectedTestCase tc =
91 new DefaultPrepAndExpectedTestCase(dataFileLoader,
92 databaseTester);
93
94 tc.configureTest(tables, prepDataFiles, expectedDataFiles);
95
96
97
98
99
100 final IDatabaseTester databaseTesterNew1 = makeDatabaseTester();
101 tc.setDatabaseTester(databaseTesterNew1);
102 assertDoesNotThrow(() -> tc.preTest(),
103 "Did not expect tc.postTest() to throw, but it did!");
104
105
106
107 assertThrows(DbComparisonFailure.class, () -> tc.postTest(),
108 "Expected tc.postTest() to throw DbComparisonFailure, but it didn't");
109 }
110
111 protected IDatabaseTester makeDatabaseTester() throws Exception
112 {
113 final DatabaseEnvironment dbEnv = DatabaseEnvironment.getInstance();
114 final IDatabaseConnection connection = dbEnv.getConnection();
115 final IDatabaseTester databaseTester = new DefaultDatabaseTester(connection);
116
117
118 databaseTester.setTearDownOperation(DatabaseOperation.DELETE_ALL);
119 return databaseTester;
120 }
121 }