### Question:
EidasCountrySelectedStateController implements ErrorResponsePreparedStateController, EidasCountrySelectingStateController, AuthnRequestCapableController, RestartJourneyStateController { @Override public void transitionToSessionStartedState() { final SessionStartedState sessionStartedState = createSessionStartedState(); hubEventLogger.logSessionMovedToStartStateEvent(sessionStartedState); stateTransitionAction.transitionTo(sessionStartedState); } EidasCountrySelectedStateController(
            final EidasCountrySelectedState state,
            final HubEventLogger hubEventLogger,
            final StateTransitionAction stateTransitionAction,
            final PolicyConfiguration policyConfiguration,
            final TransactionsConfigProxy transactionsConfigProxy,
            final MatchingServiceConfigProxy matchingServiceConfigProxy,
            final ResponseFromHubFactory responseFromHubFactory,
            final AssertionRestrictionsFactory assertionRestrictionFactory); String getMatchingServiceEntityId(); String getRequestIssuerId(); boolean isMatchingJourney(); String getCountryEntityId(); AuthnRequestFromHub getRequestFromHub(); EidasAttributeQueryRequestDto getEidasAttributeQueryRequestDto(InboundResponseFromCountry translatedResponse); @Override ResponseFromHub getErrorResponse(); @Override void selectCountry(String countryEntityId); void handleMatchingJourneySuccessResponseFromCountry(InboundResponseFromCountry translatedResponse,
                                                                String principalIpAddressAsSeenByHub,
                                                                String analyticsSessionId,
                                                                String journeyType); void handleNonMatchingJourneySuccessResponseFromCountry(InboundResponseFromCountry translatedResponse,
                                                                   String principalIpAddressAsSeenByHub,
                                                                   String analyticsSessionId,
                                                                   String journeyType); void handleAuthenticationFailedResponseFromCountry(String principalIpAddressAsSeenByHub,
                                                              String analyticsSessionId,
                                                              String journeyType); @Override void transitionToSessionStartedState();  }### Answer:
@Test public void shouldTransitionToSessionStartedStateAndLogEvent() { controller.transitionToSessionStartedState(); ArgumentCaptor<SessionStartedState> capturedState = ArgumentCaptor.forClass(SessionStartedState.class); verify(stateTransitionAction, times(1)).transitionTo(capturedState.capture()); verify(hubEventLogger, times(1)).logSessionMovedToStartStateEvent(capturedState.getValue()); assertThat(capturedState.getValue().getSessionId()).isEqualTo(state.getSessionId()); assertThat(capturedState.getValue().getRequestIssuerEntityId()).isEqualTo(state.getRequestIssuerEntityId()); assertThat(capturedState.getValue().getTransactionSupportsEidas()).isEqualTo(true); assertThat(capturedState.getValue().getForceAuthentication().orElse(null)).isEqualTo(false); }