import pytest from unittest.mock import MagicMock from unittest.mock import Mock from labelaudit.logic import audit_persistence from labelaudit.logic import start_audit from labelaudit.logic.result import Result from labelaudit.models.label_audit import LabelAudit from labelaudit.tasks import label_tasks vendor_id = 123 user_id = 456 audit_id = 123456 @pytest.fixture def label_audit(): audit = LabelAudit() audit.youtube_audit_id = audit_id audit.vendor_id = vendor_id audit.initiated_by_id = user_id return audit @pytest.fixture def vapi_audit_data(): return { 'auditStatus': 'requested', 'createdTimestamp': '1901-10-04 11:04:22', 'initiatedById': user_id, 'reportLocation': 'i-dunno-over-there-i-think-leave-me-alone', 'updatedTimestamp': '1904-04-29 00:01:37', 'youtubeAuditId': audit_id} def make_persist_succeed(monkeypatch, label_audit, vapi_audit_data): persist_result = Result(message=vapi_audit_data, status=201) persist = Mock(return_value=persist_result) monkeypatch.setattr(audit_persistence, 'persist', persist) def test_create_new_youtube_audit_status(monkeypatch): persist_result = Result(errors={'for': 'bar'}, status=500) persist = Mock(return_value=persist_result) monkeypatch.setattr(audit_persistence, 'persist', persist) start_audit.start_label_audit(vendor_id, user_id) new_audit = persist.call_args[0][0] assert new_audit.audit_status == 'requested' def test_create_new_youtube_audit_status_code(monkeypatch, label_audit, vapi_audit_data): make_persist_succeed(monkeypatch, label_audit, vapi_audit_data) create_result = start_audit.create_new_youtube_audit(vendor_id, user_id) assert create_result.status == 201 def test_start_label_audit_adds_to_queue(monkeypatch, label_audit, vapi_audit_data): make_persist_succeed(monkeypatch, label_audit, vapi_audit_data) monkeypatch.setattr(label_tasks, 'process_audit', MagicMock()) start_audit.start_label_audit(vendor_id, user_id) label_tasks.process_audit.delay.assert_called_with(audit_id)