]> source.dussan.org Git - sonarqube.git/commitdiff
Fix test on MySQL
authorJulien Lancelot <julien.lancelot@sonarsource.com>
Tue, 17 Mar 2015 12:56:35 +0000 (13:56 +0100)
committerJulien Lancelot <julien.lancelot@sonarsource.com>
Tue, 17 Mar 2015 12:56:35 +0000 (13:56 +0100)
server/sonar-server/src/test/java/org/sonar/server/component/db/ComponentLinkDaoTest.java
server/sonar-server/src/test/java/org/sonar/server/event/db/EventDaoTest.java
server/sonar-server/src/test/resources/org/sonar/server/component/db/ComponentLinkDaoTest/insert-result.xml [new file with mode: 0644]
sonar-core/src/test/java/org/sonar/core/persistence/DbTester.java

index d1586ef2db41c39c2170cdf3e63c6447c3cda867..d8ba219baa8b1ac5e202ff667d0ba9da1262110f 100644 (file)
@@ -31,7 +31,6 @@ import org.sonar.core.persistence.DbTester;
 import org.sonar.test.DbTests;
 
 import java.util.List;
-import java.util.Map;
 
 import static org.assertj.core.api.Assertions.assertThat;
 
@@ -86,13 +85,7 @@ public class ComponentLinkDaoTest {
       );
     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
index 9dba34a33fc730eba79a0fabece90dc827815ec6..30464f7273a6a13d8a4b49711403da5b91337e58 100644 (file)
@@ -101,7 +101,7 @@ public class EventDaoTest {
       );
     session.commit();
 
-    dbTester.assertDbUnit(getClass(), "insert-result.xml", "events");
+    dbTester.assertDbUnit(getClass(), "insert-result.xml", new String[]{"id"}, "events");
   }
 
   @Test
diff --git a/server/sonar-server/src/test/resources/org/sonar/server/component/db/ComponentLinkDaoTest/insert-result.xml b/server/sonar-server/src/test/resources/org/sonar/server/component/db/ComponentLinkDaoTest/insert-result.xml
new file mode 100644 (file)
index 0000000..8b89e72
--- /dev/null
@@ -0,0 +1,5 @@
+<dataset>
+
+  <project_links id="1" component_uuid="ABCD" link_type="homepage" name="Home" href="http://www.sonarqube.org"/>
+
+</dataset>
index 48470d92f36f1a51216a1e4588fce6ce6ac5b3b8..275e7c624a24946be4fcd6b329aeb7209c28883f 100644 (file)
@@ -37,7 +37,9 @@ import org.dbunit.database.DatabaseConfig;
 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;
@@ -56,12 +58,7 @@ import java.io.InputStream;
 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;
@@ -282,17 +279,27 @@ public class DbTester extends ExternalResource {
   }
 
   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) {