"""Tests for Schedule model.""" from abacus_schedule.models.schedule import Schedule from tests.utils.factories import ScheduleAttachmentFactory, ScheduleFactory def test_schedule(): """Test schedule model.""" schedule = ScheduleFactory.create() schedule_info = Schedule.get_by_id(schedule.schedule_id) assert schedule_info.schedule_id == schedule.schedule_id assert schedule_info.schedule_name == schedule.schedule_name assert schedule_info.conditions == {} def test_get_schedules_by_target(): """Test get schedules by target.""" ScheduleFactory.create() ScheduleFactory.create() ScheduleFactory.create(target_id='another-contributor-id') schedule_results = Schedule.get_schedules_by_target('contributor', 'contributor-id') assert len(schedule_results) == 2 for schedule in schedule_results: assert schedule.target_type == 'contributor' assert schedule.target_id == 'contributor-id' def test_get_schedules_exclude_contributor_only_schedules(): """Test to get schedule by target. "contributor only" schedules are excluded. """ target_id = '456-456' schedule = ScheduleFactory.create(target_id=target_id, schedule_name='bbbbb') ScheduleAttachmentFactory.create( schedule=schedule, target_id=target_id, target_type='contributor' ) ScheduleFactory.create(target_id=target_id, schedule_name='eeeee') ScheduleFactory.create(target_id=target_id, schedule_name='aaaaa') ScheduleFactory.create(target_id='123') schedule_results = Schedule.get_schedules_by_target('contributor', target_id) assert len(schedule_results) == 2 assert all( schedule.schedule_name in ['aaaaa', 'eeeee'] for schedule in schedule_results ) def test_get_schedules_include_contributor_only_schedules(): """Test to get schedules by target. if "include_only_schedules" is true then "contributor only" schedules are returned. """ target_id = '456-456' schedule = ScheduleFactory.create(target_id=target_id, schedule_name='bbbbb') ScheduleAttachmentFactory.create( schedule=schedule, target_id=target_id, target_type='contributor' ) ScheduleFactory.create(target_id=target_id, schedule_name='eeeee') ScheduleFactory.create(target_id=target_id, schedule_name='aaaaa') ScheduleFactory.create(target_id='123') schedule_results = Schedule.get_schedules_by_target('contributor', target_id, True) assert len(schedule_results) == 1 assert schedule_results[0].schedule_name == 'bbbbb'