public async Task PriceHistory_ValidIdPassed_CorrectAndValidObjectReturned() { var context = new MockStockContext(Data.ProductStocks(), Data.Prices(), null); var controller = new StockController(context, null); const int id = 1; var result = await controller.PriceHistory(id); var validPrices = Data.Prices().Where(p => p.ProductStockId == id).ToList(); Assert.IsNotNull(result); var objectResult = result.Result as OkObjectResult; Assert.IsNotNull(objectResult); var returnedResult = objectResult.Value as ProductStockPricingHistoryDto; Assert.IsNotNull(returnedResult); Assert.AreEqual(returnedResult.ProductID, Data.ProductStocks()[id - 1].ProductId); Assert.AreEqual(returnedResult.Stock, Data.ProductStocks()[id - 1].Stock); Assert.AreEqual(returnedResult.Prices.Count, validPrices.Count); foreach (var prices in returnedResult.Prices) { Assert.AreEqual(prices.Id, validPrices.FirstOrDefault(p => p.Id == prices.Id)?.Id); Assert.AreEqual(prices.Date, validPrices.FirstOrDefault(p => p.Id == prices.Id)?.Date); Assert.AreEqual(prices.ProductPrice, validPrices.FirstOrDefault(p => p.Id == prices.Id)?.ProductPrice); Assert.AreEqual(prices.ProductStockId, validPrices.FirstOrDefault(p => p.Id == prices.Id)?.ProductStockId); } }
public async Task POSTAdjustCost_ValidIdAndCostPassed_PriceAddedToDatabaseAndPricePointerChanged() { var context = new MockStockContext(Data.ProductStocks(), Data.Prices(), null); var controller = new StockController(context, null); const int id = 2; const double price = 4.32; var previous = Data.ProductStockDtos().FirstOrDefault(ps => ps.ProductStock.Id == id); var expected = previous; expected.Price = new Price { Id = 10, ProductPrice = price, ProductStockId = expected.ProductStock.Id }; expected.ProductStock.PriceId = 10; var result = await controller.AdjustCost(id, price); var after = await context.GetProductStockAsync(id); Assert.IsNotNull(result); var okResult = result as OkResult; Assert.IsNotNull(okResult); Assert.AreEqual(previous.ProductStock.Id, after.ProductStock.Id); //Just check Id to make sure the correct product is returned. Assert.AreEqual(expected.Price.Id, after.Price.Id); Assert.AreEqual(expected.Price.ProductPrice, after.Price.ProductPrice); Assert.AreEqual(expected.Price.ProductStockId, after.Price.ProductStockId); Assert.AreEqual(expected.ProductStock.PriceId, after.ProductStock.PriceId); }
public async Task OrderRequest_IncorrectProductReturned_ReturnInternalServerError() { const int id = 2; const string supplier = "undercutters"; var expectedHttpResponse = Data.VendorProducts().FirstOrDefault(vp => vp.Id == id + 1); var expectedJson = JsonConvert.SerializeObject(expectedHttpResponse); var expectedResponse = new HttpResponseMessage { StatusCode = System.Net.HttpStatusCode.OK, Content = new StringContent(expectedJson, Encoding.UTF8, "application/json") }; var httpClient = new HttpClient(CreateHttpMock(expectedResponse).Object); var context = new MockStockContext(Data.ProductStocks(), Data.Prices(), null); var controller = new StockController(context, null) { HttpClient = httpClient }; var result = await controller.OrderRequest(id, supplier); Assert.IsNotNull(result); var objectResult = result as StatusCodeResult; Assert.IsNotNull(objectResult); Assert.AreEqual(objectResult.StatusCode, StatusCodes.Status500InternalServerError); }
public void Low_OutOfBoundsCountPassed_AllValuesReturnedCorrectly() { var context = new MockStockContext(Data.ProductStocks(), Data.Prices(), null); var controller = new StockController(context, null); const int count = OutOfBoundsId; var result = controller.Low(OutOfBoundsId); var expectedResult = Data.ProductStockDtos().OrderBy(ps => ps.ProductStock.Stock).Take(count).ToList(); Assert.IsNotNull(result); var priceResult = result.Result as ViewResult; Assert.IsNotNull(priceResult); var objectResult = priceResult.Model as IEnumerable <ProductStockDto>; Assert.IsNotNull(objectResult); var returnedListResult = objectResult.ToList(); Assert.AreEqual(returnedListResult.Count, expectedResult.Count); for (int i = 0; i < expectedResult.Count; i++) { Assert.AreEqual(returnedListResult[i].Price.Date, expectedResult[i].Price.Date); Assert.AreEqual(returnedListResult[i].Price.Id, expectedResult[i].Price.Id); Assert.AreEqual(returnedListResult[i].Price.ProductPrice, expectedResult[i].Price.ProductPrice); Assert.AreEqual(returnedListResult[i].Price.ProductStockId, expectedResult[i].Price.ProductStockId); Assert.AreEqual(returnedListResult[i].ProductStock.Id, expectedResult[i].ProductStock.Id); Assert.AreEqual(returnedListResult[i].ProductStock.Stock, expectedResult[i].ProductStock.Stock); Assert.AreEqual(returnedListResult[i].ProductStock.PriceId, expectedResult[i].ProductStock.PriceId); Assert.AreEqual(returnedListResult[i].ProductStock.ProductId, expectedResult[i].ProductStock.ProductId); } }
public async Task GetAll_AllValid_AllReturned() { var context = new MockStockContext(Data.ProductStocks(), Data.Prices(), null); var controller = new StockController(context, null); var result = await controller.ProductStocks(); Assert.IsNotNull(result); var objectResult = result.Result as OkObjectResult; Assert.IsNotNull(objectResult); var enumerableResult = objectResult.Value as IEnumerable <ProductStockDto>; Assert.IsNotNull(enumerableResult); var listResult = enumerableResult.ToList(); foreach (var p in listResult) { Assert.AreEqual(p.Price.Date, Data.Prices()[p.Price.Id - 1].Date); Assert.AreEqual(p.Price.Id, Data.Prices()[p.Price.Id - 1].Id); Assert.AreEqual(p.Price.ProductPrice, Data.Prices()[p.Price.Id - 1].ProductPrice); Assert.AreEqual(p.Price.ProductStockId, Data.Prices()[p.Price.Id - 1].ProductStockId); Assert.AreEqual(p.ProductStock.Id, Data.ProductStocks()[p.ProductStock.Id - 1].Id); Assert.AreEqual(p.ProductStock.Stock, Data.ProductStocks()[p.ProductStock.Id - 1].Stock); Assert.AreEqual(p.ProductStock.PriceId, Data.ProductStocks()[p.ProductStock.Id - 1].PriceId); Assert.AreEqual(p.ProductStock.ProductId, Data.ProductStocks()[p.ProductStock.Id - 1].ProductId); } }
public void Low_OutOfBoundsNegativePassed_NotFoundReturned() { var context = new MockStockContext(Data.ProductStocks(), Data.Prices(), null); var controller = new StockController(context, null); const int count = NegativeId; var result = controller.Low(count); Assert.IsNotNull(result); var priceResult = result.Result as NotFoundResult; Assert.IsNotNull(priceResult); }
public async Task PriceHistory_OutOfBoundsNegativeId_NotFoundReturned() { var context = new MockStockContext(Data.ProductStocks(), Data.Prices(), null); var controller = new StockController(context, null); const int id = NegativeId; var result = await controller.PriceHistory(id); Assert.IsNotNull(result); var objectResult = result.Result as NotFoundResult; Assert.IsNotNull(objectResult); }
public async Task GetDetails_OutOfBoundsPositiveId_NotFoundReturned() { var context = new MockStockContext(Data.ProductStocks(), Data.Prices(), null); var controller = new StockController(context, null); const int id = OutOfBoundsId; var result = await controller.Details(id); Assert.IsNotNull(result); var objectResult = result.Result as NotFoundResult; Assert.IsNotNull(objectResult); }
public async Task VendorProducts_EmtpySupplierPassed_ReturnNotFound() { var context = new MockStockContext(Data.ProductStocks(), Data.Prices(), null); var controller = new StockController(context, null); const string supplier = ""; var result = await controller.VendorProducts(supplier); Assert.IsNotNull(result); var objectResult = result as NotFoundResult; Assert.IsNotNull(objectResult); }
public async Task POSTAdjustCost_ZeroCostPassed_ReturnBadRequest() { var context = new MockStockContext(Data.ProductStocks(), Data.Prices(), null); var controller = new StockController(context, null); const int id = 2; const double price = 0; var result = await controller.AdjustCost(id, price); Assert.IsNotNull(result); var objectResult = result as BadRequestResult; Assert.IsNotNull(objectResult); }
public async Task OrderRequest_NegativeIdPassed_ReturnNotFound() { var context = new MockStockContext(Data.ProductStocks(), Data.Prices(), null); var controller = new StockController(context, null); const int id = NegativeId; const string supplier = "undercutters"; var result = await controller.OrderRequest(id, supplier); Assert.IsNotNull(result); var objectResult = result as NotFoundResult; Assert.IsNotNull(objectResult); }
public async Task VendorProducts_ValidSupplierPassed_ReturnAllSupplierProducts() { var expectedHttpResponse = Data.VendorProducts(); var expectedJson = JsonConvert.SerializeObject(expectedHttpResponse); var expectedResponse = new HttpResponseMessage { StatusCode = System.Net.HttpStatusCode.OK, Content = new StringContent(expectedJson, Encoding.UTF8, "application/json") }; var httpClient = new HttpClient(CreateHttpMock(expectedResponse).Object); var context = new MockStockContext(Data.ProductStocks(), Data.Prices(), null); var controller = new StockController(context, null) { HttpClient = httpClient }; const string supplier = "undercutters"; var expected = Data.VendorProducts(); var result = await controller.VendorProducts(supplier); Assert.IsNotNull(result); var objectResult = result as ViewResult; Assert.IsNotNull(objectResult); var viewResult = objectResult.Model as VendorProductIndexModel; Assert.IsNotNull(viewResult); var productsResult = viewResult.Products.ToList(); Assert.IsNotNull(productsResult); Assert.AreEqual(expected.Count, productsResult.Count); for (int i = 0; i < expected.Count; i++) { Assert.AreEqual(expected[i].Id, productsResult[i].Id); Assert.AreEqual(expected[i].BrandId, productsResult[i].BrandId); Assert.AreEqual(expected[i].BrandName, productsResult[i].BrandName); Assert.AreEqual(expected[i].CategoryId, productsResult[i].CategoryId); Assert.AreEqual(expected[i].CategoryName, productsResult[i].CategoryName); Assert.AreEqual(expected[i].Description, productsResult[i].Description); Assert.AreEqual(expected[i].Ean, productsResult[i].Ean); Assert.AreEqual(expected[i].ExpectedRestock, productsResult[i].ExpectedRestock); Assert.AreEqual(expected[i].InStock, productsResult[i].InStock); Assert.AreEqual(expected[i].Name, productsResult[i].Name); Assert.AreEqual(expected[i].Price, productsResult[i].Price); } }
public async Task GetAll_EmptyModel_EmptyListReturned() { var context = new MockStockContext(new List <ProductStock>(), new List <Price>(), null); var controller = new StockController(context, null); var result = await controller.ProductStocks(); Assert.IsNotNull(result); var objectResult = result.Result as OkObjectResult; Assert.IsNotNull(objectResult); var enumerableResult = objectResult.Value as IEnumerable <ProductStockDto>; Assert.IsNotNull(enumerableResult); var listResult = enumerableResult.ToList(); Assert.AreEqual(listResult.Count, 0); }
public async Task GETAdjustCost_InvalidIdPassed_NotFoundReturned() { var context = new MockStockContext(Data.ProductStocks(), Data.Prices(), null); var controller = new StockController(context, null); var resultOutOfBounds = await controller.AdjustCost(OutOfBoundsId); var resultNegative = await controller.AdjustCost(NegativeId); Assert.IsNotNull(resultOutOfBounds); var objectResultOutOfBounds = resultOutOfBounds.Result as NotFoundResult; Assert.IsNotNull(objectResultOutOfBounds); Assert.IsNotNull(resultNegative); var objectResultNegative = resultNegative.Result as NotFoundResult; Assert.IsNotNull(objectResultNegative); }
public void ShouldHaveBuyWhenTotalAccountIs2000([Values(2.85, 12.45, 2.95)] decimal preco, [Range(120, 120, 120)] int qte) { var context = MockStockContext.GenerateContext(InternalUserId, 2000); var firstOperation = context.Operations.FirstOrDefault(); firstOperation.CurrentPrice = preco; firstOperation.Quantity = qte; var user = context.Users.FirstOrDefault(f => f.Id == InternalUserId); decimal total = context.Operations.Where(f => f.OperationType == OperationTypeEnum.Buy).ToList().Sum(f => f.TotalValue); _mockUserService.Setup(f => f.CanBuy(It.IsAny <User>(), total)).Returns(true); var canBuy = _mockUserService.Object.CanBuy(user, total); var result = service.CanBuy(user, total); Assert.IsTrue(result); Assert.AreEqual(canBuy, result); }
public void ShouldNotBuyWhenTotalAccountIsLtTotalBalance(int totalBalance) { List <Acao> acoes = new List <Acao>() { new Acao() { Quantity = 120, Value = 2.85M, Operation = OperationTypeEnum.Buy }, new Acao() { Quantity = 43, Value = 2.85M, Operation = OperationTypeEnum.Buy }, new Acao() { Quantity = 18, Value = 2.85M, Operation = OperationTypeEnum.Buy }, new Acao() { Quantity = 25, Value = 2.85M, Operation = OperationTypeEnum.Buy }, new Acao() { Quantity = 32, Value = 2.85M, Operation = OperationTypeEnum.Buy }, new Acao() { Quantity = 44, Value = 2.85M, Operation = OperationTypeEnum.Buy }, }; var context = MockStockContext.GenerateContext(InternalUserId, totalBalance, acoes); var user = context.Users.FirstOrDefault(f => f.Id == InternalUserId); decimal total = context.Operations.Where(f => f.OperationType == OperationTypeEnum.Buy).ToList().Sum(f => f.TotalValue); _mockUserService.Setup(f => f.CanBuy(It.IsAny <User>(), total)).Returns(false); var canBuy = _mockUserService.Object.CanBuy(user, total); var verif = new Mock <IUserService>().Object; var result = verif.CanBuy(user, total); Assert.IsFalse(result); Assert.AreEqual(canBuy, result); }
public void ShouldNotSellWhenHaveMinusTradesThanRequested() { List <Acao> acoes = new List <Acao>() { new Acao() { Quantity = 120, Value = 2.85M, Operation = OperationTypeEnum.Sell }, new Acao() { Quantity = 43, Value = 2.85M, Operation = OperationTypeEnum.Sell }, new Acao() { Quantity = 18, Value = 2.85M, Operation = OperationTypeEnum.Sell }, new Acao() { Quantity = 25, Value = 2.85M, Operation = OperationTypeEnum.Sell }, new Acao() { Quantity = 32, Value = 2.85M, Operation = OperationTypeEnum.Sell }, new Acao() { Quantity = 44, Value = 2.85M, Operation = OperationTypeEnum.Sell }, }; int quantity = 200; var context = MockStockContext.GenerateContext(InternalUserId, 2000); var user = context.Users.FirstOrDefault(f => f.Id == InternalUserId); _mockUserService.Setup(f => f.CanSell(It.IsAny <User>(), It.IsAny <string>(), quantity)).Returns(false); var canBuy = _mockUserService.Object.CanSell(user, "VAL3", quantity); var result = service.CanSell(user, "VAL3", quantity); Assert.IsFalse(result); Assert.AreEqual(canBuy, result); }
public async Task POSTAdjustCost_OutOfBoundsAndNegativeIdPassed_ReturnNotFound() { var context = new MockStockContext(Data.ProductStocks(), Data.Prices(), null); var controller = new StockController(context, null); const double price = 4.32; var resultOutOfBounds = await controller.AdjustCost(OutOfBoundsId, price); var resultNegative = await controller.AdjustCost(NegativeId, price); Assert.IsNotNull(resultOutOfBounds); var objectResultOutOfBounds = resultOutOfBounds as NotFoundResult; Assert.IsNotNull(objectResultOutOfBounds); Assert.IsNotNull(resultNegative); var objectResultNegative = resultNegative as NotFoundResult; Assert.IsNotNull(objectResultNegative); }
public async Task GetDetails_ValidIdPassed_CorrectAndValidObjectReturned() { var context = new MockStockContext(Data.ProductStocks(), Data.Prices(), null); var controller = new StockController(context, null); const int id = 2; var result = await controller.Details(id); Assert.IsNotNull(result); var objectResult = result.Result as OkObjectResult; Assert.IsNotNull(objectResult); var returnedResult = objectResult.Value as ProductStockDetailsDto; Assert.IsNotNull(returnedResult); Assert.AreEqual(returnedResult.ProductID, Data.ProductStocks()[id - 1].ProductId); Assert.AreEqual(returnedResult.Price, Data.Prices().FirstOrDefault(p => p.Id == Data.ProductStocks()[id - 1].PriceId)?.ProductPrice); Assert.AreEqual(returnedResult.Stock, Data.ProductStocks()[id - 1].Stock); }
public async Task OrderRequest_OutOfBoundsIdPassed_ReturnNotFound() { const int id = 10000; const string supplier = "undercutters"; var expectedResponse = new HttpResponseMessage { StatusCode = System.Net.HttpStatusCode.NotFound }; var httpClient = new HttpClient(CreateHttpMock(expectedResponse).Object); var context = new MockStockContext(Data.ProductStocks(), Data.Prices(), null); var controller = new StockController(context, null) { HttpClient = httpClient }; var result = await controller.OrderRequest(id, supplier); Assert.IsNotNull(result); var objectResult = result as NotFoundResult; Assert.IsNotNull(objectResult); }
public void GETAdjustCost_ValidIdPassed_CorrectDataReturnedToView() { const int id = 2; var expectedHttpResponse = new ProductDto { Id = id, Name = "NameTest", Description = "DescriptionTest" }; var expectedJson = JsonConvert.SerializeObject(expectedHttpResponse); var expectedResponse = new HttpResponseMessage { StatusCode = System.Net.HttpStatusCode.OK, Content = new StringContent(expectedJson, Encoding.UTF8, "application/json") }; var httpClient = new HttpClient(CreateHttpMock(expectedResponse).Object); var context = new MockStockContext(Data.ProductStocks(), Data.Prices(), null); var controller = new StockController(context, null) { HttpClient = httpClient }; var expectedResult = Data.ProductStockDtos().FirstOrDefault(psd => psd.ProductStock.Id == id); var result = controller.AdjustCost(id); Assert.IsNotNull(result); var adjustResult = result.Result.Result as ViewResult; Assert.IsNotNull(adjustResult); var adjustProductStock = adjustResult.Model as AdjustCostViewModel; Assert.IsNotNull(adjustProductStock); Assert.AreEqual(expectedResult.ProductStock.Id, adjustProductStock.Id); Assert.AreEqual(expectedResult.Price.ProductPrice, adjustProductStock.Cost); Assert.AreEqual(expectedHttpResponse.Name, adjustProductStock.Name); Assert.AreEqual(expectedHttpResponse.Description, adjustProductStock.Description); }
public async Task OrderRequest_ValidIdAndSupplierPassed_ReturnCorrectAndValidModel() { const int id = 2; const string supplier = "undercutters"; var expectedHttpResponse = Data.VendorProducts().FirstOrDefault(vp => vp.Id == id); var expectedJson = JsonConvert.SerializeObject(expectedHttpResponse); var expectedResponse = new HttpResponseMessage { StatusCode = System.Net.HttpStatusCode.OK, Content = new StringContent(expectedJson, Encoding.UTF8, "application/json") }; var httpClient = new HttpClient(CreateHttpMock(expectedResponse).Object); var context = new MockStockContext(Data.ProductStocks(), Data.Prices(), null); var controller = new StockController(context, null) { HttpClient = httpClient }; var expected = expectedHttpResponse; var result = await controller.OrderRequest(id, supplier); Assert.IsNotNull(result); var objectResult = result as ViewResult; Assert.IsNotNull(objectResult); var viewResult = objectResult.Model as OrderRequestModel; Assert.IsNotNull(viewResult); Assert.AreEqual(id, viewResult.Id); Assert.AreEqual(expected.Name, viewResult.Name); Assert.AreEqual(expected.Id, viewResult.Id); Assert.AreEqual(supplier, viewResult.Supplier); Assert.AreEqual(expected.Description, viewResult.Description); }