diff options
author | Simon Brandhof <simon.brandhof@gmail.com> | 2013-04-22 17:57:20 +0200 |
---|---|---|
committer | Simon Brandhof <simon.brandhof@gmail.com> | 2013-04-22 17:57:41 +0200 |
commit | e5e0c1076f177f79ab3024d8800e1c01ae7c40a2 (patch) | |
tree | cb434fc24d939d945e0f0e12fb6134441515be49 /sonar-core/src/test | |
parent | d78b5f1ef8a5516d18ae8ba0b158eb57a5c8777d (diff) | |
download | sonarqube-e5e0c1076f177f79ab3024d8800e1c01ae7c40a2.tar.gz sonarqube-e5e0c1076f177f79ab3024d8800e1c01ae7c40a2.zip |
SONAR-3755 first draft of issue state machine
Diffstat (limited to 'sonar-core/src/test')
-rw-r--r-- | sonar-core/src/test/java/org/sonar/core/issue/IssueDtoTest.java | 2 | ||||
-rw-r--r-- | sonar-core/src/test/java/org/sonar/core/issue/UpdateIssueFieldsTest.java (renamed from sonar-core/src/test/java/org/sonar/core/issue/ApplyIssueChangeTest.java) | 8 | ||||
-rw-r--r-- | sonar-core/src/test/java/org/sonar/core/issue/workflow/TransitionTest.java | 113 |
3 files changed, 117 insertions, 6 deletions
diff --git a/sonar-core/src/test/java/org/sonar/core/issue/IssueDtoTest.java b/sonar-core/src/test/java/org/sonar/core/issue/IssueDtoTest.java index d8e6a2dc036..d7f5fcfce9c 100644 --- a/sonar-core/src/test/java/org/sonar/core/issue/IssueDtoTest.java +++ b/sonar-core/src/test/java/org/sonar/core/issue/IssueDtoTest.java @@ -87,7 +87,7 @@ public class IssueDtoTest { assertThat(issue.title()).isEqualTo("title"); assertThat(issue.description()).isEqualTo("message"); assertThat(issue.isManualSeverity()).isTrue(); - assertThat(issue.isManual()).isTrue(); + assertThat(issue.manual()).isTrue(); assertThat(issue.userLogin()).isEqualTo("arthur"); assertThat(issue.assignee()).isEqualTo("perceval"); assertThat(issue.attribute("key")).isEqualTo("value"); diff --git a/sonar-core/src/test/java/org/sonar/core/issue/ApplyIssueChangeTest.java b/sonar-core/src/test/java/org/sonar/core/issue/UpdateIssueFieldsTest.java index b538cf1c269..4e17798bdb3 100644 --- a/sonar-core/src/test/java/org/sonar/core/issue/ApplyIssueChangeTest.java +++ b/sonar-core/src/test/java/org/sonar/core/issue/UpdateIssueFieldsTest.java @@ -26,14 +26,13 @@ import org.sonar.api.rule.Severity; import static org.fest.assertions.Assertions.assertThat; -public class ApplyIssueChangeTest { +public class UpdateIssueFieldsTest { @Test public void should_change_fields() throws Exception { DefaultIssue issue = new DefaultIssue().setComponentKey("org/struts/Action.java").setKey("ABCDE"); - ApplyIssueChange.apply(issue, IssueChange.create() + UpdateIssueFields.apply(issue, IssueChange.create() .setLine(200) - .setResolution(Issue.RESOLUTION_FALSE_POSITIVE) .setAttribute("JIRA", "FOO-123") .setManualSeverity(true) .setSeverity(Severity.CRITICAL) @@ -43,7 +42,6 @@ public class ApplyIssueChangeTest { .setCost(4.2) ); assertThat(issue.line()).isEqualTo(200); - assertThat(issue.resolution()).isEqualTo(Issue.RESOLUTION_FALSE_POSITIVE); assertThat(issue.title()).isEqualTo("new title"); assertThat(issue.description()).isEqualTo("new desc"); assertThat(issue.attribute("JIRA")).isEqualTo("FOO-123"); @@ -67,7 +65,7 @@ public class ApplyIssueChangeTest { .setSeverity("BLOCKER") .setStatus("CLOSED") .setResolution("FIXED"); - ApplyIssueChange.apply(issue, IssueChange.create()); + UpdateIssueFields.apply(issue, IssueChange.create()); assertThat(issue.componentKey()).isEqualTo("org/struts/Action.java"); assertThat(issue.key()).isEqualTo("ABCDE"); diff --git a/sonar-core/src/test/java/org/sonar/core/issue/workflow/TransitionTest.java b/sonar-core/src/test/java/org/sonar/core/issue/workflow/TransitionTest.java new file mode 100644 index 00000000000..c3ab3e52bbc --- /dev/null +++ b/sonar-core/src/test/java/org/sonar/core/issue/workflow/TransitionTest.java @@ -0,0 +1,113 @@ +/* + * SonarQube, open source software quality management tool. + * Copyright (C) 2008-2013 SonarSource + * mailto:contact AT sonarsource DOT com + * + * SonarQube is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * SonarQube is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +package org.sonar.core.issue.workflow; + +import org.junit.Test; +import org.sonar.core.issue.DefaultIssue; + +import static org.fest.assertions.Assertions.assertThat; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; + +public class TransitionTest { + + Condition condition1 = mock(Condition.class); + Condition condition2 = mock(Condition.class); + Function function1 = mock(Function.class); + Function function2 = mock(Function.class); + + @Test + public void test_builder() throws Exception { + Transition transition = Transition.builder("close") + .from("OPEN").to("CLOSED") + .conditions(condition1, condition2) + .functions(function1, function2) + .build(); + assertThat(transition.key()).isEqualTo("close"); + assertThat(transition.from()).isEqualTo("OPEN"); + assertThat(transition.to()).isEqualTo("CLOSED"); + assertThat(transition.conditions()).containsOnly(condition1, condition2); + assertThat(transition.functions()).containsOnly(function1, function2); + } + + @Test + public void test_simplest_transition() throws Exception { + Transition transition = Transition.builder("close") + .from("OPEN").to("CLOSED") + .build(); + assertThat(transition.key()).isEqualTo("close"); + assertThat(transition.from()).isEqualTo("OPEN"); + assertThat(transition.to()).isEqualTo("CLOSED"); + assertThat(transition.conditions()).isEmpty(); + assertThat(transition.functions()).isEmpty(); + } + + @Test + public void key_should_be_set() throws Exception { + try { + Transition.builder("").from("OPEN").to("CLOSED").build(); + } catch (Exception e) { + assertThat(e).hasMessage("Transition key must be set"); + } + } + + @Test + public void key_should_be_lower_case() throws Exception { + try { + Transition.builder("CLOSE").from("OPEN").to("CLOSED").build(); + } catch (Exception e) { + assertThat(e).hasMessage("Transition key must be lower-case"); + } + } + + @Test + public void originating_status_should_be_set() throws Exception { + try { + Transition.builder("close").from("").to("CLOSED").build(); + } catch (Exception e) { + assertThat(e).hasMessage("Originating status must be set"); + } + } + + @Test + public void destination_status_should_be_set() throws Exception { + try { + Transition.builder("close").from("OPEN").to("").build(); + } catch (Exception e) { + assertThat(e).hasMessage("Destination status must be set"); + } + } + + @Test + public void should_execute_functions() throws Exception { + DefaultIssue issue = new DefaultIssue(); + Transition transition = Transition.builder("close") + .from("OPEN").to("CLOSED") + .conditions(condition1, condition2) + .functions(function1, function2) + .build(); + transition.execute(issue); + + assertThat(issue.status()).isEqualTo("CLOSED"); + assertThat(issue.updatedAt()).isNotNull(); + verify(function1).execute(issue); + verify(function2).execute(issue); + } +} |