Beispiel #1
0
        public void Calculate_WithShortStayForWholeDay_ReturnsCorrectCharge()
        {
            // arrange
            var start = new DateTime(2020, 4, 1, 8, 0, 0);
            var end   = new DateTime(2020, 4, 1, 18, 0, 0);
            var stay  = new ShortStay(start, end);

            // act
            var charge = chargeCalculator.Calculate(stay);

            // assert
            // charge should be 10hours * 1.1 = £11
            Assert.IsTrue(charge == 11M);
        }
Beispiel #2
0
        public void Calculate(Order order)
        {
            _chargeCalculator.Calculate(order);

            var appliedCharge = order.GetChargeAmount(_chargeName, order.Currency);

            if (appliedCharge < _minimumPayable)
            {
                order.RemoveCharge(_chargeName);

                foreach (var item in order.OrderItems)
                {
                    var minimumItemCharge = _minimumPayable * order.RelativeOrderItemValue(item);
                    item.AddCharge(new OrderCharge(_chargeName, minimumItemCharge, _chargeName));
                }
            }
        }