本文整理汇总了Python中indico.testing.util.bool_matrix函数的典型用法代码示例。如果您正苦于以下问题:Python bool_matrix函数的具体用法?Python bool_matrix怎么用?Python bool_matrix使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了bool_matrix函数的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: create_blocking
create_blocking(start_date=date(2014, 12, 5), end_date=date(2014, 12, 7)),
create_blocking(start_date=date(2014, 12, 6), end_date=date(2014, 12, 8)),
]
filters = {"start_date": start_date, "end_date": end_date}
assert set(BlockedRoom.find_with_filters(filters)) == set(blockings[i].blocked_rooms[0] for i in matches)
@pytest.mark.parametrize("state", BlockedRoom.State)
def test_find_with_filters_state(create_blocking, state):
other_state = next(s for s in BlockedRoom.State if s != state)
create_blocking(state=other_state)
blocking = create_blocking(state=state)
assert set(BlockedRoom.find_with_filters({"state": state})) == {blocking.blocked_rooms[0]}
@pytest.mark.parametrize(("with_user", "with_reason"), bool_matrix(".."))
def test_reject(dummy_user, dummy_blocking, smtp, with_user, with_reason):
br = dummy_blocking.blocked_rooms[0]
assert br.state == BlockedRoom.State.pending
kwargs = {}
if with_user:
kwargs["user"] = dummy_user
if with_reason:
kwargs["reason"] = u"foo"
br.reject(**kwargs)
assert br.state == BlockedRoom.State.rejected
mail = extract_emails(smtp, one=True, to=dummy_blocking.created_by_user.email, subject="Room blocking REJECTED")
if with_reason:
assert kwargs["reason"] in mail.as_string()
assert not smtp.outbox
示例2: test_is_active_at
def test_is_active_at(create_blocking, check_date, expected):
start_date = date(2014, 12, 5)
end_date = date(2014, 12, 7)
check_date = datetime.strptime(check_date, '%Y-%m-%d').date()
blocking = create_blocking(start_date=start_date, end_date=end_date)
assert blocking.is_active_at(check_date) == expected
assert Blocking.find_first(Blocking.is_active_at(check_date)) == (blocking if expected else None)
def test_created_by_user(dummy_blocking, dummy_user, create_user):
assert dummy_blocking.created_by_user == dummy_user
dummy_blocking.created_by_user = user = create_user(123)
assert dummy_blocking.created_by_user == user
@pytest.mark.parametrize(('is_admin', 'is_creator', 'expected'), bool_matrix('..', expect=any))
def test_can_be_modified_deleted(dummy_blocking, create_user, is_admin, is_creator, expected):
user = create_user(123, rb_admin=is_admin)
if is_creator:
dummy_blocking.created_by_user = user
assert dummy_blocking.can_be_modified(user) == expected
assert dummy_blocking.can_be_deleted(user) == expected
@pytest.mark.parametrize(
('is_creator', 'is_admin', 'has_room', 'is_room_owner', 'expected'),
bool_matrix('!00..', expect=True) + # creator or admin
bool_matrix(' 00..', expect='all_dynamic') # room owner
)
def test_can_be_overridden(dummy_room, dummy_blocking, create_user,
is_creator, is_admin, has_room, is_room_owner, expected):
示例3: bool_matrix
# Indico is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Indico; if not, see <http://www.gnu.org/licenses/>.
import pytest
from indico.modules.rb import rb_settings
from indico.modules.rb.util import rb_check_user_access, rb_is_admin
from indico.testing.util import bool_matrix
@pytest.mark.parametrize(('is_rb_admin', 'acl_empty', 'in_acl', 'expected'), bool_matrix('...', expect=any))
def test_rb_check_user_access(db, mocker, dummy_user, dummy_group, is_rb_admin, acl_empty, in_acl, expected):
if is_rb_admin:
mocker.patch('indico.modules.rb.util.rb_is_admin', return_value=True)
if not acl_empty:
rb_settings.acls.add_principal('authorized_principals', dummy_group)
if in_acl:
rb_settings.acls.add_principal('authorized_principals', dummy_user)
assert rb_check_user_access(dummy_user) == expected
@pytest.mark.parametrize(('is_admin', 'is_rb_admin', 'expected'), bool_matrix('..', expect=any))
def test_rb_is_admin(create_user, is_admin, is_rb_admin, expected):
user = create_user(1, admin=is_admin, rb_admin=is_rb_admin)
assert rb_is_admin(user) == expected
示例4: create_blocking
create_blocking(start_date=date(2014, 12, 6), end_date=date(2014, 12, 8))
]
filters = {'start_date': start_date,
'end_date': end_date}
assert set(BlockedRoom.find_with_filters(filters)) == set(blockings[i].blocked_rooms[0] for i in matches)
@pytest.mark.parametrize('state', BlockedRoom.State)
def test_find_with_filters_state(create_blocking, state):
other_state = next(s for s in BlockedRoom.State if s != state)
create_blocking(state=other_state)
blocking = create_blocking(state=state)
assert set(BlockedRoom.find_with_filters({'state': state})) == {blocking.blocked_rooms[0]}
@pytest.mark.parametrize(('with_user', 'with_reason'), bool_matrix('..'))
def test_reject(dummy_user, dummy_blocking, smtp, with_user, with_reason):
br = dummy_blocking.blocked_rooms[0]
assert br.state == BlockedRoom.State.pending
kwargs = {}
if with_user:
kwargs['user'] = dummy_user
if with_reason:
kwargs['reason'] = u'foo'
br.reject(**kwargs)
assert br.state == BlockedRoom.State.rejected
mail = extract_emails(smtp, one=True, to=dummy_blocking.created_by_user.email, subject='Room blocking REJECTED')
if with_reason:
assert kwargs['reason'] in mail.as_string()
assert not smtp.outbox
示例5: test_max_capacity
def test_max_capacity(create_room):
assert not Room.query.count()
assert Room.max_capacity == 0
create_room(capacity=0)
assert Room.max_capacity == 0
create_room(capacity=10)
create_room(capacity=5)
assert Room.max_capacity == 10
@pytest.mark.parametrize(
('has_booking', 'has_blocking',
'has_pre_booking', 'include_pre_bookings',
'has_pending_blocking', 'include_pending_blockings',
'filtered'),
set(bool_matrix('00.0.0', expect=False) + # nothing confirmed/pending
bool_matrix('000.0.', expect=False) + # nothing pending included
bool_matrix('1.....', expect=True) + # confirmed booking
bool_matrix('.1....', expect=True) + # active blocking
bool_matrix('00....', expect=lambda x: all(x[2:4]) or all(x[4:6]))) # included pending booking/blocking
)
def test_filter_available(dummy_room, create_reservation, create_blocking,
has_booking, has_blocking,
has_pre_booking, include_pre_bookings,
has_pending_blocking, include_pending_blockings, filtered):
if has_booking:
create_reservation(start_dt=datetime.combine(date.today(), time(8)),
end_dt=datetime.combine(date.today(), time(10)))
if has_pre_booking:
create_reservation(start_dt=datetime.combine(date.today(), time(10)),
end_dt=datetime.combine(date.today(), time(12)),
示例6: test_unimplemented
(RuntimeError, IndicoError, 'foo'),
(Exception, Exception, 'bar'),
(ValueError, ValueError, 'bar')
))
def test_unimplemented(raised, caught, message):
@unimplemented(RuntimeError, message='foo')
def _func():
raise raised('bar')
exc_info = pytest.raises(caught, _func)
assert exc_info.value.message == message
@pytest.mark.parametrize(
('not_repeating', 'only_one_valid', 'propagate', 'proxied'),
bool_matrix('..0', expect=False) +
bool_matrix('..1', expect='any_dynamic')
)
@pytest.mark.usefixtures('smtp')
def test_proxy_to_reservation_if_last_valid_occurrence(db, mock, create_reservation, dummy_avatar,
not_repeating, only_one_valid, propagate, proxied):
resv = create_reservation(start_dt=datetime.combine(date.today(), time(8)),
end_dt=datetime.combine(date.today() + timedelta(days=1), time(17)),
repeat_frequency=RepeatFrequency.NEVER if not_repeating else RepeatFrequency.DAY)
if only_one_valid:
for occ in resv.occurrences[1:]:
occ.is_cancelled = True
db.session.flush()
occ = resv.occurrences.first()
mock.patch.object(resv, 'cancel')
示例7: test_is_archived
@pytest.mark.parametrize(('days_delta', 'expected'), (
(-1, True), # Reservation in the past
(1, False), # Reservation in the future
(0, False), # Reservation in course
))
def test_is_archived(create_reservation, days_delta, expected):
start_dt = date.today() + relativedelta(days=days_delta, hour=0, minute=0)
end_dt = date.today() + relativedelta(days=days_delta, hour=23, minute=59)
reservation = create_reservation(start_dt=start_dt, end_dt=end_dt)
assert reservation.is_archived == expected
@pytest.mark.parametrize(('is_accepted', 'is_rejected', 'is_cancelled', 'expected'),
bool_matrix('...', expect=lambda x: not any(x))) # neither accepted/rejected/cancelled
def test_is_pending(create_reservation, is_accepted, is_rejected, is_cancelled, expected):
reservation = create_reservation(is_accepted=is_accepted, is_rejected=is_rejected, is_cancelled=is_cancelled)
assert reservation.is_pending == expected
assert Reservation.find_first(is_pending=expected) == reservation
@pytest.mark.parametrize(('repeat_frequency', 'expected'), (
(RepeatFrequency.NEVER, False),
(RepeatFrequency.DAY, True),
(RepeatFrequency.WEEK, True),
(RepeatFrequency.MONTH, True),
))
def test_is_repeating(create_reservation, repeat_frequency, expected):
reservation = create_reservation(repeat_frequency=repeat_frequency)
assert reservation.is_repeating == expected
示例8: list
db.session.flush()
results = list(Room.get_with_data(only_active=only_active))
assert len(results) == len(rooms) - only_active
for row in results:
room = row.pop('room')
room_type = room_types[room]
if room_type == 'inactive':
assert not only_active
@pytest.mark.parametrize(
('has_booking', 'has_blocking',
'has_pre_booking', 'include_pre_bookings',
'has_pending_blocking', 'include_pending_blockings',
'filtered'),
set(bool_matrix('00.0.0', expect=False) + # nothing confirmed/pending
bool_matrix('000.0.', expect=False) + # nothing pending included
bool_matrix('1.....', expect=True) + # confirmed booking
bool_matrix('.1....', expect=True) + # active blocking
bool_matrix('00....', expect=lambda x: all(x[2:4]) or all(x[4:6]))) # included pending booking/blocking
)
def test_filter_available(dummy_room, create_reservation, create_blocking,
has_booking, has_blocking,
has_pre_booking, include_pre_bookings,
has_pending_blocking, include_pending_blockings, filtered):
if has_booking:
create_reservation(start_dt=datetime.combine(date.today(), time(8)),
end_dt=datetime.combine(date.today(), time(10)))
if has_pre_booking:
create_reservation(start_dt=datetime.combine(date.today(), time(10)),
end_dt=datetime.combine(date.today(), time(12)),
示例9: relativedelta
end_dt=date.today() + relativedelta(hour=5))
return db_occ, occ
# ======================================================================================================================
# Hybrid property tests
# ======================================================================================================================
def test_date(dummy_occurrence):
assert dummy_occurrence.date == date.today()
assert ReservationOccurrence.find_first(date=date.today()) == dummy_occurrence
@pytest.mark.parametrize(('is_rejected', 'is_cancelled', 'expected'),
bool_matrix('..', expect=lambda x: not any(x)))
def test_is_valid(db, dummy_occurrence, is_rejected, is_cancelled, expected):
dummy_occurrence.is_rejected = is_rejected
dummy_occurrence.is_cancelled = is_cancelled
db.session.flush()
assert dummy_occurrence.is_valid == expected
assert ReservationOccurrence.find_first(is_valid=expected) == dummy_occurrence
# ======================================================================================================================
# staticmethod tests
# ======================================================================================================================
def test_create_series_for_reservation(dummy_reservation):
occurrences = ReservationOccurrence.iter_create_occurrences(start=dummy_reservation.start_dt,
示例10: test_process_records_cascade
(ChangeType.created, False),
(ChangeType.deleted, False),
(ChangeType.data_changed, False),
(ChangeType.protection_changed, True),
(ChangeType.moved, True),
))
@pytest.mark.usefixtures('queue_entry_dummy_object')
def test_process_records_cascade(mocker, change, cascade):
"""Test if certain changes cascade to child elements"""
cascade_mock = mocker.patch('indico_livesync.simplify._process_cascaded_category_contents')
records = [LiveSyncQueueEntry(change=change)]
process_records(records)
assert cascade_mock.call_args == (({records[0]} if cascade else set(),),)
@pytest.mark.parametrize('changes', bool_matrix('......'))
def test_process_records_simplify(changes, mocker, db, create_event, dummy_agent):
"""Test if queue entries for the same object are properly simplified"""
event1 = create_event(id_=1)
event2 = create_event(id_=2)
db.session.add(dummy_agent)
db.session.add(event1)
db.session.add(event2)
refs = (
{'type': EntryType.event, 'event_id': event1.id},
{'type': EntryType.event, 'event_id': event2.id}
)
queue = []
示例11: set
assert entry.full_access
assert entry.read_access
assert set(entry.roles) == {'foo', 'bar', 'foobar'}
def test_update_principal_errors(create_event, dummy_user):
event = create_event()
with pytest.raises(ValueError):
event.update_principal(dummy_user, roles={'foo'}, add_roles={'bar'})
with pytest.raises(ValueError):
event.update_principal(dummy_user, roles={'foo'}, del_roles={'bar'})
with pytest.raises(ValueError):
event.update_principal(dummy_user, roles={'invalid'})
@pytest.mark.parametrize(('allow_key', 'has_key', 'authenticated', 'expected'), bool_matrix('...', expect=all))
def test_can_manage_key(create_event, dummy_user, allow_key, has_key, authenticated, expected):
event = create_event()
event.as_legacy.canKeyModify = lambda: has_key
assert event.can_manage(dummy_user if authenticated else None, allow_key=allow_key) == expected
@pytest.mark.usefixtures('request_context')
def test_can_manage_roles(create_event, dummy_user):
event = create_event()
assert not event.can_manage(dummy_user, 'ANY')
event.update_principal(dummy_user, roles={'foo'})
assert not event.can_manage(dummy_user)
assert not event.can_manage(dummy_user, 'bar')
assert event.can_manage(dummy_user, 'foo')
assert event.can_manage(dummy_user, 'ANY')
示例12: test_date
assert ReservationOccurrence.find_first(
ReservationOccurrence.is_in_notification_window(exclude_first_day=True)
) == (occurrence if expected_with_exclude else None)
# ======================================================================================================================
# Hybrid property tests
# ======================================================================================================================
def test_date(dummy_occurrence):
assert dummy_occurrence.date == date.today()
assert ReservationOccurrence.find_first(date=date.today()) == dummy_occurrence
@pytest.mark.parametrize(("is_rejected", "is_cancelled", "expected"), bool_matrix("..", expect=lambda x: not any(x)))
def test_is_valid(db, dummy_occurrence, is_rejected, is_cancelled, expected):
dummy_occurrence.is_rejected = is_rejected
dummy_occurrence.is_cancelled = is_cancelled
db.session.flush()
assert dummy_occurrence.is_valid == expected
assert ReservationOccurrence.find_first(is_valid=expected) == dummy_occurrence
# ======================================================================================================================
# staticmethod tests
# ======================================================================================================================
def test_create_series_for_reservation(dummy_reservation):
occurrences = ReservationOccurrence.iter_create_occurrences(
示例13: create_room
create_room(capacity=5)
assert Room.max_capacity == 10
@pytest.mark.parametrize(
(
"has_booking",
"has_blocking",
"has_pre_booking",
"include_pre_bookings",
"has_pending_blocking",
"include_pending_blockings",
"filtered",
),
set(
bool_matrix("00.0.0", expect=False)
+ bool_matrix("000.0.", expect=False) # nothing confirmed/pending
+ bool_matrix("1.....", expect=True) # nothing pending included
+ bool_matrix(".1....", expect=True) # confirmed booking
+ bool_matrix("00....", expect=lambda x: all(x[2:4]) or all(x[4:6])) # active blocking
), # included pending booking/blocking
)
def test_filter_available(
dummy_room,
create_reservation,
create_blocking,
has_booking,
has_blocking,
has_pre_booking,
include_pre_bookings,
has_pending_blocking,
示例14: test_is_archived
("days_delta", "expected"),
(
(-1, True), # Reservation in the past
(1, False), # Reservation in the future
(0, False), # Reservation in course
),
)
def test_is_archived(create_reservation, days_delta, expected):
start_dt = date.today() + relativedelta(days=days_delta, hour=0, minute=0)
end_dt = date.today() + relativedelta(days=days_delta, hour=23, minute=59)
reservation = create_reservation(start_dt=start_dt, end_dt=end_dt)
assert reservation.is_archived == expected
@pytest.mark.parametrize(
("is_accepted", "is_rejected", "is_cancelled", "expected"), bool_matrix("...", expect=lambda x: not any(x))
) # neither accepted/rejected/cancelled
def test_is_pending(create_reservation, is_accepted, is_rejected, is_cancelled, expected):
reservation = create_reservation(is_accepted=is_accepted, is_rejected=is_rejected, is_cancelled=is_cancelled)
assert reservation.is_pending == expected
assert Reservation.find_first(is_pending=expected) == reservation
@pytest.mark.parametrize(
("repeat_frequency", "expected"),
(
(RepeatFrequency.NEVER, False),
(RepeatFrequency.DAY, True),
(RepeatFrequency.WEEK, True),
(RepeatFrequency.MONTH, True),
),