public DefaultIssue setFieldChange(IssueChangeContext context, String field, @Nullable Serializable oldValue, @Nullable Serializable newValue) { if (!Objects.equals(oldValue, newValue)) { if (currentChange == null) { currentChange = new FieldDiffs(); currentChange.setUserUuid(context.userUuid()); currentChange.setCreationDate(context.date()); } currentChange.setDiff(field, oldValue, newValue); } addChange(currentChange); return this; }
private IssueChangeDto insertToClosedDiff(IssueDto issue, Date creationDate, String previousStatus, String nextStatus) { FieldDiffs diffs = new FieldDiffs() .setCreationDate(creationDate); IntStream.range(0, random.nextInt(3)).forEach(i -> diffs.setDiff("key_b" + i, "old_" + i, "new_" + i)); diffs.setDiff("status", previousStatus, nextStatus); IntStream.range(0, random.nextInt(3)).forEach(i -> diffs.setDiff("key_a" + i, "old_" + i, "new_" + i)); IssueChangeDto changeDto = IssueChangeDto.of(issue.getKey(), diffs); dbTester.getDbClient().issueChangeDao().insert(dbSession, changeDto); return changeDto; }
private static FieldDiffs newToClosedDiffsWithLine(Date creationDate, @Nullable Integer oldLineValue) { FieldDiffs fieldDiffs = new FieldDiffs().setCreationDate(addDays(creationDate, -5)) .setDiff("status", randomNonCloseStatus(), STATUS_CLOSED); if (oldLineValue != null) { fieldDiffs.setDiff("line", oldLineValue, ""); } return fieldDiffs; }
private void addResolutionAndStatusChange(DefaultIssue issue, Date creationDate, String previousStatus, String newStatus, @Nullable String previousResolution, @Nullable String newResolution) { checkArgument(previousResolution != null || newResolution != null, "At least one resolution must be non null"); FieldDiffs fieldDiffs = new FieldDiffs().setCreationDate(creationDate) .setDiff("status", previousStatus, newStatus) .setDiff("resolution", emptyIfNull(previousResolution), emptyIfNull(newResolution)); issue.addChange(fieldDiffs); }
@Test public void diff_with_long_values() { diffs.setDiff("technicalDebt", 50L, "100"); FieldDiffs.Diff diff = diffs.diffs().get("technicalDebt"); assertThat(diff.oldValueLong()).isEqualTo(50L); assertThat(diff.newValueLong()).isEqualTo(100L); }
@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_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 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 get() { diffs.setDiff("severity", "BLOCKER", "INFO"); FieldDiffs.Diff diff = diffs.get("severity"); assertThat(diff.oldValue()).isEqualTo("BLOCKER"); assertThat(diff.newValue()).isEqualTo("INFO"); }
@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); }
private void addResolutionChange(DefaultIssue issue, Date creationDate, @Nullable String previousResolution, @Nullable String newResolution) { checkArgument(previousResolution != null || newResolution != null, "At least one resolution must be non null"); FieldDiffs fieldDiffs = new FieldDiffs().setCreationDate(creationDate) .setDiff("resolution", emptyIfNull(previousResolution), emptyIfNull(newResolution)); issue.addChange(fieldDiffs); }
@Test public void diff_with_empty_long_values() { diffs.setDiff("technicalDebt", null, ""); FieldDiffs.Diff diff = diffs.diffs().get("technicalDebt"); assertThat(diff.oldValueLong()).isNull(); assertThat(diff.newValueLong()).isNull(); }
@Test public void create_from_diff_with_created_at() { FieldDiffs diffs = new FieldDiffs(); diffs.setDiff("severity", "INFO", "BLOCKER"); diffs.setUserUuid("user_uuid"); diffs.setCreationDate(parseDate("2015-01-13")); IssueChangeDto dto = IssueChangeDto.of("ABCDE", diffs); assertThat(dto.getIssueChangeCreationDate()).isEqualTo(parseDate("2015-01-13").getTime()); }
@Test public void return_changelog_when_no_new_value() { UserDto user = insertUser(); IssueDto issueDto = db.issues().insertIssue(newIssue()); userSession.logIn("john") .addMembership(db.getDefaultOrganization()) .addProjectPermission(USER, project, file); db.issues().insertFieldDiffs(issueDto, new FieldDiffs().setUserUuid(user.getUuid()).setDiff("severity", "MAJOR", null).setCreationDate(new Date())); ChangelogWsResponse result = call(issueDto.getKey()); assertThat(result.getChangelogList()).hasSize(1); assertThat(result.getChangelogList().get(0).getDiffsList().get(0).hasNewValue()).isFalse(); }
@Test public void return_changelog_when_no_old_value() { UserDto user = insertUser(); IssueDto issueDto = db.issues().insertIssue(newIssue()); userSession.logIn("john") .addMembership(db.getDefaultOrganization()) .addProjectPermission(USER, project, file); db.issues().insertFieldDiffs(issueDto, new FieldDiffs().setUserUuid(user.getUuid()).setDiff("severity", null, "BLOCKER").setCreationDate(new Date())); ChangelogWsResponse result = call(issueDto.getKey()); assertThat(result.getChangelogList()).hasSize(1); assertThat(result.getChangelogList().get(0).getDiffsList().get(0).hasOldValue()).isFalse(); }
@Test public void changelog_of_file_move_is_empty_when_files_does_not_exists() { IssueDto issueDto = db.issues().insertIssue(newIssue()); userSession.logIn("john") .addMembership(db.getDefaultOrganization()) .addProjectPermission(USER, project, file); db.issues().insertFieldDiffs(issueDto, new FieldDiffs().setDiff("file", "UNKNOWN_1", "UNKNOWN_2").setCreationDate(new Date())); ChangelogWsResponse result = call(issueDto.getKey()); assertThat(result.getChangelogList()).hasSize(1); assertThat(result.getChangelogList().get(0).getDiffsList()).extracting(Diff::getKey, Diff::hasOldValue, Diff::hasNewValue) .containsOnly(tuple("file", false, false)); }
@Test public void return_empty_changelog_when_not_member() { UserDto user = insertUser(); IssueDto issueDto = db.issues().insertIssue(newIssue()); userSession.logIn("john") .addProjectPermission(USER, project, file); db.issues().insertFieldDiffs(issueDto, new FieldDiffs().setUserUuid(user.getUuid()).setDiff("severity", "MAJOR", "BLOCKER").setCreationDate(new Date())); ChangelogWsResponse result = call(issueDto.getKey()); assertThat(result.getChangelogList()).hasSize(0); }