public ConsumptionServiceTest() { ContextOptions = new DbContextOptionsBuilder <SkrillaDbContext>() .UseSqlite(CreateInMemoryDatabase()) .Options; _connection = RelationalOptionsExtension.Extract(ContextOptions).Connection; dbContext = new SkrillaDbContext(ContextOptions); dbContext.Database.EnsureDeleted(); dbContext.Database.EnsureCreated(); consumptionRequest = new ConsumptionRequest { Title = "Example", Amount = 123.4, Category = "ExampleCategory", Date = new DateTime(2020, 05, 12) }; category = new Category("ExampleCategory", false, "mockUser", "exampleIcon"); dbContext.Add(category); dbContext.SaveChanges(); var loggerMock = new Mock <ILogger <ConsumptionService> >(); this.consumptionService = new ConsumptionService(loggerMock.Object, dbContext, GetMockHttpAccesor()); }
public void ConsumptionModificationIsSuccessful() { SetUpConsumption(); Assert.NotNull(consumption); int id = consumption.Id; ConsumptionRequest modificationRequest = new ConsumptionRequest { Title = "Example2", Amount = 103.4, Category = "DifferentCategory", Date = new DateTime(2019, 04, 24) }; consumptionService.ModifyConsumption(modificationRequest, id); Consumption foundConsumption = dbContext.Consumptions .Where(c => c.Id == id).FirstOrDefault <Consumption>(); Assert.Equal("DifferentCategory", foundConsumption.Category.Name); Assert.Equal(103.4, foundConsumption.Amount); Assert.Equal("Example2", foundConsumption.Title); Assert.Equal(2019, foundConsumption.Date.Year); Assert.Equal(04, foundConsumption.Date.Month); Assert.Equal(24, foundConsumption.Date.Day); dbContext.Remove(consumption); }
private void UpdateValues(Consumption consumption, ConsumptionRequest request) { consumption.Title = request.Title; consumption.Amount = request.Amount; consumption.Category = GetOrCreateCategory(request.Category, request.CategoryIcon); consumption.Date = LocalDate.FromDateTime(request.Date); }
/// <summary> /// Consumes the specified instance. /// </summary> /// <param name="instance">The instance.</param> /// <param name="request">The request.</param> /// <returns>ConsumptionResult.</returns> public override ConsumptionResult Consume(object instance, ConsumptionRequest request) { var index = request.Info.Current.IndexOf(Separator, StringComparison.Ordinal); var value = request.Info.Current.Substring(index + 1); ConsumeCallback(instance, new[] { value }); return(new ConsumptionResult(request.Info, 1, this)); }
public void ConsumptionRequestCreatedSuccessfully() { ConsumptionRequest request = new ConsumptionRequest(); request.Title = "Example"; request.Category = "Otros"; request.Amount = 234.5; request.Date = new DateTime(2020, 5, 7); Assert.NotNull(request); Assert.Equal(234.5, request.Amount); Assert.Equal("Otros", request.Category); Assert.Equal("Example", request.Title); }
public Consumption CreateConsumption(ConsumptionRequest request) { string loggedUser = _httpContextAccessor.HttpContext.User.FindFirstValue("userId"); Category category = GetOrCreateCategory(request.Category, request.CategoryIcon); Consumption consumption = new Consumption(request.Title, request.Amount, category, loggedUser, LocalDate.FromDateTime(request.Date)); dbContext.Add(consumption); dbContext.SaveChanges(); return(consumption); }
public void Consume_Only_The_Maximum_Allowed_From_The_Request() { // arrange var list = new List <string[]>(); var sw = new ValuesSwitch(new Parser("a"), 'v', "values", (o, strings) => list.Add(strings)); var info = new IterationInfo("-v v0 v1 v2 v3 -s".Split(' '), 0); var request = new ConsumptionRequest(info, 3); // act var result = sw.Consume(new object(), request); // assert list.Should().HaveCount(1); list[0].Should().BeEquivalentTo("v0 v1".Split(' ')); result.NumConsumed.Should().Be(3); }
public void Identify_When_There_Is_A_Next_Arg() { // arrange var info0 = new IterationInfo("".Split(' '), 0); var info1 = new IterationInfo("-h".Split(' '), 0); var info2 = new IterationInfo("-v something".Split(' '), 0); var req0 = new ConsumptionRequest(info0, 1); var req1 = new ConsumptionRequest(info1, 1); var req2 = new ConsumptionRequest(info2, 1); var req3 = new ConsumptionRequest(info2, 2); // act // assert req0.HasNext().Should().BeFalse(); req1.HasNext().Should().BeFalse(); req2.HasNext().Should().BeFalse(); req3.HasNext().Should().BeTrue(); }
public void Not_Throw_If_Not_Given_Enough_Args_But_Return_Them_In_The_Result() { // arrange var list = new List <string[]>(); var sw = new ValuesSwitch(new Parser("a"), 'v', "values", (o, strings) => list.Add(strings)) { MinRequired = 5 }; var info = new IterationInfo("-v v0 v1 v2 v3 -s".Split(' '), 0); var request = new ConsumptionRequest(info, 3); ConsumptionResult res = null; Action mightThrow = () => res = sw.Consume(new object(), request); // act // assert mightThrow.Should().NotThrow(); res.ParseExceptions.Should().HaveCount(1).And.Subject.Single().Should().BeOfType <MissingValueException>(); }
public Consumption ModifyConsumption(ConsumptionRequest consumptionRequest, int id) { string loggedUser = _httpContextAccessor.HttpContext.User.FindFirstValue("userId"); Consumption consumption = dbContext .Consumptions .Where(s => s.Id == id && s.PersonId.Equals(loggedUser)) .Include(c => c.Category).FirstOrDefault(); if (consumption == null) { _logger.LogDebug("Consumption not found: " + id + " for user: "******"not_found", "Consumption not found"); } UpdateValues(consumption, consumptionRequest); dbContext.SaveChanges(); return(consumption); }
public void Return_The_Current_Item_And_All_SubSequent_Items() { // arrange var info0 = new IterationInfo("".Split(' '), 0); var info1 = new IterationInfo("-h".Split(' '), 0); var info2 = new IterationInfo("-v something".Split(' '), 0); var info3 = new IterationInfo("a b c d e".Split(' '), 0); var req0 = new ConsumptionRequest(info0, 1); var req1 = new ConsumptionRequest(info1, 1); var req2 = new ConsumptionRequest(info2, 1); var req3 = new ConsumptionRequest(info2, 2); var req4 = new ConsumptionRequest(info3, 3); // act // assert req0.AllToBeConsumed().Should().BeEquivalentTo("".Split(' ')); req1.AllToBeConsumed().Should().BeEquivalentTo("-h".Split(' ')); req2.AllToBeConsumed().Should().BeEquivalentTo("-v".Split(' ')); req3.AllToBeConsumed().Should().BeEquivalentTo("-v something".Split(' ')); req4.AllToBeConsumed().Should().BeEquivalentTo("a b c".Split(' ')); }
public ActionResult <Consumption> Post(ConsumptionRequest request) { string loggedUser = User.FindFirstValue("userId"); if (loggedUser == null) { return(Unauthorized()); } ValidationResult result = validator.Validate(request); if (!result.IsValid) { return(BadRequest(new ValidationSummary(result))); } try { Consumption consumption = consumptionService.CreateConsumption(request); if (consumption == null) { return(StatusCode(500)); } return(CreatedAtAction(nameof(Get), null, consumption)); } catch (SkrillaApiException e) { if ("not_found".Equals(e.Code)) { return(NotFound()); } else { return(BadRequest(e.Message)); } } }
public void Return_The_Last_Item() { // arrange var info0 = new IterationInfo(new string[0], 0); var info1 = new IterationInfo("-h".Split(' '), 0); var info2 = new IterationInfo("-v something".Split(' '), 0); var info3 = new IterationInfo("a b c d e".Split(' '), 0); var req0 = new ConsumptionRequest(info0, 1); var req1 = new ConsumptionRequest(info1, 1); var req2 = new ConsumptionRequest(info2, 1); var req3 = new ConsumptionRequest(info2, 2); var req4 = new ConsumptionRequest(info3, 3); Action mightThrow = () => req0.Last(); // act // assert mightThrow.Should().Throw <ArgumentOutOfRangeException>(); req1.Last().Should().Be("-h"); req2.Last().Should().Be("-v"); req3.Last().Should().Be("something"); req4.Last().Should().Be("c"); }
public ActionResult <Consumption> ModifyConsumption(int id, ConsumptionRequest request) { string loggedUser = User.FindFirstValue("userId"); if (loggedUser == null) { return(Unauthorized()); } ValidationResult result = validator.Validate(request); if (!result.IsValid) { return(BadRequest(new ValidationSummary(result))); } Consumption updatedConsumption = null; try { updatedConsumption = consumptionService .ModifyConsumption(request, id); } catch (SkrillaApiException e) { if (e.Code == "404") { return(NotFound()); } else { return(BadRequest(e.Message)); } } return(Ok(updatedConsumption)); }
public void CreateConsumptionReturnsCreatedConsumption() { ConsumptionRequest request = new ConsumptionRequest { Title = "Example1", Amount = 345.6, Category = "ExampleCategory", Date = new DateTime(2020, 04, 15) }; var result = controller.Post(request); Assert.NotNull(result); var resultObject = result.Result as ObjectResult; var createdConsumption = (Consumption)resultObject.Value; Assert.IsType <CreatedAtActionResult>(resultObject); Assert.Equal("Example1", createdConsumption.Title); Assert.Equal(345.6, createdConsumption.Amount); Assert.Equal(2020, createdConsumption.Date.Year); Assert.Equal(14, createdConsumption.Date.Day); Assert.Equal(4, createdConsumption.Date.Month); }
public ConsumptionValidatorTest() { request = new ConsumptionRequest(); validator = new ConsumptionValidation(); }