### Question:
CoordinateMessageHandler implements TccMessageHandler { @Override public void onReceive(String globalTxId, String localTxId, String parentTxId, String methodName) { callbackContext.apply(globalTxId, localTxId, parentTxId, methodName, parametersContext.getParameters(localTxId)); tccMessageSender.coordinate(new CoordinatedEvent(globalTxId, localTxId, parentTxId, methodName, TransactionStatus.Succeed)); parametersContext.removeParameter(localTxId); } CoordinateMessageHandler(TccMessageSender tccMessageSender,
      CallbackContext callbackContext, OmegaContext omegaContext,
      ParametersContext parametersContext); @Override void onReceive(String globalTxId, String localTxId, String parentTxId, String methodName);  }### Answer:
@Test public void sendsCompensatedEventOnCompensationCompleted() { handler.onReceive(globalTxId, localTxId, parentTxId, methodName); assertThat(coordinatedEvents.size(), is(1)); CoordinatedEvent event = coordinatedEvents.get(0); assertThat(event.getGlobalTxId(), is(globalTxId)); assertThat(event.getLocalTxId(), is(localTxId)); assertThat(event.getParentTxId(), is(parentTxId)); assertThat(event.getMethodName(), is(methodName)); assertThat(event.getStatus(), is(TransactionStatus.Succeed)); }