示例#1
0
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: []}
示例#2
0
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 == {}
示例#3
0
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"