import org.sonar.test.DbTests;
import java.util.List;
-import java.util.Map;
import static org.assertj.core.api.Assertions.assertThat;
);
session.commit();
- // For an unknown reason, on MySQL the id of the links is set to 2, so we can't use assertDbUnit() to check inserted values
- Map<String, Object> result = dbTester.selectFirst("select id as \"id\", component_uuid as \"componentUuid\", link_type as \"type\", name as \"name\", href as \"href\" from project_links");
- assertThat(result.get("id")).isNotNull();
- assertThat(result.get("componentUuid")).isEqualTo("ABCD");
- assertThat(result.get("type")).isEqualTo("homepage");
- assertThat(result.get("name")).isEqualTo("Home");
- assertThat(result.get("href")).isEqualTo("http://www.sonarqube.org");
+ dbTester.assertDbUnit(getClass(), "insert-result.xml", new String[]{"id"}, "project_links");
}
@Test
import org.dbunit.database.IDatabaseConnection;
import org.dbunit.dataset.CompositeDataSet;
import org.dbunit.dataset.IDataSet;
+import org.dbunit.dataset.ITable;
import org.dbunit.dataset.ReplacementDataSet;
+import org.dbunit.dataset.filter.DefaultColumnFilter;
import org.dbunit.dataset.xml.FlatXmlDataSet;
import org.dbunit.ext.mssql.InsertIdentityOperation;
import org.dbunit.operation.DatabaseOperation;
import java.net.HttpURLConnection;
import java.net.URI;
import java.net.URISyntaxException;
-import java.sql.Clob;
-import java.sql.Connection;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.ResultSetMetaData;
-import java.sql.SQLException;
+import java.sql.*;
import java.util.List;
import java.util.Map;
import java.util.Properties;
}
public void assertDbUnit(Class testClass, String filename, String... tables) {
+ assertDbUnit(testClass, filename, new String[0], tables);
+ }
+
+ public void assertDbUnit(Class testClass, String filename, String[] excludedColumnNames, String... tables) {
IDatabaseConnection connection = null;
try {
connection = dbUnitConnection();
IDataSet dataSet = connection.createDataSet();
String path = "/" + testClass.getName().replace('.', '/') + "/" + filename;
- IDataSet expectedDataSet = dbUnitDataSet(testClass.getResourceAsStream(path));
+ InputStream inputStream = testClass.getResourceAsStream(path);
+ if (inputStream == null) {
+ throw new IllegalStateException(String.format("File '%s' does not exist", path));
+ }
+ IDataSet expectedDataSet = dbUnitDataSet(inputStream);
for (String table : tables) {
DiffCollectingFailureHandler diffHandler = new DiffCollectingFailureHandler();
- Assertion.assertEquals(expectedDataSet.getTable(table), dataSet.getTable(table), diffHandler);
+ ITable filteredTable = DefaultColumnFilter.excludedColumnsTable(dataSet.getTable(table), excludedColumnNames);
+ ITable filteredExpectedTable = DefaultColumnFilter.excludedColumnsTable(expectedDataSet.getTable(table), excludedColumnNames);
+ Assertion.assertEquals(filteredExpectedTable, filteredTable, diffHandler);
// Evaluate the differences and ignore some column values
List diffList = diffHandler.getDiffList();
for (Object o : diffList) {