"""conftest. This file gets picked up when running py.test tests: http://pytest.org/latest/writing_plugins.html#conftest """ from unittest.mock import MagicMock import pytest from ddtrace import tracer from neo4j.graph import Graph, Node from notifications import api tracer.enabled = False @pytest.fixture def fixture_client(): """Fixture for an API client.""" return api.app.test_client() @pytest.fixture def app_context(): """Create an api test app fixture.""" with api.app.app_context() as app_context: app_context.g.log = MagicMock() app_context.g.ows = MagicMock() app_context.g.correlation_id = 'TEST_CORRELATION_ID' app_context.g.log_tags = {'TAG_1': 'TEST_1', 'TAG_2': 'TEST_2'} app_context.g.add_log_tags = MagicMock() yield app_context @pytest.fixture def make_graph_node(): """Node generating factory as fixture to create Node objects.""" graph = Graph() def _make_node(node_id, labels=(), data=None): data = data or {} data['id'] = node_id obj = Node(graph, node_id, 1, n_labels=labels, properties=data) return obj return _make_node def get_session_mock(return_data=None): """GET get a mock for db_session() which returns return_data list.""" return_data = return_data or [] enter_mock = MagicMock() session_mock = MagicMock() result_mock = MagicMock() session_mock.__enter__.return_value = enter_mock session_mock.run.return_value = result_mock result_mock.single.return_value = (return_data and return_data[0]) or None result_mock.data.return_value = return_data result_mock.__iter__.return_value = return_data enter_mock.run.return_value = result_mock return session_mock @pytest.fixture def enable_ddtrace(): """Enable datadog tracing.""" tracer.enabled = True yield tracer.enabled = False