@Test
public void testParentCommitSmellsQuery() {

    List<Map<String, Object>> result;
    // No branch means no result
    result = persistence.query(queries.parentCommitSmellsQuery(projectId, 0, null));
    assertTrue(result.isEmpty());
    String filtered_type = "MIM";
    result = persistence.query(queries.parentCommitSmellsQuery(projectId, 0, filtered_type));
    assertTrue(result.isEmpty());
    Smell smell1 = new Smell(filtered_type, "instance1", "file1");
    Smell smell2 = new Smell(filtered_type, "instance2", "file2");
    Smell smell3 = new Smell("LIC", "instance3", "file3");
    addSmells(originCommit, smell1, smell2, smell3);
    addSmells(mergedIntoCommit, smell3);
    int firstBranchID = insertBranch(projectId, 4, originCommit, mergedIntoCommit);
    int secondBranchID = insertBranch(projectId, 5, mergedIntoCommit, originCommit);
    // Right smells id returned depending on filters
    // - First branch, merged into MergedIntoCommit
    result = persistence.query(queries.parentCommitSmellsQuery(projectId, firstBranchID, null));
    checkContainsSmells(result, Arrays.asList(smell1, smell2, smell3));
    result = persistence.query(queries.parentCommitSmellsQuery(projectId, firstBranchID, filtered_type));
    checkContainsSmells(result, Arrays.asList(smell1, smell2));
    result = persistence.query(queries.parentCommitSmellsQuery(projectId, firstBranchID, "LOL"));
    assertTrue(result.isEmpty());
    result = persistence.query(queries.parentCommitSmellsQuery(projectId, secondBranchID, null));
    checkContainsSmells(result, Collections.singletonList(smell3));
    result = persistence.query(queries.parentCommitSmellsQuery(projectId, secondBranchID, smell3.type));
    checkContainsSmells(result, Collections.singletonList(smell3));
}