StoreAspAssessNoSession_returns_exception_from_query_param_and_progress_validation()
        {
            // Given
            A.CallTo(
                () => storeAspService.GetProgressAndValidateInputsForStoreAspAssess(
                    A <int?> ._,
                    A <int?> ._,
                    A <int?> ._,
                    A <int?> ._
                    )
                ).Returns((TrackerEndpointResponse.StoreAspAssessException, null));

            // When
            var result = trackerActionService.StoreAspAssessNoSession(
                DefaultCustomisationVersion,
                DefaultSectionId,
                DefaultScore,
                DefaultDelegateId,
                DefaultCustomisationId,
                DefaultSessionId.ToString()
                );

            // Then
            using (new AssertionScope())
            {
                result.Should().Be(TrackerEndpointResponse.StoreAspAssessException);
                A.CallTo(
                    () => storeAspService.GetProgressAndValidateInputsForStoreAspAssess(
                        DefaultCustomisationVersion,
                        DefaultScore,
                        DefaultDelegateId,
                        DefaultCustomisationId
                        )
                    ).MustHaveHappenedOnceExactly();
                A.CallTo(() => storeAspService.GetAndValidateSectionAssessmentDetails(A <int?> ._, A <int> ._))
                .MustNotHaveHappened();
                A.CallTo(
                    () => storeAspService.ParseSessionIdAndValidateSessionForStoreAspNoSessionEndpoints(
                        A <string?> ._,
                        A <int> ._,
                        A <int> ._,
                        A <TrackerEndpointResponse> ._
                        )
                    ).MustNotHaveHappened();
                CallsAfterStoreAspAssessValidationMustNotHaveHappened();
            }
        }
        public void GetAndValidateSectionAssessmentDetails_returns_StoreAspAssessException_when_sectionId_is_null()
        {
            // When
            var result = storeAspService.GetAndValidateSectionAssessmentDetails(
                null,
                DefaultCustomisationId
                );

            // Then
            using (new AssertionScope())
            {
                result.validationResponse.Should().Be(TrackerEndpointResponse.StoreAspAssessException);
                result.assessmentDetails.Should().BeNull();
                A.CallTo(() => progressService.GetSectionAndApplicationDetailsForAssessAttempts(A <int> ._, A <int> ._))
                .MustNotHaveHappened();
            }
        }