Ejemplo n.º 1
0
        public async Task Should_process_daily_room_rates()
        {
            var roomContractSet = CreateRoomContractSet(Currencies.USD, contractSetTotalRate: (Gross: 100, Final: 50), roomDailyRate: (Gross: 100, Final: 50));

            var processed = await RoomContractSetPriceProcessor.ProcessPrices(roomContractSet, AddTenReturnUsd);

            Assert.Equal(120, processed.Rooms[0].DailyRoomRates[0].Gross.Amount);
            Assert.Equal(60, processed.Rooms[0].DailyRoomRates[0].FinalPrice.Amount);
            Assert.Equal(Currencies.USD, processed.Rooms[0].DailyRoomRates[0].Gross.Currency);
            Assert.Equal(Currencies.USD, processed.Rooms[0].DailyRoomRates[0].FinalPrice.Currency);
        }
Ejemplo n.º 2
0
        public async Task Should_process_room_rate_for_list()
        {
            var roomContractSet  = CreateRoomContractSet(Currencies.USD, contractSetTotalRate: (Gross: 100, Final: 50), roomTotalRate: (Gross: 100, Final: 50));
            var roomContractSets = new List <RoomContractSet> {
                roomContractSet
            };

            var processed = await RoomContractSetPriceProcessor.ProcessPrices(roomContractSets, AddTenReturnUsd);

            Assert.Equal(120, processed[0].Rooms[0].Rate.Gross.Amount);
            Assert.Equal(60, processed[0].Rooms[0].Rate.FinalPrice.Amount);
            Assert.Equal(Currencies.USD, processed[0].Rooms[0].Rate.Gross.Currency);
            Assert.Equal(Currencies.USD, processed[0].Rooms[0].Rate.FinalPrice.Currency);
        }
Ejemplo n.º 3
0
        public async Task Should_be_change_rates_proportionally(decimal gross, decimal net, decimal ratio)
        {
            var roomContractSet  = CreateRoomContractSet(Currencies.USD, contractSetTotalRate: (Gross: gross, Final: net), roomDailyRate: (Gross: gross, Final: net), roomTotalRate:  (Gross: gross, Final: net));
            var roomContractSets = new List <RoomContractSet> {
                roomContractSet
            };

            ValueTask <MoneyAmount> PriceProcessFunction(MoneyAmount price) => new ValueTask <MoneyAmount>(new MoneyAmount(price.Amount * ratio, Currencies.USD));

            var processed = await RoomContractSetPriceProcessor.ProcessPrices(roomContractSets, PriceProcessFunction);

            Assert.Equal(gross * ratio, processed[0].Rooms[0].DailyRoomRates[0].Gross.Amount);
            Assert.Equal(net * ratio, processed[0].Rooms[0].DailyRoomRates[0].FinalPrice.Amount);
            Assert.Equal(gross * ratio, processed[0].Rooms[0].Rate.Gross.Amount);
            Assert.Equal(net * ratio, processed[0].Rooms[0].Rate.FinalPrice.Amount);
            Assert.Equal(Currencies.USD, processed[0].Rooms[0].DailyRoomRates[0].Gross.Currency);
            Assert.Equal(Currencies.USD, processed[0].Rooms[0].DailyRoomRates[0].FinalPrice.Currency);
        }