private Set<String> getFileUuids(List<FieldDiffs> changes) { return changes.stream() .filter(diffs -> diffs.diffs().containsKey(FILE)) .flatMap(diffs -> Stream.of(diffs.get(FILE).newValue().toString(), diffs.get(FILE).oldValue().toString())) .collect(MoreCollectors.toSet()); }
@Test public void set_new_assignee() { boolean updated = underTest.setNewAssignee(issue, "user_uuid", context); assertThat(updated).isTrue(); assertThat(issue.assignee()).isEqualTo("user_uuid"); assertThat(issue.mustSendNotifications()).isTrue(); FieldDiffs.Diff diff = issue.currentChange().get(ASSIGNEE); assertThat(diff.oldValue()).isEqualTo(UNUSED); assertThat(diff.newValue()).isEqualTo("user_uuid"); }
@CheckForNull private StatusAndResolutionDiffs parse(FieldDiffs fieldDiffs) { FieldDiffs.Diff status = fieldDiffs.get("status"); if (status == null) { return null; } FieldDiffs.Diff resolution = fieldDiffs.get("resolution"); if (resolution == null) { return new StatusAndResolutionDiffs(Issue.STATUS_CLOSED.equals(status.newValue()), null, null); } return new StatusAndResolutionDiffs(Issue.STATUS_CLOSED.equals(status.newValue()), (String) resolution.oldValue(), (String) resolution.newValue()); }
@Test public void set_new_author() { boolean updated = underTest.setNewAuthor(issue, "simon", context); assertThat(updated).isTrue(); FieldDiffs.Diff diff = issue.currentChange().get("author"); assertThat(diff.oldValue()).isNull(); assertThat(diff.newValue()).isEqualTo("simon"); assertThat(issue.mustSendNotifications()).isFalse(); }
@Test public void set_past_technical_debt_with_null_new_value() { issue.setEffort(null); Duration previousDebt = Duration.create(10 * 8 * 60); boolean updated = underTest.setPastEffort(issue, previousDebt, context); assertThat(updated).isTrue(); assertThat(issue.effort()).isNull(); assertThat(issue.mustSendNotifications()).isFalse(); FieldDiffs.Diff diff = issue.currentChange().get(TECHNICAL_DEBT); assertThat(diff.oldValue()).isEqualTo(10L * 8 * 60); assertThat(diff.newValue()).isNull(); }
@Test public void test_parse_empty_values() { diffs = FieldDiffs.parse("severity=INFO,resolution="); assertThat(diffs.diffs()).hasSize(2); FieldDiffs.Diff diff = diffs.diffs().get("severity"); assertThat(diff.oldValue()).isEqualTo(null); assertThat(diff.newValue()).isEqualTo("INFO"); diff = diffs.diffs().get("resolution"); assertThat(diff.oldValue()).isEqualTo(null); assertThat(diff.newValue()).isEqualTo(null); }
@Test public void insert_entry_in_changelog_when_setting_type() { IssueDto issueDto = issueDbTester.insertIssue(newIssue().setType(CODE_SMELL)); setUserWithBrowseAndAdministerIssuePermission(issueDto); call(issueDto.getKey(), BUG.name()); List<FieldDiffs> fieldDiffs = dbClient.issueChangeDao().selectChangelogByIssue(dbTester.getSession(), issueDto.getKey()); assertThat(fieldDiffs).hasSize(1); assertThat(fieldDiffs.get(0).diffs()).hasSize(1); assertThat(fieldDiffs.get(0).diffs().get("type").newValue()).isEqualTo(BUG.name()); assertThat(fieldDiffs.get(0).diffs().get("type").oldValue()).isEqualTo(CODE_SMELL.name()); }
@Test public void set_past_technical_debt() { Duration newDebt = Duration.create(15 * 8 * 60); Duration previousDebt = Duration.create(10 * 8 * 60); issue.setEffort(newDebt); boolean updated = underTest.setPastEffort(issue, previousDebt, context); assertThat(updated).isTrue(); assertThat(issue.effort()).isEqualTo(newDebt); assertThat(issue.mustSendNotifications()).isFalse(); FieldDiffs.Diff diff = issue.currentChange().get(TECHNICAL_DEBT); assertThat(diff.oldValue()).isEqualTo(10L * 8 * 60); assertThat(diff.newValue()).isEqualTo(15L * 8 * 60); }
@Test public void set_new_attribute_value() { boolean updated = underTest.setAttribute(issue, "JIRA", "FOO-123", context); assertThat(updated).isTrue(); assertThat(issue.attribute("JIRA")).isEqualTo("FOO-123"); assertThat(issue.currentChange().diffs()).hasSize(1); assertThat(issue.currentChange().get("JIRA").oldValue()).isNull(); assertThat(issue.currentChange().get("JIRA").newValue()).isEqualTo("FOO-123"); assertThat(issue.mustSendNotifications()).isFalse(); }
@Test public void change_assignee() { UserDto user = newUserDto().setLogin("emmerik").setName("Emmerik"); issue.setAssigneeUuid("user_uuid"); boolean updated = underTest.assign(issue, user, context); assertThat(updated).isTrue(); assertThat(issue.assignee()).isEqualTo(user.getUuid()); assertThat(issue.mustSendNotifications()).isTrue(); FieldDiffs.Diff diff = issue.currentChange().get(ASSIGNEE); assertThat(diff.oldValue()).isEqualTo(UNUSED); assertThat(diff.newValue()).isEqualTo(user.getName()); }
@Test public void should_keep_old_value() { diffs.setDiff("severity", "BLOCKER", "INFO"); diffs.setDiff("severity", null, "MAJOR"); FieldDiffs.Diff diff = diffs.diffs().get("severity"); assertThat(diff.oldValue()).isEqualTo("BLOCKER"); assertThat(diff.newValue()).isEqualTo("MAJOR"); }
@Test public void get_with_assignee() { diffs.setDiff("assignee", "oldAssignee", NAME_WITH_RESERVED_CHARS); FieldDiffs.Diff diff = diffs.get("assignee"); assertThat(diff.oldValue()).isEqualTo("oldAssignee"); assertThat(diff.newValue()).isEqualTo(NAME_WITH_RESERVED_CHARS); }
@Test public void diff_with_assignee() { diffs.setDiff("assignee", "oldAssignee", NAME_WITH_RESERVED_CHARS); FieldDiffs.Diff diff = diffs.diffs().get("assignee"); assertThat(diff.oldValue()).isEqualTo("oldAssignee"); assertThat(diff.newValue()).isEqualTo(NAME_WITH_RESERVED_CHARS); }
@Test public void test_diff() { diffs.setDiff("severity", "BLOCKER", "INFO"); diffs.setDiff("resolution", "OPEN", "FIXED"); assertThat(diffs.diffs()).hasSize(2); FieldDiffs.Diff diff = diffs.diffs().get("severity"); assertThat(diff.oldValue()).isEqualTo("BLOCKER"); assertThat(diff.newValue()).isEqualTo("INFO"); diff = diffs.diffs().get("resolution"); assertThat(diff.oldValue()).isEqualTo("OPEN"); assertThat(diff.newValue()).isEqualTo("FIXED"); }
@Test public void assign() { UserDto user = newUserDto().setLogin("emmerik").setName("Emmerik"); boolean updated = underTest.assign(issue, user, context); assertThat(updated).isTrue(); assertThat(issue.assignee()).isEqualTo(user.getUuid()); assertThat(issue.mustSendNotifications()).isTrue(); FieldDiffs.Diff diff = issue.currentChange().get(ASSIGNEE); assertThat(diff.oldValue()).isEqualTo(UNUSED); assertThat(diff.newValue()).isEqualTo(user.getName()); }
@Test public void test_diff_by_key() { diffs.setDiff("severity", "BLOCKER", "INFO"); diffs.setDiff("resolution", "OPEN", "FIXED"); assertThat(diffs.diffs()).hasSize(2); FieldDiffs.Diff diff = diffs.diffs().get("severity"); assertThat(diff.oldValue()).isEqualTo("BLOCKER"); assertThat(diff.newValue()).isEqualTo("INFO"); diff = diffs.diffs().get("resolution"); assertThat(diff.oldValue()).isEqualTo("OPEN"); assertThat(diff.newValue()).isEqualTo("FIXED"); }
@Test public void set_past_technical_debt_without_previous_value() { Duration newDebt = Duration.create(15 * 8 * 60); issue.setEffort(newDebt); boolean updated = underTest.setPastEffort(issue, null, context); assertThat(updated).isTrue(); assertThat(issue.effort()).isEqualTo(newDebt); assertThat(issue.mustSendNotifications()).isFalse(); FieldDiffs.Diff diff = issue.currentChange().get(TECHNICAL_DEBT); assertThat(diff.oldValue()).isNull(); assertThat(diff.newValue()).isEqualTo(15L * 8 * 60); }
@Test public void set_resolution() { boolean updated = underTest.setResolution(issue, "OPEN", context); assertThat(updated).isTrue(); assertThat(issue.resolution()).isEqualTo("OPEN"); FieldDiffs.Diff diff = issue.currentChange().get(RESOLUTION); assertThat(diff.oldValue()).isNull(); assertThat(diff.newValue()).isEqualTo("OPEN"); assertThat(issue.mustSendNotifications()).isTrue(); }
@Test public void insert_entry_in_changelog_when_setting_severity() { IssueDto issueDto = issueDbTester.insertIssue(newIssue().setSeverity(MAJOR)); setUserWithBrowseAndAdministerIssuePermission(issueDto); call(issueDto.getKey(), MINOR); List<FieldDiffs> fieldDiffs = dbClient.issueChangeDao().selectChangelogByIssue(dbTester.getSession(), issueDto.getKey()); assertThat(fieldDiffs).hasSize(1); assertThat(fieldDiffs.get(0).diffs()).hasSize(1); assertThat(fieldDiffs.get(0).diffs().get("severity").newValue()).isEqualTo(MINOR); assertThat(fieldDiffs.get(0).diffs().get("severity").oldValue()).isEqualTo(MAJOR); }