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); }
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); }
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); }