"""Tests for ows-notifications model.""" from owsrequest import request from owsrequest.test_utils import MockOwsResponse from product_review.constants import services from product_review.models import ows_notifications mock_approval_request_json = { "product_id": 123, } mock_rejection_request_json = { "product_id": 123, "rejection_reasons": [ {"title": "General Comments", "comments": "a rejection note"} ], } def test_send_approval_email(mocker): """Test sending an approval email.""" mock_response = MockOwsResponse(200, ["LabelProfile_123"]) mocker.patch.object(request, "post", return_value=mock_response) result = ows_notifications.send_approval_email(123) request.post.assert_called_once_with( services.OWS_NOTIFICATIONS, "/activity/product_approval", json=mock_approval_request_json, ) expected = {"notification_type": "approval", "profiles": ["LabelProfile_123"]} assert result.status == 201 assert result.message == expected def test_send_approval_email_failed(mocker): """Test sending an approval email ows-notifications failure.""" mock_response = MockOwsResponse(400, "Bad Request") mocker.patch.object(request, "post", return_value=mock_response) result = ows_notifications.send_approval_email(123) request.post.assert_called_once_with( services.OWS_NOTIFICATIONS, "/activity/product_approval", json=mock_approval_request_json, ) assert result.status == 400 assert result.errors == { "code": "ows_notifications_error", "message": "Bad Request", } def test_send_rejection_email(mocker): """Test sending a rejection email.""" mock_response = MockOwsResponse(200, ["LabelProfile_123"]) mocker.patch.object(request, "post", return_value=mock_response) result = ows_notifications.send_rejection_email(123, "a rejection note") request.post.assert_called_once_with( services.OWS_NOTIFICATIONS, "/activity/product_rejection", json=mock_rejection_request_json, ) expected = {"notification_type": "rejection", "profiles": ["LabelProfile_123"]} assert result.status == 201 assert result.message == expected def test_send_rejection_email_failed(mocker): """Test sending a rejection email ows-notifications failure.""" mock_response = MockOwsResponse(400, "Bad Request") mocker.patch.object(request, "post", return_value=mock_response) result = ows_notifications.send_rejection_email(123, "a rejection note") request.post.assert_called_once_with( services.OWS_NOTIFICATIONS, "/activity/product_rejection", json=mock_rejection_request_json, ) assert result.status == 400 assert result.errors == { "code": "ows_notifications_error", "message": "Bad Request", }