public void TestUpdateAccountIdValidationError() { // arrange var context = CreateDbContext(); var controller = new TradesController(context); var trade = new PutTradeParameter { Id = 2, AccountId = 1, Action = TradeActions.Sell, Quantity = 10, Symbol = "GE" }; // act var result = controller.Put(2, trade); var brRequest = result as BadRequestObjectResult; var data = (brRequest.Value as IEnumerable <ValidationResult>).ToArray(); // assert Assert.IsNotNull(brRequest); Assert.AreEqual(400, brRequest.StatusCode); Assert.AreEqual("AccountId cannot be modified", data[0].ErrorMessage); Assert.AreEqual(2, trade.Id); }
public void TestAdd() { // arrange var context = CreateDbContext(); var controller = new TradesController(context); var trade = new Trade() { Id = 4, AccountId = 1, Action = TradeActions.Buy, Quantity = 1, Symbol = "MSFT" }; // act var result = controller.Post(trade); var okResult = result as OkObjectResult; var data = (okResult.Value as Trade); // assert Assert.IsNotNull(okResult); Assert.AreEqual(200, okResult.StatusCode); Assert.IsNotNull(data); Assert.AreEqual(4, trade.Id); }
public TradesControllerTest() { MapperConfig mapperConfig = new MapperConfig(); _mapper = mapperConfig.MapperConfiguration(); _tradesServiceMock = new Mock <ITradesService>(); _tradesController = new TradesController(_mapper, _tradesServiceMock.Object); }
public void TestTraderGet() { // Test method that returns a string var controller = new TradesController(); var response = controller.Get("fred"); Assert.AreEqual("GET for trader fred", response); }
public TradesControllerTests() { this.optionsBuilder = new DbContextOptionsBuilder <ApplicationDbContext>() .UseInMemoryDatabase("tradesDatabase"); this.db = new ApplicationDbContext(this.optionsBuilder.Options); this.repo = new EfDeletableEntityRepository <Company>(this.db); this.companiesService = new CompaniesService(this.repo); this.tradesService = new TradesService(this.db, this.companiesService); this.userManager = new FakeUserManager(); this.controller = new TradesController(this.companiesService, this.tradesService, this.userManager); }
public void TestResponse() { // Test a method that returns an IHttpActionResult var controller = new TradesController(); // OkNegotiatedContentResult is used to handle a 200 OK with content var response = controller.Get(3); var result = response as OkNegotiatedContentResult <Trade>; Assert.IsNotNull(result); Assert.IsNotNull(result.Content); Assert.AreEqual(1000, result.Content.Volume); }
public void TestToCheckErrorIsReturnedWhenNoTradeCanBeExecutedOnAStock() { var tradesController = new TradesController(); var trade = new Trade() { Name = "GOOGL", Type = "BUY", Quantity = 50, Price = 100 }; var submitTradeResponse = tradesController.Post(trade).Result; Assert.IsNotNull(submitTradeResponse); Assert.IsNull(submitTradeResponse.Error); Assert.AreEqual(submitTradeResponse.Status, "Success"); Assert.IsNotNull(submitTradeResponse.TradeId); trade = new Trade() { Name = "GOOGL", Type = "BUY", Quantity = 100, Price = 101 }; submitTradeResponse = tradesController.Post(trade).Result; Assert.IsNotNull(submitTradeResponse); Assert.IsNull(submitTradeResponse.Error); Assert.AreEqual(submitTradeResponse.Status, "Success"); Assert.IsNotNull(submitTradeResponse.TradeId); trade = new Trade() { Name = "GOOGL", Type = "BUY", Quantity = 150, Price = 100 }; submitTradeResponse = tradesController.Post(trade).Result; Assert.IsNotNull(submitTradeResponse); Assert.IsNull(submitTradeResponse.Error); Assert.AreEqual(submitTradeResponse.Status, "Success"); Assert.IsNotNull(submitTradeResponse.TradeId); var executionResponse = tradesController.Get("GOOGL").Result; Assert.IsNotNull(executionResponse); Assert.IsNotNull(executionResponse.Error); Assert.AreEqual(executionResponse.Status, "Failure"); Assert.AreEqual(executionResponse.TradeExecutions.Count, 0); }
public void TestGetById() { // arrange var context = CreateDbContext(); var controller = new TradesController(context); // act var okResult = controller.Get(1) as OkObjectResult; var data = (okResult.Value as Trade); // assert Assert.IsNotNull(data); Assert.AreEqual(1, data.Id); }
public TradesIntegrationTest() { _httpRequestHandlerMock = new Mock <IHttpRequestHandler>(); var services = new StartupHelper().BuildService(); services.AddSingleton <ITradesService, TradesService>(); services.AddSingleton(_httpRequestHandlerMock.Object); var serviceProvider = services.BuildServiceProvider(); var tradeService = serviceProvider.GetService <ITradesService>(); var mapper = serviceProvider.GetService <IMapper>(); _tradesController = new TradesController(mapper, tradeService); }
public void TestToCheckErrorIsReturnedWhenTradeTypeIsInvalid() { var tradesController = new TradesController(); var trade = new Trade() { Name = "APPL", Type = "HOLD", Quantity = 50, Price = 100 }; var submitTradeResponse = tradesController.Post(trade).Result; Assert.IsNotNull(submitTradeResponse); Assert.IsNotNull(submitTradeResponse.Error); Assert.AreEqual(submitTradeResponse.Status, "Failure"); Assert.IsNull(submitTradeResponse.TradeId); }
public void TestToCheckWhetherAStockIsSuccessFullyAddedInTheTradingQueue() { var tradesController = new TradesController(); var trade = new Trade() { Name = "GOOGL", Type = "BUY", Quantity = 50, Price = 100 }; var submitTradeResponse = tradesController.Post(trade).Result; Assert.IsNotNull(submitTradeResponse); Assert.IsNull(submitTradeResponse.Error); Assert.AreEqual(submitTradeResponse.Status, "Success"); Assert.IsNotNull(submitTradeResponse.TradeId); }
public async Task CreateWithNullAndBadRequestObjectResult() { // Arrange & Act var mockRepo = new Mock <IRepository>(); var controller = new TradesController(mockRepo.Object, _logger); controller.ModelState.AddModelError("Error", "Null job object inputted"); mockRepo.Setup(repo => repo.Create <Trade>(null)); // Act var result = await controller.CreateTrade(null); // Assert var badRequestResult = Assert.IsType <BadRequestObjectResult>(result); Assert.IsType <SerializableError>(badRequestResult.Value); _logger.Log(LogLevel.Debug, 0, "Logging exeution of method CreateWithNullAndBadRequestObjectResult", null, null); }
public void TestGetSkip0Take1() { // arrange var context = CreateDbContext(); var controller = new TradesController(context); var p = new TradeQueryParameter() { Skip = 0, Take = 1 }; // act var okResult = controller.Get(p) as OkObjectResult; var data = (okResult.Value as IEnumerable <Trade>).ToArray(); // assert Assert.AreEqual(1, data.Count()); Assert.AreEqual(1, data[0].Id); Assert.AreEqual(1, data[0].AccountId); }
public async Task CreateTradeValidModelWithOkResult() { // Arrange & Act var mockRepo = new Mock <IRepository>(); var controller = new TradesController(mockRepo.Object, _logger); var automotiveTrade = new Trade { TradeId = 17123, Name = "Automotive and Other Vehicle Maintenance" }; mockRepo.Setup(repo => repo.Create(automotiveTrade)).Returns(Task.FromResult(automotiveTrade)); // Act var autoTradeModel = JobAssistantMapper.Map <TradeModel>(automotiveTrade); var result = await controller.CreateTrade(autoTradeModel); // Assert Assert.IsType <OkResult>(result); _logger.Log(LogLevel.Debug, 0, "Logging exeution of method CreateTradeValidModelWithOkResult", null, null); }
public void TestDelete() { // arrange var context = CreateDbContext(); var controller = new TradesController(context); // act var result = controller.Delete(2); var okResult = result as OkObjectResult; var trade = (okResult.Value as Trade); // assert Assert.IsNotNull(okResult); Assert.AreEqual(200, okResult.StatusCode); Assert.IsNotNull(trade); Assert.AreEqual(2, trade.Id); Assert.IsTrue(!context.Trades.Any(x => x.Id == 2)); }
public void TestGetAll() { // arrange var context = CreateDbContext(); var controller = new TradesController(context); // act var result = controller.Get(new Data.Models.TradeQueryParameter() { }); var okResult = result as OkObjectResult; var data = (okResult.Value as IEnumerable <Trade>).ToArray(); // assert Assert.IsNotNull(okResult); Assert.AreEqual(200, okResult.StatusCode); Assert.IsNotNull(data); Assert.IsTrue(data.Length > 2); Assert.AreEqual(1, data[0].Id); }
public void TestUpdate() { // arrange var context = CreateDbContext(); var controller = new TradesController(context); var trade = ((controller.Get(2) as OkObjectResult).Value as Trade); trade.Quantity = 15; // act var result = controller.Put(2, trade); var okResult = result as OkObjectResult; var data = (okResult.Value as Trade); // assert Assert.IsNotNull(okResult); Assert.AreEqual(200, okResult.StatusCode); Assert.IsNotNull(data); Assert.AreEqual(2, trade.Id); }
public async Task <IHttpActionResult> DeleteTrader(string traderId) { TradesController trdCon = new TradesController(); string message = string.Empty; ApplicationUser trader = db.Users.Find(traderId); if (trader == null) { // prepare the message ModelState.AddModelError("Message", "The author account can not be found!"); // TODO logging here an unexpected error has occured return(BadRequest(ModelState)); } try { // Business Rule: Remove the trader role of the account IdentityResult resultRole = await UserManager.RemoveFromRoleAsync(traderId, "Trader"); if (!resultRole.Succeeded) { foreach (string err in resultRole.Errors) { message += err; } ModelState.AddModelError("Message", "Trader Role Error: " + message + " Please contact the app admin!"); return(BadRequest(ModelState)); } // Bussiness Rule: Remove the password when removing the trader role IdentityResult resultPassword = await UserManager.RemovePasswordAsync(traderId); if (!resultPassword.Succeeded) { foreach (string err in resultPassword.Errors) { message += err; } ModelState.AddModelError("Message", "Trader Password Error: " + message + " Please contact the app admin!"); return(BadRequest(ModelState)); } // deletion of trades will not delete the physical files var arts = from art in db.Trades where (art.traderId == traderId) select art; // the trade controller method will delete the physical uploaded trade images files foreach (Trade ar in arts) { trdCon.DeletePhysicalImages(ar.tradeId); } // Business Rule: Remove the account and roles associcated when we have single role account // removing of trader will take care of removing the traders's trades and with that the images's // (multiple trades will remove multiple images from the tables) db.Users.Remove(trader); await db.SaveChangesAsync(); return(Ok(trader)); } catch (Exception Exc) { string error = Exc.InnerException.Message; // TODO // log the exception EXC on the server side RollBackDatabaseChanges(); // prepare the message ModelState.AddModelError("Message", "An unexpected error occured during deleting the author account!"); // TODO logging here an unexpected error has occured return(BadRequest(ModelState)); } }
public void TestToGetTradeExecutionsOnAStockWhenThereAreValidTradeRequests() { // Arrange var tradesController = new TradesController(); var trade = new Trade() { Name = "GOOGL", Type = "BUY", Quantity = 50, Price = 100 }; var submitTradeResponse = tradesController.Post(trade).Result; Assert.IsNotNull(submitTradeResponse); Assert.IsNull(submitTradeResponse.Error); Assert.AreEqual(submitTradeResponse.Status, "Success"); Assert.IsNotNull(submitTradeResponse.TradeId); trade = new Trade() { Name = "GOOGL", Type = "BUY", Quantity = 100, Price = 101 }; submitTradeResponse = tradesController.Post(trade).Result; Assert.IsNotNull(submitTradeResponse); Assert.IsNull(submitTradeResponse.Error); Assert.AreEqual(submitTradeResponse.Status, "Success"); Assert.IsNotNull(submitTradeResponse.TradeId); trade = new Trade() { Name = "GOOGL", Type = "BUY", Quantity = 150, Price = 100 }; submitTradeResponse = tradesController.Post(trade).Result; Assert.IsNotNull(submitTradeResponse); Assert.IsNull(submitTradeResponse.Error); Assert.AreEqual(submitTradeResponse.Status, "Success"); Assert.IsNotNull(submitTradeResponse.TradeId); trade = new Trade() { Name = "GOOGL", Type = "SELL", Quantity = 100, Price = 102 }; submitTradeResponse = tradesController.Post(trade).Result; Assert.IsNotNull(submitTradeResponse); Assert.IsNull(submitTradeResponse.Error); Assert.AreEqual(submitTradeResponse.Status, "Success"); Assert.IsNotNull(submitTradeResponse.TradeId); trade = new Trade() { Name = "GOOGL", Type = "SELL", Quantity = 200, Price = 100 }; submitTradeResponse = tradesController.Post(trade).Result; Assert.IsNotNull(submitTradeResponse); Assert.IsNull(submitTradeResponse.Error); Assert.AreEqual(submitTradeResponse.Status, "Success"); Assert.IsNotNull(submitTradeResponse.TradeId); var executionResponse = tradesController.Get("GOOGL").Result; Assert.IsNotNull(executionResponse); Assert.IsNull(executionResponse.Error); Assert.AreEqual(submitTradeResponse.Status, "Success"); Assert.IsNotNull(executionResponse.TradeExecutions); Assert.IsTrue(executionResponse.TradeExecutions.Count > 0); }