Exemplo n.º 1
0
def create_reservation(
    resource_id=1,
    starts_at=parse_datetime('2018-11-21T15:00'),
    ends_at=parse_datetime('2018-11-21T16:00'),
    is_recurring=False,
    reserved_by='Tony Stark',
    title='Meeting',
    description='Some description about this meeting',
    recurring_frequency=RecurringFrequency.none,
    recurring_count=0,
):
    """The verb *make* is generally used with reservations (e.g., make a
    reservation), but we decided to use *create* as a verb to keep things
    consistent in the context of CRUD operations.
    """
    return Reservation.create(
        resource_id=resource_id,
        starts_at=starts_at,
        ends_at=ends_at,
        is_recurring=is_recurring,
        reserved_by=reserved_by,
        title=title,
        description=description,
        recurring_frequency=recurring_frequency,
        recurring_count=recurring_count,
    )
Exemplo n.º 2
0
def test_create_overlapping_recurring_reservations():
    # TODO: Need to deal with overlapping recurring reservations
    with pytest.raises(ValueError):
        create_reservation(
            starts_at=parse_datetime('2018-11-02T12:00'),
            ends_at=parse_datetime('2018-11-02T13:00'),
            recurring_frequency=RecurringFrequency.weekly,
            recurring_count=2,
        )
        create_reservation(
            starts_at=parse_datetime('2018-11-09T12:00'),
            ends_at=parse_datetime('2018-11-09T13:00'),
        )
Exemplo n.º 3
0
def test_create_recurring_reservation():
    create_reservation(starts_at=parse_datetime('2018-11-01T12:00'),
                       ends_at=parse_datetime('2018-11-01T13:00'),
                       title='Weekly Event 1',
                       recurring_frequency=RecurringFrequency.weekly,
                       recurring_count=3)

    rs = Reservation.find_reservations_on(parse_date('2018-11-01'))
    assert rs.count() == 1
    r = rs.first()
    assert r.title == 'Weekly Event 1'
    assert r.starts_at == parse_datetime('2018-11-01T12:00')
    assert r.ends_at == parse_datetime('2018-11-01T13:00')

    rs = Reservation.find_reservations_on(parse_date('2018-11-08'))
    assert rs.count() == 1
    r = rs.first()
    assert r.title == 'Weekly Event 1'
    assert r.starts_at == parse_datetime('2018-11-08T12:00')
    assert r.ends_at == parse_datetime('2018-11-08T13:00')

    rs = Reservation.find_reservations_on(parse_date('2018-11-15'))
    assert rs.count() == 1
    r = rs.first()
    assert r.title == 'Weekly Event 1'
    assert r.starts_at == parse_datetime('2018-11-15T12:00')
    assert r.ends_at == parse_datetime('2018-11-15T13:00')

    rs = Reservation.find_reservations_on(parse_date('2018-11-22'))
    assert rs.count() == 0

    rs = Reservation.find_reservations_on(parse_date('2018-11-02'))
    assert rs.count() == 0
Exemplo n.º 4
0
def test_find_reservations():
    assert Reservation.query.count() == 0

    create_reservation(starts_at=parse_datetime('2018-11-19T12:00'),
                       ends_at=parse_datetime('2018-11-19T13:00'),
                       title='Reservation 1')
    create_reservation(starts_at=parse_datetime('2018-11-21T12:00'),
                       ends_at=parse_datetime('2018-11-21T13:00'),
                       title='Reservation 2')
    create_reservation(starts_at=parse_datetime('2018-11-21T13:00'),
                       ends_at=parse_datetime('2018-11-21T14:00'),
                       title='Reservation 3')

    reservations = Reservation.find_reservations_on(parse_date('2018-11-19'))
    assert reservations.count() == 1
    assert reservations.first().title == 'Reservation 1'

    reservations = Reservation.find_reservations_on(parse_date('2018-11-20'))
    assert reservations.count() == 0

    reservations = Reservation.find_reservations_on(parse_date('2018-11-21'))
    assert reservations.count() == 2
    reservations = reservations.all()
    assert reservations[0].title == 'Reservation 2'
    assert reservations[1].title == 'Reservation 3'
Exemplo n.º 5
0
def test_create_overlapping_reservations():
    with pytest.raises(ValueError):
        create_reservation(
            resource_id=2,
            starts_at=parse_datetime('2018-11-01T12:00'),
            ends_at=parse_datetime('2018-11-01T13:00'),
        )
        create_reservation(
            resource_id=2,
            starts_at=parse_datetime('2018-11-01T12:30'),
            ends_at=parse_datetime('2018-11-01T13:30'),
        )

    # Making a reservation for a different resource should not be an issue
    create_reservation(
        resource_id=3,
        starts_at=parse_datetime('2018-11-01T12:30'),
        ends_at=parse_datetime('2018-11-01T13:30'),
    )
Exemplo n.º 6
0
def test_make_day_bounds():
    rng = make_day_bounds(parse_datetime('2018-11-21T23:23'))
    assert rng[0] == parse_datetime('2018-11-21T00:00')
    assert rng[1] == parse_datetime('2018-11-21T23:59')