private List<String> getFilteredTestCandidates(Integer maxAgeInDays, String ancestorCommitSha1)
      throws Exception {
    GitSCM gitSCM = new GitSCM("foo");
    AncestryBuildChooser chooser = new AncestryBuildChooser(maxAgeInDays, ancestorCommitSha1);
    gitSCM.getExtensions().add(new BuildChooserSetting(chooser));
    assertEquals(maxAgeInDays, chooser.getMaximumAgeInDays());
    assertEquals(ancestorCommitSha1, chooser.getAncestorCommitSha1());

    // mock necessary objects
    GitClient git = Mockito.spy(this.testGitClient);
    Mockito.when(git.getRemoteBranches()).thenReturn(this.testGitClient.getBranches());

    BuildData buildData = Mockito.mock(BuildData.class);
    Mockito.when(buildData.hasBeenBuilt(git.revParse(rootCommit))).thenReturn(false);

    BuildChooserContext context = Mockito.mock(BuildChooserContext.class);
    Mockito.when(context.getEnvironment()).thenReturn(new EnvVars());

    TaskListener listener = TaskListener.NULL;

    // get filtered candidates
    Collection<Revision> candidateRevisions =
        gitSCM
            .getBuildChooser()
            .getCandidateRevisions(true, "**-days-old-branch", git, listener, buildData, context);

    // transform revision candidates to sha1 strings
    List<String> candidateSha1s =
        Lists.newArrayList(
            Iterables.transform(
                candidateRevisions,
                new Function<Revision, String>() {
                  public String apply(Revision rev) {
                    return rev.getSha1String();
                  }
                }));

    return candidateSha1s;
  }