public void queryPendingChecksWithScheme()

in javatests/com/google/gerrit/plugins/checks/acceptance/api/QueryPendingChecksIT.java [696:783]


  public void queryPendingChecksWithScheme() throws Exception {
    // create a check with a scheme that we expect to never be returned.
    CheckerUuid checkerUuidOtherScheme =
        checkerOperations
            .newChecker()
            .uuid(CheckerUuid.parse("otherscheme:checker-1"))
            .repository(project)
            .create();
    checkOperations
        .newCheck(CheckKey.create(project, patchSetId, checkerUuidOtherScheme))
        .state(CheckState.NOT_STARTED)
        .upsert();

    CheckerUuid checkerUuid =
        checkerOperations
            .newChecker()
            .uuid(CheckerUuid.parse("test:checker-1"))
            .repository(project)
            .create();
    // Create a check with state "NOT_STARTED" that we expect to be returned.
    checkOperations
        .newCheck(CheckKey.create(project, patchSetId, checkerUuid))
        .state(CheckState.NOT_STARTED)
        .upsert();

    // Create a check with state "SCHEDULED" that we expect to be returned.
    PatchSet.Id patchSetId2 = createChange().getPatchSetId();
    checkOperations
        .newCheck(CheckKey.create(project, patchSetId2, checkerUuid))
        .state(CheckState.SCHEDULED)
        .upsert();

    // Create a check with state "SUCCESSFUL" that we expect to be ignored.
    PatchSet.Id patchSetId3 = createChange().getPatchSetId();
    checkOperations
        .newCheck(CheckKey.create(project, patchSetId3, checkerUuid))
        .state(CheckState.SUCCESSFUL)
        .upsert();

    // Create a check with state "SUCCESSFUL" that we expect to be ignored, for patchsetId.
    // by default, patchSetId2 and patchSetId3 should be NOT_STARTED, and should be returned.
    CheckerUuid checkerUuid2 =
        checkerOperations
            .newChecker()
            .uuid(CheckerUuid.parse("test:checker-2"))
            .repository(project)
            .create();
    assertThat(checkerUuid2.scheme()).isEqualTo("test");
    checkOperations
        .newCheck(CheckKey.create(project, patchSetId, checkerUuid2))
        .state(CheckState.FAILED)
        .upsert();

    List<PendingChecksInfo> pendingChecksList =
        queryPendingChecks("test", CheckState.NOT_STARTED, CheckState.SCHEDULED);
    assertThat(pendingChecksList).hasSize(4);

    // The sorting of the pendingChecksList matches the sorting in which the matching changes are
    // returned from the change index, which is by last updated timestamp. Use this knowledge here
    // to do the assertions although the REST endpoint doesn't document a guaranteed sort order.
    PendingChecksInfo pendingChecksChange = pendingChecksList.get(0);
    assertThat(pendingChecksChange).hasRepository(project);
    assertThat(pendingChecksChange).hasPatchSet(patchSetId2);
    assertThat(pendingChecksChange)
        .hasPendingChecksMapThat()
        .containsExactly(checkerUuid.get(), new PendingCheckInfo(CheckState.SCHEDULED));

    pendingChecksChange = pendingChecksList.get(1);
    assertThat(pendingChecksChange).hasRepository(project);
    assertThat(pendingChecksChange).hasPatchSet(patchSetId);
    assertThat(pendingChecksChange)
        .hasPendingChecksMapThat()
        .containsExactly(checkerUuid.get(), new PendingCheckInfo(CheckState.NOT_STARTED));

    pendingChecksChange = pendingChecksList.get(2);
    assertThat(pendingChecksChange).hasRepository(project);
    assertThat(pendingChecksChange).hasPatchSet(patchSetId3);
    assertThat(pendingChecksChange)
        .hasPendingChecksMapThat()
        .containsExactly(checkerUuid2.get(), new PendingCheckInfo(CheckState.NOT_STARTED));

    pendingChecksChange = pendingChecksList.get(3);
    assertThat(pendingChecksChange).hasRepository(project);
    assertThat(pendingChecksChange).hasPatchSet(patchSetId2);
    assertThat(pendingChecksChange)
        .hasPendingChecksMapThat()
        .containsExactly(checkerUuid2.get(), new PendingCheckInfo(CheckState.NOT_STARTED));
  }