@Override
  public void execute(ComputationStep.Context context) {
    executeForBranch(treeRootHolder.getRoot());
  }
@Test
  public void changed_event_if_qp_has_been_updated() {
    QualityProfile qp1 = qp(QP_NAME_1, LANGUAGE_KEY_1, BEFORE_DATE);
    QualityProfile qp2 = qp(QP_NAME_1, LANGUAGE_KEY_1, AFTER_DATE);
    qProfileStatusRepository.register(qp2.getQpKey(), UPDATED);
    mockQualityProfileMeasures(treeRootHolder.getRoot(), arrayOf(qp1), arrayOf(qp2));
    Language language = mockLanguageInRepository(LANGUAGE_KEY_1);

    when(qualityProfileRuleChangeTextResolver.mapChangeToNumberOfRules(qp2, treeRootHolder.getRoot().getUuid())).thenReturn(CHANGE_TO_NUMBER_OF_RULES_MAP);

    underTest.execute(new TestComputationStepContext());

    verify(eventRepository).add(eventArgumentCaptor.capture());
    verifyNoMoreInteractions(eventRepository);
    verifyEvent(eventArgumentCaptor.getValue(),
      "\"" + qp2.getQpName() + "\" (" + language.getName() + ") updated with " + RULE_CHANGE_TEXT,
      "from=" + UtcDateUtils.formatDateTime(BEFORE_DATE_PLUS_1_SEC) +
        ";key=" + qp1.getQpKey() +
        ";languageKey=" + qp2.getLanguageKey()+
        ";name=" + qp2.getQpName() +
        ";to=" + UtcDateUtils.formatDateTime(AFTER_DATE_PLUS_1_SEC),
      RULE_CHANGE_TEXT);
  }