def test_select_house_fail(service: AttachContactToReservation,
                           context: Context):
    service._houses_repo = Mock(get=Mock(return_value=Nothing))

    result = service.select_house(context)
    assert not is_successful(result)
    assert result.failure().failure == ReservationErrors.missed_house
def test_select_house_ok(service: AttachContactToReservation, context: Context,
                         house):
    service._houses_repo = Mock(get=Mock(return_value=Some(house)))

    result = service.select_house(context)
    assert is_successful(result), result.failure()
    assert result.unwrap().house == house
def test_check_reservation_ok(service: AttachContactToReservation,
                              context: Context, house, reservation):
    context.house = house
    context.reservation = reservation

    result = service.check_reservation(context)
    assert is_successful(result)
def test_missed_house_id(service: AttachContactToReservation,
                         context: Context):
    context.house_id = None

    result = service.select_house(context)
    assert not is_successful(result)
    assert result.failure().failure == ReservationErrors.missed_house
def test_select_reservation_ok(service: RegisterReservationInOdoo, context: Context, house, reservation):
    service._reservations_repo = Mock(get=Mock(return_value=Some(reservation)))
    context.house = house

    result = service.select_reservation(context)
    assert is_successful(result)
    assert result.unwrap().reservation == reservation
예제 #6
0
def test_check_reservation_ok(service: CancelReservation, context: Context,
                              house, reservation):
    context.house = house
    context.source = reservation

    result = service.check_reservation(context)
    assert is_successful(result), result.failure()
def test_check_reservation_verified(service: AcceptReservationChanges,
                                    context: Context, house, reservation):
    context.house = house
    context.source = attr.evolve(reservation, is_verified=True)

    result = service.check_reservation(context)
    assert is_successful(result)
def test_select_reservation_missed_pk(service: RegisterReservationInOdoo, context: Context, house):
    context.house = house
    context.pk = None

    result = service.select_reservation(context)
    assert not is_successful(result)
    assert result.failure().failure == ReservationErrors.missed_reservation
예제 #9
0
def test_success(service: ShowPricesForm, house, reservation, user, rate_plan,
                 room_type, room):
    policy_1 = Policy(id=101, house_id=house.id, name='P1')
    policy_2 = Policy(id=102, house_id=house.id, name='P2')

    service._houses_repo = Mock(get=Mock(return_value=Some(house)))
    service._reservations_repo = Mock(get=Mock(return_value=Some(reservation)))
    service._prices_repo = Mock(select_plans=Mock(return_value=[rate_plan]))
    service._roomtypes_repo = Mock(select=Mock(return_value=[room_type]))
    service._rooms_repo = Mock(select=Mock(return_value=[room]))
    service._policies_repo = Mock(select=Mock(
        return_value=[policy_1, policy_2]))

    result = service.execute(house.id, reservation.id, reservation.rooms[0].id,
                             user)
    assert is_successful(result)

    ctx = result.unwrap()
    assert isinstance(ctx, ReservationPricesUpdateContext)
    assert ctx.house == house
    assert ctx.reservation == reservation
    assert ctx.reservation_room == reservation.rooms[0]
    assert ctx.rate_plans == [rate_plan]
    assert ctx.room_types == [room_type]
    assert ctx.rooms == [room]
    assert ctx.policies == [policy_1, policy_2]
def test_select_house_ok(service: AcceptReservationChanges, context: Context,
                         house):
    service._houses_repo = Mock(get=Mock(return_value=Some(house)))

    result = service.select_house(context)
    assert is_successful(result)
    assert result.unwrap().house == house
예제 #11
0
def test_check_los_discounts(service: CalculateNewReservation,
                             context: Context, house, room_type, rate,
                             los_discount):
    period = [
        context.start_date,
        context.start_date + datetime.timedelta(days=1),
        context.start_date + datetime.timedelta(days=2),
        context.start_date + datetime.timedelta(days=3),
    ]
    context.end_date = context.start_date + datetime.timedelta(days=4)
    context.house = house
    context.room_type = room_type
    context.rate = rate
    context.prices = {
        period[0]: Decimal(100),
        period[1]: Decimal(100),
        period[2]: Decimal(100),
        period[3]: Decimal(100),
    }
    context.discounts = {DiscountTypes.LOS: [los_discount]}

    result = service.check_los_discounts(context)
    assert is_successful(result)

    assert result.unwrap().prices == {
        period[0]: Decimal(85),
        period[1]: Decimal(85),
        period[2]: Decimal(85),
        period[3]: Decimal(85),
    }
def test_missed_room_type(service: CreateReservation, context: Context, house):
    context.house = house
    context.request.roomtype_id = None

    result = service.select_room_type(context)
    assert not is_successful(result)
    assert result.failure().failure == ReservationErrors.missed_roomtype
def test_success(service: CreateReservation, context: Context, house,
                 room_type, rate_plan, rate, cancellation_policy):
    reservation = Reservation(
        id=111,
        house_id=house.id,
        connection_id=None,
        source=ReservationSources.MANUAL,
        channel=None,
        channel_id='',
        checkin=context.request.checkin,
        checkout=context.request.checkout,
        booked_at=timezone.now(),
        status=ReservationStatuses.HOLD,
        is_verified=True,
    )
    service._houses_repo = Mock(get=Mock(return_value=Some(house)))
    service._roomtypes_repo = Mock(get=Mock(return_value=Some(room_type)))
    service._prices_repo = Mock(get_plan=Mock(return_value=Some(rate_plan)),
                                select_rates=Mock(return_value=[rate]))
    service._reservations_repo = Mock(
        save=Mock(
            return_value=(Some(attr.evolve(reservation, is_verified=False)),
                          True)),
        accept=Mock(return_value=Some(reservation)),
    )
    service._policies_repo = Mock(get=Mock(
        return_value=Some(cancellation_policy)))

    result = service.execute(house.id, context.request, context.user)
    assert is_successful(result), result.failure()
    assert result.unwrap() == attr.evolve(reservation, is_verified=True)
예제 #14
0
    def get(self, object_id, survey_id):
        astro_object = self._get_object(object_id, survey_id)

        if is_successful(astro_object):
            aid = astro_object.unwrap()["aid"]
            non_detections = self._get_non_detections(aid)

            if is_successful(non_detections):
                return non_detections
            else:
                return Failure(
                    ClientErrorException(
                        ObjectNotFound(object_id=object_id,
                                       survey_id=survey_id)))
        else:
            return astro_object
def test_check_reservation_ok(service: AcceptReservationChanges,
                              context: Context, house, reservation):
    context.house = house
    context.source = reservation

    result = service.check_reservation(context)
    assert is_successful(result)
def test_select_house_error(service: RegisterReservationInOdoo, context: Context):
    service._houses_repo = Mock(get=Mock(side_effect=RuntimeError('ERR')))

    result = service.select_house(context)
    assert not is_successful(result)
    assert result.failure().failure == ReservationErrors.error
    assert str(result.failure().exc) == 'ERR'
예제 #17
0
def test_path_to_missing_key_is_ok():
    """Test that missing keys are okay."""
    dictionary = {'key': ['val1']}
    test = ['val2', dictionary, ['bob']]
    t_result = set_value_in_dict(*test)
    assert is_successful(t_result)
    assert dictionary['bob'] == 'val2'  # type: ignore
def test_select_reservation_fail(service: RegisterReservationInOdoo, context: Context, house):
    service._reservations_repo = Mock(get=Mock(return_value=Nothing))
    context.house = house

    result = service.select_reservation(context)
    assert not is_successful(result)
    assert result.failure().failure == ReservationErrors.missed_reservation
예제 #19
0
    def get(self, object_id, survey_id):
        astro_object = self._get_object(object_id, survey_id)

        if is_successful(astro_object):
            aid = astro_object.unwrap()["aid"]
            detections = self._get_detections(aid)

            if is_successful(detections) and len(detections.unwrap()) > 0:
                return detections
            else:
                raise Failure(
                    ClientErrorException(
                        ObjectNotFound(object_id=object_id,
                                       survey_id=self.survey_id)))
        else:
            return astro_object
예제 #20
0
def test_ioresulte():
    """Ensures that IOResultE correctly typecast."""
    container: IOResult[float, Exception] = _function(1)
    assert container == IOSuccess(10.0)

    container = _function(0)
    assert is_successful(container) is False
예제 #21
0
def test_custom_readerresult_types_resolve(
    thing: CustomReaderResult, ) -> None:
    """Ensures that type aliases are resolved correctly."""
    real_result = thing(RequiresContextResultE.empty)
    if is_successful(real_result):
        assert isinstance(real_result.unwrap(), int)
    else:
        assert isinstance(real_result.failure(), str)
예제 #22
0
def test_select_houses_all_ok(service, context, house):
    house2 = attr.evolve(house, id=111)
    service._houses_repo = Mock(select=Mock(return_value=[house, house2]))
    context.house_id = None

    result = service.select_houses(context)
    assert is_successful(result)
    assert result.unwrap().houses == [house, house2]
예제 #23
0
def test_invalid_alias_required(iterable_validator):
    """Test that alias key is required."""
    test: dict = {'path': ['date']}
    validate_result = iterable_validator(test)
    assert not is_successful(validate_result)
    assert isinstance(validate_result.failure(), ValueError)
    assert isinstance(validate_result.failure().args[0][0], ValidationError)
    assert "'alias' is a required property" in str(validate_result.failure())
예제 #24
0
def test_select_roomtypes_one_ok(service, context, house, user, room_type):
    service._roomtypes_repo = Mock(get=Mock(return_value=Some(room_type)))
    context.houses = [house]
    context.users = {house.company.id: user}

    result = service.select_roomtypes(context)
    assert is_successful(result)
    assert result.unwrap().room_types == {house.id: [room_type]}
예제 #25
0
def test_select_houses_all_error(service, context):
    service._houses_repo = Mock(select=Mock(side_effect=RuntimeError("ERR")))
    context.house_id = None

    result = service.select_houses(context)
    assert not is_successful(result)
    assert result.failure().failure == OccupancyErrors.error
    assert str(result.failure().exc) == "ERR"
예제 #26
0
def test_select_roomtypes_one_fail(service, context, house, user):
    service._roomtypes_repo = Mock(get=Mock(return_value=Nothing))
    context.houses = [house]
    context.users = {house.company.id: user}

    result = service.select_roomtypes(context)
    assert not is_successful(result)
    assert result.failure().failure == OccupancyErrors.missed_roomtype
예제 #27
0
def test_select_roomtypes_no_houses(service, context):
    context.houses = []
    context.users = {}
    context.roomtype_id = None

    result = service.select_roomtypes(context)
    assert is_successful(result)
    assert result.unwrap().room_types == {}
def test_select_room_types_ok(service: UpdateReservationPrices,
                              context: Context, house, room_type):
    service._roomtypes_repo = Mock(select=Mock(return_value=[room_type]))
    context.house = house

    result = service.select_room_types(context)
    assert is_successful(result)
    assert result.unwrap().room_types == {room_type.id: room_type}
def test_select_rate_plan_ok(service: UpdateReservationPrices,
                             context: Context, house, rate_plan):
    service._prices_repo = Mock(get_plan=Mock(return_value=Some(rate_plan)))
    context.house = house

    result = service.select_rate_plan(context)
    assert is_successful(result)
    assert result.unwrap().rate_plan == rate_plan
def test_select_rate_plan_fail(service: UpdateReservationPrices,
                               context: Context, house):
    service._prices_repo = Mock(get_plan=Mock(return_value=Nothing))
    context.house = house

    result = service.select_rate_plan(context)
    assert not is_successful(result)
    assert result.failure().failure == ReservationErrors.missed_rateplan