Changeset View
Changeset View
Standalone View
Standalone View
swh/graphql/tests/conftest.py
- This file was added.
# Copyright (C) 2022 The Software Heritage developers | |||||
# See the AUTHORS file at the top-level directory of this distribution | |||||
# License: GNU General Public License version 3, or any later version | |||||
# See top-level LICENSE file for more information | |||||
from ariadne import graphql_sync | |||||
anlambert: You should not import stuffs from private modules, we already have some issues because of that… | |||||
from flask import Flask, jsonify, request | |||||
import pytest | |||||
from swh.graphql import server as app_server | |||||
from swh.graphql.app import schema | |||||
from swh.storage import get_storage as get_swhstorage | |||||
from .data import populate_dummy_data | |||||
@pytest.fixture | |||||
def storage(): | |||||
storage = get_swhstorage(cls="memory") | |||||
# set the global var to use the in-memory storage | |||||
app_server.storage = storage | |||||
# populate the in-memory storage | |||||
populate_dummy_data(storage) | |||||
@pytest.fixture | |||||
def test_app(storage): | |||||
app = Flask(__name__) | |||||
Done Inline ActionsUse pytest-mock instead, this should translate to: @pytest.fixture(scope="session") def storage(mocker): def mock_storage(*args, **kw): storage = get_swhstorage(cls="memory") populate_dummy_data(storage) return storage mocker.patch.object(app_server, "get_storage", mock_storage) anlambert: Use [pytest-mock](https://pypi.org/project/pytest-mock/) instead, this should translate to… | |||||
Done Inline ActionsOk got it, you were forced to proceed like this because of the session scope. I think you can use function scope fixture (the default) directly then, based on my This way you can directly use the monkeypatch fixture. anlambert: Ok got it, you were forced to proceed like this because of the session scope.
I think you can… | |||||
Done Inline ActionsRemoved this mock, setting the global variable directly from conftest. jayeshv: Removed this mock, setting the global variable directly from conftest. | |||||
@app.route("/", methods=["POST"]) | |||||
def graphql_server(): | |||||
# GraphQL queries are always sent as POST | |||||
data = request.get_json() | |||||
success, result = graphql_sync( | |||||
schema, data, context_value=request, debug=app.debug | |||||
) | |||||
status_code = 200 if success else 400 | |||||
return jsonify(result), status_code | |||||
yield app | |||||
@pytest.fixture | |||||
def client(test_app): | |||||
with test_app.test_client() as client: | |||||
yield client |
You should not import stuffs from private modules, we already have some issues because of that in the past.