### Question:
SessionStartedStateController implements IdpSelectingStateController, EidasCountrySelectingStateController, ResponseProcessingStateController, ErrorResponsePreparedStateController { @Override public void selectCountry(String countryEntityId) { EidasCountrySelectedState eidasCountrySelectedState = new EidasCountrySelectedState( countryEntityId, state.getRelayState().orElse(null), state.getRequestId(), state.getRequestIssuerEntityId(), state.getSessionExpiryTimestamp(), state.getAssertionConsumerServiceUri(), state.getSessionId(), state.getTransactionSupportsEidas(), Collections.singletonList(LevelOfAssurance.LEVEL_2), state.getForceAuthentication().orElse(null) ); stateTransitionAction.transitionTo(eidasCountrySelectedState); hubEventLogger.logCountrySelectedEvent(eidasCountrySelectedState); } SessionStartedStateController(
            final SessionStartedState state,
            final HubEventLogger hubEventLogger,
            final StateTransitionAction stateTransitionAction,
            final TransactionsConfigProxy transactionsConfigProxy,
            final ResponseFromHubFactory responseFromHubFactory,
            final IdentityProvidersConfigProxy identityProvidersConfigProxy); @Override AuthnRequestSignInProcess getSignInProcessDetails(); @Override String getRequestIssuerId(); @Override void handleIdpSelected(final String idpEntityId, final String principalIpAddress, boolean registering, LevelOfAssurance requestedLoa, String analyticsSessionId, String journeyType, String abTestVariant); @Override ResponseProcessingDetails getResponseProcessingDetails(); @Override ResponseFromHub getErrorResponse(); @Override void selectCountry(String countryEntityId);  }### Answer:
@Test public void selectCountry_shouldTransitionStateAndLogEvent() { controller.selectCountry("DE"); ArgumentCaptor<EidasCountrySelectedState> capturedState = ArgumentCaptor.forClass(EidasCountrySelectedState.class); verify(stateTransitionAction, times(1)).transitionTo(capturedState.capture()); assertThat(capturedState.getValue().getLevelsOfAssurance()).containsSequence(LevelOfAssurance.LEVEL_2); assertThat(capturedState.getValue().getTransactionSupportsEidas()).isTrue(); assertThat(capturedState.getValue().getForceAuthentication().orElse(null)).isFalse(); verify(hubEventLogger, times(1)).logCountrySelectedEvent(capturedState.getValue()); }