private void ValidateNotNullSubscriptionVacancy(SubscriptionVacancy subscriptionVacancy) { if (subscriptionVacancy == null) { throw new NullSubscriptionVacancyException(); } }
private void ValidateStorageSubscriptionVacancy(SubscriptionVacancy storageSubscriptionVacancy, int subscriptionVacancyId) { if (storageSubscriptionVacancy == null) { throw new NotFoundSubscriptionVacancyException(subscriptionVacancyId); } }
public async Task <SubscriptionVacancy> DeleteSubscriptionVacancyAsync(SubscriptionVacancy subscriptionVacancy) { var subscriptionVacancyEntry = SubscriptionVacancies.Remove(subscriptionVacancy); await SaveChangesAsync(); return(subscriptionVacancyEntry.Entity); }
public async Task <SubscriptionVacancy> InsertSubscriptionVacancyAsync(SubscriptionVacancy subscriptionVacancy) { var subscriptionVacancyEntry = await SubscriptionVacancies.AddAsync(subscriptionVacancy); await SaveChangesAsync(); return(subscriptionVacancyEntry.Entity); }
public Task <SubscriptionVacancy> AddSubscriptionVacancyAsync(SubscriptionVacancy subscriptionVacancy) { return(TryCatch(async() => { ValidateSubscriptionVacancyOnAdd(subscriptionVacancy); subscriptionVacancy.Id = 0; return await _storageBroker.InsertSubscriptionVacancyAsync(subscriptionVacancy); })); }
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); })); }
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); }
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(); }
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(); }