public void UpdateTest()
        {
            var newReferenceNumber        = 3L;
            IGetOpenConnection connection = new GetOpenConnectionFromConnectionString(_connectionString);
            var logger = new Mock <ILogService>();

            IApprenticeshipVacancyReadRepository readRepository = new ApprenticeshipVacancyRepository(connection, _mapper,
                                                                                                      logger.Object);
            IApprenticeshipVacancyWriteRepository writeRepository = new ApprenticeshipVacancyRepository(connection, _mapper,
                                                                                                        logger.Object);

            var vacancy = readRepository.Get(VacancyReferenceNumber_VacancyA);

            vacancy.VacancyReferenceNumber = newReferenceNumber;
            vacancy.LocationAddresses      = null; // TODO: Change to separate repo method
            writeRepository.Save(vacancy);

            vacancy = readRepository.Get(VacancyReferenceNumber_VacancyA);

            vacancy.Should().BeNull();

            vacancy = readRepository.Get(newReferenceNumber);

            vacancy.Status.Should().Be(ProviderVacancyStatuses.Live);
            vacancy.Title.Should().Be("Test vacancy");
            vacancy.WageType.Should().Be(WageType.Custom);
            vacancy.TrainingType = TrainingType.Frameworks;
        }
        public void GetVacancyByGuidTest()
        {
            // configure _mapper
            IGetOpenConnection connection = new GetOpenConnectionFromConnectionString(_connectionString);
            var logger = new Mock <ILogService>();
            IApprenticeshipVacancyReadRepository repository = new ApprenticeshipVacancyRepository(connection, _mapper,
                                                                                                  logger.Object);

            var vacancy = repository.Get(VacancyId_VacancyA);

            vacancy.Status.Should().Be(ProviderVacancyStatuses.Live);
            vacancy.Title.Should().Be("Test vacancy");
            vacancy.WageType.Should().Be(WageType.Custom);
            vacancy.TrainingType = TrainingType.Frameworks;
        }
        public void GetForProviderByUkprnAndProviderSiteErnTest()
        {
            IGetOpenConnection connection = new GetOpenConnectionFromConnectionString(_connectionString);
            var logger = new Mock <ILogService>();
            IApprenticeshipVacancyReadRepository repository = new ApprenticeshipVacancyRepository(connection, _mapper,
                                                                                                  logger.Object);

            var vacancies = repository.GetForProvider("1", "3");

            vacancies.Should().HaveCount(12);

            vacancies = repository.GetForProvider("2", "3");
            vacancies.Should().HaveCount(0);

            vacancies = repository.GetForProvider("1", "4");
            vacancies.Should().HaveCount(0);
        }
        public void GetWithStatusTest()
        {
            IGetOpenConnection connection = new GetOpenConnectionFromConnectionString(_connectionString);
            var logger = new Mock <ILogService>();
            IApprenticeshipVacancyReadRepository repository = new ApprenticeshipVacancyRepository(connection, _mapper,
                                                                                                  logger.Object);

            var vacancies = repository.GetWithStatus(ProviderVacancyStatuses.ParentVacancy, ProviderVacancyStatuses.Live);

            vacancies.Should().HaveCount(13);

            vacancies = repository.GetWithStatus(ProviderVacancyStatuses.Live);
            vacancies.Should().HaveCount(12);

            vacancies = repository.GetWithStatus(ProviderVacancyStatuses.ParentVacancy);
            vacancies.Should().HaveCount(1);

            vacancies = repository.GetWithStatus(ProviderVacancyStatuses.PendingQA);
            vacancies.Should().HaveCount(0);
        }
        public void RoundTripTest()
        {
            // Arrange
            var database   = new GetOpenConnectionFromConnectionString(_connectionString);
            var logger     = new Mock <ILogService>();
            var repository = new ApprenticeshipVacancyRepository(database, _mapper, logger.Object);

            var vacancy = CreateValidDomainVacancy();

            // Act
            repository.Save(vacancy);

            var loadedVacancy = repository.Get(vacancy.VacancyReferenceNumber);

            // Assert
            loadedVacancy.ShouldBeEquivalentTo(vacancy,
                                               options => ExcludeHardOnes(options)
                                               .Excluding(x => Regex.IsMatch(x.SelectedMemberPath, "LocationAddresses\\[[0-9]+\\].Address.Uprn")) //TODO
                                               .Using <DateTime>(ctx => ctx.Subject.Should().BeCloseTo(ctx.Expectation, 1000))
                                               .WhenTypeIs <DateTime>());
        }