public FieldDiffs toFieldDiffs() { return FieldDiffs.parse(changeData) .setUserUuid(userUuid) .setCreationDate(new Date(getIssueChangeCreationDate())) .setIssueKey(issueKey); } }
@Override public void handleResult(ResultContext<? extends IssueDto> resultContext) { IssueDto resultObject = resultContext.getResultObject(); // issue are ordered by most recent change first, only the first row for a given issue is of interest if (previousIssueKey != null && previousIssueKey.equals(resultObject.getKey())) { return; } FieldDiffs fieldDiffs = FieldDiffs.parse(resultObject.getClosedChangeData() .orElseThrow(() -> new IllegalStateException("Close change data should be populated"))); checkState(Optional.ofNullable(fieldDiffs.get("status")) .map(FieldDiffs.Diff::newValue) .filter(STATUS_CLOSED::equals) .isPresent(), "Close change data should have a status diff with new value %s", STATUS_CLOSED); Integer line = Optional.ofNullable(fieldDiffs.get("line")) .map(diff -> (String) diff.oldValue()) .filter(str -> !str.isEmpty()) .map(Integer::parseInt) .orElse(null); previousIssueKey = resultObject.getKey(); DefaultIssue issue = resultObject.toDefaultIssue(); issue.setLine(line); // FIXME issue.setSelectedAt(System.currentTimeMillis()); issues.add(issue); } }
@Test public void test_parse_encoded_assignee() { diffs = FieldDiffs.parse("severity=BLOCKER|INFO,assignee=oldValue|" + ENCODED_NAME_WITH_RESERVED_CHARS); 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("assignee"); assertThat(diff.oldValue()).isEqualTo("oldValue"); assertThat(diff.newValue()).isEqualTo(NAME_WITH_RESERVED_CHARS); }
@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 test_parse_empty() { diffs = FieldDiffs.parse(""); assertThat(diffs.diffs()).isEmpty(); } }
@Test public void test_parse_null() { diffs = FieldDiffs.parse(null); assertThat(diffs.diffs()).isEmpty(); }
@Test public void test_parse() { diffs = FieldDiffs.parse("severity=BLOCKER|INFO,resolution=OPEN|FIXED,donut=|new,gambas=miam,acme=old|"); assertThat(diffs.diffs()).hasSize(5); 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"); diff = diffs.diffs().get("donut"); assertThat(diff.oldValue()).isEqualTo(null); assertThat(diff.newValue()).isEqualTo("new"); diff = diffs.diffs().get("gambas"); assertThat(diff.oldValue()).isEqualTo(null); assertThat(diff.newValue()).isEqualTo("miam"); diff = diffs.diffs().get("acme"); assertThat(diff.oldValue()).isEqualTo("old"); assertThat(diff.newValue()).isEqualTo(null); }
@Test public void lazy_load_changes() { UserDto user1 = db.users().insertUser(); IssueDto issue1 = db.issues() .insertIssue(IssueTesting.newIssue(rule, branch1Dto, fileOnBranch1Dto).setKee("issue1").setStatus(Issue.STATUS_REOPENED).setLine(1).setChecksum("checksum")); db.issues().insertComment(issue1, user1, "A comment 1"); db.issues().insertFieldDiffs(issue1, FieldDiffs.parse("severity=BLOCKER|INFO,assignee=toto|titi").setCreationDate(new Date())); UserDto user2 = db.users().insertUser(); IssueDto issue2 = db.issues() .insertIssue(IssueTesting.newIssue(rule, branch2Dto, fileOnBranch2Dto).setKee("issue2").setStatus(Issue.STATUS_CONFIRMED).setLine(1).setChecksum("checksum")); db.issues().insertComment(issue2, user2, "A comment 2"); db.issues().insertFieldDiffs(issue2, FieldDiffs.parse("severity=BLOCKER|MINOR,assignee=foo|bar").setCreationDate(new Date())); DefaultIssue newIssue = createIssue("newIssue", rule.getKey(), Issue.STATUS_OPEN, null, new Date()); copier.tryMerge(FILE_1, Collections.singleton(newIssue)); ArgumentCaptor<DefaultIssue> issueToMerge = ArgumentCaptor.forClass(DefaultIssue.class); verify(issueLifecycle).mergeConfirmedOrResolvedFromShortLivingBranch(eq(newIssue), issueToMerge.capture(), eq("myBranch2")); assertThat(issueToMerge.getValue().key()).isEqualTo("issue2"); assertThat(issueToMerge.getValue().defaultIssueComments()).isNotEmpty(); assertThat(issueToMerge.getValue().changes()).isNotEmpty(); }
public FieldDiffs toFieldDiffs() { return FieldDiffs.parse(changeData) .setUserLogin(userLogin) // issueChangeCreationDate can be null as it has been introduced after createdAt .setCreationDate(issueChangeCreationDate != null ? new Date(issueChangeCreationDate) : new Date(createdAt)) .setIssueKey(issueKey); } }