public async Task WhenQualificationIsAdded_ShouldCallUpdateDraftVacancyAsync()
        {
            var fixture = new QualificationsOrchestratorTestsFixture();

            fixture
            .WithQualfication("Mathematics", "A", "GCSE", QualificationWeighting.Desired)
            .Setup();

            var qualification = new Qualification
            {
                Subject           = "English",
                Grade             = "A",
                QualificationType = "GCSE",
                Weighting         = QualificationWeighting.Essential
            };

            await fixture.PostQualificationEditModelForAddAsync(
                new VacancyRouteModel
            {
                EmployerAccountId = fixture.Vacancy.EmployerAccountId,
                VacancyId         = fixture.Vacancy.Id
            },
                FromQualification(qualification));

            fixture.VerifyUpdateDraftVacancyAsyncIsCalled();
        }
        public async Task WhenQualificationIsAdded_ShouldFlagQualificationsFieldIndicator()
        {
            var fixture = new QualificationsOrchestratorTestsFixture();

            fixture
            .WithQualfication("Mathematics", "A", "GCSE", QualificationWeighting.Desired)
            .Setup();

            var qualification = new Qualification
            {
                Subject           = "English",
                Grade             = "A",
                QualificationType = "GCSE",
                Weighting         = QualificationWeighting.Essential
            };

            await fixture.PostQualificationEditModelForAddAsync(
                new VacancyRouteModel
            {
                EmployerAccountId = fixture.Vacancy.EmployerAccountId,
                VacancyId         = fixture.Vacancy.Id
            },
                FromQualification(qualification));

            fixture.VerifyEmployerReviewFieldIndicators(FieldIdentifiers.Qualifications, true);
        }
        public async Task WhenQualificationIsDeleted_ShouldRemoveQualificationFromDraftVacancy()
        {
            var fixture = new QualificationsOrchestratorTestsFixture();

            fixture
            .WithQualfication("Mathematics", "A", "GCSE", QualificationWeighting.Desired)
            .WithQualfication("English", "B", "GCSE", QualificationWeighting.Essential)
            .WithQualfication("Science", "C", "GCSE", QualificationWeighting.Essential)
            .Setup();

            var qualification = new Qualification
            {
                Subject           = "English",
                Grade             = "C",
                QualificationType = "GCSE",
                Weighting         = QualificationWeighting.Desired
            };

            await fixture.DeleteQualificationAsync(
                new VacancyRouteModel
            {
                EmployerAccountId = fixture.Vacancy.EmployerAccountId,
                VacancyId         = fixture.Vacancy.Id
            },
                index : 1);

            fixture.VerifyRemoveQualificationFromDraftVacancy(qualification);
        }
        public async Task WhenQualificationIsAdded_ShouldAddQualificationToDraftVacancy()
        {
            var fixture = new QualificationsOrchestratorTestsFixture();

            fixture
            .WithQualfication("Mathematics", "A", "GCSE", QualificationWeighting.Desired)
            .Setup();

            var qualification = new Qualification
            {
                Subject           = "English",
                Grade             = "A",
                QualificationType = "GCSE",
                Weighting         = QualificationWeighting.Essential
            };

            await fixture.PostQualificationEditModelForAddAsync(
                new VacancyRouteModel
            {
                Ukprn     = fixture.Vacancy.TrainingProvider.Ukprn.Value,
                VacancyId = fixture.Vacancy.Id
            },
                FromQualification(qualification));

            fixture.VerifyAddQualificationToDraftVacancy(2, qualification);
        }
        public async Task WhenQualificationIsUpdated_ShouldFlagQualificationsFieldIndicator()
        {
            var fixture = new QualificationsOrchestratorTestsFixture();

            fixture
            .WithQualfication("Mathematics", "A", "GCSE", QualificationWeighting.Desired)
            .WithQualfication("English", "B", "GCSE", QualificationWeighting.Essential)
            .WithQualfication("Science", "C", "GCSE", QualificationWeighting.Essential)
            .Setup();

            var qualification = new Qualification
            {
                Subject           = "English",
                Grade             = "C",
                QualificationType = "GCSE",
                Weighting         = QualificationWeighting.Desired
            };

            await fixture.PostQualificationEditModelForEditAsync(
                new VacancyRouteModel
            {
                Ukprn     = fixture.Vacancy.TrainingProvider.Ukprn.Value,
                VacancyId = fixture.Vacancy.Id
            },
                FromQualification(qualification),
                index : 1);

            fixture.VerifyProviderReviewFieldIndicators(FieldIdentifiers.Qualifications, true);
        }
        public async Task WhenQualificationIsDeleted_ShouldFlagQualificationsFieldIndicator()
        {
            var fixture = new QualificationsOrchestratorTestsFixture();

            fixture
            .WithQualfication("Mathematics", "A", "GCSE", QualificationWeighting.Desired)
            .WithQualfication("English", "B", "GCSE", QualificationWeighting.Essential)
            .WithQualfication("Science", "C", "GCSE", QualificationWeighting.Essential)
            .Setup();

            await fixture.DeleteQualificationAsync(
                new VacancyRouteModel
            {
                EmployerAccountId = fixture.Vacancy.EmployerAccountId,
                VacancyId         = fixture.Vacancy.Id
            },
                index : 1);

            fixture.VerifyEmployerReviewFieldIndicators(FieldIdentifiers.Qualifications, true);
        }
        public async Task WhenQualificationIsDeleted_ShouldCallUpdateDraftVacancyAsync()
        {
            var fixture = new QualificationsOrchestratorTestsFixture();

            fixture
            .WithQualfication("Mathematics", "A", "GCSE", QualificationWeighting.Desired)
            .WithQualfication("English", "B", "GCSE", QualificationWeighting.Essential)
            .WithQualfication("Science", "C", "GCSE", QualificationWeighting.Essential)
            .Setup();

            await fixture.DeleteQualificationAsync(
                new VacancyRouteModel
            {
                EmployerAccountId = fixture.Vacancy.EmployerAccountId,
                VacancyId         = fixture.Vacancy.Id
            },
                index : 1);

            fixture.VerifyUpdateDraftVacancyAsyncIsCalled();
        }