]> source.dussan.org Git - sonarqube.git/commitdiff
Add convenient methods to rule/issue testing utilities
authorSimon Brandhof <simon.brandhof@sonarsource.com>
Fri, 31 Mar 2017 15:15:32 +0000 (17:15 +0200)
committerSimon Brandhof <simon.brandhof@sonarsource.com>
Fri, 31 Mar 2017 17:24:28 +0000 (19:24 +0200)
24 files changed:
server/sonar-db-core/src/main/java/org/sonar/db/version/SqTables.java
server/sonar-db-dao/src/main/java/org/sonar/db/issue/IssueDto.java
server/sonar-db-dao/src/main/java/org/sonar/db/issue/IssueTesting.java
server/sonar-db-dao/src/main/java/org/sonar/db/rule/RuleDao.java
server/sonar-db-dao/src/test/java/org/sonar/db/issue/IssueDaoTest.java
server/sonar-db-dao/src/test/java/org/sonar/db/issue/IssueDbTester.java
server/sonar-db-dao/src/test/java/org/sonar/db/issue/IssueDtoTest.java
server/sonar-db-dao/src/test/java/org/sonar/db/qualityprofile/ActiveRuleDaoTest.java
server/sonar-db-dao/src/test/java/org/sonar/db/rule/RuleDaoTest.java
server/sonar-db-dao/src/test/java/org/sonar/db/rule/RuleDbTester.java
server/sonar-db-dao/src/test/java/org/sonar/db/rule/RuleTesting.java
server/sonar-server/src/main/java/org/sonar/server/rule/RuleCreator.java
server/sonar-server/src/main/java/org/sonar/server/rule/RuleUpdater.java
server/sonar-server/src/test/java/org/sonar/server/issue/IssueServiceMediumTest.java
server/sonar-server/src/test/java/org/sonar/server/qualityprofile/index/ActiveRuleIndexerTest.java
server/sonar-server/src/test/java/org/sonar/server/rule/RegisterRulesTest.java
server/sonar-server/src/test/java/org/sonar/server/rule/RuleCreatorMediumTest.java
server/sonar-server/src/test/java/org/sonar/server/rule/RuleServiceMediumTest.java
server/sonar-server/src/test/java/org/sonar/server/rule/RuleUpdaterMediumTest.java
server/sonar-server/src/test/java/org/sonar/server/rule/ws/CreateActionMediumTest.java
server/sonar-server/src/test/java/org/sonar/server/rule/ws/RulesWsMediumTest.java
server/sonar-server/src/test/java/org/sonar/server/rule/ws/SearchActionMediumTest.java
server/sonar-server/src/test/java/org/sonar/server/rule/ws/ShowActionMediumTest.java
server/sonar-server/src/test/java/org/sonar/server/rule/ws/UpdateActionMediumTest.java

index 6c34930e32f367bad6b34a9e989f969201ca91c8..6bfd1a9a592bdb131c53cc77d4e3d310911af267 100644 (file)
@@ -81,6 +81,7 @@ public final class SqTables {
     "properties",
     "qprofile_changes",
     "rules",
+    "rules_metadata",
     "rules_parameters",
     "rules_profiles",
     "rule_repositories",
index 8133ab289e2961ada557a320c1abc98c30043780..497fd2429011cc74701595591b3502fdc72963e9 100644 (file)
@@ -42,6 +42,7 @@ import org.sonar.core.issue.DefaultIssue;
 import org.sonar.core.util.Uuids;
 import org.sonar.db.component.ComponentDto;
 import org.sonar.db.protobuf.DbIssues;
+import org.sonar.db.rule.RuleDefinitionDto;
 import org.sonar.db.rule.RuleDto;
 
 import static com.google.common.base.Preconditions.checkArgument;
@@ -447,7 +448,7 @@ public final class IssueDto implements Serializable {
     return ruleKey;
   }
 
-  public IssueDto setRule(RuleDto rule) {
+  public IssueDto setRule(RuleDefinitionDto rule) {
     Preconditions.checkNotNull(rule.getId(), "Rule must be persisted.");
     this.ruleId = rule.getId();
     this.ruleKey = rule.getRuleKey();
@@ -471,7 +472,7 @@ public final class IssueDto implements Serializable {
   /**
    * Should only be used to persist in E/S
    * <p/>
-   * Please use {@link #setRule(RuleDto)} instead
+   * Please use {@link #setRule(RuleDefinitionDto)} instead
    */
   public IssueDto setLanguage(String language) {
     this.language = language;
@@ -590,7 +591,7 @@ public final class IssueDto implements Serializable {
   /**
    * Should only be used to persist in E/S
    * <p/>
-   * Please use {@link #setRule(RuleDto)} instead
+   * Please use {@link #setRule(RuleDefinitionDto)} instead
    */
   public IssueDto setRuleKey(String repo, String rule) {
     this.ruleRepo = repo;
index 33ff23722c438370166a499b39a676222fe9aa28..a7dba82a2109807e73f590a2e2f7f4bfac9784fd 100644 (file)
  */
 package org.sonar.db.issue;
 
+import java.util.Date;
+import org.apache.commons.lang.math.RandomUtils;
 import org.sonar.api.issue.Issue;
 import org.sonar.api.rule.Severity;
 import org.sonar.api.rules.RuleType;
 import org.sonar.api.utils.DateUtils;
 import org.sonar.core.util.Uuids;
 import org.sonar.db.component.ComponentDto;
+import org.sonar.db.rule.RuleDefinitionDto;
 import org.sonar.db.rule.RuleDto;
 
+import static com.google.common.collect.Sets.newHashSet;
+import static org.apache.commons.lang.RandomStringUtils.randomAlphabetic;
+import static org.apache.commons.lang.RandomStringUtils.randomAlphanumeric;
+import static org.apache.commons.lang.math.RandomUtils.nextInt;
+
 public class IssueTesting {
 
   private IssueTesting() {
+    // only statics
+  }
 
+  public static IssueDto newIssue(RuleDefinitionDto rule, ComponentDto project, ComponentDto file) {
+    return new IssueDto()
+      .setKee("uuid_" + randomAlphabetic(5))
+      .setRule(rule)
+      .setType(RuleType.values()[nextInt(RuleType.values().length)])
+      .setProject(project)
+      .setComponent(file)
+      .setStatus(Issue.STATUS_OPEN)
+      .setResolution(null)
+      .setSeverity(Severity.ALL.get(nextInt(Severity.ALL.size())))
+      .setEffort((long) RandomUtils.nextInt(10))
+      .setAssignee("assignee_" + randomAlphabetic(5))
+      .setAuthorLogin("author_" + randomAlphabetic(5))
+      .setLine(nextInt(1_000))
+      .setMessage("message_" + randomAlphabetic(5))
+      .setChecksum("checksum_" + randomAlphabetic(5))
+      .setTags(newHashSet("tag_" + randomAlphanumeric(5), "tag_" + randomAlphanumeric(5)))
+      .setIssueCreationDate(new Date(System.currentTimeMillis() - 2_000))
+      .setIssueUpdateDate(new Date(System.currentTimeMillis() - 1_500))
+      .setCreatedAt(System.currentTimeMillis() - 1_000)
+      .setUpdatedAt(System.currentTimeMillis() - 500);
   }
 
   /**
-   * Full IssueDto used to feed database with fake data. Tests must not rely on the
-   * field contents declared here. They should override the fields they need to test,
-   * for example:
-   * <pre>
-   *   issueDao.insert(dbSession, IssueTesting.newDto(rule, file, project).setStatus(Issue.STATUS_RESOLVED).setResolution(Issue.RESOLUTION_FALSE_POSITIVE));
-   * </pre>
+   * @deprecated use newIssue(...)
    */
+  @Deprecated
   public static IssueDto newDto(RuleDto rule, ComponentDto file, ComponentDto project) {
     return new IssueDto()
       .setKee(Uuids.createFast())
-      .setRule(rule)
+      .setRule(rule.getDefinition())
       .setType(RuleType.CODE_SMELL)
       .setComponent(file)
       .setProject(project)
index 1323982ceec84441c09c0093dca180d0d8de6f48..73647d7629c56da5c2e70759627f49cc1abc3b1e 100644 (file)
@@ -126,7 +126,7 @@ public class RuleDao implements Dao {
     mapper(session).updateDefinition(dto);
   }
 
-  public void update(DbSession session, RuleMetadataDto dto) {
+  public void insertOrUpdate(DbSession session, RuleMetadataDto dto) {
     if (mapper(session).countMetadata(dto) > 0) {
       mapper(session).updateMetadata(dto);
     } else {
index 5efa3bc682c91ef91b2f69f91027d266414db041..75b5864f6597b472014a11a395063105fb351a81 100644 (file)
@@ -126,7 +126,7 @@ public class IssueDaoTest {
     IssueDto dto = new IssueDto();
     dto.setComponent(new ComponentDto().setKey("struts:Action").setId(123L).setUuid("component-uuid"));
     dto.setProject(new ComponentDto().setKey("struts").setId(100L).setUuid("project-uuid"));
-    dto.setRule(RuleTesting.newDto(RuleKey.of("squid", "S001")).setId(200));
+    dto.setRule(RuleTesting.newRule(RuleKey.of("squid", "S001")).setId(200));
     dto.setKee(key);
     dto.setType(2);
     dto.setLine(500);
index 458a9077f6158b45fe908489ab16b87569290ee2..bf36598077af2b54315838ba060f9d271a1c0478 100644 (file)
@@ -27,11 +27,11 @@ import org.sonar.core.issue.FieldDiffs;
 import org.sonar.db.DbTester;
 import org.sonar.db.component.ComponentDto;
 import org.sonar.db.organization.OrganizationDto;
+import org.sonar.db.rule.RuleDefinitionDto;
 import org.sonar.db.rule.RuleDto;
 
 import static org.sonar.db.component.ComponentTesting.newFileDto;
 import static org.sonar.db.issue.IssueTesting.newDto;
-import static org.sonar.db.rule.RuleTesting.newRuleDto;
 
 public class IssueDbTester {
 
@@ -41,6 +41,17 @@ public class IssueDbTester {
     this.db = db;
   }
 
+  public IssueDto insert(RuleDefinitionDto rule, ComponentDto project, ComponentDto file) {
+    IssueDto issue = IssueTesting.newIssue(rule, project, file);
+    return insertIssue(issue);
+  }
+
+  public IssueDto insert(RuleDefinitionDto rule, ComponentDto project, ComponentDto file, Consumer<IssueDto> populator) {
+    IssueDto issue = IssueTesting.newIssue(rule, project, file);
+    populator.accept(issue);
+    return insertIssue(issue);
+  }
+
   public IssueDto insertIssue(IssueDto issueDto) {
     db.getDbClient().issueDao().insert(db.getSession(), issueDto);
     db.commit();
@@ -62,7 +73,7 @@ public class IssueDbTester {
   }
 
   public IssueDto insertIssue(OrganizationDto organizationDto, Consumer<IssueDto> populateIssueDto) {
-    RuleDto rule = db.rules().insertRule(newRuleDto());
+    RuleDto rule = db.rules().insertRule(organizationDto);
     ComponentDto project = db.components().insertProject(organizationDto);
     ComponentDto file = db.components().insertComponent(newFileDto(project));
     IssueDto issueDto = newDto(rule, file, project);
index 94f7bed0d5b59375635d48eb93b2fb2f89a2adee..e8568b23f51a345a52135fd706444775ce69f692 100644 (file)
@@ -30,7 +30,7 @@ import org.sonar.api.issue.Issue;
 import org.sonar.api.rules.RuleType;
 import org.sonar.api.utils.Duration;
 import org.sonar.core.issue.DefaultIssue;
-import org.sonar.db.rule.RuleDto;
+import org.sonar.db.rule.RuleDefinitionDto;
 
 import static org.assertj.core.api.Assertions.assertThat;
 
@@ -116,7 +116,7 @@ public class IssueDtoTest {
   public void set_rule() {
     IssueDto dto = new IssueDto()
       .setKee("100")
-      .setRule(new RuleDto().setId(1).setRuleKey("AvoidCycle").setRepositoryKey("squid"))
+      .setRule(new RuleDefinitionDto().setId(1).setRuleKey("AvoidCycle").setRepositoryKey("squid"))
       .setLanguage("xoo");
 
     assertThat(dto.getRuleId()).isEqualTo(1);
index d8ac744163ae1041e8a5789ca002af7db729043e..1fa89afb3eb74b39e35aa4cc04e065391b30e06a 100644 (file)
@@ -91,9 +91,9 @@ public class ActiveRuleDaoTest {
 
     dbClient.qualityProfileDao().insert(dbSession, profile1);
     dbClient.qualityProfileDao().insert(dbSession, profile2);
-    dbTester.rules().insertRule(rule1);
-    dbTester.rules().insertRule(rule2);
-    dbTester.rules().insertRule(rule3);
+    dbTester.rules().insert(rule1);
+    dbTester.rules().insert(rule2);
+    dbTester.rules().insert(rule3);
 
     rule1Param1 = new RuleParamDto()
       .setName("param1")
@@ -201,7 +201,7 @@ public class ActiveRuleDaoTest {
   @Test
   public void select_by_profile_ignore_removed_rules() throws Exception {
     RuleDefinitionDto removedRule = RuleTesting.newDto(RuleKey.of("removed", "rule")).setStatus(RuleStatus.REMOVED).getDefinition();
-    dbTester.rules().insertRule(removedRule);
+    dbTester.rules().insert(removedRule);
     ActiveRuleDto activeRule = createFor(profile1, removedRule).setSeverity(BLOCKER);
     underTest.insert(dbTester.getSession(), activeRule);
     dbSession.commit();
index 60616176066c47e0d755dfe8132ec8e4cef97c0e..39001ebfa4ae30abd621db6680b0793950e9f0df 100644 (file)
@@ -398,7 +398,7 @@ public class RuleDaoTest {
     dbTester.prepareDbUnit(getClass(), "update.xml");
     String organizationUuid = "org-1";
 
-    RuleMetadataDto ruleToUpdate = new RuleMetadataDto()
+    RuleMetadataDto metadataToUpdate = new RuleMetadataDto()
       .setRuleId(1)
       .setOrganizationUuid(organizationUuid)
       .setNoteData("My note")
@@ -412,7 +412,7 @@ public class RuleDaoTest {
       .setCreatedAt(3_500_000_000_000L)
       .setUpdatedAt(4_000_000_000_000L);
 
-    underTest.update(dbTester.getSession(), ruleToUpdate);
+    underTest.insertOrUpdate(dbTester.getSession(), metadataToUpdate);
     dbTester.getSession().commit();
 
     RuleDto ruleDto = underTest.selectOrFailByKey(dbTester.getSession(), organizationUuid, RuleKey.of("checkstyle", "AvoidNull"));
@@ -468,7 +468,7 @@ public class RuleDaoTest {
         .setCreatedAt(6_500_000_000_000L)
         .setUpdatedAt(7_000_000_000_000L);
 
-    underTest.update(dbTester.getSession(), metadataV1);
+    underTest.insertOrUpdate(dbTester.getSession(), metadataV1);
     dbTester.commit();
 
     assertThat(dbTester.countRowsOfTable("RULES_METADATA")).isEqualTo(1);
@@ -501,7 +501,7 @@ public class RuleDaoTest {
     assertThat(ruleDto.getCreatedAt()).isEqualTo(3_500_000_000_000L);
     assertThat(ruleDto.getUpdatedAt()).isEqualTo(4_000_000_000_000L);
 
-    underTest.update(dbTester.getSession(), metadataV2);
+    underTest.insertOrUpdate(dbTester.getSession(), metadataV2);
     dbTester.commit();
 
     ruleDto = underTest.selectOrFailByKey(dbTester.getSession(), organizationUuid, RuleKey.of("checkstyle", "AvoidNull"));
index 288c2f793387e401c3a977c50debc657f5ce2843..2e5111ea4db0365d42cc68c9a7b7e3853bb034a1 100644 (file)
@@ -22,6 +22,7 @@ package org.sonar.db.rule;
 import java.util.Arrays;
 import java.util.function.Consumer;
 import org.apache.commons.lang.RandomStringUtils;
+import org.sonar.api.rule.RuleKey;
 import org.sonar.api.server.rule.RuleParamType;
 import org.sonar.db.DbTester;
 import org.sonar.db.organization.OrganizationDto;
@@ -36,11 +37,58 @@ public class RuleDbTester {
     this.db = db;
   }
 
-  public RuleDefinitionDto insertRule(RuleDefinitionDto ruleDto) {
-    RuleDao ruleDao = db.getDbClient().ruleDao();
-    ruleDao.insert(db.getSession(), ruleDto);
+  public RuleDefinitionDto insert() {
+    return insert(RuleTesting.newRule());
+  }
+
+  public RuleDefinitionDto insert(RuleKey key) {
+    return insert(RuleTesting.newRule(key));
+  }
+
+  public RuleDefinitionDto insert(Consumer<RuleDefinitionDto> populater) {
+    RuleDefinitionDto rule = RuleTesting.newRule();
+    populater.accept(rule);
+    return insert(rule);
+  }
+
+  public RuleDefinitionDto insert(RuleKey key, Consumer<RuleDefinitionDto> populater) {
+    RuleDefinitionDto rule = RuleTesting.newRule(key);
+    populater.accept(rule);
+    return insert(rule);
+  }
+
+  public RuleDefinitionDto insert(RuleDefinitionDto rule) {
+    db.getDbClient().ruleDao().insert(db.getSession(), rule);
     db.commit();
-    return ruleDto;
+    return rule;
+  }
+
+  public RuleMetadataDto insertOrUpdateMetadata(RuleDefinitionDto rule, OrganizationDto organization) {
+    return insertOrUpdateMetadata(rule, organization, r -> {});
+  }
+
+  public RuleMetadataDto insertOrUpdateMetadata(RuleDefinitionDto rule, OrganizationDto organization, Consumer<RuleMetadataDto> populater) {
+    RuleMetadataDto dto = RuleTesting.newRuleMetadata(rule, organization);
+    populater.accept(dto);
+    return insertOrUpdateMetadata(dto);
+  }
+
+  public RuleMetadataDto insertOrUpdateMetadata(RuleMetadataDto metadata) {
+    db.getDbClient().ruleDao().insertOrUpdate(db.getSession(), metadata);
+    db.commit();
+    return metadata;
+  }
+
+  public RuleParamDto insertRuleParam(RuleDefinitionDto rule) {
+    return insertRuleParam(rule, p -> {});
+  }
+
+  public RuleParamDto insertRuleParam(RuleDefinitionDto rule, Consumer<RuleParamDto> populater) {
+    RuleParamDto param = RuleTesting.newRuleParam(rule);
+    populater.accept(param);
+    db.getDbClient().ruleDao().insertRuleParam(db.getSession(), rule, param);
+    db.commit();
+    return param;
   }
 
   public RuleDto insertRule(RuleDto ruleDto) {
@@ -49,7 +97,7 @@ public class RuleDbTester {
     db.commit();
     RuleMetadataDto metadata = ruleDto.getMetadata();
     if (metadata.getOrganizationUuid() != null) {
-      ruleDao.update(db.getSession(), metadata.setRuleId(ruleDto.getId()));
+      ruleDao.insertOrUpdate(db.getSession(), metadata.setRuleId(ruleDto.getId()));
       db.commit();
     }
     return ruleDto;
index e4265a20095dc04fa4e1ddea5e995ca593b1ddf3..2720a2635c337eb5ad0497553ed2e21ce6e51a4e 100644 (file)
@@ -26,12 +26,16 @@ import org.sonar.api.rule.RuleKey;
 import org.sonar.api.rule.RuleStatus;
 import org.sonar.api.rule.Severity;
 import org.sonar.api.rules.RuleType;
+import org.sonar.api.server.rule.RuleParamType;
 import org.sonar.db.organization.OrganizationDto;
 import org.sonar.db.rule.RuleDto.Format;
 
 import static com.google.common.base.Preconditions.checkNotNull;
+import static com.google.common.collect.Sets.newHashSet;
 import static java.util.Objects.requireNonNull;
+import static org.apache.commons.lang.RandomStringUtils.randomAlphabetic;
 import static org.apache.commons.lang.RandomStringUtils.randomAlphanumeric;
+import static org.apache.commons.lang.math.RandomUtils.nextInt;
 
 /**
  * Utility class for tests involving rules
@@ -46,60 +50,123 @@ public class RuleTesting {
     // only static helpers
   }
 
+  public static RuleDefinitionDto newRule() {
+    return newRule(randomRuleKey());
+  }
+
+  public static RuleDefinitionDto newRule(RuleKey key) {
+    return new RuleDefinitionDto()
+      .setRepositoryKey(key.repository())
+      .setRuleKey(key.rule())
+      .setName("name_" + randomAlphanumeric(5))
+      .setDescription("description_" + randomAlphanumeric(5))
+      .setDescriptionFormat(Format.HTML)
+      .setType(RuleType.values()[nextInt(RuleType.values().length)])
+      .setStatus(RuleStatus.READY)
+      .setConfigKey("configKey_" + randomAlphanumeric(5))
+      .setSeverity(Severity.ALL.get(nextInt(Severity.ALL.size())))
+      .setIsTemplate(false)
+      .setSystemTags(newHashSet("tag_" + randomAlphanumeric(5), "tag_" + randomAlphanumeric(5)))
+      .setLanguage("lang_" + randomAlphanumeric(3))
+      .setGapDescription("gapDescription_" + randomAlphanumeric(5))
+      .setDefRemediationBaseEffort(nextInt(10) + "h")
+      .setDefRemediationGapMultiplier(nextInt(10) + "h")
+      .setDefRemediationFunction("LINEAR_OFFSET")
+      .setCreatedAt(System.currentTimeMillis())
+      .setUpdatedAt(System.currentTimeMillis());
+  }
+
+  public static RuleMetadataDto newRuleMetadata() {
+    return new RuleMetadataDto()
+      .setRuleId(nextInt(100_000))
+      .setOrganizationUuid("org_" + randomAlphanumeric(5))
+      .setRemediationBaseEffort(nextInt(10) + "h")
+      .setRemediationGapMultiplier(nextInt(10) + "h")
+      .setRemediationFunction("LINEAR_OFFSET")
+      .setTags(newHashSet("tag_" + randomAlphanumeric(5), "tag_" + randomAlphanumeric(5)))
+      .setNoteData("noteData_" + randomAlphanumeric(5))
+      .setNoteUserLogin("noteLogin_" + randomAlphanumeric(5))
+      .setNoteCreatedAt(System.currentTimeMillis() - 200)
+      .setNoteUpdatedAt(System.currentTimeMillis() - 150)
+      .setCreatedAt(System.currentTimeMillis() - 100)
+      .setUpdatedAt(System.currentTimeMillis() - 50);
+  }
+
+  public static RuleMetadataDto newRuleMetadata(RuleDefinitionDto rule, OrganizationDto organization) {
+    return newRuleMetadata()
+      .setRuleId(rule.getId())
+      .setOrganizationUuid(organization.getUuid());
+  }
+
+  public static RuleParamDto newRuleParam(RuleDefinitionDto rule) {
+    return new RuleParamDto()
+      .setRuleId(rule.getId())
+      .setName("name_" + randomAlphabetic(5))
+      .setDefaultValue("default_" + randomAlphabetic(5))
+      .setDescription("description_" + randomAlphabetic(5))
+      .setType(RuleParamType.STRING.type());
+  }
+
   /**
-   * Create a RuleDto representing the definition of the rule Xoo1 of language Xoo.
+   * @deprecated use newRule(...)
    */
+  @Deprecated
   public static RuleDto newXooX1() {
     return newDto(XOO_X1).setLanguage("xoo");
   }
 
   /**
-   * Create a RuleDto representing the definition of the rule Xoo1 of language Xoo with some user defined fields.
+   * @deprecated use newRule(...)
    */
+  @Deprecated
   public static RuleDto newXooX1(OrganizationDto organization) {
     return newDto(XOO_X1, requireNonNull(organization, "organization can't be null")).setLanguage("xoo");
   }
 
   /**
-   * Create a RuleDto representing the definition of the rule Xoo2 of language Xoo.
+   * @deprecated use newRule(...)
    */
+  @Deprecated
   public static RuleDto newXooX2() {
     return newDto(XOO_X2).setLanguage("xoo");
   }
 
   /**
-   * Create a RuleDto representing the definition of the rule Xoo2 of language Xoo with some user defined fields.
+   * @deprecated use newRule(...)
    */
+  @Deprecated
   public static RuleDto newXooX2(OrganizationDto organization) {
     return newDto(XOO_X2, requireNonNull(organization, "organization can't be null")).setLanguage("xoo");
   }
 
   /**
-   * Create a RuleDto representing the definition of the rule Xoo3 of language Xoo.
+   * @deprecated use newRule(...)
    */
+  @Deprecated
   public static RuleDto newXooX3() {
     return newDto(XOO_X3).setLanguage("xoo");
   }
 
   /**
-   * Create a RuleDto representing the definition of the rule Xoo3 of language Xoo with some user defined fields.
+   * @deprecated use newRule(...)
    */
+  @Deprecated
   public static RuleDto newXooX3(OrganizationDto organization) {
     return newDto(XOO_X3, requireNonNull(organization, "organization can't be null")).setLanguage("xoo");
   }
 
   /**
-   * Full RuleDto used to feed database with fake data. Tests must not rely on the
-   * field contents declared here. They should override the fields they need to test,
-   * for example:
-   * <pre>
-   *   ruleDao.insert(dbSession, RuleTesting.newDto(key).setStatus(RuleStatus.BETA));
-   * </pre>
+   * @deprecated use newRule(...)
    */
+  @Deprecated
   public static RuleDto newDto(RuleKey ruleKey) {
     return newDto(ruleKey, null);
   }
 
+  /**
+   * @deprecated use newRule(...)
+   */
+  @Deprecated
   public static RuleDto newDto(RuleKey ruleKey, @Nullable OrganizationDto organization) {
     RuleDto res = new RuleDto()
       .setRuleKey(ruleKey.rule())
@@ -130,26 +197,27 @@ public class RuleTesting {
     return res;
   }
 
+  /**
+   * @deprecated use newRule(...)
+   */
+  @Deprecated
   public static RuleDto newRuleDto() {
     return newDto(RuleKey.of(randomAlphanumeric(30), randomAlphanumeric(30)));
   }
 
-
+  /**
+   * @deprecated use newRule(...)
+   */
+  @Deprecated
   public static RuleDto newRuleDto(OrganizationDto organization) {
     return newDto(RuleKey.of(randomAlphanumeric(30), randomAlphanumeric(30)), organization);
   }
 
-  /**
-   * Creates a new rule to be used as a template for a custom rule.
-   */
   public static RuleDto newTemplateRule(RuleKey ruleKey) {
     return newDto(ruleKey)
       .setIsTemplate(true);
   }
 
-  /**
-   * Creates a new rule to be used as a template for a custom rule with some user defined fields.
-   */
   public static RuleDto newTemplateRule(RuleKey ruleKey, OrganizationDto organization) {
     return newDto(ruleKey, organization)
       .setIsTemplate(true);
@@ -164,6 +232,6 @@ public class RuleTesting {
   }
 
   public static RuleKey randomRuleKey() {
-    return RuleKey.of(randomAlphanumeric(5), randomAlphanumeric(5));
+    return RuleKey.of("repo_" + randomAlphanumeric(3), "rule_" + randomAlphanumeric(3));
   }
 }
index 8b1f4fb51c26b5af0bd360ab95e53bb3ff6dcbae..1cd31f7d34507c7b5080ec14f6b244124c11b15c 100644 (file)
@@ -183,7 +183,7 @@ public class RuleCreator {
         .setTags(tags)
         .setCreatedAt(system2.now())
         .setUpdatedAt(system2.now());
-      dbClient.ruleDao().update(dbSession, ruleMetadata);
+      dbClient.ruleDao().insertOrUpdate(dbSession, ruleMetadata);
     }
 
     for (RuleParamDto templateRuleParamDto : dbClient.ruleDao().selectRuleParamsByRuleKey(dbSession, templateRuleDto.getKey())) {
index 16bdf32f2aab0a73f899cf3fd3fb38ed9e1ed18c..1dc61bd387bd871a0830d2399abb42670fc753fd 100644 (file)
@@ -348,7 +348,7 @@ public class RuleUpdater {
   private void update(DbSession session, RuleDto rule) {
     rule.setUpdatedAt(system.now());
     dbClient.ruleDao().update(session, rule.getDefinition());
-    dbClient.ruleDao().update(session, rule.getMetadata());
+    dbClient.ruleDao().insertOrUpdate(session, rule.getMetadata());
   }
 
 }
index 8b33a9e790adc5e67642dd09a2bbd5f48b05f5d7..28f9f3343ca45220cc8f501ad4fcc201ae5f7f00 100644 (file)
@@ -183,7 +183,7 @@ public class IssueServiceMediumTest {
     RuleDao ruleDao = tester.get(RuleDao.class);
     ruleDao.insert(session, rule.getDefinition());
     if (rule.getOrganizationUuid() != null) {
-      ruleDao.update(session, rule.getMetadata().setRuleId(rule.getId()));
+      ruleDao.insertOrUpdate(session, rule.getMetadata().setRuleId(rule.getId()));
     }
     session.commit();
     ruleIndexer.index(organization, rule.getKey());
index 7caba2b318c02a672869fce06d620b4fff2259f5..437810a98b631ef9bf7a856f6fde02b18dd5da7b 100644 (file)
@@ -143,7 +143,7 @@ public class ActiveRuleIndexerTest {
 
     // Index one active rule
     RuleDefinitionDto rule = RuleTesting.newDto(RULE_KEY_1).getDefinition();
-    dbTester.rules().insertRule(rule);
+    dbTester.rules().insert(rule);
     QualityProfileDto profile = QualityProfileDto.createFor("qp")
       .setOrganizationUuid(organization.getUuid())
       .setLanguage("xoo")
@@ -160,7 +160,7 @@ public class ActiveRuleIndexerTest {
 
     // Index another active rule
     RuleDefinitionDto rule2 = RuleTesting.newDto(RULE_KEY_2).getDefinition();
-    dbTester.rules().insertRule(rule2);
+    dbTester.rules().insert(rule2);
     ActiveRuleDto activeRule2 = ActiveRuleDto.createFor(profile, rule2).setSeverity(Severity.CRITICAL)
       .setCreatedAt(now).setUpdatedAt(now);
     dbTester.getDbClient().activeRuleDao().insert(dbTester.getSession(), activeRule2);
index cb71bb9ad351e259582ff4acf5114f5cdc914bd1..11ed26165b79cf5f74c1d055e8f95b07aa7c4b3a 100644 (file)
@@ -190,7 +190,7 @@ public class RegisterRulesTest {
     rule1.setTags(newHashSet("usertag1", "usertag2"));
     rule1.setNoteData("user *note*");
     rule1.setNoteUserLogin("marius");
-    dbClient.ruleDao().update(dbTester.getSession(), rule1.getMetadata());
+    dbClient.ruleDao().insertOrUpdate(dbTester.getSession(), rule1.getMetadata());
     dbTester.getSession().commit();
 
     when(system.now()).thenReturn(DATE2.getTime());
index 8b161cf3625933fa020429b1278cee5426db0cce..c61670e5dbe8872efc76f67ab28459e442780eb8 100644 (file)
@@ -515,7 +515,7 @@ public class RuleCreatorMediumTest {
       .setCreatedAt(new Date().getTime())
       .setUpdatedAt(new Date().getTime());
     dao.insert(dbSession, templateRule.getDefinition());
-    dao.update(dbSession, templateRule.getMetadata().setRuleId(templateRule.getId()));
+    dao.insertOrUpdate(dbSession, templateRule.getMetadata().setRuleId(templateRule.getId()));
     RuleParamDto ruleParamDto = RuleParamDto.createFor(templateRule.getDefinition()).setName("regex").setType("STRING").setDescription("Reg ex").setDefaultValue(".*");
     dao.insertRuleParam(dbSession, templateRule.getDefinition(), ruleParamDto);
     dbSession.commit();
index e755c0751b6fb09cb04912177d7d80398ecf1462..e2cc174e80f2a269e01e778bd6fe310b464c7883 100644 (file)
@@ -116,7 +116,7 @@ public class RuleServiceMediumTest {
   private void insertRule(RuleKey key, Set<String> tags, Set<String> systemTags) {
     RuleDto ruleDto = RuleTesting.newDto(key, defaultOrganization).setTags(tags).setSystemTags(systemTags);
     dao.insert(dbSession, ruleDto.getDefinition());
-    dao.update(dbSession, ruleDto.getMetadata().setRuleId(ruleDto.getId()));
+    dao.insertOrUpdate(dbSession, ruleDto.getMetadata().setRuleId(ruleDto.getId()));
     dbSession.commit();
     ruleIndexer.index(defaultOrganization, ruleDto.getKey());
   }
index bc47da0e9049c6409e1a048f2690b46fa14a104d..c32def434dd76928725d8fe60cf9d2042f6cae0c 100644 (file)
@@ -118,7 +118,7 @@ public class RuleUpdaterMediumTest {
       .setRemediationGapMultiplier("1d")
       .setRemediationBaseEffort("5min");
     ruleDao.insert(dbSession, ruleDto.getDefinition());
-    ruleDao.update(dbSession, ruleDto.getMetadata().setRuleId(ruleDto.getId()));
+    ruleDao.insertOrUpdate(dbSession, ruleDto.getMetadata().setRuleId(ruleDto.getId()));
     dbSession.commit();
 
     RuleUpdate update = RuleUpdate.createForPluginRule(RULE_KEY);
@@ -149,7 +149,7 @@ public class RuleUpdaterMediumTest {
       .setRemediationGapMultiplier("1d")
       .setRemediationBaseEffort("5min");
     ruleDao.insert(dbSession, ruleDto.getDefinition());
-    ruleDao.update(dbSession, ruleDto.getMetadata().setRuleId(ruleDto.getId()));
+    ruleDao.insertOrUpdate(dbSession, ruleDto.getMetadata().setRuleId(ruleDto.getId()));
     dbSession.commit();
 
     RuleUpdate update = RuleUpdate.createForPluginRule(RULE_KEY);
@@ -175,7 +175,7 @@ public class RuleUpdaterMediumTest {
       .setNoteData("my *note*")
       .setNoteUserLogin("me");
     ruleDao.insert(dbSession, ruleDto.getDefinition());
-    ruleDao.update(dbSession, ruleDto.getMetadata().setRuleId(ruleDto.getId()));
+    ruleDao.insertOrUpdate(dbSession, ruleDto.getMetadata().setRuleId(ruleDto.getId()));
     dbSession.commit();
 
     RuleUpdate update = RuleUpdate.createForPluginRule(RULE_KEY).setMarkdownNote(null);
@@ -217,7 +217,7 @@ public class RuleUpdaterMediumTest {
       .setTags(Sets.newHashSet("security"))
       .setSystemTags(Sets.newHashSet("java8", "javadoc"));
     ruleDao.insert(dbSession, ruleDto.getDefinition());
-    ruleDao.update(dbSession, ruleDto.getMetadata());
+    ruleDao.insertOrUpdate(dbSession, ruleDto.getMetadata());
     dbSession.commit();
 
     RuleUpdate update = RuleUpdate.createForPluginRule(RULE_KEY).setTags(null);
@@ -319,7 +319,7 @@ public class RuleUpdaterMediumTest {
       .setRemediationGapMultiplier(null)
       .setRemediationBaseEffort("1min");
     ruleDao.insert(dbSession, ruleDto.getDefinition());
-    ruleDao.update(dbSession, ruleDto.getMetadata().setRuleId(ruleDto.getId()));
+    ruleDao.insertOrUpdate(dbSession, ruleDto.getMetadata().setRuleId(ruleDto.getId()));
     dbSession.commit();
 
     RuleUpdate update = RuleUpdate.createForPluginRule(RULE_KEY).setDebtRemediationFunction(null);
index 91ee12075210356f59ee79939d2318b2247ccef9..0ea475f6054840e31b1ce02bb4164f857c0af43a 100644 (file)
@@ -77,7 +77,7 @@ public class CreateActionMediumTest {
     // Template rule
     RuleDto templateRule = RuleTesting.newTemplateRule(RuleKey.of("java", "S001"), defaultOrganization);
     ruleDao.insert(session, templateRule.getDefinition());
-    ruleDao.update(session, templateRule.getMetadata().setRuleId(templateRule.getId()));
+    ruleDao.insertOrUpdate(session, templateRule.getMetadata().setRuleId(templateRule.getId()));
     RuleParamDto param = RuleParamDto.createFor(templateRule.getDefinition()).setName("regex").setType("STRING").setDescription("Reg ex").setDefaultValue(".*");
     ruleDao.insertRuleParam(session, templateRule.getDefinition(), param);
     session.commit();
index f9933742df910e0df7db0177380debe0641ced05..509b8a59f935cb3f3a53f0e5ed5b81dd01c509c8 100644 (file)
@@ -114,7 +114,7 @@ public class RulesWsMediumTest {
 
     RuleDto rule = RuleTesting.newXooX1(defaultOrganization);
     ruleDao.insert(session, rule.getDefinition());
-    ruleDao.update(session, rule.getMetadata().setRuleId(rule.getId()));
+    ruleDao.insertOrUpdate(session, rule.getMetadata().setRuleId(rule.getId()));
 
     ActiveRuleDto activeRuleDto = ActiveRuleDto.createFor(profile, rule.getDefinition()).setSeverity("BLOCKER");
     tester.get(ActiveRuleDao.class).insert(session, activeRuleDto);
@@ -146,13 +146,13 @@ public class RulesWsMediumTest {
       .setTags(ImmutableSet.of("hello", "world"))
       .setSystemTags(Collections.<String>emptySet());
     ruleDao.insert(session, rule.getDefinition());
-    ruleDao.update(session, rule.getMetadata().setRuleId(rule.getId()));
+    ruleDao.insertOrUpdate(session, rule.getMetadata().setRuleId(rule.getId()));
 
     RuleDto rule2 = RuleTesting.newXooX2(defaultOrganization)
       .setTags(ImmutableSet.of("hello", "java"))
       .setSystemTags(ImmutableSet.of("sys1"));
     ruleDao.insert(session, rule2.getDefinition());
-    ruleDao.update(session, rule2.getMetadata().setRuleId(rule2.getId()));
+    ruleDao.insertOrUpdate(session, rule2.getMetadata().setRuleId(rule2.getId()));
 
     session.commit();
     ruleIndexer.index(defaultOrganization, Stream.of(rule, rule2).map(RuleDto::getKey).collect(Collectors.toList()));
index 16e7a79546f01a63b1f14e8bf815521b264bea24..de5a39d883ba9d1c3b9be9bd50fc12d8fff1dbfa 100644 (file)
@@ -133,11 +133,11 @@ public class SearchActionMediumTest {
     RuleDto rule1 = RuleTesting.newXooX1(defaultOrganizationDto)
       .setType(RuleType.BUG);
     insertRule(rule1.getDefinition());
-    ruleDao.update(dbSession, rule1.getMetadata().setRuleId(rule1.getId()));
+    ruleDao.insertOrUpdate(dbSession, rule1.getMetadata().setRuleId(rule1.getId()));
     RuleDto rule2 = RuleTesting.newXooX2(defaultOrganizationDto)
       .setType(RuleType.VULNERABILITY);
     insertRule(rule2.getDefinition());
-    ruleDao.update(dbSession, rule2.getMetadata().setRuleId(rule2.getId()));
+    ruleDao.insertOrUpdate(dbSession, rule2.getMetadata().setRuleId(rule2.getId()));
     dbSession.commit();
 
     WsTester.TestRequest request = tester.wsTester().newGetRequest(API_ENDPOINT, API_SEARCH_METHOD);
@@ -228,7 +228,7 @@ public class SearchActionMediumTest {
       .setRemediationGapMultiplier("2h")
       .setRemediationBaseEffort("25min");
     insertRule(ruleDto.getDefinition());
-    ruleDao.update(dbSession, ruleDto.getMetadata().setRuleId(ruleDto.getId()));
+    ruleDao.insertOrUpdate(dbSession, ruleDto.getMetadata().setRuleId(ruleDto.getId()));
     dbSession.commit();
 
     WsTester.TestRequest request = tester.wsTester().newGetRequest(API_ENDPOINT, API_SEARCH_METHOD);
@@ -247,7 +247,7 @@ public class SearchActionMediumTest {
       .setRemediationGapMultiplier(null)
       .setRemediationBaseEffort("5min");
     insertRule(ruleDto.getDefinition());
-    ruleDao.update(dbSession, ruleDto.getMetadata().setRuleId(ruleDto.getId()));
+    ruleDao.insertOrUpdate(dbSession, ruleDto.getMetadata().setRuleId(ruleDto.getId()));
     dbSession.commit();
 
     WsTester.TestRequest request = tester.wsTester().newGetRequest(API_ENDPOINT, API_SEARCH_METHOD);
@@ -266,7 +266,7 @@ public class SearchActionMediumTest {
       .setRemediationGapMultiplier("1h")
       .setRemediationBaseEffort(null);
     insertRule(ruleDto.getDefinition());
-    ruleDao.update(dbSession, ruleDto.getMetadata().setRuleId(ruleDto.getId()));
+    ruleDao.insertOrUpdate(dbSession, ruleDto.getMetadata().setRuleId(ruleDto.getId()));
     dbSession.commit();
 
     WsTester.TestRequest request = tester.wsTester().newGetRequest(API_ENDPOINT, API_SEARCH_METHOD);
@@ -484,7 +484,7 @@ public class SearchActionMediumTest {
     tester.get(QualityProfileDao.class).insert(dbSession, profile);
     RuleDto rule = RuleTesting.newXooX1(defaultOrganizationDto).setNoteData("this is *bold*");
     insertRule(rule.getDefinition());
-    ruleDao.update(dbSession, rule.getMetadata().setRuleId(rule.getId()));
+    ruleDao.insertOrUpdate(dbSession, rule.getMetadata().setRuleId(rule.getId()));
 
     dbSession.commit();
 
@@ -620,7 +620,7 @@ public class SearchActionMediumTest {
       .setRemediationGapMultiplier("2h")
       .setRemediationBaseEffort("25min");
     insertRule(ruleDto.getDefinition());
-    ruleDao.update(dbSession, ruleDto.getMetadata().setRuleId(ruleDto.getId()));
+    ruleDao.insertOrUpdate(dbSession, ruleDto.getMetadata().setRuleId(ruleDto.getId()));
     dbSession.commit();
 
     WsTester.TestRequest request = tester.wsTester()
index 491dd4ad9c93a4874c196508c447ce7621d9a9b4..4d4f348bd8853052d3fbb2dff0d7d458a520d0fd 100644 (file)
@@ -102,7 +102,7 @@ public class ShowActionMediumTest {
       .setType(RuleType.BUG);
     RuleDefinitionDto definition = ruleDto.getDefinition();
     ruleDao.insert(session, definition);
-    ruleDao.update(session, ruleDto.getMetadata().setRuleId(ruleDto.getId()));
+    ruleDao.insertOrUpdate(session, ruleDto.getMetadata().setRuleId(ruleDto.getId()));
     RuleParamDto param = RuleParamDto.createFor(definition).setName("regex").setType("STRING").setDescription("Reg *exp*").setDefaultValue(".*");
     ruleDao.insertRuleParam(session, definition, param);
     session.commit();
@@ -129,7 +129,7 @@ public class ShowActionMediumTest {
       .setRemediationGapMultiplier(null)
       .setRemediationBaseEffort(null);
     ruleDao.insert(session, ruleDto.getDefinition());
-    ruleDao.update(session, ruleDto.getMetadata());
+    ruleDao.insertOrUpdate(session, ruleDto.getMetadata());
     session.commit();
     session.clearCache();
 
@@ -156,7 +156,7 @@ public class ShowActionMediumTest {
       .setRemediationGapMultiplier("5d")
       .setRemediationBaseEffort("10h");
     ruleDao.insert(session, ruleDto.getDefinition());
-    ruleDao.update(session, ruleDto.getMetadata().setRuleId(ruleDto.getId()));
+    ruleDao.insertOrUpdate(session, ruleDto.getMetadata().setRuleId(ruleDto.getId()));
     session.commit();
     session.clearCache();
 
@@ -181,7 +181,7 @@ public class ShowActionMediumTest {
       .setRemediationGapMultiplier("5d")
       .setRemediationBaseEffort("10h");
     ruleDao.insert(session, ruleDto.getDefinition());
-    ruleDao.update(session, ruleDto.getMetadata().setRuleId(ruleDto.getId()));
+    ruleDao.insertOrUpdate(session, ruleDto.getMetadata().setRuleId(ruleDto.getId()));
     session.commit();
     session.clearCache();
 
@@ -249,7 +249,7 @@ public class ShowActionMediumTest {
       .setRemediationGapMultiplier("5d")
       .setRemediationBaseEffort("10h");
     ruleDao.insert(session, ruleDto.getDefinition());
-    ruleDao.update(session, ruleDto.getMetadata().setRuleId(ruleDto.getId()));
+    ruleDao.insertOrUpdate(session, ruleDto.getMetadata().setRuleId(ruleDto.getId()));
     session.commit();
 
     WsTester.TestRequest request = wsTester.newGetRequest("api/rules", "show")
index 73c344a0fb30e4f2787b74effeb5d0e93eb0cdeb..0855625a0c4c1824e1124109921fac6cf4071194 100644 (file)
@@ -111,7 +111,7 @@ public class UpdateActionMediumTest {
       .setRemediationGapMultiplier("15min")
       .setRemediationBaseEffort("3h");
     ruleDao.insert(session, rule.getDefinition());
-    ruleDao.update(session, rule.getMetadata().setRuleId(rule.getId()));
+    ruleDao.insertOrUpdate(session, rule.getMetadata().setRuleId(rule.getId()));
     session.commit();
 
     WsTester.TestRequest request = wsTester.newPostRequest("api/rules", "update")
@@ -128,7 +128,7 @@ public class UpdateActionMediumTest {
     RuleDto templateRule = RuleTesting.newTemplateRule(RuleKey.of("java", "S001"), defaultOrganization);
     RuleDefinitionDto definition = templateRule.getDefinition();
     ruleDao.insert(session, definition);
-    ruleDao.update(session, templateRule.getMetadata().setRuleId(templateRule.getId()));
+    ruleDao.insertOrUpdate(session, templateRule.getMetadata().setRuleId(templateRule.getId()));
     RuleParamDto param = RuleParamDto.createFor(definition).setName("regex").setType("STRING").setDescription("Reg ex").setDefaultValue(".*");
     ruleDao.insertRuleParam(session, definition, param);
     session.commit();