Bug Fixes

This commit is contained in:
thermalthrottle
2021-03-20 12:55:59 +02:00
parent 45742a32a4
commit 0b8babd520
5 changed files with 97 additions and 18 deletions

View File

@@ -14,6 +14,7 @@ namespace Business.Business.Sales
private ProductController productCtrl; private ProductController productCtrl;
public DealController(User currentUser) public DealController(User currentUser)
{ {
this.productCtrl = new ProductController(currentUser);
this.currentUser = currentUser; this.currentUser = currentUser;
} }
public void Add(int productId, double Amount, DateTime time) public void Add(int productId, double Amount, DateTime time)
@@ -21,6 +22,7 @@ namespace Business.Business.Sales
if (Amount > 0) if (Amount > 0)
{ {
var deal = new Deal(currentUser.Id, productId, Amount, time); var deal = new Deal(currentUser.Id, productId, Amount, time);
productCtrl.RemoveAmount(productId, Amount);
context.Deal.Add(deal); context.Deal.Add(deal);
context.SaveChanges(); context.SaveChanges();
} }
@@ -37,6 +39,7 @@ namespace Business.Business.Sales
productCtrl = new ProductController(currentUser); productCtrl = new ProductController(currentUser);
var productId = productCtrl.Get(productName).Id; var productId = productCtrl.Get(productName).Id;
var deal = new Deal(currentUser.Id, productId, Amount, time); var deal = new Deal(currentUser.Id, productId, Amount, time);
productCtrl.RemoveAmount(productId, Amount);
context.Deal.Add(deal); context.Deal.Add(deal);
context.SaveChanges(); context.SaveChanges();
} }
@@ -53,6 +56,7 @@ namespace Business.Business.Sales
var deal = Get(id); var deal = Get(id);
if (deal != null) if (deal != null)
{ {
productCtrl.AddAmount(deal.ProductId, deal.Amount);
context.Deal.Remove(deal); context.Deal.Remove(deal);
context.SaveChanges(); context.SaveChanges();
} }

View File

@@ -308,6 +308,46 @@ namespace Business.Business.Sales
throw new ArgumentException("Insufficient Role!"); throw new ArgumentException("Insufficient Role!");
} }
} }
public void AddAmount(int productId ,double Amount)
{
if (currentUser.RoleId > 1)
{
var product = Get(productId);
if (product != null)
{
product.AmountInStock += Amount;
context.SaveChanges();
}
else
{
throw new ArgumentException("Product id not valid!");
}
}
else
{
throw new ArgumentException("Insufficient Role!");
}
}
public void RemoveAmount(int productId, double Amount)
{
if (currentUser.RoleId > 1)
{
var product = Get(productId);
if (product != null)
{
product.AmountInStock -= Amount;
context.SaveChanges();
}
else
{
throw new ArgumentException("Product id not valid!");
}
}
else
{
throw new ArgumentException("Insufficient Role!");
}
}
/// <summary> /// <summary>
/// Deletes the given product /// Deletes the given product
@@ -318,6 +358,7 @@ namespace Business.Business.Sales
/// Requires Admin role /// Requires Admin role
/// </remarks> /// </remarks>
public void Delete(int id) public void Delete(int id)
{ {
if (currentUser.RoleId == 3) if (currentUser.RoleId == 3)

View File

@@ -16,6 +16,7 @@ namespace Business.Business.Sales
public StockController(User currentUser) public StockController(User currentUser)
{ {
this.productCtrl = new ProductController(currentUser);
this.currentUser = currentUser; this.currentUser = currentUser;
} }
@@ -63,8 +64,7 @@ namespace Business.Business.Sales
if (Amount > 0) if (Amount > 0)
{ {
var stock = new Stock(currentUser.Id, productId, Amount, time); var stock = new Stock(currentUser.Id, productId, Amount, time);
productCtrl = new ProductController(currentUser); productCtrl.AddAmount(productId, Amount);
productCtrl.Get(productId).AmountInStock += Amount;
context.Stock.Add(stock); context.Stock.Add(stock);
context.SaveChanges(); context.SaveChanges();
} }
@@ -89,7 +89,7 @@ namespace Business.Business.Sales
productCtrl = new ProductController(currentUser); productCtrl = new ProductController(currentUser);
var productId = productCtrl.Get(productName).Id; var productId = productCtrl.Get(productName).Id;
var stock = new Stock(currentUser.Id, productId, Amount, time); var stock = new Stock(currentUser.Id, productId, Amount, time);
productCtrl.Get(productId).AmountInStock += Amount; productCtrl.AddAmount(productId, Amount);
context.Stock.Add(stock); context.Stock.Add(stock);
context.SaveChanges(); context.SaveChanges();
} }
@@ -110,15 +110,16 @@ namespace Business.Business.Sales
{ {
if (currentUser.RoleId == 3 ) if (currentUser.RoleId == 3 )
{ {
var user = Get(id); var stock = Get(id);
if (user != null) if (stock != null)
{ {
context.Stock.Remove(user); productCtrl.RemoveAmount(stock.ProductId, stock.Amount);
context.Stock.Remove(stock);
context.SaveChanges(); context.SaveChanges();
} }
else else
{ {
throw new ArgumentException("User not found"); throw new ArgumentException("Stock Id not found!");
} }
} }

View File

@@ -25,6 +25,11 @@ namespace Business.Business.UserManagment.Controllers
this.context = new LuminousContext(); this.context = new LuminousContext();
} }
public RoleController(LuminousContext context)
{
this.context = context;
}
/// <summary> /// <summary>
/// Constructor that accepts a user object /// Constructor that accepts a user object
/// </summary> /// </summary>
@@ -46,7 +51,7 @@ namespace Business.Business.UserManagment.Controllers
/// User object is used for role checking /// User object is used for role checking
/// </remarks> /// </remarks>
public RoleController(LuminousContext context, User currentUser) public RoleController(User currentUser, LuminousContext context)
{ {
this.context = context; this.context = context;
this.currentUser = currentUser; this.currentUser = currentUser;

View File

@@ -8,6 +8,7 @@ using System.Linq;
using Models; using Models;
using Business.Business.UserManagment; using Business.Business.UserManagment;
using Business.Business.UserManagment.Controllers; using Business.Business.UserManagment.Controllers;
using System;
namespace LuminousUnitTests namespace LuminousUnitTests
{ {
@@ -15,26 +16,45 @@ namespace LuminousUnitTests
{ {
private UserController userctrl; private UserController userctrl;
private RoleController rolectrl; private RoleController rolectrl;
private Mock<LuminousContext> testContext;
private Mock<DbSet<User>> UserMock;
private Mock<DbSet<Role>> RoleMock;
private IQueryable<User> testUsers; private IQueryable<User> testUsers;
private IQueryable<Role> testRoles;
[SetUp] [SetUp]
public void Setup() public void Setup()
{ {
var mock = new Mock<DbSet<User>>(); UserMock = new Mock<DbSet<User>>();
var mocka = new Mock<DbSet<User>>(); RoleMock = new Mock<DbSet<Role>>();
testUsers = new List<User> testUsers = new List<User>
{ {
new User(){ Name = "Admin", Password = "adm123", RoleId = 1}, new User(){ Name = "Admin", Password = "adm123", RoleId = 1},
new User(){ Name = "Goso", Password = "goso123", RoleId = 2}, new User(){ Name = "Goso", Password = "goso123", RoleId = 2},
new User(){ Name = "Pesho", Password = "peso123", RoleId = 3}, new User(){ Name = "Pesho", Password = "peso123", RoleId = 3},
}.AsQueryable(); }.AsQueryable();
mock.As<IQueryable<User>>().Setup(m => m.Provider).Returns(testUsers.Provider); testRoles = new List<Role>
mock.As<IQueryable<User>>().Setup(m => m.Expression).Returns(testUsers.Expression); {
mock.As<IQueryable<User>>().Setup(m => m.ElementType).Returns(testUsers.ElementType); new Role { Name = "Cashier"},
mock.As<IQueryable<User>>().Setup(m => m.GetEnumerator()).Returns(testUsers.GetEnumerator()); new Role { Name = "Manager"},
var testContext = new Mock<LuminousContext>(); new Role { Name = "Admin" }
testContext.Setup(s => s.User).Returns(mock.Object); }.AsQueryable();
UserMock.As<IQueryable<User>>().Setup(m => m.Provider).Returns(testUsers.Provider);
UserMock.As<IQueryable<User>>().Setup(m => m.Expression).Returns(testUsers.Expression);
UserMock.As<IQueryable<User>>().Setup(m => m.ElementType).Returns(testUsers.ElementType);
UserMock.As<IQueryable<User>>().Setup(m => m.GetEnumerator()).Returns(testUsers.GetEnumerator());
RoleMock.As<IQueryable<User>>().Setup(m => m.Provider).Returns(testUsers.Provider);
RoleMock.As<IQueryable<User>>().Setup(m => m.Expression).Returns(testUsers.Expression);
RoleMock.As<IQueryable<User>>().Setup(m => m.ElementType).Returns(testUsers.ElementType);
RoleMock.As<IQueryable<User>>().Setup(m => m.GetEnumerator()).Returns(testUsers.GetEnumerator());
testContext = new Mock<LuminousContext>();
testContext.Setup(s => s.User).Returns(UserMock.Object);
testContext.Setup(s => s.Role).Returns(RoleMock.Object);
userctrl = new UserController(testUsers.ToList()[0], testContext.Object); userctrl = new UserController(testUsers.ToList()[0], testContext.Object);
rolectrl = new RoleController(testContext.Object);
} }
[Test] [Test]
@@ -53,9 +73,17 @@ namespace LuminousUnitTests
[Test] [Test]
public void UserController_AddItem() public void UserController_AddItem()
{ {
rolectrl.CreateInitialRoles();
RoleMock.Verify(m => m.AddRange(It.IsAny<Role[]>()));
testContext.Verify(m => m.SaveChanges());
userctrl.RegisterItem("Penka", "penka123", 3); userctrl.RegisterItem("Penka", "penka123", 3);
List<User> users = userctrl.GetAll().ToList(); UserMock.Verify(m => m.Add(It.IsAny<User>()));
Assert.AreEqual(users.Count, 4); testContext.Verify(m => m.SaveChanges());
}
public void UserController_DeleteUser()
{
userctrl.Delete(1);
UserMock.Verify(m => m.Remove(It.IsAny<User>()));
} }
} }
} }