public void AddCourseToGroup_adds_new_progress_record_when_existing_progress_record_is_removed()
        {
            // Given
            const int adminId = 1;
            var       existingProgressRecord = ProgressTestHelper.GetDefaultProgress(removedDate: testDate);
            var       groupCourse            = GroupTestHelper.GetDefaultGroupCourse(supervisorAdminId: adminId);

            SetupEnrolProcessFakes(
                GenericNewProgressId,
                GenericRelatedTutorialId,
                existingProgressRecord
                );
            SetUpAddCourseEnrolProcessFakes(groupCourse);

            // When
            groupsService.AddCourseToGroup(
                groupCourse.GroupId,
                groupCourse.CustomisationId,
                8,
                adminId,
                true,
                adminId,
                centreId
                );

            // Then
            using (new AssertionScope())
            {
                DelegateProgressRecordMustNotHaveBeenUpdated();
                A.CallTo(
                    () => progressDataService.CreateNewDelegateProgress(
                        reusableGroupDelegate.DelegateId,
                        groupCourse.CustomisationId,
                        groupCourse.CurrentVersion,
                        testDate,
                        3,
                        adminId,
                        A <DateTime?> ._,
                        adminId
                        )
                    ).MustHaveHappened();
                A.CallTo(() => progressDataService.CreateNewAspProgress(GenericRelatedTutorialId, GenericNewProgressId))
                .MustHaveHappened();
            }
        }
        public void EnrolDelegateOnGroupCourses_adds_new_progress_record_when_existing_progress_record_is_removed()
        {
            // Given
            var existingProgressRecord = ProgressTestHelper.GetDefaultProgress(removedDate: testDate);

            SetupEnrolProcessFakes(
                GenericNewProgressId,
                GenericRelatedTutorialId,
                existingProgressRecord
                );
            SetUpAddDelegateEnrolProcessFakes(reusableGroupCourse);

            // When
            groupsService.EnrolDelegateOnGroupCourses(
                reusableDelegateDetails,
                reusableMyAccountDetailsData,
                8
                );

            // Then
            using (new AssertionScope())
            {
                DelegateProgressRecordMustNotHaveBeenUpdated();
                A.CallTo(
                    () => progressDataService.CreateNewDelegateProgress(
                        reusableDelegateDetails.Id,
                        reusableGroupCourse.CustomisationId,
                        reusableGroupCourse.CurrentVersion,
                        testDate,
                        3,
                        null,
                        A <DateTime?> ._,
                        A <int> ._
                        )
                    ).MustHaveHappened();
                A.CallTo(() => progressDataService.CreateNewAspProgress(GenericRelatedTutorialId, GenericNewProgressId))
                .MustHaveHappened();
            }
        }