public async Task <ActionResult> counter_callback([FromBody] CounterCallback counter)
        {
            if (counter == null)
            {
                return(BadRequest("Please inform counter details"));
            }

            var villageName = await _externalAPI.GetVillageNameAsync(counter.Counter_id);

            var consumptionCounter = new ConsumptionCounter(villageName, counter.Counter_id, counter.Amount);

            if (consumptionCounter.IsValid)
            {
                try
                {
                    await _repository.RegisterAsync(consumptionCounter);

                    return(Ok(consumptionCounter));
                }
                catch (ConsumptionCounterAlreadyIsRegisteredException)
                {
                    return(BadRequest("The counter already is registered."));
                }
            }
            else
            {
                return(BadRequest("The counter details supplied are invalid"));
            }
        }
コード例 #2
0
        public async Task counter_callback_returns_ok_when_valid_input()
        {
            var counter = new CounterCallback("1", 10000.123);

            _mockExternalAPI.Setup(api => api.GetVillageNameAsync(counter.Counter_id))
            .Returns(Task.FromResult(GetVillageName(counter.Counter_id)));
            var expectedResultObject = new ConsumptionCounter(GetVillageName(counter.Counter_id), counter.Counter_id, counter.Amount);

            _mockRepo.Setup(repo => repo.RegisterAsync(expectedResultObject)).Returns(RegisterAsync());
            var controller = new ConsumptionCounterController(_mockRepo.Object, _mockExternalAPI.Object);

            var result = await controller.counter_callback(counter);

            var content = ((OkObjectResult)result).Value;

            result.Should().BeOfType <OkObjectResult>();
            content.ShouldBeEquivalentTo(expectedResultObject);
        }