@Test public void return_latest_changeset() { DbFileSources.Data.Builder fileDataBuilder = DbFileSources.Data.newBuilder(); addLine(fileDataBuilder, 1, "john", 123456789L, "rev-1"); // Older changeset addLine(fileDataBuilder, 2, "henry", 1234567810L, "rev-2"); addLine(fileDataBuilder, 3, "john", 123456789L, "rev-1"); fileDataBuilder.build(); ScmInfo scmInfo = DbScmInfo.create(fileDataBuilder.getLinesList(), "hash").get(); Changeset latestChangeset = scmInfo.getLatestChangeset(); assertThat(latestChangeset.getAuthor()).isEqualTo("henry"); assertThat(latestChangeset.getDate()).isEqualTo(1234567810L); assertThat(latestChangeset.getRevision()).isEqualTo("rev-2"); }
@Test public void return_changeset_for_a_given_line() { DbFileSources.Data.Builder fileDataBuilder = DbFileSources.Data.newBuilder(); addLine(fileDataBuilder, 1, "john", 123456789L, "rev-1"); addLine(fileDataBuilder, 2, "henry", 1234567810L, "rev-2"); addLine(fileDataBuilder, 3, "henry", 1234567810L, "rev-2"); addLine(fileDataBuilder, 4, "john", 123456789L, "rev-1"); fileDataBuilder.build(); ScmInfo scmInfo = DbScmInfo.create(fileDataBuilder.getLinesList(), "hash").get(); assertThat(scmInfo.getAllChangesets()).hasSize(4); Changeset changeset = scmInfo.getChangesetForLine(4); assertThat(changeset.getAuthor()).isEqualTo("john"); assertThat(changeset.getDate()).isEqualTo(123456789L); assertThat(changeset.getRevision()).isEqualTo("rev-1"); }
@Test public void filter_out_entries_without_date() throws Exception { DbFileSources.Data.Builder fileDataBuilder = DbFileSources.Data.newBuilder(); fileDataBuilder.addLinesBuilder().setScmRevision("rev").setScmDate(555L).setLine(1); fileDataBuilder.addLinesBuilder().setScmRevision("rev-1").setLine(2); fileDataBuilder.build(); assertThat(DbScmInfo.create(fileDataBuilder.getLinesList(), "hash").get().getAllChangesets()).hasSize(1); assertThat(DbScmInfo.create(fileDataBuilder.getLinesList(), "hash").get().getChangesetForLine(1).getRevision()).isEqualTo("rev"); }
@Test public void should_support_having_no_author() throws Exception { DbFileSources.Data.Builder fileDataBuilder = DbFileSources.Data.newBuilder(); // gets filtered out fileDataBuilder.addLinesBuilder().setScmAuthor("John").setLine(1); fileDataBuilder.addLinesBuilder().setScmRevision("rev").setScmDate(555L).setLine(2); fileDataBuilder.build(); assertThat(DbScmInfo.create(fileDataBuilder.getLinesList(), "hash").get().getAllChangesets()).hasSize(1); assertThat(DbScmInfo.create(fileDataBuilder.getLinesList(), "hash").get().getChangesetForLine(2).getAuthor()).isNull(); }
@Test public void return_same_changeset_objects_for_lines_with_same_fields() throws Exception { DbFileSources.Data.Builder fileDataBuilder = DbFileSources.Data.newBuilder(); fileDataBuilder.addLinesBuilder().setScmRevision("rev").setScmDate(65L).setLine(1); fileDataBuilder.addLinesBuilder().setScmRevision("rev2").setScmDate(6541L).setLine(2); fileDataBuilder.addLinesBuilder().setScmRevision("rev1").setScmDate(6541L).setLine(3); fileDataBuilder.addLinesBuilder().setScmRevision("rev").setScmDate(65L).setLine(4); ScmInfo scmInfo = DbScmInfo.create(fileDataBuilder.getLinesList(), "hash").get(); assertThat(scmInfo.getAllChangesets()).hasSize(4); assertThat(scmInfo.getChangesetForLine(1)).isSameAs(scmInfo.getChangesetForLine(4)); }
@Test public void should_support_some_lines_not_having_scm_info() throws Exception { DbFileSources.Data.Builder fileDataBuilder = DbFileSources.Data.newBuilder(); fileDataBuilder.addLinesBuilder().setScmRevision("rev").setScmDate(543L).setLine(1); fileDataBuilder.addLinesBuilder().setLine(2); fileDataBuilder.build(); assertThat(DbScmInfo.create(fileDataBuilder.getLinesList(), "hash").get().getAllChangesets()).hasSize(1); }
@Test public void return_absent_dsm_info_when_no_changeset() { DbFileSources.Data.Builder fileDataBuilder = DbFileSources.Data.newBuilder(); fileDataBuilder.addLinesBuilder().setLine(1); assertThat(DbScmInfo.create(fileDataBuilder.getLinesList(), "hash")).isNotPresent(); }