@Test public void selectSourceByFileUuid_reads_source_without_line_hashes() { FileSourceDto fileSourceDto = new FileSourceDto() .setProjectUuid("Foo") .setFileUuid("Bar") .setCreatedAt(1500000000000L) .setUpdatedAt(1500000000001L); underTest.insert(dbSession, fileSourceDto); dbSession.commit(); FileSourceDto res = underTest.selectByFileUuid(dbSession, fileSourceDto.getFileUuid()); assertThat(res.getLineCount()).isEqualTo(0); assertThat(res.getLineHashes()).isEmpty(); }
private static FileSourceDto newFileSourceDto(ComponentDto file) { return new FileSourceDto() .setFileUuid(file.uuid()) .setProjectUuid(file.projectUuid()) .setDataHash("0263047cd758c68c27683625f072f010") .setLineHashes(of("8d7b3d6b83c0a517eac07e1aac94b773")) .setCreatedAt(System.currentTimeMillis()) .setUpdatedAt(System.currentTimeMillis()) .setRevision("123456789") .setSrcHash("123456"); } }
@SafeVarargs public final FileSourceDto insertFileSource(ComponentDto file, Consumer<FileSourceDto>... dtoPopulators) { FileSourceDto dto = new FileSourceDto() .setProjectUuid(file.projectUuid()) .setFileUuid(file.uuid()) .setSrcHash(randomAlphanumeric(50)) .setDataHash(randomAlphanumeric(50)) .setLineHashes(IntStream.range(0, new Random().nextInt(21)).mapToObj(String::valueOf).collect(MoreCollectors.toList())) .setRevision(randomAlphanumeric(100)) .setSourceData(newRandomData(3).build()) .setCreatedAt(new Date().getTime()) .setUpdatedAt(new Date().getTime()); Arrays.stream(dtoPopulators).forEach(c -> c.accept(dto)); db.getDbClient().fileSourceDao().insert(db.getSession(), dto); db.commit(); return dto; }
@Test public void selectLineHashes_does_not_fail_when_lineshashes_is_null() { dbTester.prepareDbUnit(getClass(), "shared.xml"); underTest.insert(dbSession, new FileSourceDto() .setProjectUuid("PRJ_UUID") .setFileUuid("FILE2_UUID") .setBinaryData("FILE2_BINARY_DATA".getBytes()) .setDataHash("FILE2_DATA_HASH") .setSrcHash("FILE2_HASH") .setCreatedAt(1500000000000L) .setUpdatedAt(1500000000001L) .setRevision("123456789")); dbSession.commit(); assertThat(underTest.selectLineHashes(dbSession, "FILE2_UUID")).isEmpty(); }
@Test public void selectLineHashesVersion_returns_without_significant_code_by_default() { underTest.insert(dbSession, new FileSourceDto() .setProjectUuid("PRJ_UUID") .setFileUuid("FILE2_UUID") .setBinaryData("FILE2_BINARY_DATA".getBytes()) .setDataHash("FILE2_DATA_HASH") .setLineHashes(singletonList("hashes")) .setSrcHash("FILE2_HASH") .setCreatedAt(1500000000000L) .setUpdatedAt(1500000000001L) .setRevision("123456789")); dbSession.commit(); assertThat(underTest.selectLineHashesVersion(dbSession, "FILE2_UUID")).isEqualTo(LineHashVersion.WITHOUT_SIGNIFICANT_CODE); }
@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 update_to_no_line_hashes() { ImmutableList<String> lineHashes = of("a", "b", "c"); FileSourceDto fileSourceDto = new FileSourceDto() .setProjectUuid("Foo") .setFileUuid("Bar") .setLineHashes(lineHashes) .setCreatedAt(1500000000000L) .setUpdatedAt(1500000000001L); underTest.insert(dbSession, fileSourceDto); dbSession.commit(); FileSourceDto resBefore = underTest.selectByFileUuid(dbSession, fileSourceDto.getFileUuid()); assertThat(resBefore.getLineCount()).isEqualTo(lineHashes.size()); assertThat(resBefore.getLineHashes()).isEqualTo(lineHashes); fileSourceDto.setId(resBefore.getId()); fileSourceDto.setLineHashes(emptyList()); underTest.update(dbSession, fileSourceDto); dbSession.commit(); FileSourceDto res = underTest.selectByFileUuid(dbSession, fileSourceDto.getFileUuid()); assertThat(res.getLineHashes()).isEmpty(); assertThat(res.getLineCount()).isEqualTo(1); }
@Test public void selectLineHashesVersion_succeeds() { underTest.insert(dbSession, new FileSourceDto() .setProjectUuid("PRJ_UUID") .setFileUuid("FILE2_UUID") .setBinaryData("FILE2_BINARY_DATA".getBytes()) .setDataHash("FILE2_DATA_HASH") .setLineHashes(singletonList("hashes")) .setSrcHash("FILE2_HASH") .setCreatedAt(1500000000000L) .setUpdatedAt(1500000000001L) .setLineHashesVersion(1) .setRevision("123456789")); dbSession.commit(); assertThat(underTest.selectLineHashesVersion(dbSession, "FILE2_UUID")).isEqualTo(LineHashVersion.WITH_SIGNIFICANT_CODE); }
private FileSourceDto createDto(Consumer<FileSourceDto> modifier) { DbFileSources.Data sourceData = DbFileSources.Data.newBuilder().build(); byte[] data = FileSourceDto.encodeSourceData(sourceData); String dataHash = DigestUtils.md5Hex(data); FileSourceDto dto = new FileSourceDto() .setProjectUuid(PROJECT_UUID) .setFileUuid(FILE1_UUID) .setSrcHash("sourceHash") .setLineHashes(Collections.singletonList("lineHash")) .setDataHash(dataHash) .setRevision("rev-1") .setSourceData(sourceData) .setCreatedAt(PAST) .setUpdatedAt(PAST); modifier.accept(dto); return dto; }
@Test public void insert_does_not_fail_on_FileSourceDto_with_only_non_nullable_data() { FileSourceDto fileSourceDto = new FileSourceDto() .setProjectUuid("Foo") .setFileUuid("Bar") .setCreatedAt(1500000000000L) .setUpdatedAt(1500000000001L); underTest.insert(dbSession, fileSourceDto); dbSession.commit(); }
@Test public void readLineHashesStream_does_not_fail_when_lineshashes_is_null() { dbTester.prepareDbUnit(getClass(), "shared.xml"); underTest.insert(dbSession, new FileSourceDto() .setProjectUuid("PRJ_UUID") .setFileUuid("FILE2_UUID") .setBinaryData("FILE2_BINARY_DATA".getBytes()) .setDataHash("FILE2_DATA_HASH") .setSrcHash("FILE2_HASH") .setCreatedAt(1500000000000L) .setUpdatedAt(1500000000001L) .setRevision("123456789")); dbSession.commit(); boolean[] flag = {false}; underTest.readLineHashesStream(dbSession, "FILE2_UUID", new Consumer<Reader>() { @Override public void accept(@Nullable Reader input) { fail("function must never been called since there is no data to read"); flag[0] = true; } }); assertThat(flag[0]).isFalse(); }
.setLineHashes(lineHashes) .setLineHashesVersion(lineHashesVersion) .setCreatedAt(system2.now()) .setUpdatedAt(system2.now()) .setRevision(computeRevision(latestChangeWithRevision));
.build()) .build()) .setCreatedAt(past) .setUpdatedAt(past) .setRevision("rev-0"));
.setProjectUuid(projectUuid) .setDataType(Type.TEST) .setCreatedAt(now) .setUpdatedAt(now); dbClient.fileSourceDao().insert(session, newDto);
.setLineHashes(lineHashes) .setLineHashesVersion(lineHashesVersion) .setCreatedAt(system2.now()) .setUpdatedAt(system2.now()) .setRevision(computeRevision(latestChangeWithRevision));