def test_select_discounts_missed_rate_plan(service: CalculateNewReservation, context: Context, house, room_type, rate, rate_plan, last_min_discount): service._discounts_repo = Mock(select=Mock( return_value={DiscountTypes.LAST_MINUTE: [last_min_discount]})) context.house = house context.room_type = room_type context.rate = rate context.rate_plan = attr.evolve(rate_plan, id=999) context.prices = { context.start_date: Decimal(100), context.start_date + datetime.timedelta(days=1): Decimal(110) } result = service.select_discounts(context) assert is_successful(result) assert result.unwrap().discounts == {DiscountTypes.LAST_MINUTE: []}
def test_select_discounts_no_rate(service: CalculateNewReservation, context: Context, house, room_type, rate_plan): service._discounts_repo = Mock(select=Mock( side_effect=RuntimeError("ERR"))) context.house = house context.room_type = room_type context.rate = None context.rate_plan = rate_plan context.prices = { context.start_date: None, context.start_date + datetime.timedelta(days=1): None } result = service.select_discounts(context) assert is_successful(result) assert result.unwrap().discounts == {}
def test_select_discounts_error(service: CalculateNewReservation, context: Context, house, room_type, rate, rate_plan): service._discounts_repo = Mock(select=Mock( side_effect=RuntimeError("ERR"))) context.house = house context.room_type = room_type context.rate = rate context.rate_plan = rate_plan context.prices = { context.start_date: Decimal(100), context.start_date + datetime.timedelta(days=1): Decimal(110) } result = service.select_discounts(context) assert not is_successful(result) assert result.failure().failure == ReservationErrors.error assert str(result.failure().exc) == "ERR"