public void verifyMessageBodiesForCombinedCheckStateUpdatedEmailWithMultipleChecksOfSameState()

in javatests/com/google/gerrit/plugins/checks/acceptance/api/ChecksEmailIT.java [1004:1072]


  public void verifyMessageBodiesForCombinedCheckStateUpdatedEmailWithMultipleChecksOfSameState()
      throws Exception {
    String checkerNameRunningFoo = "Foo Checker";
    CheckerUuid checkerUuidRunningFoo =
        checkerOperations.newChecker().name(checkerNameRunningFoo).repository(project).create();
    String checkUrlFoo = "http://foo-checker/12345";
    postCheck(checkerUuidRunningFoo, CheckState.RUNNING, null, checkUrlFoo);

    String checkerNameRunningBar = "Bar Checker";
    CheckerUuid checkerUuidRunningBar =
        checkerOperations.newChecker().name(checkerNameRunningBar).repository(project).create();
    String checkUrlBar = "http://bar-checker/67890";
    postCheck(checkerUuidRunningBar, CheckState.RUNNING, null, checkUrlBar);

    String checkerNameRunningBaz = "Baz Checker";
    CheckerUuid checkerUuidRunningBaz =
        checkerOperations.newChecker().name(checkerNameRunningBaz).repository(project).create();
    // This check doesn't have an URL, so that we test a mix of checks with and without URL.
    postCheck(checkerUuidRunningBaz, CheckState.RUNNING);

    String checkerNameFailed = "My Failed Checker";
    CheckerUuid checkerUuidFailed =
        checkerOperations
            .newChecker()
            .name(checkerNameFailed)
            .repository(project)
            .required()
            .create();

    sender.clear();
    postCheck(checkerUuidFailed, CheckState.FAILED);
    assertThat(getCombinedCheckState()).isEqualTo(CombinedCheckState.FAILED);

    List<Message> messages = sender.getMessages();
    assertThat(messages).hasSize(1);

    Map<CheckState, List<String>> expectedCheckersByState = new HashMap<>();
    expectedCheckersByState.put(
        CheckState.RUNNING,
        ImmutableList.of(checkerNameRunningBar, checkerNameRunningBaz, checkerNameRunningFoo));
    expectedCheckersByState.put(CheckState.FAILED, ImmutableList.of(checkerNameFailed));

    Message message = messages.get(0);
    assertThat(message.body())
        .contains(
            combinedCheckStateUpdatedText(CombinedCheckState.FAILED)
                + "\n"
                + "Checker "
                + checkerNameFailed
                + " updated the check state to "
                + CheckState.FAILED
                + ".\n"
                + allChecksOverviewText(expectedCheckersByState));
    assertThat(message.body()).contains(GERRIT_MESSAGE_TYPE_COMBINED_CHECK_STATE_UPDATE);

    assertThat(message.htmlBody())
        .contains(
            combinedCheckStateUpdatedHtml(CombinedCheckState.FAILED)
                + "<p>Checker <strong>"
                + checkerNameFailed
                + "</strong> updated the check state to "
                + CheckState.FAILED
                + ".</p>"
                + allChecksOverviewHtml(
                    expectedCheckersByState,
                    ImmutableMap.of(
                        checkerNameRunningFoo, checkUrlFoo, checkerNameRunningBar, checkUrlBar)));
    assertThat(message.htmlBody()).contains(GERRIT_MESSAGE_TYPE_COMBINED_CHECK_STATE_UPDATE);
  }