@Test public void changelog_can_be_in_wrong_order() { Issue issue = new DefaultIssue() .setKey("A") .setCreationDate(tenDaysAgo) .setDebt(fiveDays) .setChanges( newArrayList( // 3rd new FieldDiffs() .setDiff("technicalDebt", null, oneDay) .setCreationDate(nineDaysAgo), // 1st new FieldDiffs() .setDiff("technicalDebt", twoDays, fiveDays) .setCreationDate(rightNow), // 2nd new FieldDiffs() .setDiff("technicalDebt", oneDay, twoDays) .setCreationDate(fourDaysAgo))); assertThat(issueChangelogDebtCalculator.calculateNewTechnicalDebt(issue, fiveDaysAgo)) .isEqualTo(4 * oneDay); assertThat(issueChangelogDebtCalculator.calculateNewTechnicalDebt(issue, elevenDaysAgo)) .isEqualTo(5 * oneDay); }
@Test public void calculate_new_technical_debt_with_many_diffs_in_changelog() throws Exception { Issue issue = new DefaultIssue() .setKey("A") .setCreationDate(tenDaysAgo) .setDebt(fiveDays) .setChanges( newArrayList( new FieldDiffs() .setDiff("technicalDebt", twoDays, fiveDays) .setCreationDate(null), new FieldDiffs() .setDiff("technicalDebt", oneDay, twoDays) .setCreationDate(fourDaysAgo))); assertThat(issueChangelogDebtCalculator.calculateNewTechnicalDebt(issue, rightNow)) .isEqualTo(3 * oneDay); assertThat(issueChangelogDebtCalculator.calculateNewTechnicalDebt(issue, fiveDaysAgo)) .isEqualTo(4 * oneDay); assertThat(issueChangelogDebtCalculator.calculateNewTechnicalDebt(issue, elevenDaysAgo)) .isEqualTo(5 * oneDay); }
@Test public void calculate_new_technical_debt_with_one_diff_in_changelog() throws Exception { Issue issue = new DefaultIssue() .setKey("A") .setCreationDate(tenDaysAgo) .setDebt(twoDays) .setChanges( newArrayList( // changelog created at is null because it has just been created on the current // analysis new FieldDiffs() .setDiff("technicalDebt", oneDay, twoDays) .setCreationDate(null))); assertThat(issueChangelogDebtCalculator.calculateNewTechnicalDebt(issue, rightNow)) .isEqualTo(oneDay); assertThat(issueChangelogDebtCalculator.calculateNewTechnicalDebt(issue, fiveDaysAgo)) .isEqualTo(oneDay); assertThat(issueChangelogDebtCalculator.calculateNewTechnicalDebt(issue, elevenDaysAgo)) .isEqualTo(twoDays); }
@Test public void not_return_negative_debt() { Issue issue = new DefaultIssue() .setKey("A") .setCreationDate(tenDaysAgo) .setDebt(oneDay) .setChanges( newArrayList( new FieldDiffs() .setDiff("technicalDebt", twoDays, oneDay) .setCreationDate(null))); assertThat(issueChangelogDebtCalculator.calculateNewTechnicalDebt(issue, rightNow)).isNull(); }
@Test public void calculate_new_technical_debt_when_new_debt_is_null() throws Exception { Issue issue = new DefaultIssue() .setKey("A") .setCreationDate(tenDaysAgo) .setDebt(null) .setChanges( newArrayList( new FieldDiffs().setDiff("technicalDebt", oneDay, null).setCreationDate(null), new FieldDiffs() .setDiff("technicalDebt", null, oneDay) .setCreationDate(nineDaysAgo))); assertThat(issueChangelogDebtCalculator.calculateNewTechnicalDebt(issue, rightNow)).isNull(); }
@Test public void calculate_new_technical_debt_with_null_date() throws Exception { Issue issue = new DefaultIssue() .setKey("A") .setCreationDate(tenDaysAgo) .setDebt(twoDays) .setChanges( newArrayList( new FieldDiffs() .setDiff("technicalDebt", oneDay, twoDays) .setCreationDate(null))); assertThat(issueChangelogDebtCalculator.calculateNewTechnicalDebt(issue, null)) .isEqualTo(2 * oneDay); }
@Test public void calculate_new_technical_debt_on_issue_without_technical_debt_and_without_changelog() { Issue issue = new DefaultIssue().setKey("A").setCreationDate(tenDaysAgo); assertThat(issueChangelogDebtCalculator.calculateNewTechnicalDebt(issue, rightNow)).isNull(); }