From 28a23c4d02997fbebd47182d1bbd73e1b0c5f006 Mon Sep 17 00:00:00 2001 From: Ramon Wenger Date: Wed, 31 May 2023 13:34:21 +0200 Subject: [PATCH] Update test with pytest syntax further --- server/conftest.py | 56 ++++++++++++++++++++++- server/users/tests/test_school_classes.py | 32 ++++++++++--- 2 files changed, 81 insertions(+), 7 deletions(-) diff --git a/server/conftest.py b/server/conftest.py index 633ca2e0..a3108367 100644 --- a/server/conftest.py +++ b/server/conftest.py @@ -1,6 +1,60 @@ -# import pytest +import pytest +from core.tests.base_test import GQLClient +from users.models import SchoolClass +from api.schema import schema +from core.tests.helpers import GQLResult + # # # @pytest.fixture(scope="session") # def prefix(): # return "Meine Klasse" + +from users.services import create_users as _create_users + + +@pytest.fixture +def create_users(): + _create_users() + + +@pytest.fixture +def teacher(django_user_model): + return django_user_model.objects.get(username="teacher") + + +@pytest.fixture +def teacher2(django_user_model): + return django_user_model.objects.get(username="teacher2") + + +@pytest.fixture +def student1(django_user_model): + return django_user_model.objects.get(username="student1") + + +@pytest.fixture +def student2(django_user_model): + return django_user_model.objects.get(username="student2") + + +@pytest.fixture +def student_second_class(django_user_model): + return django_user_model.objects.get(username="student_second_class") + + +@pytest.fixture +def school_class(): + return SchoolClass.objects.get(name="skillbox") + + +@pytest.fixture +def get_client(teacher, rf): + def _get_client(user): + request = rf.get("/") + if user is None: + user = teacher + request.user = user + return GQLClient(schema=schema, context_value=request) + + return _get_client diff --git a/server/users/tests/test_school_classes.py b/server/users/tests/test_school_classes.py index 49b11d18..67213bfc 100644 --- a/server/users/tests/test_school_classes.py +++ b/server/users/tests/test_school_classes.py @@ -1,11 +1,8 @@ import pytest from django.db import transaction -from django.test import TestCase from graphene import Context -from graphene.test import Client from graphql_relay import to_global_id -from api.schema import schema from api.utils import get_graphql_mutation, get_object from core.factories import TeacherFactory, UserFactory from core.tests.base_test import SkillboxTestCase @@ -18,22 +15,25 @@ UPDATE_SCHOOL_CLASS_MUTATION = get_graphql_mutation("updateSchoolClass.gql") pytestmark = pytest.mark.django_db -# @pytest.fixture -# def prefix(): -# return "Meine Klasse" +@pytest.fixture +def prefix(): + return "Meine Klasse" +@pytest.mark.usefixtures("create_users") def test_default_class_name_initial(prefix): class_name = SchoolClass.generate_default_group_name() assert "{} 1".format(prefix) == class_name +@pytest.mark.usefixtures("create_users") def test_default_class_name_initial_with_similar_existing(prefix): SchoolClass.objects.create(name="{} abc212".format(prefix)) class_name = SchoolClass.generate_default_group_name() assert "{} 1".format(prefix) == class_name +@pytest.mark.usefixtures("create_users") def test_default_class_name_if_existing(prefix): SchoolClass.objects.create(name="{} 1".format(prefix)) SchoolClass.objects.create(name="{} 10".format(prefix)) @@ -41,12 +41,32 @@ def test_default_class_name_if_existing(prefix): assert "{} 11".format(prefix) == class_name +@pytest.mark.usefixtures("create_users") def test_default_class_name_with_user(prefix): user = UserFactory(username="hansli") class_name = SchoolClass.generate_default_group_name(user=user) assert f"{prefix} {user.pk}" == class_name +@pytest.mark.usefixtures("create_users") +class ModifySchoolClassPyTest: + def test_update_school_class(self, school_class, get_client): + class_name = "The Colbert Show" + + assert school_class.name == "skillbox" + id = to_global_id("SchoolClassNode", school_class.id) + + client = get_client() + result = client.execute( + UPDATE_SCHOOL_CLASS_MUTATION, + variables={"input": {"id": id, "name": class_name}}, + ) + assert result.errors is None + + school_class = get_object(SchoolClass, id) + assert school_class.name == class_name + + class ModifySchoolClassTest(SkillboxTestCase): def setUp(self): create_users()