Пример #1
0
 private void ValidateNotNullSubscriptionVacancy(SubscriptionVacancy subscriptionVacancy)
 {
     if (subscriptionVacancy == null)
     {
         throw new NullSubscriptionVacancyException();
     }
 }
Пример #2
0
 private void ValidateStorageSubscriptionVacancy(SubscriptionVacancy storageSubscriptionVacancy, int subscriptionVacancyId)
 {
     if (storageSubscriptionVacancy == null)
     {
         throw new NotFoundSubscriptionVacancyException(subscriptionVacancyId);
     }
 }
Пример #3
0
        public async Task <SubscriptionVacancy> DeleteSubscriptionVacancyAsync(SubscriptionVacancy subscriptionVacancy)
        {
            var subscriptionVacancyEntry = SubscriptionVacancies.Remove(subscriptionVacancy);

            await SaveChangesAsync();

            return(subscriptionVacancyEntry.Entity);
        }
Пример #4
0
        public async Task <SubscriptionVacancy> InsertSubscriptionVacancyAsync(SubscriptionVacancy subscriptionVacancy)
        {
            var subscriptionVacancyEntry = await SubscriptionVacancies.AddAsync(subscriptionVacancy);

            await SaveChangesAsync();

            return(subscriptionVacancyEntry.Entity);
        }
Пример #5
0
 public Task <SubscriptionVacancy> AddSubscriptionVacancyAsync(SubscriptionVacancy subscriptionVacancy)
 {
     return(TryCatch(async() =>
     {
         ValidateSubscriptionVacancyOnAdd(subscriptionVacancy);
         subscriptionVacancy.Id = 0;
         return await _storageBroker.InsertSubscriptionVacancyAsync(subscriptionVacancy);
     }));
 }
Пример #6
0
 public Task <SubscriptionVacancy> UpdateSubscriptionVacancyAsync(SubscriptionVacancy subscriptionVacancy)
 {
     return(TryCatch(async() =>
     {
         ValidateSubscriptionVacancyOnUpdate(subscriptionVacancy);
         var storageSubscriptionVacancy =
             await _storageBroker.UpdateSubscriptionVacancyAsync(subscriptionVacancy);
         ValidateStorageSubscriptionVacancy(storageSubscriptionVacancy, subscriptionVacancy.Id);
         return await GetSubscriptionVacancyByIdAsync(subscriptionVacancy.Id);
     }));
 }
Пример #7
0
        private async Task SaveSubscriptionVacancy(Vacancy vacancy, SourceSubscription subscription)
        {
            var subscriptionVacancy = new SubscriptionVacancy
            {
                SourceSubscriptionId = subscription.Id,
                VacancyId            = vacancy.Id
            };
            await _storageBroker.InsertSubscriptionVacancyAsync(subscriptionVacancy);

            _logger.Log(LogLevel.Information, "Saved subscription vacancy {VacancyId} for subscription {SubscriptionId}",
                        vacancy.Id, subscription.Id);
        }
Пример #8
0
        public async Task <SubscriptionVacancy> UpdateSubscriptionVacancyAsync(SubscriptionVacancy subscriptionVacancy)
        {
            var local = SubscriptionVacancies
                        .Local
                        .FirstOrDefault(entry => entry.Id.Equals(subscriptionVacancy.Id));

            if (local != null)
            {
                Entry(local).State = EntityState.Detached;
            }
            Entry(subscriptionVacancy).State = EntityState.Modified;
            var subscriptionVacancyEntry = SubscriptionVacancies.Update(subscriptionVacancy);

            await SaveChangesAsync();

            return(subscriptionVacancyEntry.Entity);
        }
        public async Task ShouldNotUpdateVacancyWhenHeadHunterVacancyUpdatedDateIsOlder()
        {
            // arrange
            var snippetResponse = GetRandomHeadHunterSnippet();

            snippetResponse.Archived = false;
            var snippetsResponse = new List <HeadHunterSnippet> {
                snippetResponse
            };
            var headHunterVacancyResponse = GetRandomHeadHunterVacancy();
            var returnedVacancy = GetVacancy(headHunterVacancyResponse, snippetResponse);
            var returnedSubscriptions = new[] { GetRandomSourceSubscription() }.AsAsyncQueryable();
            SubscriptionVacancy nullSubscriptionVacancy = null;

            _headHunterBrokerMock.Setup(broker => broker.GetSnippets(It.IsAny <HeadHunterSubscriptionParameters>()))
            .Returns(GetHeadHunterSnippetsAsync(snippetsResponse));
            _storageBrokerMock.Setup(broker => broker.SelectAllSourceSubscriptions()).Returns(returnedSubscriptions);
            _storageBrokerMock.Setup(broker => broker.SelectVacancyBySourceIdAsync(It.IsAny <int>(), It.IsAny <string>()))
            .ReturnsAsync(returnedVacancy);
            _storageBrokerMock
            .Setup(broker =>
                   broker.SelectSubscriptionVacancyByVacancyAndSubscriptionIdAsync(It.IsAny <int>(), It.IsAny <int>()))
            .ReturnsAsync(nullSubscriptionVacancy);

            // act
            await _sourceService.UpdateAllSubscriptions();

            // assert
            _headHunterBrokerMock.Verify(broker => broker.GetSnippets(It.IsAny <HeadHunterSubscriptionParameters>()),
                                         Times.Once);
            _storageBrokerMock.Verify(broker => broker.SelectAllSourceSubscriptions(), Times.Once);
            _storageBrokerMock.Verify(
                broker => broker.SelectVacancyBySourceIdAsync(It.IsAny <int>(), It.IsAny <string>()), Times.Once);
            _storageBrokerMock.Verify(broker => broker.InsertSubscriptionVacancyAsync(It.IsAny <SubscriptionVacancy>()),
                                      Times.Once);
            _storageBrokerMock.Verify(
                broker => broker.SelectSubscriptionVacancyByVacancyAndSubscriptionIdAsync(It.IsAny <int>(),
                                                                                          It.IsAny <int>()),
                Times.Once);

            _storageBrokerMock.VerifyNoOtherCalls();
            _headHunterBrokerMock.VerifyNoOtherCalls();
        }
Пример #10
0
 private void ValidateSubscriptionVacancyOnUpdate(SubscriptionVacancy subscriptionVacancy)
 {
     ValidateNotNullSubscriptionVacancy(subscriptionVacancy);
 }
        public async Task ShouldUpdateVacancyWhenHeadHunterVacancyUpdatedDateIsNewer()
        {
            // arrange
            var snippetResponse  = GetRandomHeadHunterSnippet();
            var snippetsResponse = new List <HeadHunterSnippet> {
                snippetResponse
            };
            var headHunterVacancyResponse = GetRandomHeadHunterVacancy();
            var sourceType = _headHunterSourceType;
            var returnedVacancy = GetOlderVersionSameVacancy(headHunterVacancyResponse, snippetResponse);
            var returnedSourceEmployer = _sourceEmployerFaker.Generate();
            var returnedSourceArea = _sourceAreaFaker.Generate();
            var returnedCurrency = GetCurrency(headHunterVacancyResponse);
            var returnedSchedule = GetSchedule(headHunterVacancyResponse);
            var returnedEmployment = GetEmployment(headHunterVacancyResponse);
            var returnedSubscriptions = new[] { GetRandomSourceSubscription() }.AsAsyncQueryable();
            SubscriptionVacancy nullSubscriptionVacancy = null;

            _headHunterBrokerMock.Setup(broker => broker.GetSnippets(It.IsAny <HeadHunterSubscriptionParameters>()))
            .Returns(GetHeadHunterSnippetsAsync(snippetsResponse));
            _headHunterBrokerMock.Setup(broker => broker.GetVacancy(It.IsAny <string>()))
            .ReturnsAsync(headHunterVacancyResponse);
            _storageBrokerMock.Setup(broker => broker.SelectAllSourceSubscriptions()).Returns(returnedSubscriptions);
            _storageBrokerMock.Setup(broker => broker.SelectVacancyBySourceIdAsync(It.IsAny <int>(), It.IsAny <string>()))
            .ReturnsAsync(returnedVacancy);
            _storageBrokerMock.Setup(broker =>
                                     broker.SelectSourceEmployerByIdAndTypeIdAsync(sourceType.Id, It.IsAny <string>()))
            .ReturnsAsync(returnedSourceEmployer);
            _storageBrokerMock.Setup(broker =>
                                     broker.SelectSourceAreaByIdAndTypeIdAsync(sourceType.Id, It.IsAny <string>()))
            .ReturnsAsync(returnedSourceArea);
            _storageBrokerMock.Setup(broker =>
                                     broker.SelectAllCurrencies()).Returns(new List <Currency> {
                returnedCurrency
            }.AsQueryable);
            _storageBrokerMock.Setup(broker =>
                                     broker.SelectAllSchedules()).Returns(new List <Schedule> {
                returnedSchedule
            }.AsQueryable);
            _storageBrokerMock.Setup(broker =>
                                     broker.SelectAllEmployments()).Returns(new List <Employment> {
                returnedEmployment
            }.AsQueryable);
            _storageBrokerMock
            .Setup(broker =>
                   broker.SelectSubscriptionVacancyByVacancyAndSubscriptionIdAsync(It.IsAny <int>(), It.IsAny <int>()))
            .ReturnsAsync(nullSubscriptionVacancy);

            // act
            await _sourceService.UpdateAllSubscriptions();

            // assert
            _headHunterBrokerMock.Verify(broker => broker.GetSnippets(It.IsAny <HeadHunterSubscriptionParameters>()),
                                         Times.Once);
            _headHunterBrokerMock.Verify(broker => broker.GetVacancy(It.IsAny <string>()), Times.Once);
            _storageBrokerMock.Verify(broker => broker.SelectAllSourceSubscriptions(), Times.Once);
            _storageBrokerMock.Verify(
                broker => broker.SelectVacancyBySourceIdAsync(It.IsAny <int>(), It.IsAny <string>()), Times.Once);
            _storageBrokerMock.Verify(
                broker => broker.SelectSourceEmployerByIdAndTypeIdAsync(It.IsAny <int>(), It.IsAny <string>()),
                Times.Once());
            _storageBrokerMock.Verify(
                broker => broker.SelectSourceAreaByIdAndTypeIdAsync(It.IsAny <int>(), It.IsAny <string>()),
                Times.Once());
            _storageBrokerMock.Verify(
                broker => broker.SelectAllCurrencies(), Times.Once());
            _storageBrokerMock.Verify(
                broker => broker.SelectAllSchedules(), Times.Once());
            _storageBrokerMock.Verify(
                broker => broker.SelectAllEmployments(), Times.Once());
            _storageBrokerMock.Verify(
                broker => broker.UpdateVacancyAsync(It.IsAny <Vacancy>()));
            _storageBrokerMock.Verify(broker => broker.InsertSubscriptionVacancyAsync(It.IsAny <SubscriptionVacancy>()),
                                      Times.Once);
            _storageBrokerMock.Verify(
                broker => broker.SelectSubscriptionVacancyByVacancyAndSubscriptionIdAsync(It.IsAny <int>(),
                                                                                          It.IsAny <int>()),
                Times.Once);
            _storageBrokerMock.VerifyNoOtherCalls();
            _headHunterBrokerMock.VerifyNoOtherCalls();
        }