public void StoreAspProgressV2_returns_exception_from_validation()
        {
            // Given
            A.CallTo(
                () => storeAspService.GetProgressAndValidateCommonInputsForStoreAspProgressEndpoints(
                    A <int?> ._,
                    A <int?> ._,
                    A <int?> ._,
                    A <int?> ._,
                    A <int?> ._,
                    A <int?> ._,
                    A <int?> ._
                    )
                ).Returns((TrackerEndpointResponse.StoreAspProgressException, null));

            // When
            var result = trackerActionService.StoreAspProgressV2(
                DefaultProgressId,
                DefaultCustomisationVersion,
                DefaultLmGvSectionRow,
                DefaultTutorialId,
                DefaultTutorialTime,
                DefaultTutorialStatus,
                DefaultDelegateId,
                DefaultCustomisationId
                );

            // Then
            result.Should().Be(TrackerEndpointResponse.StoreAspProgressException);
            A.CallTo(
                () => storeAspService.StoreAspProgressAndSendEmailIfComplete(
                    A <DetailedCourseProgress> ._,
                    A <int> ._,
                    A <string?> ._,
                    A <int> ._,
                    A <int> ._,
                    A <int> ._
                    )
                ).MustNotHaveHappened();
        }
        public void ProcessQuery_with_StoreAspProgressV2_action_passes_query_params()
        {
            // Given
            var query = defaultStoreAspProgressQueryParams;

            query.Action = "StoreAspProgressV2";

            var expectedResponse = TrackerEndpointResponse.Success;

            A.CallTo(
                () => actionService.StoreAspProgressV2(
                    A <int> ._,
                    A <int> ._,
                    A <string> ._,
                    A <int> ._,
                    A <int> ._,
                    A <int> ._,
                    A <int> ._,
                    A <int> ._
                    )
                ).Returns(expectedResponse);

            // When
            var result = trackerService.ProcessQuery(query, sessionVariablesForStoreAspProgressV2);

            // Then
            result.Should().Be(expectedResponse);
            A.CallTo(
                () => actionService.StoreAspProgressV2(
                    query.ProgressId !.Value,
                    query.Version !.Value,
                    DefaultProgressText,
                    query.TutorialId !.Value,
                    query.TutorialTime !.Value,
                    query.TutorialStatus !.Value,
                    query.CandidateId !.Value,
                    query.CustomisationId !.Value
                    )
                )
            .MustHaveHappenedOnceExactly();
        }