public async Task Create_PostAnalystics_V2_UnitTypeWatt_Watt() { string panelId = "1234567890987654"; var mockPanels = new List <Panel>() { new Panel { Brand = "Areva", Latitude = 12.345678, Longitude = 98.765543, Serial = panelId } }.AsQueryable().BuildMock(); _panelRepositoryMock.Setup(m => m.Query()).Returns(mockPanels.Object); var oneHourElectricityAmountModel = new OneHourElectricityAmountModel { Id = 1, DateTime = DateTime.Now, Amount = 100, TypeWatt = UnitTypeWatt.Watt }; // Act var result = await _analyticsController.Post(panelId, oneHourElectricityAmountModel); // Assert Assert.NotNull(result); var createdResult = result as CreatedResult; Assert.NotNull(createdResult); Assert.Equal(201, createdResult.StatusCode); var oneHourElectricityAmountModelReturn = createdResult.Value as OneHourElectricityAmountModel; Assert.NotNull(oneHourElectricityAmountModelReturn); // Sent Watt, Return KiloWatt double amountKiloWatt = oneHourElectricityAmountModel.Amount / 1000; Assert.Equal(amountKiloWatt, oneHourElectricityAmountModelReturn.Amount); }
public async Task <IActionResult> Post([FromRoute, StringLength(16), Required] string panelId, [FromBody] OneHourElectricityAmountModel value) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (!_panelRepository.Query().Any(x => x.Serial.Equals(panelId, StringComparison.CurrentCultureIgnoreCase))) { return(BadRequest()); } double amountKiloWatt = 0; switch (value.TypeWatt) { case UnitTypeWatt.KiloWatt: amountKiloWatt = value.Amount; break; case UnitTypeWatt.Watt: amountKiloWatt = value.Amount / 1000; break; } var oneHourElectricityContent = new OneHourElectricity { PanelId = panelId, KiloWatt = amountKiloWatt, DateTime = DateTime.UtcNow }; await _analyticsRepository.InsertAsync(oneHourElectricityContent); var result = new OneHourElectricityAmountModel { Id = oneHourElectricityContent.Id, Amount = oneHourElectricityContent.KiloWatt, TypeWatt = UnitTypeWatt.KiloWatt, DateTime = oneHourElectricityContent.DateTime }; return(Created($"panel/v2/{panelId}/analytics/{result.Id}", result)); }