"""Unit Tests for schedule_attachment model.""" from abacus_schedule.constants import constants from abacus_schedule.models.schedule_attachment import ScheduleAttachment from tests.utils.factories import ScheduleAttachmentFactory, ScheduleFactory def test_create_schedule_attachment(): """Test to create schedule attachment.""" mock_schedule = ScheduleFactory.create() ScheduleAttachment.create( schedule_id=mock_schedule.schedule_id, target_type=constants.SCHEDULE_ATTACHMENT_TARGET_TYPE.CONTRIBUTION, target_id='8bcab378-77b2-4747-9d72-2c4ec90e7753', ) result = ScheduleAttachment.query.all() assert len(result) == 1 assert result[0].schedule_id == mock_schedule.schedule_id assert ( result[0].target_type == constants.SCHEDULE_ATTACHMENT_TARGET_TYPE.CONTRIBUTION ) def test_get_by_id(): """Test to get schedule attachment by id.""" mock_schedule = ScheduleFactory.create() mock_schedule_attachment = ScheduleAttachmentFactory.create( schedule=mock_schedule, target_type=constants.SCHEDULE_ATTACHMENT_TARGET_TYPE.CONTRIBUTION, target_id='4bcab378-77b2-4747-9d72-2c4ec90e7753', ) result = ScheduleAttachment.get_by_id( mock_schedule_attachment.schedule_attachment_id ) assert ( result.schedule_attachment_id == mock_schedule_attachment.schedule_attachment_id ) def test_get_deleted_schedule_attachment_by_id(): """Test to get deleted schedule attachment.""" mock_schedule = ScheduleFactory.create() mock_schedule_attachment = ScheduleAttachmentFactory.create( schedule=mock_schedule, target_type=constants.SCHEDULE_ATTACHMENT_TARGET_TYPE.CONTRIBUTION, target_id='4bcab378-77b2-4747-9d72-2c4ec90e7753', deleted_by='Test User', deleted_at='2023-02-28 21:23:13', ) result = ScheduleAttachment.get_by_id( mock_schedule_attachment.schedule_attachment_id ) assert result is None def test_get_schedule_attachments_by_schedule_id(): """Test to get schedule attachments by schedule id.""" mock_schedule_1 = ScheduleFactory.create() mock_schedule_2 = ScheduleFactory.create() mock_schedule_attachement_1 = ScheduleAttachmentFactory.create( schedule=mock_schedule_1, target_type=constants.SCHEDULE_ATTACHMENT_TARGET_TYPE.CONTRIBUTION, target_id='4bcab378-77b2-4747-9d72-2c4ec90e7753', ) mock_schedule_attachement_2 = ScheduleAttachmentFactory.create( schedule=mock_schedule_1, target_type=constants.SCHEDULE_ATTACHMENT_TARGET_TYPE.CONTRIBUTION, target_id='1bcab370-77b2-4747-9d72-2c4ec90e7753', ) items, total_count = ScheduleAttachment.get_schedule_attachments_by_schedule_id( mock_schedule_1.schedule_id, limit=10, offset=0 ) assert ( items[0].schedule_attachment_id == mock_schedule_attachement_1.schedule_attachment_id ) assert ( items[1].schedule_attachment_id == mock_schedule_attachement_2.schedule_attachment_id ) assert total_count == 2 items, total_count = ScheduleAttachment.get_schedule_attachments_by_schedule_id( mock_schedule_2.schedule_id, limit=10, offset=0 ) assert total_count == 0 def test_get_schedule_attachments(): """Test to get schedule attachments by target ids.""" mock_schedule = ScheduleFactory.create() target_ids = [ '4bcab378-77b2-4747-9d72-2c4ec90e7753', '1bcab370-77b2-4747-9d72-2c4ec90e7753', ] ScheduleAttachmentFactory.create( schedule=mock_schedule, target_type=constants.SCHEDULE_ATTACHMENT_TARGET_TYPE.CONTRIBUTION, target_id=target_ids[0], ) ScheduleAttachmentFactory.create( schedule=mock_schedule, target_type=constants.SCHEDULE_ATTACHMENT_TARGET_TYPE.CONTRIBUTION, target_id=target_ids[1], deleted_by='Test User', deleted_at='2023-02-28 21:23:13', ) schedule_attachments = ScheduleAttachment.get_schedule_attachments( mock_schedule.schedule_id, target_ids, constants.SCHEDULE_ATTACHMENT_TARGET_TYPE.CONTRIBUTION, ) assert len(schedule_attachments) == 2 assert [ schedule_attachment.target_id in target_ids for schedule_attachment in schedule_attachments ]