"""Tests for ows-project Model.""" from collections import namedtuple from flexmock import flexmock from owsrequest import request as requests from owsrequest.test_utils import mock_ows_requests from sales_goals import api from sales_goals.models import ows_project def test_check_project_ownership_success( monkeypatch, valid_get_header, context): """Test HEAD request for checking project ownership success.""" with context, api.app.test_request_context(headers=valid_get_header): project_id = 88 request_spec = [{ 'service': 'ows-project-manager', 'status': 200, 'path': '/ownership/vendor/ABC123/project/88'}] monkeypatch.setattr(requests, 'head', mock_ows_requests(request_spec)) account_type = 'vendor' account_id = 'ABC123' ownership_response = ows_project.check_project_ownership( project_id, account_type, account_id) assert ownership_response.status == 200 def test_check_project_ownership_fails( monkeypatch, valid_get_header, context): """Test HEAD request for checking project ownership fails.""" with context, api.app.test_request_context(headers=valid_get_header): project_id = 88 request_spec = [{ 'service': 'ows-project-manager', 'status': 403, 'path': '/ownership/vendor/ABC123/project/88'}] monkeypatch.setattr(requests, 'head', mock_ows_requests(request_spec)) account_type = 'vendor' account_id = 'ABC123' ownership_response = ows_project.check_project_ownership( project_id, account_type, account_id) assert ownership_response.status == 403 Response = namedtuple('Response', ['json', 'status_code']) def test_get_project_marketing_priorities_success( valid_get_header, context): """Test calls ows_project_manager successfully.""" with context, api.app.test_request_context(headers=valid_get_header): (flexmock(requests) .should_receive('get') .with_args('ows-project-manager', '/project/1/mkt_priority') .and_return(Response(lambda: {'mkt_priority': []}, 200))) response = ows_project.get_project_marketing_priorities(1) assert response.status == 200 assert response.message == [] def test_get_project_marketing_priorities_fail( valid_get_header, context): """Test calls ows_project_manager failing.""" with context, api.app.test_request_context(headers=valid_get_header): (flexmock(requests) .should_receive('get') .with_args('ows-project-manager', '/project/1/mkt_priority') .and_return(Response(None, 500))) response = ows_project.get_project_marketing_priorities(1) assert response.status == 500 def test_dataload_project_marketing_priorities_success( valid_get_header, context): """Test calls ows_project_manager successfully.""" project_ids = [1, 2, 3] with context, api.app.test_request_context(headers=valid_get_header): (flexmock(requests) .should_receive('post') .with_args( 'ows-project-manager', '/project/mkt_priority/dataloader', json=project_ids) .and_return(Response(lambda: {'mkt_priority': []}, 200))) response = ows_project.dataload_project_marketing_priorities(project_ids) assert response.status == 200 assert response.message == [] def test_set_project_marketing_priorities_success( valid_get_header, context): """Test calls ows project manager successfully.""" with context, api.app.test_request_context(headers=valid_get_header): (flexmock(requests) .should_receive('post') .with_args( 'ows-project-manager', '/project/1/mkt_priority', json={'country_id': 2, 'priority': 'a'}) .and_return(Response(None, 200))) response = ows_project.set_project_marketing_priority(1, 2, 'a') assert response.status == 200 def test_delete_marketing_priorities_success( valid_get_header, context): """Test calls ows project manager successfully.""" with context, api.app.test_request_context(headers=valid_get_header): (flexmock(requests) .should_receive('delete') .with_args('ows-project-manager', '/project/1/mkt_priority/2') .and_return(Response(None, 200))) response = ows_project.delete_project_marketing_priority(1, 2) assert response.status == 200 def test_get_products_for_project_success( valid_get_header, context): """Test calls ows_project_manager successfully.""" with context, api.app.test_request_context(headers=valid_get_header): (flexmock(requests) .should_receive('get') .with_args('ows-project-manager', '/project/1/products') .and_return(Response(lambda: {'items': []}, 200))) response = ows_project.get_products_for_project(1) assert response == {'items': []} def test_delete_project_marketing_priority_in_bulk( valid_get_header, context): """Test calls ows project manager successfully.""" with context, api.app.test_request_context(headers=valid_get_header): (flexmock(requests) .should_receive('delete') .with_args('ows-project-manager', '/project/1/mkt_priority') .and_return(Response(None, 200))) response = ows_project.delete_project_marketing_priority_in_bulk(1) assert response.status == 200