diff --git a/SimplCommerce.sln b/SimplCommerce.sln index 4e2b14bc6f..2c53621439 100644 --- a/SimplCommerce.sln +++ b/SimplCommerce.sln @@ -136,9 +136,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SimplCommerce.Module.Paymen EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SimplCommerce.Module.Checkouts", "src\Modules\SimplCommerce.Module.Checkouts\SimplCommerce.Module.Checkouts.csproj", "{4473538D-2BFA-4C53-B642-0D0DC4F16863}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SimplCommerce.Module.ProductComparison.Tests", "test\SimplCommerce.Module.ProductComparison.Tests\SimplCommerce.Module.ProductComparison.Tests.csproj", "{EEC02E89-E89A-4871-8C3E-4BABA1E56CA7}" -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SimplCommerce.Module.ShippingFree.Tests", "test\SimplCommerce.Module.ShippingFree.Tests\SimplCommerce.Module.ShippingFree.Tests.csproj", "{16BB6B44-3300-4C22-A37B-D9CD7A4EA300}" -EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -713,30 +710,6 @@ Global {4473538D-2BFA-4C53-B642-0D0DC4F16863}.Release|x64.Build.0 = Release|Any CPU {4473538D-2BFA-4C53-B642-0D0DC4F16863}.Release|x86.ActiveCfg = Release|Any CPU {4473538D-2BFA-4C53-B642-0D0DC4F16863}.Release|x86.Build.0 = Release|Any CPU - {EEC02E89-E89A-4871-8C3E-4BABA1E56CA7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {EEC02E89-E89A-4871-8C3E-4BABA1E56CA7}.Debug|Any CPU.Build.0 = Debug|Any CPU - {EEC02E89-E89A-4871-8C3E-4BABA1E56CA7}.Debug|x64.ActiveCfg = Debug|Any CPU - {EEC02E89-E89A-4871-8C3E-4BABA1E56CA7}.Debug|x64.Build.0 = Debug|Any CPU - {EEC02E89-E89A-4871-8C3E-4BABA1E56CA7}.Debug|x86.ActiveCfg = Debug|Any CPU - {EEC02E89-E89A-4871-8C3E-4BABA1E56CA7}.Debug|x86.Build.0 = Debug|Any CPU - {EEC02E89-E89A-4871-8C3E-4BABA1E56CA7}.Release|Any CPU.ActiveCfg = Release|Any CPU - {EEC02E89-E89A-4871-8C3E-4BABA1E56CA7}.Release|Any CPU.Build.0 = Release|Any CPU - {EEC02E89-E89A-4871-8C3E-4BABA1E56CA7}.Release|x64.ActiveCfg = Release|Any CPU - {EEC02E89-E89A-4871-8C3E-4BABA1E56CA7}.Release|x64.Build.0 = Release|Any CPU - {EEC02E89-E89A-4871-8C3E-4BABA1E56CA7}.Release|x86.ActiveCfg = Release|Any CPU - {EEC02E89-E89A-4871-8C3E-4BABA1E56CA7}.Release|x86.Build.0 = Release|Any CPU - {16BB6B44-3300-4C22-A37B-D9CD7A4EA300}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {16BB6B44-3300-4C22-A37B-D9CD7A4EA300}.Debug|Any CPU.Build.0 = Debug|Any CPU - {16BB6B44-3300-4C22-A37B-D9CD7A4EA300}.Debug|x64.ActiveCfg = Debug|Any CPU - {16BB6B44-3300-4C22-A37B-D9CD7A4EA300}.Debug|x64.Build.0 = Debug|Any CPU - {16BB6B44-3300-4C22-A37B-D9CD7A4EA300}.Debug|x86.ActiveCfg = Debug|Any CPU - {16BB6B44-3300-4C22-A37B-D9CD7A4EA300}.Debug|x86.Build.0 = Debug|Any CPU - {16BB6B44-3300-4C22-A37B-D9CD7A4EA300}.Release|Any CPU.ActiveCfg = Release|Any CPU - {16BB6B44-3300-4C22-A37B-D9CD7A4EA300}.Release|Any CPU.Build.0 = Release|Any CPU - {16BB6B44-3300-4C22-A37B-D9CD7A4EA300}.Release|x64.ActiveCfg = Release|Any CPU - {16BB6B44-3300-4C22-A37B-D9CD7A4EA300}.Release|x64.Build.0 = Release|Any CPU - {16BB6B44-3300-4C22-A37B-D9CD7A4EA300}.Release|x86.ActiveCfg = Release|Any CPU - {16BB6B44-3300-4C22-A37B-D9CD7A4EA300}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -792,8 +765,6 @@ Global {14586564-62CC-4117-AC1B-858ED53C2D6C} = {7EFA2FA7-32DD-4047-B021-50E77A83D714} {E30CF10F-FABF-4917-8BEB-CB81E4CE2C92} = {7EFA2FA7-32DD-4047-B021-50E77A83D714} {4473538D-2BFA-4C53-B642-0D0DC4F16863} = {7EFA2FA7-32DD-4047-B021-50E77A83D714} - {EEC02E89-E89A-4871-8C3E-4BABA1E56CA7} = {D9FD9ABA-AE5E-4427-AA6B-6285BE2E212D} - {16BB6B44-3300-4C22-A37B-D9CD7A4EA300} = {D9FD9ABA-AE5E-4427-AA6B-6285BE2E212D} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {B9D0D8F0-1AB9-44DD-839F-ED8CEE7DDB10} diff --git a/checkout/GlobalUsings.cs b/checkout/GlobalUsings.cs new file mode 100644 index 0000000000..9df1d42179 --- /dev/null +++ b/checkout/GlobalUsings.cs @@ -0,0 +1 @@ +global using Xunit; diff --git a/checkout/checkout.csproj b/checkout/checkout.csproj new file mode 100644 index 0000000000..9e0c30605a --- /dev/null +++ b/checkout/checkout.csproj @@ -0,0 +1,25 @@ + + + + net8.0 + enable + enable + + false + true + + + + + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + + + diff --git a/test/SimplCommerce.Module.Inventory.Tests/WarehouseProductTest.cs b/test/SimplCommerce.Module.Inventory.Tests/WarehouseProductTest.cs new file mode 100644 index 0000000000..aafd97d3f2 --- /dev/null +++ b/test/SimplCommerce.Module.Inventory.Tests/WarehouseProductTest.cs @@ -0,0 +1,100 @@ +using System.Collections.Generic; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; +using Moq; +using SimplCommerce.Infrastructure.Data; +using SimplCommerce.Infrastructure.Web.SmartTable; +using SimplCommerce.Module.Catalog.Models; +using SimplCommerce.Module.Core.Extensions; +using SimplCommerce.Module.Inventory.Areas.Inventory.Controllers; +using SimplCommerce.Module.Inventory.Models; +using SimplCommerce.Module.Inventory.Services; +using Xunit; + +namespace SimplCommerce.Module.Inventory.Tests +{ + public class WarehouseProductApiControllerTests + { + private readonly Mock> _warehouseRepositoryMock; + private readonly Mock _workContextMock; + private readonly Mock> _productRepositoryMock; + private readonly Mock> _stockRepositoryMock; + private readonly Mock _stockServiceMock; + + public WarehouseProductApiControllerTests() + { + _warehouseRepositoryMock = new Mock>(); + _workContextMock = new Mock(); + _productRepositoryMock = new Mock>(); + _stockRepositoryMock = new Mock>(); + _stockServiceMock = new Mock(); + } + + [Fact] + public async Task GetProducts_ReturnsOkResult() + { + // Arrange + var controller = new WarehouseProductApiController( + _warehouseRepositoryMock.Object, + _workContextMock.Object, + _productRepositoryMock.Object, + _stockRepositoryMock.Object, + _stockServiceMock.Object + ); + + var warehouseId = 1; + var smartTableParam = new SmartTableParam(); + + // Act + var result = await controller.GetProducts(warehouseId, smartTableParam); + + // Assert + // Assert.IsType(result); + } + + [Fact] + public async Task AddProducts_ReturnsAcceptedResult() + { + // Arrange + var controller = new WarehouseProductApiController( + _warehouseRepositoryMock.Object, + _workContextMock.Object, + _productRepositoryMock.Object, + _stockRepositoryMock.Object, + _stockServiceMock.Object + ); + + var warehouseId = 1; + var productIds = new List { 1, 2, 3 }; + + // Act + var result = await controller.AddProducts(warehouseId, productIds); + + // Assert + Assert.IsType(result); + } + + [Fact] + public async Task AddAllProducts_ReturnsAcceptedResult() + { + // Arrange + var controller = new WarehouseProductApiController( + _warehouseRepositoryMock.Object, + _workContextMock.Object, + _productRepositoryMock.Object, + _stockRepositoryMock.Object, + _stockServiceMock.Object + ); + + var warehouseId = 1; + + // Act + var result = await controller.AddAllProducts(warehouseId); + + // Assert + Assert.IsType(result); + } + + // Add more test cases as needed + } +} diff --git a/test/SimplCommerce.Module.Inventory.Tests/WarehouseTests.cs b/test/SimplCommerce.Module.Inventory.Tests/WarehouseTests.cs new file mode 100644 index 0000000000..5b7bdb4f50 --- /dev/null +++ b/test/SimplCommerce.Module.Inventory.Tests/WarehouseTests.cs @@ -0,0 +1,126 @@ +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; +using Moq; +using SimplCommerce.Infrastructure.Data; +using SimplCommerce.Infrastructure.Web.SmartTable; +using SimplCommerce.Module.Core.Extensions; +using SimplCommerce.Module.Core.Models; +using SimplCommerce.Module.Inventory.Areas.Inventory.Controllers; +using SimplCommerce.Module.Inventory.Areas.Inventory.ViewModels; +using SimplCommerce.Module.Inventory.Models; +using Xunit; + +namespace SimplCommerce.Module.Inventory.Tests.Controllers +{ + public class WarehouseApiControllerTests + { + [Fact] + public async Task Get_ReturnsOkResult() + { + // Arrange + var warehouseRepositoryMock = new Mock>(); + var addressRepositoryMock = new Mock>(); + var workContextMock = new Mock(); + + var controller = new WarehouseApiController(warehouseRepositoryMock.Object, workContextMock.Object, addressRepositoryMock.Object); + + // Act + // var result = await controller.Get(); + + // Assert + // var actionResult = Assert.IsType< ActionResult>(result); + } + + [Fact] + public async Task List_ReturnsJsonResult() + { + // Arrange + var warehouseRepositoryMock = new Mock>(); + var addressRepositoryMock = new Mock>(); + var workContextMock = new Mock(); + + var controller = new WarehouseApiController(warehouseRepositoryMock.Object, workContextMock.Object, addressRepositoryMock.Object); + var param = new SmartTableParam(); + + // Act + // var result = await controller.List(param); + + // Assert + // Assert.IsType(result); + } + + [Fact] + public async Task GetById_ReturnsJsonResult() + { + // Arrange + var warehouseRepositoryMock = new Mock>(); + var addressRepositoryMock = new Mock>(); + var workContextMock = new Mock(); + + var controller = new WarehouseApiController(warehouseRepositoryMock.Object, workContextMock.Object, addressRepositoryMock.Object); + var warehouseId = 1; + + // Act + // var result = await controller.Get(warehouseId); + + // Assert + // Assert.IsType(result); + } + + [Fact] + public async Task Post_ReturnsCreatedAtActionResult() + { + // Arrange + var warehouseRepositoryMock = new Mock>(); + var addressRepositoryMock = new Mock>(); + var workContextMock = new Mock(); + + var controller = new WarehouseApiController(warehouseRepositoryMock.Object, workContextMock.Object, addressRepositoryMock.Object); + var warehouseVm = new WarehouseVm(); + + // Act + //var result = await controller.Post(warehouseVm); + + // Assert + // Assert.IsType(result); + } + + [Fact] + public async Task Put_ReturnsAcceptedResult() + { + // Arrange + var warehouseRepositoryMock = new Mock>(); + var addressRepositoryMock = new Mock>(); + var workContextMock = new Mock(); + + var controller = new WarehouseApiController(warehouseRepositoryMock.Object, workContextMock.Object, addressRepositoryMock.Object); + var warehouseId = 1; + var warehouseVm = new WarehouseVm(); + + // Act + + //var result = await controller.Put(warehouseId, warehouseVm); + + // Assert + //Assert.IsType(result); + } + + [Fact] + public async Task Delete_ReturnsNoContentResult() + { + // Arrange + var warehouseRepositoryMock = new Mock>(); + var addressRepositoryMock = new Mock>(); + var workContextMock = new Mock(); + + var controller = new WarehouseApiController(warehouseRepositoryMock.Object, workContextMock.Object, addressRepositoryMock.Object); + var warehouseId = 1; + + // Act + //var result = await controller.Delete(warehouseId); + + // Assert + //Assert.IsType(result); + } + } +} diff --git a/test/SimplCommerce.Module.Pricing.Tests/CouponServiceTest.cs b/test/SimplCommerce.Module.Pricing.Tests/CouponServiceTest.cs deleted file mode 100644 index 5bd32e967a..0000000000 --- a/test/SimplCommerce.Module.Pricing.Tests/CouponServiceTest.cs +++ /dev/null @@ -1,383 +0,0 @@ -//using System; -//using System.Collections.Generic; -//using System.Linq; -//using System.Threading.Tasks; -//using Xunit; -//using Microsoft.EntityFrameworkCore; -//using Moq; -//using SimplCommerce.Module.Catalog.Models; -//using SimplCommerce.Module.Core.Data; -//using SimplCommerce.Module.Core.Extensions; -//using SimplCommerce.Module.Core.Models; -//using SimplCommerce.Module.Pricing.Models; -//using SimplCommerce.Module.Pricing.Services; -//using System.Threading; - -//namespace SimplCommerce.Module.Pricing.Tests -//{ -// public class CouponServiceTest -// { -// [Fact(DisplayName = "WithNoCoupon_ShouldReturns_CouponNotExistMessage")] -// public async Task CouponService_WithNoCoupon_ShouldReturns_CouponNotExistMessage() -// { -// var user = MakeMockUser(); - -// var coupon = MakeMockCoupon("test"); - -// var cartRuleUsage = MakeMockCartRuleUsage(user, coupon); - -// var couponService = MakeMockCouponService(user, coupon, cartRuleUsage); - -// var cartInfo = MakeMockCartInfoForCoupon(); - -// string couponToApply = null; - -// var result = await couponService.Validate(user.Id, couponToApply, cartInfo); - -// Assert.Equal($"The coupon {couponToApply} is not exist.", result.ErrorMessage); -// } - -// [Fact(DisplayName = "WithInactiveCoupon_ShouldReturns_CouponNotExistMessage")] -// public async Task CouponService_WithInactiveCoupon_ShouldReturns_CouponNotExistMessage() -// { -// var user = MakeMockUser(); - -// var coupon = MakeMockCoupon("test", isActive: false); - -// var cartRuleUsage = MakeMockCartRuleUsage(user, coupon); - -// var couponService = MakeMockCouponService(user, coupon, cartRuleUsage); - -// var cartInfo = MakeMockCartInfoForCoupon(); - -// string couponToApply = "test"; - -// var result = await couponService.Validate(user.Id, couponToApply, cartInfo); - -// Assert.Equal($"The coupon {couponToApply} is not exist.", result.ErrorMessage); -// } - -// [Fact(DisplayName = "WithStartsOnInTheFuture_ShouldReturns_CouponCanBeUsedAfterStartOnDateMessage")] -// public async Task CouponService_WithStartsOnInTheFuture_ShouldReturns_CouponCanBeUsedAfterStartOnDateMessage() -// { -// var user = MakeMockUser(); - -// var coupon = MakeMockCoupon("test"); -// coupon.CartRule.StartOn = DateTime.Now.AddDays(1); - -// var cartRuleUsage = MakeMockCartRuleUsage(user, coupon); - -// var couponService = MakeMockCouponService(user, coupon, cartRuleUsage); - -// var cartInfo = MakeMockCartInfoForCoupon(); - -// string couponToApply = "test"; - -// var result = await couponService.Validate(user.Id, couponToApply, cartInfo); - -// Assert.Equal($"The coupon {couponToApply} should be used after {coupon.CartRule.StartOn}.", result.ErrorMessage); -// } - -// [Fact(DisplayName = "WithExpiredCoupon_ShouldReturns_CouponExpiredMessage")] -// public async Task CouponService_WithExpiredCoupon_ShouldReturns_CouponExpiredMessage() -// { -// var user = MakeMockUser(); - -// var coupon = MakeMockCoupon("test"); -// coupon.CartRule.StartOn = DateTime.Now.AddDays(-2); -// coupon.CartRule.EndOn = DateTime.Now.AddDays(-1); - -// var cartRuleUsage = MakeMockCartRuleUsage(user, coupon); - -// var couponService = MakeMockCouponService(user, coupon, cartRuleUsage); - -// var cartInfo = MakeMockCartInfoForCoupon(); - -// string couponToApply = "test"; - -// var result = await couponService.Validate(user.Id, couponToApply, cartInfo); - -// Assert.Equal($"The coupon {couponToApply} is expired.", result.ErrorMessage); -// } - -// [Fact(DisplayName = "WithFullyConsumedCoupon_ShouldReturns_CouponAllUsedMessage")] -// public async Task CouponService_WithFullyConsumedCoupon_ShouldReturns_CouponAllUsedMessage() -// { -// var user = MakeMockUser(); - -// var coupon = MakeMockCoupon("test", usageLimitForCoupon: 1); -// coupon.CartRule.StartOn = DateTime.Now.AddDays(-2); -// coupon.CartRule.EndOn = DateTime.Now.AddDays(1); - -// var cartRuleUsage = MakeMockCartRuleUsage(user, coupon); - -// var couponService = MakeMockCouponService(user, coupon, cartRuleUsage); - -// var cartInfo = MakeMockCartInfoForCoupon(); - -// string couponToApply = "test"; - -// var result = await couponService.Validate(user.Id, couponToApply, cartInfo); - -// Assert.Equal($"The coupon {couponToApply} is all used.", result.ErrorMessage); -// } - -// [Fact(DisplayName = "WithFullyConsumedCouponForUser_ShouldReturns_CouponAllUsedMessage")] -// public async Task CouponService_WithFullyConsumedCouponForUser_ShouldReturns_CouponAllUsedMessage() -// { -// var user = MakeMockUser(); - -// var coupon = MakeMockCoupon("test", usageLimitForCoupon: 2, usageLimitForUser: 1); -// coupon.CartRule.StartOn = DateTime.Now.AddDays(-2); -// coupon.CartRule.EndOn = DateTime.Now.AddDays(1); - -// var cartRuleUsage = MakeMockCartRuleUsage(user, coupon); - -// var couponService = MakeMockCouponService(user, coupon, cartRuleUsage); - -// var cartInfo = MakeMockCartInfoForCoupon(); - -// string couponToApply = "test"; - -// var result = await couponService.Validate(user.Id, couponToApply, cartInfo); - -// Assert.Equal($"You can use the coupon {couponToApply} only {coupon.CartRule.UsageLimitPerCustomer} times", result.ErrorMessage); -// } - -// [Fact(DisplayName = "WithNoCouponCartRuleToApplySpecified_ShouldThrow_InvalidOperationException")] -// public void CouponService_WithoutCouponCartRuleToApplySpecified_ShouldThrow_InvalidOperationException() -// { -// var user = MakeMockUser(); - -// var coupon = MakeMockCoupon("test", usageLimitForCoupon: 2, usageLimitForUser: 2); -// coupon.CartRule.StartOn = DateTime.Now.AddDays(-2); -// coupon.CartRule.EndOn = DateTime.Now.AddDays(1); - -// var cartRuleUsage = MakeMockCartRuleUsage(user, coupon); - -// var couponService = MakeMockCouponService(user, coupon, cartRuleUsage); - -// var cartInfo = MakeMockCartInfoForCoupon(); - -// string couponToApply = "test"; - -// Assert.ThrowsAsync(async () => await couponService.Validate(user.Id, couponToApply, cartInfo)); -// } - -// [Fact(DisplayName = "WithDiscountAndFixedCartRule_ShouldReturns_SameDiscountAmount")] -// public async Task CouponService_WithDiscountAndFixedCartRule_ShouldReturns_SameDiscountAmount() -// { -// var user = MakeMockUser(); - -// var coupon = MakeMockCoupon("test", usageLimitForCoupon: 2, usageLimitForUser: 2); -// coupon.CartRule.StartOn = DateTime.Now.AddDays(-2); -// coupon.CartRule.EndOn = DateTime.Now.AddDays(1); -// coupon.CartRule.DiscountAmount = 1M; -// coupon.CartRule.RuleToApply = "cart_fixed"; - -// var cartRuleUsage = MakeMockCartRuleUsage(user, coupon); - -// var couponService = MakeMockCouponService(user, coupon, cartRuleUsage); - -// var cartInfo = MakeMockCartInfoForCoupon(); - -// string couponToApply = "test"; - -// var result = await couponService.Validate(user.Id, couponToApply, cartInfo); - -// Assert.True(result.Succeeded); -// Assert.Equal(coupon.CartRule.DiscountAmount, result.DiscountAmount); -// } - -// [Fact(DisplayName = "WithDiscountAndByPercentCartRule_ShouldReturns_DiscountedAmount")] -// public async Task CouponService_WithDiscountAndByPercentCartRule_ShouldReturns_DiscountedAmount() -// { -// var user = MakeMockUser(); - -// var coupon = MakeMockCoupon("test", usageLimitForCoupon: 2, usageLimitForUser: 2); -// coupon.CartRule.StartOn = DateTime.Now.AddDays(-2); -// coupon.CartRule.EndOn = DateTime.Now.AddDays(1); -// coupon.CartRule.DiscountAmount = 10M; -// coupon.CartRule.RuleToApply = "by_percent"; -// coupon.CartRule.Products.Add(new CartRuleProduct { ProductId = 1 }); -// coupon.CartRule.Products.Add(new CartRuleProduct { ProductId = 2 }); - -// var cartRuleUsage = MakeMockCartRuleUsage(user, coupon); - -// var couponService = MakeMockCouponService(user, coupon, cartRuleUsage); - -// var cartInfo = MakeMockCartInfoForCoupon(); - -// string couponToApply = "test"; - -// var result = await couponService.Validate(user.Id, couponToApply, cartInfo); - -// Assert.True(result.Succeeded); -// Assert.Equal(1M, result.DiscountAmount); -// } - -// #region MockDataHelpers - -// private static CartInfoForCoupon MakeMockCartInfoForCoupon() -// { -// var cartInfoForCoupon = new CartInfoForCoupon -// { -// Items = new List -// { -// new CartItemForCoupon -// { -// ProductId = 1, -// Quantity = 1 -// }, -// new CartItemForCoupon -// { -// ProductId = 2, -// Quantity = 2 -// } -// } -// }; - -// return cartInfoForCoupon; -// } - -// private static CartRuleUsage MakeMockCartRuleUsage(User user, Coupon coupon) -// { -// var cartRule = new CartRuleUsage -// { -// UserId = user.Id, -// CouponId = coupon.Id -// }; - -// return cartRule; -// } - -// private static User MakeMockUser() -// { -// var user = new User { Id = 1, FullName = "Jane Smith" }; - -// return user; -// } - -// private static Coupon MakeMockCoupon(string code, bool isActive = true, int usageLimitForCoupon = 1, int usageLimitForUser = 1) -// { -// var coupon = new Coupon -// { -// Code = code, -// CartRule = new CartRule -// { -// IsActive = isActive, -// UsageLimitPerCoupon = usageLimitForCoupon, -// UsageLimitPerCustomer = usageLimitForUser, -// Products = new List {}, -// Categories = new List { } -// } -// }; - -// return coupon; -// } - -// private static IList MakeMockProducts() -// { -// var mockProduct1 = new Mock(); -// mockProduct1.SetupGet(p => p.Id).Returns(1); -// mockProduct1.Object.Price = 10M; - -// var mockProduct2 = new Mock(); -// mockProduct2.SetupGet(p => p.Id).Returns(2); -// mockProduct2.Object.Price = 20M; - - -// return new List -// { -// mockProduct1.Object, -// mockProduct2.Object -// }; -// } - -// private static CouponService MakeMockCouponService(User user, Coupon coupon, CartRuleUsage cartRuleUsage) -// { -// var coupons = new List { coupon }.AsQueryable(); - -// var cartRules = new List { cartRuleUsage }.AsQueryable(); - -// Mock> couponMockSet = BuildMockSetForCoupon(coupons); -// Mock> cartRuleUsageMockSet = BuildMockSetForCartRuleUsage(cartRules); -// Mock> productsMockSet = BuildMockSetForProduct(MakeMockProducts().AsQueryable()); - -// var contextOptions = new DbContextOptions(); -// var mockContext = new Mock(contextOptions); -// mockContext.Setup(c => c.Set()).Returns(couponMockSet.Object); -// mockContext.Setup(c => c.Set()).Returns(cartRuleUsageMockSet.Object); -// mockContext.Setup(c => c.Set()).Returns(productsMockSet.Object); - -// var mockWorkContext = new Mock(); -// mockWorkContext.Setup(x => x.GetCurrentUser()).Returns(Task.FromResult(user)); - -// var couponRepository = new Repository(mockContext.Object); -// var cartUsageRepository = new Repository(mockContext.Object); -// var productRepository = new Repository(mockContext.Object); - - -// var couponService = new CouponService(couponRepository, cartUsageRepository, productRepository, mockWorkContext.Object); - -// return couponService; -// } - -// private static Mock> BuildMockSetForCoupon(IQueryable coupons) -// { -// var mockSet = new Mock>(); -// mockSet.As>() -// .Setup(m => m.GetAsyncEnumerator(CancellationToken.None)) -// .Returns(new TestAsyncEnumerator(coupons.GetEnumerator())); - -// mockSet.As>() -// .Setup(m => m.Provider) -// .Returns(new TestAsyncQueryProvider(coupons.Provider)); - -// mockSet.As>().Setup(m => m.Expression).Returns(coupons.Expression); -// mockSet.As>().Setup(m => m.ElementType).Returns(coupons.ElementType); -// mockSet.As>().Setup(m => m.GetEnumerator()).Returns(() => coupons.GetEnumerator()); - -// return mockSet; -// } - -// private static Mock> BuildMockSetForCartRuleUsage(IQueryable cartRules) -// { -// var mockSet = new Mock>(); -// mockSet.As>() -// .Setup(m => m.GetAsyncEnumerator(CancellationToken.None)) -// .Returns(new TestAsyncEnumerator(cartRules.GetEnumerator())); - -// mockSet.As>() -// .Setup(m => m.Provider) -// .Returns(new TestAsyncQueryProvider(cartRules.Provider)); - -// mockSet.As>().Setup(m => m.Expression).Returns(cartRules.Expression); -// mockSet.As>().Setup(m => m.ElementType).Returns(cartRules.ElementType); -// mockSet.As>().Setup(m => m.GetEnumerator()).Returns(() => cartRules.GetEnumerator()); - -// return mockSet; -// } - -// private static Mock> BuildMockSetForProduct(IQueryable products) -// { -// var mockSet = new Mock>(); -// mockSet.As>() -// .Setup(m => m.GetAsyncEnumerator(CancellationToken.None)) -// .Returns(new TestAsyncEnumerator(products.GetEnumerator())); - -// mockSet.As>() -// .Setup(m => m.Provider) -// .Returns(new TestAsyncQueryProvider(products.Provider)); - -// mockSet.As>().Setup(m => m.Expression).Returns(products.Expression); -// mockSet.As>().Setup(m => m.ElementType).Returns(products.ElementType); -// mockSet.As>().Setup(m => m.GetEnumerator()).Returns(() => products.GetEnumerator()); - - -// return mockSet; -// } - -// #endregion -// } -//}