public async Task <IActionResult> Get([FromQuery] CostsFilterOptions queryParams) { try { Token token = (Token)this.HttpContext.Items["Token"]; logger.Info("New request from userId: " + token.data.user.id + " arrived to obtain Costs for his Organization"); if (!queryParams.HasOptions()) { logger.Error("Missing required query paramteters on url"); throw new ArgumentException("Missing required query parameters"); } logger.Debug("Querying service for a report from: " + queryParams.From.ToShortDateString() + " To: " + queryParams.To.ToShortDateString() + " for organizationId: " + token.data.organizationId); List <MonthCost> result = this.costService.GetCosts( queryParams.From, queryParams.To, token.data.organizationId ); return(Ok(result)); } catch (ArgumentException exception) { return(BadRequest(exception.Message)); } catch (Exception e) { return(BadRequest(e.Message)); } }
public async Task GetCostsTest() { DateTime from = new DateTime(2020, 1, 1); DateTime to = new DateTime(2020, 12, 1); List <MonthCost> returnedList = new List <MonthCost>(); PeriodCost periodMonth2 = new PeriodCost() { month = 2, year = 2020 }; Cost bugsCostMonth2 = new Cost() { cant = 100, unitCost = 2, }; Cost usersCostMonth2 = new Cost() { cant = 13, unitCost = 5, }; PeriodCost periodMonth5 = new PeriodCost() { month = 5, year = 2020 }; Cost bugsCostMonth5 = new Cost() { cant = 167, unitCost = 4, }; Cost usersCostMonth5 = new Cost() { cant = 7, unitCost = 6, }; MonthCost monthCost2 = new MonthCost() { id = 1, bugs = bugsCostMonth2, users = usersCostMonth2, period = periodMonth2 }; MonthCost monthCost5 = new MonthCost() { id = 2, bugs = bugsCostMonth5, users = usersCostMonth5, period = periodMonth5 }; returnedList.Add(monthCost2); returnedList.Add(monthCost5); var mockCostService = new Mock <ICostsService>(); mockCostService.Setup(m => m.GetCosts(from, to, 1)).Returns(returnedList); var controller = new CostsController( mockCostService.Object, (new Mock <ILoggerManager>()).Object, (new Mock <IPingService>()).Object); controller.ControllerContext = new ControllerContext(); controller.ControllerContext.HttpContext = new DefaultHttpContext(); User usr = new User() { id = 1, organizationId = 1 }; TokenContent tokenCont = new TokenContent() { user = usr, organizationId = 1 }; Token token = new Token() { exp = 10000, iat = 10000, data = tokenCont }; controller.ControllerContext.HttpContext.Items["Token"] = token; var queryParam = new CostsFilterOptions() { From = from, To = to }; var result = await controller.Get(queryParam); var okResult = result as OkObjectResult; List <MonthCost> model = okResult.Value as List <MonthCost>; mockCostService.VerifyAll(); Assert.AreEqual(200, okResult.StatusCode); Assert.IsFalse(model == null); Assert.AreEqual(model.Count, 2); }