public async Task ConvertAsync_WithValidData_ShouldConvertToReadModel(IShoppingList list, IStore store, IEnumerable <IStoreItem> items, IEnumerable <IItemCategory> itemCategories, IEnumerable <IManufacturer> manufacturers, ShoppingListReadModel expected) { // Arrange var fixture = commonFixture.GetNewFixture(); var storeRepositoryMock = new StoreRepositoryMock(fixture); var itemRepositoryMock = new ItemRepositoryMock(fixture); var itemCategoryRepositoryMock = new ItemCategoryRepositoryMock(fixture); var manufacturerRepositoryMock = new ManufacturerRepositoryMock(fixture); var service = fixture.Create <ShoppingListReadModelConversionService>(); storeRepositoryMock.SetupFindByAsync(store.Id, store); itemRepositoryMock.SetupFindByAsync(items.Select(i => i.Id), items); itemCategoryRepositoryMock.SetupFindByAsync(itemCategories.Select(cat => cat.Id), itemCategories); manufacturerRepositoryMock.SetupFindByAsync(manufacturers.Select(m => m.Id), manufacturers); // Act var result = await service.ConvertAsync(list, default); // Assert using (new AssertionScope()) { result.Should().BeEquivalentTo(expected); } }
public async Task HandleAsync_WithSomeItemsOfItemCategoryOnActiveShoppingLists_ShouldStoreItemsAndShoppingListsAndDeleteItemCategory() { // Arrange var fixture = commonFixture.GetNewFixture(); ItemCategoryRepositoryMock itemCategoryRepositoryMock = new ItemCategoryRepositoryMock(fixture); ItemRepositoryMock itemRepositoryMock = new ItemRepositoryMock(fixture); ShoppingListRepositoryMock shoppingListRepositoryMock = new ShoppingListRepositoryMock(fixture); TransactionGeneratorMock transactionGeneratorMock = new TransactionGeneratorMock(fixture); ItemCategoryMock itemCategoryMock = itemCategoryMockFixtur.Create(); var storeItemMocks = storeItemMockFixture.CreateMany(2).ToList(); var shoppingLists = new Dictionary <StoreItemMock, List <ShoppingListMock> >(); foreach (var storeItemMock in storeItemMocks) { int amount = commonFixture.NextInt(1, 5); var listMocks = shoppingListMockFixture.CreateMany(amount).ToList(); shoppingLists.Add(storeItemMock, listMocks); shoppingListRepositoryMock.SetupFindActiveByAsync(storeItemMock.Object.Id, listMocks.Select(m => m.Object)); } TransactionMock transactionMock = new TransactionMock(); var command = fixture.Create <DeleteItemCategoryCommand>(); var handler = fixture.Create <DeleteItemCategoryCommandHandler>(); itemCategoryRepositoryMock.SetupFindByAsync(command.ItemCategoryId, itemCategoryMock.Object); itemRepositoryMock.SetupFindActiveByAsync(command.ItemCategoryId, storeItemMocks.Select(m => m.Object)); transactionGeneratorMock.SetupGenerateAsync(transactionMock.Object); // Act var result = await handler.HandleAsync(command, default); // Assert using (new AssertionScope()) { result.Should().BeTrue(); itemCategoryMock.VerifyDeleteOnce(); foreach (var storeItemMock in storeItemMocks) { storeItemMock.VerifyDeleteOnce(); itemRepositoryMock.VerifyStoreAsyncOnce(storeItemMock.Object); IEnumerable <ShoppingListMock> affiliatedShoppingListMocks = shoppingLists[storeItemMock]; foreach (var listMock in affiliatedShoppingListMocks) { listMock.VerifyRemoveItemOnce(storeItemMock.Object.Id); shoppingListRepositoryMock.VerifyStoreAsyncOnce(listMock.Object); } } itemCategoryRepositoryMock.VerifyStoreAsyncOnce(itemCategoryMock.Object); transactionMock.VerifyCommitAsyncOnce(); } }
public LocalFixture() { Fixture = CommonFixture.GetNewFixture(); StoreItemFixture = new StoreItemFixture(new StoreItemAvailabilityFixture(CommonFixture), CommonFixture); ShoppingListMockFixture = new ShoppingListMockFixture(CommonFixture, new ShoppingListFixture(CommonFixture)); ShoppingListRepositoryMock = new ShoppingListRepositoryMock(Fixture); ItemRepositoryMock = new ItemRepositoryMock(Fixture); }
public LocalFixture() { Fixture = CommonFixture.GetNewFixture(); StoreItemFixture = new StoreItemFixture(new StoreItemAvailabilityFixture(CommonFixture), CommonFixture); ItemRepositoryMock = new ItemRepositoryMock(Fixture); StoreItemFactoryMock = new StoreItemFactoryMock(Fixture); AvailabilityValidationServiceMock = new AvailabilityValidationServiceMock(Fixture); }
public LocalFixture() { Fixture = CommonFixture.GetNewFixture(); StoreItemFixture = new StoreItemFixture(new StoreItemAvailabilityFixture(CommonFixture), CommonFixture); StoreItemMockFixture = new StoreItemMockFixture(CommonFixture, StoreItemFixture); ShoppingListRepositoryMock = new ShoppingListRepositoryMock(Fixture); ItemRepositoryMock = new ItemRepositoryMock(Fixture); TransactionGeneratorMock = new TransactionGeneratorMock(Fixture); }
public async Task Should_return_single_item_by_identity() { // Arrange Item expectedResult = MockDataItems[1]; string id = expectedResult.Id; ItemRepositoryMock.Setup(x => x.GetItemByIdAsync(id, default(CancellationToken))).ReturnsAsync(expectedResult); // Act Item resultItem = await ServiceUnderTest.GetItemByIdAsync(id, default(CancellationToken)); // Assert Assert.Same(expectedResult, resultItem); }
public async Task Should_return_null_when_no_author_found() { // Arrange string author = Guid.NewGuid().ToString(); IEnumerable <Item> expectedData = MockDataItems.Where(i => i.Author == author); ItemRepositoryMock.Setup(x => x.GetItemsByAuthorAsync(author, default(CancellationToken))).ReturnsAsync(expectedData); // Act IEnumerable <Item> resultItems = await ServiceUnderTest.GetItemsByAuthorAsync(author, default(CancellationToken)); // Assert Assert.Null(resultItems); }
public async Task Should_return_items_by_author() { // Arrange string author = MockDataItems[2].Author; IEnumerable <Item> expectedData = MockDataItems.Where(i => i.Author == author); ItemRepositoryMock.Setup(x => x.GetItemsByAuthorAsync(author, default(CancellationToken))).ReturnsAsync(expectedData); // Act IEnumerable <Item> resultItems = await ServiceUnderTest.GetItemsByAuthorAsync(author, default(CancellationToken)); // Assert Assert.Same(expectedData, resultItems); }
public LocalFixture() { Fixture = CommonFixture.GetNewFixture(); StoreItemFixture = new StoreItemFixture(new StoreItemAvailabilityFixture(CommonFixture), CommonFixture); ShoppingListMockFixture = new ShoppingListMockFixture(CommonFixture, new ShoppingListFixture(CommonFixture)); ItemCategoryFixture = new ItemCategoryFixture(CommonFixture); ItemRepositoryMock = new ItemRepositoryMock(Fixture); StoreItemFactoryMock = new StoreItemFactoryMock(Fixture); ItemCategoryValidationServiceMock = new ItemCategoryValidationServiceMock(Fixture); ManufacturerValidationServiceMock = new ManufacturerValidationServiceMock(Fixture); AvailabilityValidationServiceMock = new AvailabilityValidationServiceMock(Fixture); }
public async Task Should_fail_update_missing_identity() { // Arrange Item newItem = new Item { Id = string.Empty, Author = "Jane Smith", HideAuthor = true, Title = "Adding new items is too simple", Description = "I think it needs to have more clicks to add an item", Votes = -7 }; ItemRepositoryMock.Setup(x => x.UpdateItemAsync(newItem, default(CancellationToken))).ReturnsAsync(newItem.Id); // Act ArgumentNullException exception = await Assert.ThrowsAsync <ArgumentNullException>(() => ServiceUnderTest.UpdateItemAsync(newItem, default(CancellationToken))); // Assert Assert.Equal(nameof(newItem.Id), exception.ParamName); }
public async Task Should_return_null_when_no_match() { // Arrange Item badResult = new Item { Id = Guid.NewGuid().ToString(), Author = "Bob Marley", HideAuthor = true, Title = "No women", Description = "No cry", Votes = 2 }; ItemRepositoryMock.Setup(x => x.GetItemByIdAsync(badResult.Id, default(CancellationToken))).ReturnsAsync(MockDataItems.FirstOrDefault(i => i.Id == badResult.Id)); // Act Item resultItem = await ServiceUnderTest.GetItemByIdAsync(badResult.Id, default(CancellationToken)); // Assert Assert.Null(resultItem); }
public async Task Should_update_an_existing_item() { // Arrange Item newItem = new Item { Id = Guid.NewGuid().ToString(), Author = "Jane Smith", HideAuthor = true, Title = "Adding new items is too simple", Description = "I think it needs to have more clicks to add an item", Votes = -7 }; ItemRepositoryMock.Setup(x => x.UpdateItemAsync(newItem, default(CancellationToken))).ReturnsAsync(newItem.Id); ItemRepositoryMock.Setup(x => x.GetItemByIdAsync(newItem.Id, default(CancellationToken))).ReturnsAsync(newItem); // Act Item resultItem = await ServiceUnderTest.UpdateItemAsync(newItem, default(CancellationToken)); // Assert Assert.Equal(newItem, resultItem); }
public async Task Should_create_new_item() { // Arrange Item newItem = new Item { Id = Guid.NewGuid().ToString(), Author = "J. K. Rowling", HideAuthor = false, Title = "Fly Phising", Description = "I was wondering if you could tell if you have a book...", Votes = 0 }; ItemRepositoryMock.Setup(x => x.CreateNewItemAsync(newItem, default(CancellationToken))).ReturnsAsync(newItem.Id); ItemRepositoryMock.Setup(x => x.GetItemByIdAsync(newItem.Id, default(CancellationToken))).ReturnsAsync(newItem); // Act Item resultItem = await ServiceUnderTest.CreateItemAsync(newItem, default(CancellationToken)); // Assert Assert.Same(newItem, resultItem); }
public LocalFixture() { Fixture = CommonFixture.GetNewFixture(); ShoppingListFixture = new ShoppingListFixture(CommonFixture); ShoppingListMockFixture = new ShoppingListMockFixture(CommonFixture, ShoppingListFixture); ShoppingListSectionFixture = new ShoppingListSectionFixture(CommonFixture); ShoppingListItemFixture = new ShoppingListItemFixture(CommonFixture); StoreItemAvailabilityFixture = new StoreItemAvailabilityFixture(CommonFixture); StoreItemFixture = new StoreItemFixture(StoreItemAvailabilityFixture, CommonFixture); StoreSectionFixture = new StoreSectionFixture(CommonFixture); StoreFixture = new StoreFixture(CommonFixture); ShoppingListSectionFactoryMock = new ShoppingListSectionFactoryMock(Fixture); StoreRepositoryMock = new StoreRepositoryMock(Fixture); ItemRepositoryMock = new ItemRepositoryMock(Fixture); ShoppingListItemFactoryMock = new ShoppingListItemFactoryMock(Fixture); }
public async Task HandleAsync_WithSomeItemsOfItemCategoryOnNoActiveShoppingLists_ShouldStoreItemsButNoShoppingListsAndDeleteItemCategory() { // Arrange var fixture = commonFixture.GetNewFixture(); ItemCategoryRepositoryMock itemCategoryRepositoryMock = new ItemCategoryRepositoryMock(fixture); ItemRepositoryMock itemRepositoryMock = new ItemRepositoryMock(fixture); ShoppingListRepositoryMock shoppingListRepositoryMock = new ShoppingListRepositoryMock(fixture); TransactionGeneratorMock transactionGeneratorMock = new TransactionGeneratorMock(fixture); ItemCategoryMock itemCategoryMock = itemCategoryMockFixtur.Create(); List <StoreItemMock> storeItemMocks = storeItemMockFixture.CreateMany(3).ToList(); TransactionMock transactionMock = new TransactionMock(); var command = fixture.Create <DeleteItemCategoryCommand>(); var handler = fixture.Create <DeleteItemCategoryCommandHandler>(); itemCategoryRepositoryMock.SetupFindByAsync(command.ItemCategoryId, itemCategoryMock.Object); itemRepositoryMock.SetupFindActiveByAsync(command.ItemCategoryId, storeItemMocks.Select(m => m.Object)); shoppingListRepositoryMock.SetupFindActiveByAsync(Enumerable.Empty <IShoppingList>()); transactionGeneratorMock.SetupGenerateAsync(transactionMock.Object); // Act var result = await handler.HandleAsync(command, default); // Assert using (new AssertionScope()) { result.Should().BeTrue(); itemCategoryMock.VerifyDeleteOnce(); shoppingListRepositoryMock.VerifyStoreAsyncNever(); foreach (var storeItemMock in storeItemMocks) { storeItemMock.VerifyDeleteOnce(); itemRepositoryMock.VerifyStoreAsyncOnce(storeItemMock.Object); } itemCategoryRepositoryMock.VerifyStoreAsyncOnce(itemCategoryMock.Object); transactionMock.VerifyCommitAsyncOnce(); } }
public async Task HandleAsync_WithNoItemsOfItemCategory_ShouldNotStoreAnyItemsAndDeleteItemCategory() { // Arrange var fixture = commonFixture.GetNewFixture(); ItemCategoryRepositoryMock itemCategoryRepositoryMock = new ItemCategoryRepositoryMock(fixture); ItemRepositoryMock itemRepositoryMock = new ItemRepositoryMock(fixture); ShoppingListRepositoryMock shoppingListRepositoryMock = new ShoppingListRepositoryMock(fixture); TransactionGeneratorMock transactionGeneratorMock = new TransactionGeneratorMock(fixture); ItemCategoryMock itemCategoryMock = itemCategoryMockFixtur.Create(); TransactionMock transactionMock = new TransactionMock(); var command = fixture.Create <DeleteItemCategoryCommand>(); var handler = fixture.Create <DeleteItemCategoryCommandHandler>(); itemCategoryRepositoryMock.SetupFindByAsync(command.ItemCategoryId, itemCategoryMock.Object); itemRepositoryMock.SetupFindActiveByAsync(command.ItemCategoryId, Enumerable.Empty <IStoreItem>()); transactionGeneratorMock.SetupGenerateAsync(transactionMock.Object); // Act var result = await handler.HandleAsync(command, default); // Assert using (new AssertionScope()) { result.Should().BeTrue(); itemCategoryMock.VerifyDeleteOnce(); shoppingListRepositoryMock.VerifyStoreAsyncNever(); itemRepositoryMock.VerifyStoreAsyncNever(); itemCategoryRepositoryMock.VerifyStoreAsyncOnce(itemCategoryMock.Object); transactionMock.VerifyCommitAsyncOnce(); } }