"""Functional test for getting a primary contact.""" import json from unittest.mock import MagicMock from owsresponse import response from users.app import app from users.logic import user_info def test_get_primary_contact_with_grass(mocker): """Test get_primary_contact_with_grass.""" app.testing = True navigator = app.test_client() path = '/ows/vendor/123/primary-contact' vendor_id = '123' expected = {'vendor': {'name': 'foo', 'vendor_id': vendor_id}, 'subaccount': None} session_mock = MagicMock(return_value=response.Response(message=expected)) mocker.patch.object(user_info, 'get_primary_contact', session_mock) request = navigator.get(path) response_data = json.loads(request.data.decode('utf-8')) user_info.get_primary_contact.assert_called_with('vendor', vendor_id, None) assert request.status_code == 200 assert response_data == expected def test_get_primary_contact_with_grass_subaccount(monkeypatch): """Test get_primary_contact_with_grass for subaccount.""" app.testing = True navigator = app.test_client() path = '/ows/subaccount/123/primary-contact' vendor_id = '123' expected = { 'vendor': {'name': 'foo', 'vendor_id': vendor_id}, 'subaccount': {'subaccount_name': 'bar'}, } monkeypatch.setattr( user_info, 'get_primary_contact', MagicMock(return_value=response.Response(message=expected)), ) request = navigator.get(path) response_data = json.loads(request.data.decode('utf-8')) user_info.get_primary_contact.assert_called_with('subaccount', '123', None) assert request.status_code == 200 assert response_data == expected def test_get_primary_contact_with_params(mocker): """Test get_primary_contact with params.""" app.testing = True navigator = app.test_client() path = '/ows/vendor/123/primary-contact?active=N' vendor_id = '123' expected = {'vendor': {'name': 'foo', 'vendor_id': vendor_id}, 'subaccount': None} session_mock = MagicMock(return_value=response.Response(message=expected)) mocker.patch.object(user_info, 'get_primary_contact', session_mock) request = navigator.get(path) response_data = json.loads(request.data.decode('utf-8')) user_info.get_primary_contact.assert_called_with('vendor', vendor_id, 'N') assert request.status_code == 200 assert response_data == expected