@Test public void select() { dbTester.prepareDbUnit(getClass(), "shared.xml"); FileSourceDto fileSourceDto = underTest.selectByFileUuid(dbSession, "FILE1_UUID"); assertThat(fileSourceDto.getBinaryData()).isNotEmpty(); assertThat(fileSourceDto.getDataHash()).isEqualTo("hash"); assertThat(fileSourceDto.getProjectUuid()).isEqualTo("PRJ_UUID"); assertThat(fileSourceDto.getFileUuid()).isEqualTo("FILE1_UUID"); assertThat(fileSourceDto.getCreatedAt()).isEqualTo(1500000000000L); assertThat(fileSourceDto.getUpdatedAt()).isEqualTo(1500000000000L); assertThat(fileSourceDto.getRevision()).isEqualTo("123456789"); assertThat(fileSourceDto.getLineHashesVersion()).isEqualTo(0); }
@Test public void update_sources_when_src_hash_is_missing() { dbClient.fileSourceDao().insert(dbTester.getSession(), createDto(dto -> dto.setSrcHash(null))); dbTester.getSession().commit(); DbFileSources.Data sourceData = DbFileSources.Data.newBuilder().build(); setComputedData(sourceData, Collections.singletonList("lineHash"), "newSourceHash", null); 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.getSrcHash()).isEqualTo("newSourceHash"); verify(fileSourceDataWarnings).commitWarnings(); }
@Test public void not_update_sources_when_nothing_has_changed() { dbClient.fileSourceDao().insert(dbTester.getSession(), createDto()); dbTester.getSession().commit(); Changeset changeset = Changeset.newChangesetBuilder().setDate(1L).setRevision("rev-1").build(); setComputedData(DbFileSources.Data.newBuilder().build(), Collections.singletonList("lineHash"), "sourceHash", changeset); underTest.execute(new TestComputationStepContext()); assertThat(dbTester.countRowsOfTable("file_sources")).isEqualTo(1); FileSourceDto fileSourceDto = dbClient.fileSourceDao().selectByFileUuid(session, FILE1_UUID); assertThat(fileSourceDto.getSrcHash()).isEqualTo("sourceHash"); assertThat(fileSourceDto.getLineHashes()).isEqualTo(Collections.singletonList("lineHash")); assertThat(fileSourceDto.getCreatedAt()).isEqualTo(PAST); assertThat(fileSourceDto.getUpdatedAt()).isEqualTo(PAST); verify(fileSourceDataWarnings).commitWarnings(); }
@Test public void insert() { FileSourceDto expected = new FileSourceDto() .setProjectUuid("PRJ_UUID") .setFileUuid("FILE2_UUID") .setBinaryData("FILE2_BINARY_DATA".getBytes()) .setDataHash("FILE2_DATA_HASH") .setLineHashes(of("LINE1_HASH", "LINE2_HASH")) .setSrcHash("FILE2_HASH") .setCreatedAt(1500000000000L) .setUpdatedAt(1500000000001L) .setLineHashesVersion(1) .setRevision("123456789"); underTest.insert(dbSession, expected); dbSession.commit(); FileSourceDto fileSourceDto = underTest.selectByFileUuid(dbSession, expected.getFileUuid()); assertThat(fileSourceDto.getProjectUuid()).isEqualTo(expected.getProjectUuid()); assertThat(fileSourceDto.getFileUuid()).isEqualTo(expected.getFileUuid()); assertThat(fileSourceDto.getBinaryData()).isEqualTo(expected.getBinaryData()); assertThat(fileSourceDto.getDataHash()).isEqualTo(expected.getDataHash()); assertThat(fileSourceDto.getRawLineHashes()).isEqualTo(expected.getRawLineHashes()); assertThat(fileSourceDto.getLineHashes()).isEqualTo(expected.getLineHashes()); assertThat(fileSourceDto.getLineCount()).isEqualTo(expected.getLineCount()); assertThat(fileSourceDto.getSrcHash()).isEqualTo(expected.getSrcHash()); assertThat(fileSourceDto.getCreatedAt()).isEqualTo(expected.getCreatedAt()); assertThat(fileSourceDto.getUpdatedAt()).isEqualTo(expected.getUpdatedAt()); assertThat(fileSourceDto.getRevision()).isEqualTo(expected.getRevision()); }
@Test public void persist_sources() { List<String> lineHashes = Arrays.asList("137f72c3708c6bd0de00a0e5a69c699b", "e6251bcf1a7dc3ba5e7933e325bbe605"); String sourceHash = "ee5a58024a155466b43bc559d953e018"; DbFileSources.Data fileSourceData = DbFileSources.Data.newBuilder() .addAllLines(Arrays.asList( DbFileSources.Line.newBuilder().setSource("line1").setLine(1).build(), DbFileSources.Line.newBuilder().setSource("line2").setLine(2).build())) .build(); when(fileSourceDataComputer.compute(fileComponent().build(), fileSourceDataWarnings)) .thenReturn(new FileSourceDataComputer.Data(fileSourceData, lineHashes, sourceHash, null)); underTest.execute(new TestComputationStepContext()); assertThat(dbTester.countRowsOfTable("file_sources")).isEqualTo(1); FileSourceDto fileSourceDto = dbClient.fileSourceDao().selectByFileUuid(session, FILE1_UUID); assertThat(fileSourceDto.getProjectUuid()).isEqualTo(PROJECT_UUID); assertThat(fileSourceDto.getFileUuid()).isEqualTo(FILE1_UUID); assertThat(fileSourceDto.getBinaryData()).isNotEmpty(); assertThat(fileSourceDto.getDataHash()).isNotEmpty(); assertThat(fileSourceDto.getLineHashesVersion()).isEqualTo(LineHashVersion.WITHOUT_SIGNIFICANT_CODE.getDbValue()); assertThat(fileSourceDto.getLineHashes()).isNotEmpty(); assertThat(fileSourceDto.getCreatedAt()).isEqualTo(NOW); assertThat(fileSourceDto.getUpdatedAt()).isEqualTo(NOW); DbFileSources.Data data = fileSourceDto.getSourceData(); assertThat(data.getLinesCount()).isEqualTo(2); assertThat(data.getLines(0).getLine()).isEqualTo(1); assertThat(data.getLines(0).getSource()).isEqualTo("line1"); assertThat(data.getLines(1).getLine()).isEqualTo(2); assertThat(data.getLines(1).getSource()).isEqualTo("line2"); 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(); }
assertThat(fileSourceDto.getCreatedAt()).isEqualTo(past); assertThat(fileSourceDto.getUpdatedAt()).isEqualTo(NOW); assertThat(fileSourceDto.getRevision()).isEqualTo("rev-1");