public async Task HandleAsync_GivenMessageContainingUpdatedAmounts_AmountsAreUpdatedCorrectly()
        {
            var updatedValues = new List <ObligatedValue>()
            {
                new ObligatedValue(Guid.NewGuid(), A.Dummy <int>(), 1, 2),
                new ObligatedValue(Guid.NewGuid(), A.Dummy <int>(), 3, 4)
            };

            var message = new EditObligatedReused()
            {
                CategoryValues = updatedValues
            };

            var returnAmounts = new List <WeeeReusedAmount>()
            {
                new WeeeReusedAmount(A.Fake <WeeeReused>(), A.Dummy <int>(), A.Dummy <decimal?>(), A.Dummy <decimal?>()),
                new WeeeReusedAmount(A.Fake <WeeeReused>(), A.Dummy <int>(), A.Dummy <decimal?>(), A.Dummy <decimal?>())
            };

            A.CallTo(() => genericDataAccess.GetById <WeeeReusedAmount>(updatedValues.ElementAt(0).Id)).Returns(returnAmounts.ElementAt(0));
            A.CallTo(() => genericDataAccess.GetById <WeeeReusedAmount>(updatedValues.ElementAt(1).Id)).Returns(returnAmounts.ElementAt(1));

            await handler.HandleAsync(message);

            A.CallTo(() => obligatedReusedDataAccess.UpdateAmounts(returnAmounts.ElementAt(0), 1, 2)).MustHaveHappened(Repeated.Exactly.Once);
            A.CallTo(() => obligatedReusedDataAccess.UpdateAmounts(returnAmounts.ElementAt(1), 3, 4)).MustHaveHappened(Repeated.Exactly.Once);
        }
        public async Task <bool> HandleAsync(EditObligatedReused message)
        {
            authorization.EnsureCanAccessExternalArea();

            foreach (var obligatedValue in message.CategoryValues)
            {
                var value = await genericDataAccess.GetById <WeeeReusedAmount>(obligatedValue.Id);

                await obligatedReusedDataAccess.UpdateAmounts(value, obligatedValue.HouseholdTonnage, obligatedValue.NonHouseholdTonnage);
            }

            return(true);
        }