Skip to content

Commit 70fbd80

Browse files
committed
Refactoring
1 parent 64c00e2 commit 70fbd80

File tree

1 file changed

+69
-56
lines changed

1 file changed

+69
-56
lines changed
Lines changed: 69 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,9 @@
11
using System;
22
using System.Collections.Generic;
3-
using System.Diagnostics;
43
using System.Linq;
5-
using System.Linq.Expressions;
64
using System.Threading;
75
using System.Threading.Tasks;
86
using MediatR;
9-
using Microsoft.AspNetCore.Components.Forms;
10-
using Microsoft.EntityFrameworkCore;
117
using MockQueryable.Moq;
128
using Moq;
139
using SimplCommerce.Infrastructure.Data;
@@ -21,33 +17,75 @@ namespace SimplCommerce.Module.Inventory.Tests
2117
{
2218
public class StockServiceTests
2319
{
24-
private Mock<IRepository<Stock>> _stockRepoMock;
25-
private Mock<IRepository<Product>> _productRepoMock;
26-
private Mock<IMediator> _mediatorMock;
20+
private Mock<IRepository<Stock>> _stockRepoMock;
21+
private Mock<IRepository<Product>> _productRepoMock;
22+
23+
private readonly Mock<IMediator> _mediatorMock;
2724
private readonly Mock<IRepository<StockHistory>> _stockHistoryRepoMock;
28-
private readonly Warehouse _testWarehouse = new Warehouse(100) {VendorId = 123};
25+
private readonly Warehouse _testWarehouse = new(100) { VendorId = 123 };
2926

3027
public StockServiceTests()
3128
{
3229
_stockHistoryRepoMock = new Mock<IRepository<StockHistory>>();
3330
_mediatorMock = new Mock<IMediator>();
3431
}
3532

36-
/* [Theory]
37-
[InlineData(100, 50)]
38-
[InlineData(1000, 560)]
39-
[InlineData(13, 5)]
40-
[InlineData(143, 0)]
41-
public async Task AddAllProductsTest(int productsCount, int stocksCount)
33+
//[Theory]
34+
//[InlineData(100, 50)]
35+
//[InlineData(1000, 560)]
36+
//[InlineData(13, 5)]
37+
//[InlineData(143, 0)]
38+
//public async Task AddAllProductsTest(int productsCount, int stocksCount)
39+
//{
40+
// InitializeMocks(productsCount, stocksCount);
41+
42+
// var service = new StockService(_stockRepoMock.Object, _productRepoMock.Object,
43+
// _stockHistoryRepoMock.Object, _mediatorMock.Object);
44+
// await service.AddAllProduct(_testWarehouse);
45+
46+
// _stockRepoMock.Verify(m =>
47+
// m.AddRange(It.Is<IEnumerable<Stock>>(arg => arg.Count() == productsCount - stocksCount)));
48+
//}
49+
50+
[Theory]
51+
[InlineData(1, 1, -5)]
52+
[InlineData(1, 1, -10)]
53+
[InlineData(1, 1, 7)]
54+
[InlineData(1, 1, 0)]
55+
[InlineData(1, 1, -2)]
56+
public async Task UpdateStockTest(int productsCount, int stocksCount, int adjustedQuantity)
4257
{
58+
// Arrange
4359
InitializeMocks(productsCount, stocksCount);
44-
var service = new StockService(_stockRepoMock.Object, _productRepoMock.Object,
45-
_stockHistoryRepoMock.Object, _mediatorMock.Object);
46-
await service.AddAllProduct(_testWarehouse);
4760

48-
_stockRepoMock.Verify(m =>
49-
m.AddRange(It.Is<IEnumerable<Stock>>(arg => arg.Count() == productsCount - stocksCount)));
50-
}*/
61+
var service = new StockService(
62+
_stockRepoMock.Object,
63+
_productRepoMock.Object,
64+
_stockHistoryRepoMock.Object,
65+
_mediatorMock.Object);
66+
67+
var product = _productRepoMock.Object
68+
.Query()
69+
.FirstOrDefault();
70+
var stock = _stockRepoMock.Object
71+
.Query()
72+
.FirstOrDefault(o => o.ProductId == product.Id && o.WarehouseId == _testWarehouse.Id);
73+
var prevStockQuantity = stock.Quantity;
74+
var request = new StockUpdateRequest
75+
{
76+
AdjustedQuantity = adjustedQuantity,
77+
ProductId = product.Id,
78+
WarehouseId = _testWarehouse.Id,
79+
};
80+
81+
// Act
82+
await service.UpdateStock(request);
83+
84+
85+
// Assert
86+
var newStockQuantity = stock.Quantity;
87+
Assert.Equal(Math.Max(0, prevStockQuantity + adjustedQuantity), newStockQuantity);
88+
}
5189

5290
private void InitializeMocks(int productsCount, int stocksCount)
5391
{
@@ -56,11 +94,16 @@ private void InitializeMocks(int productsCount, int stocksCount)
5694
for (int i = 1; i <= stocks.Length; i++)
5795
{
5896
stocks[i - 1] = new Stock
59-
{ ProductId = i, Quantity = 5, WarehouseId = _testWarehouse.Id };
97+
{
98+
ProductId = i,
99+
Quantity = 5,
100+
WarehouseId = _testWarehouse.Id
101+
};
60102
}
61103

62104
var stocksMock = stocks.BuildMock();
63-
_stockRepoMock.Setup(x => x.Query()).Returns(stocksMock);
105+
_stockRepoMock.Setup(x => x.Query())
106+
.Returns(stocksMock);
64107
_stockRepoMock.Setup(x => x.AddRange(It.IsAny<IEnumerable<Stock>>()));
65108

66109
_productRepoMock = new Mock<IRepository<Product>>();
@@ -72,43 +115,13 @@ private void InitializeMocks(int productsCount, int stocksCount)
72115
}
73116

74117
var productsMock = products.BuildMock();
75-
_productRepoMock.Setup(x => x.Query()).Returns(productsMock);
76-
118+
_productRepoMock
119+
.Setup(x => x.Query())
120+
.Returns(productsMock);
121+
77122
_mediatorMock
78123
.Setup(m => m.Send(It.IsAny<ProductBackInStock>(), It.IsAny<CancellationToken>()))
79124
.ReturnsAsync(Task.CompletedTask);
80125
}
81-
82-
[Theory]
83-
[InlineData(1, 1, -5)]
84-
[InlineData(1, 1, -10)]
85-
[InlineData(1, 1, 7)]
86-
[InlineData(1, 1, 0)]
87-
[InlineData(1, 1, -2)]
88-
public async Task UpdateStockTest(int productsCount, int stocksCount, int adjustedQuantity)
89-
{
90-
InitializeMocks(productsCount, stocksCount);
91-
92-
var service = new StockService(_stockRepoMock.Object, _productRepoMock.Object,
93-
_stockHistoryRepoMock.Object, _mediatorMock.Object);
94-
95-
var product = _productRepoMock.Object.Query().FirstOrDefault();
96-
var stock = _stockRepoMock.Object
97-
.Query()
98-
.FirstOrDefault(o => o.ProductId == product.Id && o.WarehouseId == _testWarehouse.Id);
99-
var prevStockQuantity = stock.Quantity;
100-
101-
var request = new StockUpdateRequest
102-
{
103-
AdjustedQuantity = adjustedQuantity,
104-
ProductId = product.Id,
105-
WarehouseId = _testWarehouse.Id,
106-
};
107-
108-
await service.UpdateStock(request);
109-
110-
var newStockQuantity = stock.Quantity;
111-
Assert.Equal(Math.Max(0, prevStockQuantity + adjustedQuantity), newStockQuantity);
112-
}
113126
}
114127
}

0 commit comments

Comments
 (0)