]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-2642 improve unit test of mybatis mappers
authorSimon Brandhof <simon.brandhof@gmail.com>
Tue, 25 Oct 2011 16:20:20 +0000 (18:20 +0200)
committerSimon Brandhof <simon.brandhof@gmail.com>
Tue, 25 Oct 2011 16:20:20 +0000 (18:20 +0200)
plugins/sonar-core-plugin/src/test/resources/logback-test.xml
plugins/sonar-squid-java-plugin/src/test/resources/logback-test.xml
sonar-core/src/main/java/org/sonar/persistence/model/RuleMapper.java
sonar-core/src/main/resources/org/sonar/persistence/model/RuleMapper.xml
sonar-core/src/test/java/org/sonar/persistence/model/RuleMapperTest.java
sonar-core/src/test/resources/logback-test.xml
sonar-core/src/test/resources/org/sonar/persistence/model/RuleMapperTest/selectById.xml [new file with mode: 0644]

index cdc8866fe3a51043ae9288d69f2776b257b8081e..822218f4a68c016cb225a7271a0c8c448b688043 100644 (file)
@@ -3,11 +3,11 @@
 <configuration>
   <appender name="STDOUT"
             class="ch.qos.logback.core.ConsoleAppender">
-    <layout class="ch.qos.logback.classic.PatternLayout">
+    <encoder>
       <pattern>
         %d{HH:mm:ss.SSS} %-5level %logger{36} - %msg%n
       </pattern>
-    </layout>
+    </encoder>
   </appender>
 
   <root>
index 8e9fecae0683e1ed317089f00119e76950add961..133e70f59491fe5a2673068a0940dd0008e76d15 100644 (file)
@@ -1,19 +1,19 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 
 <configuration>
-    
-    <appender name="STDOUT"
-        class="ch.qos.logback.core.ConsoleAppender">
-        <layout class="ch.qos.logback.classic.PatternLayout">
-            <pattern>
-                %d{HH:mm:ss.SSS} %-5level %logger{36} - %msg%n
-            </pattern>
-        </layout>
-    </appender>
-    
-    <root>
-        <level value="WARN"/>
-        <appender-ref ref="STDOUT"/>
-    </root>
-    
+
+  <appender name="STDOUT"
+            class="ch.qos.logback.core.ConsoleAppender">
+    <encoder>
+      <pattern>
+        %d{HH:mm:ss.SSS} %-5level %logger{36} - %msg%n
+      </pattern>
+    </encoder>
+  </appender>
+
+  <root>
+    <level value="WARN"/>
+    <appender-ref ref="STDOUT"/>
+  </root>
+
 </configuration>
\ No newline at end of file
index 7f390de9e337975c68e1039d121c7ccc08e3a462..3e22a222baee32e7e45e9814ee60d31758065c9b 100644 (file)
  */
 package org.sonar.persistence.model;
 
-import org.sonar.persistence.model.Rule;
-
 import java.util.List;
 
 public interface RuleMapper {
   List<Rule> selectAll();
+  Rule selectById(Long id);
 }
index 0c0304650b73cc26a852ce261b9bdc0337c70207..7cb565596dc36b8269402531541340ea1af0d1e4 100644 (file)
@@ -6,5 +6,9 @@
        <select id="selectAll" resultType="Rule">
                select id, plugin_rule_key as "ruleKey", plugin_name as "repositoryKey", description, enabled, name from RULES
        </select>
+
+  <select id="selectById" parameterType="long" resultType="Rule">
+               select id, plugin_rule_key as "ruleKey", plugin_name as "repositoryKey", description, enabled, name from RULES WHERE id=#{id}
+       </select>
 </mapper>
 
index d383257341b9afa48a5bb187c6c39a38705a52df..6c82754c961290211cb9ca474f47f4a68dc80d6a 100644 (file)
@@ -23,7 +23,6 @@ import org.apache.commons.io.IOUtils;
 import org.apache.ibatis.session.SqlSession;
 import org.dbunit.DataSourceDatabaseTester;
 import org.dbunit.IDatabaseTester;
-import org.dbunit.database.DatabaseConfig;
 import org.dbunit.database.IDatabaseConnection;
 import org.dbunit.dataset.CompositeDataSet;
 import org.dbunit.dataset.IDataSet;
@@ -31,9 +30,7 @@ import org.dbunit.dataset.ReplacementDataSet;
 import org.dbunit.dataset.xml.FlatXmlDataSet;
 import org.dbunit.operation.DatabaseOperation;
 import org.hamcrest.core.Is;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.*;
 import org.sonar.persistence.InMemoryDatabase;
 import org.sonar.persistence.MyBatis;
 
@@ -44,23 +41,23 @@ import static org.junit.Assert.assertThat;
 
 public class RuleMapperTest {
 
-  protected IDatabaseTester databaseTester;
-  private MyBatis myBatis;
-  private InMemoryDatabase database;
+  protected static IDatabaseTester databaseTester;
+  private static MyBatis myBatis;
+  private static InMemoryDatabase database;
 
-  @Before
-  public final void startDatabase() throws Exception {
+  @BeforeClass
+  public static void startDatabase() throws Exception {
     database = new InMemoryDatabase();
     myBatis = new MyBatis(database);
-    
+
     database.start();
     myBatis.start();
 
     databaseTester = new DataSourceDatabaseTester(database.getDataSource());
   }
 
-  @After
-  public final void stopDatabase() throws Exception {
+  @AfterClass
+  public static void stopDatabase() throws Exception {
     if (databaseTester != null) {
       databaseTester.onTearDown();
     }
@@ -84,6 +81,21 @@ public class RuleMapperTest {
     assertThat(rule.getRepositoryKey(), Is.is("checkstyle"));
   }
 
+  @Test
+  public void testSelectById() throws Exception {
+    setupData("selectById");
+    SqlSession sqlSession = myBatis.openSession();
+    RuleMapper ruleMapper = sqlSession.getMapper(RuleMapper.class);
+    Rule rule = ruleMapper.selectById(2L);
+    sqlSession.close();
+
+    assertThat(rule.getId(), Is.is(2L));
+    assertThat(rule.getName(), Is.is("Avoid Null"));
+    assertThat(rule.getDescription(), Is.is("Should avoid NULL"));
+    assertThat(rule.isEnabled(), Is.is(true));
+    assertThat(rule.getRepositoryKey(), Is.is("checkstyle"));
+  }
+
   protected final void setupData(String... testNames) throws Exception {
     InputStream[] streams = new InputStream[testNames.length];
     try {
@@ -116,9 +128,6 @@ public class RuleMapperTest {
 
     databaseTester.setDataSet(compositeDataSet);
     IDatabaseConnection connection = databaseTester.getConnection();
-    DatabaseConfig config = connection.getConfig();
-    //config.setProperty(DatabaseConfig.PROPERTY_DATATYPE_FACTORY, new Db2DataTypeFactory());
-
     DatabaseOperation.CLEAN_INSERT.execute(connection, databaseTester.getDataSet());
 
     connection.getConnection().commit();
index d42db6a18b627913bafa3952b6e7a1357d8f1f5e..133e70f59491fe5a2673068a0940dd0008e76d15 100644 (file)
@@ -4,21 +4,13 @@
 
   <appender name="STDOUT"
             class="ch.qos.logback.core.ConsoleAppender">
-    <layout class="ch.qos.logback.classic.PatternLayout">
+    <encoder>
       <pattern>
         %d{HH:mm:ss.SSS} %-5level %logger{36} - %msg%n
       </pattern>
-    </layout>
+    </encoder>
   </appender>
 
-  <!-- logger name="org.sonar.DBSTATISTICS">
-    <level value="INFO"/>
-  </logger>
--->
-  <!--<logger name="org.hibernate.SQL">-->
-    <!--<level value="INFO"/>-->
-  <!--</logger>-->
-
   <root>
     <level value="WARN"/>
     <appender-ref ref="STDOUT"/>
diff --git a/sonar-core/src/test/resources/org/sonar/persistence/model/RuleMapperTest/selectById.xml b/sonar-core/src/test/resources/org/sonar/persistence/model/RuleMapperTest/selectById.xml
new file mode 100644 (file)
index 0000000..217d08e
--- /dev/null
@@ -0,0 +1,6 @@
+<dataset>
+
+  <RULES id="1" plugin_rule_key="AvoidComparison" plugin_name="checkstyle" name="Avoid Comparison" description="Should avoid ==" enabled="1" />
+  <RULES id="2" plugin_rule_key="AvoidNull" plugin_name="checkstyle" name="Avoid Null" description="Should avoid NULL" enabled="1" />
+
+</dataset>
\ No newline at end of file