using Microsoft.eShopWeb.ApplicationCore.Entities.OrderAggregate; using System.Collections.Generic; using System.Linq; using Xunit; namespace Microsoft.eShopWeb.UnitTests.ApplicationCore.Specifications { public class CustomerOrdersWithItemsSpecification { private readonly string _buyerId = "TestBuyerId"; private Address _shipToAddress = new Address("Street", "City", "OH", "US", "11111"); [Fact] public void ReturnsOrderWithOrderedItem() { var spec = new eShopWeb.ApplicationCore.Specifications.CustomerOrdersWithItemsSpecification(_buyerId); var result = GetTestCollection() .AsQueryable() .FirstOrDefault(spec.WhereExpressions.FirstOrDefault()); Assert.NotNull(result); Assert.NotNull(result.OrderItems); Assert.Equal(1, result.OrderItems.Count); Assert.NotNull(result.OrderItems.FirstOrDefault().ItemOrdered); } [Fact] public void ReturnsAllOrderWithAllOrderedItem() { var spec = new eShopWeb.ApplicationCore.Specifications.CustomerOrdersWithItemsSpecification(_buyerId); var result = GetTestCollection() .AsQueryable() .Where(spec.WhereExpressions.FirstOrDefault()) .ToList(); Assert.NotNull(result); Assert.Equal(2, result.Count); Assert.Equal(1, result[0].OrderItems.Count); Assert.NotNull(result[0].OrderItems.FirstOrDefault().ItemOrdered); Assert.Equal(2, result[1].OrderItems.Count); Assert.NotNull(result[1].OrderItems.ToList()[0].ItemOrdered); Assert.NotNull(result[1].OrderItems.ToList()[1].ItemOrdered); } public List<Order> GetTestCollection() { var ordersList = new List<Order>(); ordersList.Add(new Order(_buyerId, _shipToAddress, new List<OrderItem> { new OrderItem(new CatalogItemOrdered(1, "Product1", "testurl"), 10.50m, 1) })); ordersList.Add(new Order(_buyerId, _shipToAddress, new List<OrderItem> { new OrderItem(new CatalogItemOrdered(2, "Product2", "testurl"), 15.50m, 2), new OrderItem(new CatalogItemOrdered(2, "Product3", "testurl"), 20.50m, 1) })); return ordersList; } } }