public async Task Handle_ShouldDeleteTrainingProviderLocationFromExistingBasket_WhenProviderLocationHasAlreadyBeenAddedForApprenticeship() { var basketId = Guid.NewGuid(); var basket = new ApprenticeshipFavouritesBasket { Id = basketId }; basket.Add("123", 12345678, "TestProvider", 10000020); basket.Add("123", 23456789, "TestProvider", 10000030); _mockBasket.Setup(x => x.GetAsync(basketId)).ReturnsAsync(basket); ApprenticeshipFavouritesBasket savedBasket = null; // Setup callback so we can check contents of basket easier. _mockBasket.Setup(x => x.UpdateAsync(It.IsAny <ApprenticeshipFavouritesBasket>())) .Returns(Task.CompletedTask) .Callback <ApprenticeshipFavouritesBasket>((a) => savedBasket = a); var request = new AddOrRemoveFavouriteInBasketCommand { BasketId = basketId, ApprenticeshipId = "123", Ukprn = 12345678, LocationId = 10000020 }; var response = await _sut.Handle(request, default(CancellationToken)); _mockBasket.Verify(x => x.UpdateAsync(It.IsAny <ApprenticeshipFavouritesBasket>()), Times.Once); var favourite = savedBasket.SingleOrDefault(x => x.ApprenticeshipId == "123"); favourite.Should().NotBeNull(); favourite.Providers.Count.Should().Be(1); }
public async Task Handle_ShouldRemoveApprenticeFromBasket_IfApprenticeshipAlreadyInBasket() { var basketId = Guid.NewGuid(); var basket = new ApprenticeshipFavouritesBasket { Id = basketId }; basket.Add("123", 23456, "TestProvider"); basket.Add("123", 12345, "TestProvider"); _mockBasket.Setup(x => x.GetAsync(basketId)).ReturnsAsync(basket); var request = new AddOrRemoveFavouriteInBasketCommand { BasketId = basketId, ApprenticeshipId = "123" }; await _sut.Handle(request, default(CancellationToken)); _mockBasket.Verify(x => x.UpdateAsync(It.IsAny <ApprenticeshipFavouritesBasket>()), Times.Once); basket.Should().NotBeNull(); basket.Should().BeEmpty(); }
public async Task Handle_AddsApprenticeshipToExistingBasket_ForNewApprenticeship() { var basketId = Guid.NewGuid(); var basket = new ApprenticeshipFavouritesBasket { Id = basketId }; basket.Add("111"); _mockBasket.Setup(x => x.GetAsync(basketId)).ReturnsAsync(basket); ApprenticeshipFavouritesBasket savedBasket = null; // Setup callback so we can check contents of basket easier. _mockBasket.Setup(x => x.UpdateAsync(It.IsAny <ApprenticeshipFavouritesBasket>())) .Returns(Task.CompletedTask) .Callback <ApprenticeshipFavouritesBasket>((a) => savedBasket = a); var request = new AddOrRemoveFavouriteInBasketCommand { BasketId = basketId, ApprenticeshipId = "123" }; var response = await _sut.Handle(request, default(CancellationToken)); response.ApprenticeshipName.Should().Be("Standard 1"); response.BasketId.Should().Be(basketId); response.BasketOperation.Should().Be(BasketOperation.Added); _mockBasket.Verify(x => x.UpdateAsync(It.Is <ApprenticeshipFavouritesBasket>(b => b.Count() == 2))); savedBasket.SingleOrDefault(x => x.ApprenticeshipId == "123").Should().NotBeNull(); }
public async Task Handle_CreatesBasketId_WhenNoBasketSpecified() { var request = new AddOrRemoveFavouriteInBasketCommand { BasketId = null, ApprenticeshipId = "123" }; var response = await _sut.Handle(request, default(CancellationToken)); response.BasketId.Should().NotBeEmpty(); _mockBasket.Verify(x => x.UpdateAsync(It.Is <ApprenticeshipFavouritesBasket>(a => a.Id != Guid.Empty))); }
public async Task Handle_AddsApprenticeshipToBasket_ForNewBasket() { var basketId = Guid.NewGuid(); var request = new AddOrRemoveFavouriteInBasketCommand { BasketId = null, ApprenticeshipId = "123" }; await _sut.Handle(request, default(CancellationToken)); _mockBasket.Verify(x => x.UpdateAsync(It.Is <ApprenticeshipFavouritesBasket>(a => a.First().ApprenticeshipId == "123"))); }
public async Task Handle_CreatesNewBasketId_IfPassedBasketIdNoLongerExistsInCache() { var expiredBasketId = Guid.NewGuid(); var request = new AddOrRemoveFavouriteInBasketCommand { BasketId = expiredBasketId, ApprenticeshipId = "123" }; var response = await _sut.Handle(request, default(CancellationToken)); response.BasketId.Should().NotBeEmpty(); _mockBasket.Verify(x => x.UpdateAsync(It.Is <ApprenticeshipFavouritesBasket>(a => a.Id != Guid.Empty && a.Id != expiredBasketId))); }
public async Task Handle_AddsProviderLocationToBasket_ForNewBasket() { var basketId = Guid.NewGuid(); var request = new AddOrRemoveFavouriteInBasketCommand { BasketId = null, ApprenticeshipId = "123", LocationId = 12345, Ukprn = 12345678 }; await _sut.Handle(request, default(CancellationToken)); _mockBasket.Verify(x => x.UpdateAsync(It.Is <ApprenticeshipFavouritesBasket>(a => a[0].ApprenticeshipId == "123" && a[0].Providers.Select(w => w.Ukprn).Contains(12345678) && a[0].Providers.SingleOrDefault(w => w.Ukprn == 12345678).Locations.Contains(12345)))); }
public async Task Handle_AddsTrainingProviderLocationToExistingBasket_ForExistingApprenticeshipAndProviderWithExistingLocations() { var basketId = Guid.NewGuid(); var basket = new ApprenticeshipFavouritesBasket { Id = basketId }; basket.Add("123", 12345678, "TestProvider", 10000030); _mockBasket.Setup(x => x.GetAsync(basketId)).ReturnsAsync(basket); ApprenticeshipFavouritesBasket savedBasket = null; // Setup callback so we can check contents of basket easier. _mockBasket.Setup(x => x.UpdateAsync(It.IsAny <ApprenticeshipFavouritesBasket>())) .Returns(Task.CompletedTask) .Callback <ApprenticeshipFavouritesBasket>((a) => savedBasket = a); var request = new AddOrRemoveFavouriteInBasketCommand { BasketId = basketId, ApprenticeshipId = "123", Ukprn = 12345678, LocationId = 10000020 }; var response = await _sut.Handle(request, default(CancellationToken)); response.ApprenticeshipName.Should().Be("Standard 1"); response.BasketId.Should().Be(basketId); response.BasketOperation.Should().Be(BasketOperation.Added); _mockBasket.Verify(x => x.UpdateAsync(It.Is <ApprenticeshipFavouritesBasket>(b => b.Count() == 1))); var favourite = savedBasket.SingleOrDefault(x => x.ApprenticeshipId == "123"); favourite.Should().NotBeNull(); favourite.Providers.Should().NotBeNull(); favourite.Providers.Count.Should().Be(1); favourite.Providers.First().Ukprn.Should().Be(12345678); favourite.Providers.First().Locations.Count().Should().Be(2); favourite.Providers.First().Locations.Contains(10000020); favourite.Providers.First().Name.Should().Be("TestProvider"); }