@Test public void persist_highlighting() { DbFileSources.Data dbData = DbFileSources.Data.newBuilder().addLines( DbFileSources.Line.newBuilder() .setHighlighting("2,4,a") .build()) .build(); setComputedData(dbData); underTest.execute(new TestComputationStepContext()); assertThat(dbTester.countRowsOfTable("file_sources")).isEqualTo(1); FileSourceDto fileSourceDto = dbClient.fileSourceDao().selectByFileUuid(session, FILE1_UUID); DbFileSources.Data data = fileSourceDto.getSourceData(); assertThat(data).isEqualTo(dbData); assertThat(data.getLinesList()).hasSize(1); assertThat(data.getLines(0).getHighlighting()).isEqualTo("2,4,a"); verify(fileSourceDataWarnings).commitWarnings(); }
@Test public void persist_duplication() { DbFileSources.Data dbData = DbFileSources.Data.newBuilder().addLines( DbFileSources.Line.newBuilder() .addDuplication(2) .build()) .build(); setComputedData(dbData); underTest.execute(new TestComputationStepContext()); assertThat(dbTester.countRowsOfTable("file_sources")).isEqualTo(1); FileSourceDto fileSourceDto = dbClient.fileSourceDao().selectByFileUuid(session, FILE1_UUID); assertThat(fileSourceDto.getSourceData()).isEqualTo(dbData); verify(fileSourceDataWarnings).commitWarnings(); }
@Test public void update_sources_when_revision_is_missing() { DbFileSources.Data sourceData = DbFileSources.Data.newBuilder() .addLines(DbFileSources.Line.newBuilder() .setLine(1) .setSource("line") .build()) .build(); dbClient.fileSourceDao().insert(dbTester.getSession(), createDto(dto -> dto.setRevision(null))); dbTester.getSession().commit(); Changeset changeset = Changeset.newChangesetBuilder().setDate(1L).setRevision("revision").build(); setComputedData(sourceData, Collections.singletonList("137f72c3708c6bd0de00a0e5a69c699b"), "29f25900140c94db38035128cb6de6a2", changeset); underTest.execute(new TestComputationStepContext()); assertThat(dbTester.countRowsOfTable("file_sources")).isEqualTo(1); FileSourceDto fileSourceDto = dbClient.fileSourceDao().selectByFileUuid(session, FILE1_UUID); assertThat(fileSourceDto.getCreatedAt()).isEqualTo(PAST); assertThat(fileSourceDto.getUpdatedAt()).isEqualTo(NOW); assertThat(fileSourceDto.getRevision()).isEqualTo("revision"); verify(fileSourceDataWarnings).commitWarnings(); }
@Test public void use_deprecated_overall_coverage_fields_if_exists() throws Exception { DbFileSources.Data.Builder dataBuilder = DbFileSources.Data.newBuilder(); ComponentDto file = insertFileWithData(dataBuilder.addLines(newLineBuilder() .setDeprecatedOverallLineHits(1) .setDeprecatedOverallConditions(2) .setDeprecatedOverallCoveredConditions(3) .setDeprecatedUtLineHits(1) .setDeprecatedUtConditions(2) .setDeprecatedUtCoveredConditions(3) .setDeprecatedItLineHits(1) .setDeprecatedItConditions(2) .setDeprecatedItCoveredConditions(3)).build(), privateProject); setUserWithValidPermission(file); wsTester .newGetRequest("api/sources", "lines") .setParam("uuid", file.uuid()) .execute() .assertJson(getClass(), "convert_deprecated_data.json"); }
@Test public void show_scmAuthors_if_member_of_organization() throws Exception { OrganizationDto org = db.organizations().insert(); ComponentDto publicProject = db.components().insertPublicProject(org); UserDto user = db.users().insertUser(); userSession.logIn(user) .registerComponents(publicProject) .addMembership(org); DbFileSources.Data data = DbFileSources.Data.newBuilder() .addLines(newLineBuilder().setScmAuthor("isaac@asimov.com")) .build(); ComponentDto file = insertFileWithData(data, publicProject); wsTester.newGetRequest("api/sources", "lines") .setParam("uuid", file.uuid()) .execute() .assertJson(getClass(), "show_scmAuthors.json"); }
@Test public void accept_negative_value_in_from_parameter() throws Exception { userSessionRule.addProjectPermission(UserRole.CODEVIEWER, project, file); dbTester.getDbClient().fileSourceDao().insert(dbSession, new FileSourceDto() .setProjectUuid(PROJECT_UUID) .setFileUuid(FILE_UUID) .setSourceData(DbFileSources.Data.newBuilder() .addLines(newSourceLine("julien", "123-456-789", DateUtils.parseDateTime("2015-03-30T12:34:56+0000"), 1)) .addLines(newSourceLine("julien", "123-456-710", DateUtils.parseDateTime("2015-03-29T12:34:56+0000"), 2)) .addLines(newSourceLine("julien", "456-789-101", DateUtils.parseDateTime("2015-03-27T12:34:56+0000"), 3)) .addLines(newSourceLine("simon", "789-101-112", DateUtils.parseDateTime("2015-03-31T12:34:56+0000"), 4)) .build())); dbSession.commit(); WsTester.TestRequest request = tester.newGetRequest("api/sources", "scm").setParam("key", FILE_KEY).setParam("from", "-2").setParam("to", "3"); request.execute().assertJson(getClass(), "accept_negative_value_in_from_parameter.json"); }
@Test public void persist_scm() { DbFileSources.Data dbData = DbFileSources.Data.newBuilder().addLines( DbFileSources.Line.newBuilder() .setScmAuthor("john") .setScmDate(123456789L) .setScmRevision("rev-1") .build()) .build(); setComputedData(dbData); underTest.execute(new TestComputationStepContext()); assertThat(dbTester.countRowsOfTable("file_sources")).isEqualTo(1); FileSourceDto fileSourceDto = dbClient.fileSourceDao().selectByFileUuid(session, FILE1_UUID); assertThat(fileSourceDto.getSourceData()).isEqualTo(dbData); assertThat(fileSourceDto.getRevision()).isNull(); verify(fileSourceDataWarnings).commitWarnings(); }
@Test public void persist_coverage() { DbFileSources.Data dbData = DbFileSources.Data.newBuilder().addLines( DbFileSources.Line.newBuilder() .setConditions(10) .setCoveredConditions(2) .setLineHits(1) .setLine(1) .build()) .build(); setComputedData(dbData); underTest.execute(new TestComputationStepContext()); assertThat(dbTester.countRowsOfTable("file_sources")).isEqualTo(1); FileSourceDto fileSourceDto = dbClient.fileSourceDao().selectByFileUuid(session, FILE1_UUID); assertThat(fileSourceDto.getSourceData()).isEqualTo(dbData); verify(fileSourceDataWarnings).commitWarnings(); }
@Test public void not_group_lines_by_commit() throws Exception { userSessionRule.addProjectPermission(UserRole.CODEVIEWER, project, file); // lines 1 and 2 are the same commit, but not 3 (different date) dbTester.getDbClient().fileSourceDao().insert(dbSession, new FileSourceDto() .setProjectUuid(PROJECT_UUID) .setFileUuid(FILE_UUID) .setSourceData(DbFileSources.Data.newBuilder() .addLines(newSourceLine("julien", "123-456-789", DateUtils.parseDateTime("2015-03-30T12:34:56+0000"), 1)) .addLines(newSourceLine("julien", "123-456-789", DateUtils.parseDateTime("2015-03-30T12:34:56+0000"), 2)) .addLines(newSourceLine("julien", "456-789-101", DateUtils.parseDateTime("2015-03-27T12:34:56+0000"), 3)) .addLines(newSourceLine("simon", "789-101-112", DateUtils.parseDateTime("2015-03-31T12:34:56+0000"), 4)) .build())); dbSession.commit(); WsTester.TestRequest request = tester.newGetRequest("api/sources", "scm").setParam("key", FILE_KEY).setParam("commits_by_line", "true"); request.execute().assertJson(getClass(), "not_group_lines_by_commit.json"); }
@Test public void group_lines_by_commit() throws Exception { userSessionRule.addProjectPermission(UserRole.CODEVIEWER, project, file); // lines 1 and 2 are the same commit, but not 3 (different date) dbTester.getDbClient().fileSourceDao().insert(dbSession, new FileSourceDto() .setProjectUuid(PROJECT_UUID) .setFileUuid(FILE_UUID) .setSourceData(DbFileSources.Data.newBuilder() .addLines(newSourceLine("julien", "123-456-789", DateUtils.parseDateTime("2015-03-30T12:34:56+0000"), 1)) .addLines(newSourceLine("julien", "123-456-789", DateUtils.parseDateTime("2015-03-30T12:34:56+0000"), 2)) .addLines(newSourceLine("julien", "456-789-101", DateUtils.parseDateTime("2015-03-27T12:34:56+0000"), 3)) .addLines(newSourceLine("simon", "789-101-112", DateUtils.parseDateTime("2015-03-31T12:34:56+0000"), 4)) .build())); dbSession.commit(); WsTester.TestRequest request = tester.newGetRequest("api/sources", "scm").setParam("key", FILE_KEY).setParam("commits_by_line", "false"); request.execute().assertJson(getClass(), "group_lines_by_commit.json"); }
@Test public void use_period_date_if_new_line_not_yet_available_in_db() throws Exception { DbFileSources.Data.Builder dataBuilder = DbFileSources.Data.newBuilder(); dataBuilder.addLines(DbFileSources.Line.newBuilder().setLine(1).setScmDate(1000L).build()); dataBuilder.addLines(DbFileSources.Line.newBuilder().setLine(2).setScmDate(2000L).build()); // only this line should be considered as new dataBuilder.addLines(DbFileSources.Line.newBuilder().setLine(3).setScmDate(3000L).build()); ComponentDto project = db.components().insertPrivateProject(); insertPeriod(project, 2000L); ComponentDto file = insertFileWithData(dataBuilder.build(), project); setUserWithValidPermission(file); wsTester .newGetRequest("api/sources", "lines") .setParam("uuid", file.uuid()) .execute() .assertJson(getClass(), "generated_isNew.json"); }
@Test public void show_scm_from_given_range_lines() throws Exception { userSessionRule.addProjectPermission(UserRole.CODEVIEWER, project, file); dbTester.getDbClient().fileSourceDao().insert(dbSession, new FileSourceDto() .setProjectUuid(PROJECT_UUID) .setFileUuid(FILE_UUID) .setSourceData(DbFileSources.Data.newBuilder() .addLines(newSourceLine("julien", "123-456-789", DateUtils.parseDateTime("2015-03-30T12:34:56+0000"), 1)) .addLines(newSourceLine("julien", "123-456-789", DateUtils.parseDateTime("2015-03-30T12:34:56+0000"), 2)) .addLines(newSourceLine("julien", "456-789-101", DateUtils.parseDateTime("2015-03-27T12:34:56+0000"), 3)) .addLines(newSourceLine("simon", "789-101-112", DateUtils.parseDateTime("2015-03-31T12:34:56+0000"), 4)) .build())); dbSession.commit(); WsTester.TestRequest request = tester.newGetRequest("api/sources", "scm").setParam("key", FILE_KEY).setParam("from", "2").setParam("to", "3"); request.execute().assertJson(getClass(), "show_scm_from_given_range_lines.json"); }
@Test public void raw_from_branch_file() { ComponentDto project = db.components().insertMainBranch(); userSession.addProjectPermission(UserRole.CODEVIEWER, project); ComponentDto branch = db.components().insertProjectBranch(project); ComponentDto file = db.components().insertComponent(newFileDto(branch)); db.fileSources().insertFileSource(file, s -> s.setSourceData( Data.newBuilder() .addLines(Line.newBuilder().setLine(1).setSource("public class HelloWorld {").build()) .addLines(Line.newBuilder().setLine(2).setSource("}").build()) .build())); String result = ws.newRequest() .setParam("key", file.getKey()) .setParam("branch", file.getBranch()) .execute().getInput(); assertThat(result).isEqualTo("public class HelloWorld {\n}\n"); }
@Test public void use_deprecated_ut_coverage_fields_if_exists() throws Exception { DbFileSources.Data.Builder dataBuilder = DbFileSources.Data.newBuilder(); ComponentDto file = insertFileWithData(dataBuilder.addLines(newLineBuilder() .setDeprecatedUtLineHits(1) .setDeprecatedUtConditions(2) .setDeprecatedUtCoveredConditions(3) .setDeprecatedItLineHits(1) .setDeprecatedItConditions(2) .setDeprecatedItCoveredConditions(3)).build(), privateProject); setUserWithValidPermission(file); TestRequest request = wsTester .newGetRequest("api/sources", "lines") .setParam("uuid", file.uuid()); request.execute().assertJson(getClass(), "convert_deprecated_data.json"); }
@Test public void raw_from_file() { ComponentDto project = db.components().insertPrivateProject(); userSession.addProjectPermission(UserRole.CODEVIEWER, project); ComponentDto file = db.components().insertComponent(newFileDto(project)); db.fileSources().insertFileSource(file, s -> s.setSourceData( Data.newBuilder() .addLines(Line.newBuilder().setLine(1).setSource("public class HelloWorld {").build()) .addLines(Line.newBuilder().setLine(2).setSource("}").build()) .build())); String result = ws.newRequest() .setParam("key", file.getKey()) .execute().getInput(); assertThat(result).isEqualTo("public class HelloWorld {\n}\n"); }
@Test public void hide_scmAuthors_if_not_member_of_organization() throws Exception { OrganizationDto org = db.organizations().insert(); ComponentDto publicProject = db.components().insertPublicProject(org); userSession.registerComponents(publicProject); DbFileSources.Data data = DbFileSources.Data.newBuilder() .addLines(newLineBuilder().setScmAuthor("isaac@asimov.com")) .build(); ComponentDto file = insertFileWithData(data, publicProject); wsTester.newGetRequest("api/sources", "lines") .setParam("uuid", file.uuid()) .execute() .assertJson(getClass(), "hide_scmAuthors.json"); }
@Test public void use_deprecated_it_coverage_fields_if_exists() throws Exception { DbFileSources.Data.Builder dataBuilder = DbFileSources.Data.newBuilder(); ComponentDto file = insertFileWithData(dataBuilder.addLines(newLineBuilder() .setDeprecatedItLineHits(1) .setDeprecatedItConditions(2) .setDeprecatedItCoveredConditions(3)).build(), privateProject); setUserWithValidPermission(file); TestRequest request = wsTester .newGetRequest("api/sources", "lines") .setParam("uuid", file.uuid()); request.execute().assertJson(getClass(), "convert_deprecated_data.json"); }
private static DbFileSources.Data createOver64MBDataStructure() { DbFileSources.Data.Builder dataBuilder = DbFileSources.Data.newBuilder(); DbFileSources.Line.Builder lineBuilder = DbFileSources.Line.newBuilder(); for (int i = 0; i < 199999; i++) { dataBuilder.addLines( lineBuilder.setSource(LOREM_IPSUM) .setLine(i) .build()); } return dataBuilder.build(); }
@Test public void show_scm() throws Exception { userSessionRule.addProjectPermission(UserRole.CODEVIEWER, project, file); dbTester.getDbClient().fileSourceDao().insert(dbSession, new FileSourceDto() .setProjectUuid(PROJECT_UUID) .setFileUuid(FILE_UUID) .setSourceData(DbFileSources.Data.newBuilder().addLines( newSourceLine("julien", "123-456-789", DateUtils.parseDateTime("2015-03-30T12:34:56+0000"), 1)).build())); dbSession.commit(); WsTester.TestRequest request = tester.newGetRequest("api/sources", "scm").setParam("key", FILE_KEY); request.execute().assertJson(getClass(), "show_scm.json"); }