@Test public void testBlameChangedByASingleCommit() throws Exception { insertAndAdd(points1); RevCommit firstCommit = geogig.command(CommitOp.class).call(); String path = NodeRef.appendChild(pointsName, idP1); BlameReport report = geogig.command(BlameOp.class).setPath(path).call(); Map<String, ValueAndCommit> changes = report.getChanges(); assertEquals(3, changes.size()); Collection<ValueAndCommit> commits = changes.values(); for (ValueAndCommit valueAndCommit : commits) { assertEquals(firstCommit, valueAndCommit.commit); } }
@Test public void testBlameWithFeatureType() throws Exception { insertAndAdd(points1); geogig.command(CommitOp.class).call(); try { geogig.command(BlameOp.class).setPath(pointsName).call(); fail(); } catch (BlameException e) { assertTrue(e.statusCode == StatusCode.PATH_NOT_FEATURE); } }
@Test public void testBlameRemovedAndAdded() throws Exception { insertAndAdd(points1); RevCommit firstCommit = geogig.command(CommitOp.class).call(); deleteAndAdd(points1); RevCommit secondCommit = geogig.command(CommitOp.class).call(); insertAndAdd(points1); RevCommit thirdCommit = geogig.command(CommitOp.class).call(); String path = NodeRef.appendChild(pointsName, idP1); BlameReport report = geogig.command(BlameOp.class).setPath(path).call(); Map<String, ValueAndCommit> changes = report.getChanges(); assertEquals(3, changes.size()); Collection<ValueAndCommit> commits = changes.values(); for (ValueAndCommit valueAndCommit : commits) { assertEquals(thirdCommit, valueAndCommit.commit); report = geogig.command(BlameOp.class).setPath(path).setCommit(secondCommit.getId()) .call(); fail(); } catch (BlameException e) { assertTrue(e.statusCode == StatusCode.FEATURE_NOT_FOUND); assertEquals(3, changes.size()); commits = changes.values(); for (ValueAndCommit valueAndCommit : commits) { assertEquals(firstCommit, valueAndCommit.commit);
@Test public void testBlameChangedByTwoCommits() throws Exception { insertAndAdd(points1); RevCommit firstCommit = geogig.command(CommitOp.class).call(); Feature pointsModified = feature(pointsType, idP1, "StringProp1_3", new Integer(1000), "POINT(1 1)"); insertAndAdd(pointsModified); RevCommit secondCommit = geogig.command(CommitOp.class).call(); String path = NodeRef.appendChild(pointsName, idP1); BlameReport report = geogig.command(BlameOp.class).setPath(path).call(); Map<String, ValueAndCommit> changes = report.getChanges(); assertEquals(3, changes.size()); assertEquals(secondCommit, changes.get("sp").commit); assertEquals(firstCommit, changes.get("ip").commit); assertEquals(firstCommit, changes.get("pp").commit); assertEquals(pointsModified.getProperty("sp").getValue(), changes.get("sp").value.get()); assertEquals(points1.getProperty("ip").getValue(), changes.get("ip").value.get()); assertEquals(points1.getProperty("pp").getValue(), changes.get("pp").value.get()); report = geogig.command(BlameOp.class).setPath(path).setCommit(firstCommit.getId()).call(); changes = report.getChanges(); assertEquals(3, changes.size()); Collection<ValueAndCommit> commits = changes.values(); for (ValueAndCommit valueAndCommit : commits) { assertEquals(firstCommit, valueAndCommit.commit); } }
@Test public void testBlameRemovedAndAdded() throws Exception { insertAndAdd(points1); RevCommit firstCommit = geogig.command(CommitOp.class).call(); deleteAndAdd(points1); RevCommit secondCommit = geogig.command(CommitOp.class).call(); insertAndAdd(points1); RevCommit thirdCommit = geogig.command(CommitOp.class).call(); String path = NodeRef.appendChild(pointsName, idP1); BlameReport report = geogig.command(BlameOp.class).setPath(path).call(); Map<String, ValueAndCommit> changes = report.getChanges(); assertEquals(3, changes.size()); Collection<ValueAndCommit> commits = changes.values(); for (ValueAndCommit valueAndCommit : commits) { assertEquals(thirdCommit, valueAndCommit.commit); report = geogig.command(BlameOp.class).setPath(path).setCommit(secondCommit.getId()) .call(); fail(); } catch (BlameException e) { assertTrue(e.statusCode == StatusCode.FEATURE_NOT_FOUND); assertEquals(3, changes.size()); commits = changes.values(); for (ValueAndCommit valueAndCommit : commits) { assertEquals(firstCommit, valueAndCommit.commit);
@Test public void testBlameChangedByTwoCommits() throws Exception { insertAndAdd(points1); RevCommit firstCommit = geogig.command(CommitOp.class).call(); Feature pointsModified = feature(pointsType, idP1, "StringProp1_3", new Integer(1000), "POINT(1 1)"); insertAndAdd(pointsModified); RevCommit secondCommit = geogig.command(CommitOp.class).call(); String path = NodeRef.appendChild(pointsName, idP1); BlameReport report = geogig.command(BlameOp.class).setPath(path).call(); Map<String, ValueAndCommit> changes = report.getChanges(); assertEquals(3, changes.size()); assertEquals(secondCommit, changes.get("sp").commit); assertEquals(firstCommit, changes.get("ip").commit); assertEquals(firstCommit, changes.get("pp").commit); assertEquals(pointsModified.getProperty("sp").getValue(), changes.get("sp").value.get()); assertEquals(points1.getProperty("ip").getValue(), changes.get("ip").value.get()); assertEquals(points1.getProperty("pp").getValue(), changes.get("pp").value.get()); report = geogig.command(BlameOp.class).setPath(path).setCommit(firstCommit.getId()).call(); changes = report.getChanges(); assertEquals(3, changes.size()); Collection<ValueAndCommit> commits = changes.values(); for (ValueAndCommit valueAndCommit : commits) { assertEquals(firstCommit, valueAndCommit.commit); } }
@Test public void testBlameWithWrongFeaturePath() throws Exception { insertAndAdd(points1); geogig.command(CommitOp.class).call(); try { geogig.command(BlameOp.class).setPath("wrongpath").call(); fail(); } catch (BlameException e) { assertTrue(e.statusCode == StatusCode.FEATURE_NOT_FOUND); } }
@Test public void testBlameChangedByASingleCommit() throws Exception { insertAndAdd(points1); RevCommit firstCommit = geogig.command(CommitOp.class).call(); String path = NodeRef.appendChild(pointsName, idP1); BlameReport report = geogig.command(BlameOp.class).setPath(path).call(); Map<String, ValueAndCommit> changes = report.getChanges(); assertEquals(3, changes.size()); Collection<ValueAndCommit> commits = changes.values(); for (ValueAndCommit valueAndCommit : commits) { assertEquals(firstCommit, valueAndCommit.commit); } }
@Test public void testBlameWithFeatureType() throws Exception { insertAndAdd(points1); geogig.command(CommitOp.class).call(); try { geogig.command(BlameOp.class).setPath(pointsName).call(); fail(); } catch (BlameException e) { assertTrue(e.statusCode == StatusCode.PATH_NOT_FEATURE); } }
@Test public void testBlameChangedByLastCommit() throws Exception { insertAndAdd(points1); geogig.command(CommitOp.class).call(); insertAndAdd(points1_modified); RevCommit secondCommit = geogig.command(CommitOp.class).call(); String path = NodeRef.appendChild(pointsName, idP1); BlameReport report = geogig.command(BlameOp.class).setPath(path).call(); Map<String, ValueAndCommit> changes = report.getChanges(); assertEquals(3, changes.size()); Collection<ValueAndCommit> commits = changes.values(); for (ValueAndCommit valueAndCommit : commits) { assertEquals(secondCommit, valueAndCommit.commit); } }
@Test public void testBlameWithWrongFeaturePath() throws Exception { insertAndAdd(points1); geogig.command(CommitOp.class).call(); try { geogig.command(BlameOp.class).setPath("wrongpath").call(); fail(); } catch (BlameException e) { assertTrue(e.statusCode == StatusCode.FEATURE_NOT_FOUND); } }
@Test public void testBlameChangedByLastCommit() throws Exception { insertAndAdd(points1); geogig.command(CommitOp.class).call(); insertAndAdd(points1_modified); RevCommit secondCommit = geogig.command(CommitOp.class).call(); String path = NodeRef.appendChild(pointsName, idP1); BlameReport report = geogig.command(BlameOp.class).setPath(path).call(); Map<String, ValueAndCommit> changes = report.getChanges(); assertEquals(3, changes.size()); Collection<ValueAndCommit> commits = changes.values(); for (ValueAndCommit valueAndCommit : commits) { assertEquals(secondCommit, valueAndCommit.commit); } }