public void UpdateCategoryThrowsExceptionWithNullCategoryTest() { var store = Substitute.For <ICategoryStore>(); var cache = Substitute.For <ICategoryCache>(); var sut = new CategoryCommand(store, cache); Func <Task> action = async() => await sut.UpdateCategory(null, CancellationToken.None).ConfigureAwait(false); action.Should().Throw <ArgumentNullException>(); }
public void UpdateCategoryThrowsExceptionWhenCategoryNotFoundTest() { var expected = Model.Create <Category>(); var store = Substitute.For <ICategoryStore>(); var cache = Substitute.For <ICategoryCache>(); var sut = new CategoryCommand(store, cache); using (var tokenSource = new CancellationTokenSource()) { Func <Task> action = async() => await sut.UpdateCategory(expected, tokenSource.Token).ConfigureAwait(false); action.Should().Throw <NotFoundException>(); } }
public async Task UpdateCategorySetsReviewedToTrueTest() { var expected = Model.Create <Category>().Set(x => x.Reviewed = false); var category = Model.Create <Category>().Set(x => x.Group = expected.Group).Set(x => x.Name = expected.Name); var store = Substitute.For <ICategoryStore>(); var cache = Substitute.For <ICategoryCache>(); var sut = new CategoryCommand(store, cache); using (var tokenSource = new CancellationTokenSource()) { store.GetCategory(expected.Group, expected.Name, tokenSource.Token).Returns(category); await sut.UpdateCategory(expected, tokenSource.Token).ConfigureAwait(false); await store.Received().StoreCategory(Arg.Is <Category>(x => x.Reviewed), tokenSource.Token) .ConfigureAwait(false); } }
public async Task UpdateCategoryPreservesExistingLinkCountWhenCategoryAlreadyExistsTest() { var expected = Model.Create <Category>(); var category = Model.Create <Category>().Set(x => x.Group = expected.Group).Set(x => x.Name = expected.Name); var store = Substitute.For <ICategoryStore>(); var cache = Substitute.For <ICategoryCache>(); var sut = new CategoryCommand(store, cache); using (var tokenSource = new CancellationTokenSource()) { store.GetCategory(expected.Group, expected.Name, tokenSource.Token).Returns(category); await sut.UpdateCategory(expected, tokenSource.Token).ConfigureAwait(false); await store.Received(1).StoreCategory(Arg.Any <Category>(), tokenSource.Token).ConfigureAwait(false); await store.Received().StoreCategory( Arg.Is <Category>(x => x.Group == expected.Group), tokenSource.Token).ConfigureAwait(false); await store.Received().StoreCategory(Arg.Is <Category>(x => x.Name == expected.Name), tokenSource.Token) .ConfigureAwait(false); await store.Received().StoreCategory( Arg.Is <Category>(x => x.LinkCount == category.LinkCount), tokenSource.Token).ConfigureAwait(false); await store.Received().StoreCategory(Arg.Is <Category>(x => x.Reviewed), tokenSource.Token) .ConfigureAwait(false); await store.Received() .StoreCategory(Arg.Is <Category>(x => x.Visible == expected.Visible), tokenSource.Token) .ConfigureAwait(false); cache.Received().RemoveCategories(); } }