Update test with pytest syntax further

This commit is contained in:
Ramon Wenger 2023-05-31 13:34:21 +02:00
parent 8938ec79cf
commit 28a23c4d02
2 changed files with 81 additions and 7 deletions

View File

@ -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") # @pytest.fixture(scope="session")
# def prefix(): # def prefix():
# return "Meine Klasse" # 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

View File

@ -1,11 +1,8 @@
import pytest import pytest
from django.db import transaction from django.db import transaction
from django.test import TestCase
from graphene import Context from graphene import Context
from graphene.test import Client
from graphql_relay import to_global_id from graphql_relay import to_global_id
from api.schema import schema
from api.utils import get_graphql_mutation, get_object from api.utils import get_graphql_mutation, get_object
from core.factories import TeacherFactory, UserFactory from core.factories import TeacherFactory, UserFactory
from core.tests.base_test import SkillboxTestCase 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 pytestmark = pytest.mark.django_db
# @pytest.fixture @pytest.fixture
# def prefix(): def prefix():
# return "Meine Klasse" return "Meine Klasse"
@pytest.mark.usefixtures("create_users")
def test_default_class_name_initial(prefix): def test_default_class_name_initial(prefix):
class_name = SchoolClass.generate_default_group_name() class_name = SchoolClass.generate_default_group_name()
assert "{} 1".format(prefix) == class_name assert "{} 1".format(prefix) == class_name
@pytest.mark.usefixtures("create_users")
def test_default_class_name_initial_with_similar_existing(prefix): def test_default_class_name_initial_with_similar_existing(prefix):
SchoolClass.objects.create(name="{} abc212".format(prefix)) SchoolClass.objects.create(name="{} abc212".format(prefix))
class_name = SchoolClass.generate_default_group_name() class_name = SchoolClass.generate_default_group_name()
assert "{} 1".format(prefix) == class_name assert "{} 1".format(prefix) == class_name
@pytest.mark.usefixtures("create_users")
def test_default_class_name_if_existing(prefix): def test_default_class_name_if_existing(prefix):
SchoolClass.objects.create(name="{} 1".format(prefix)) SchoolClass.objects.create(name="{} 1".format(prefix))
SchoolClass.objects.create(name="{} 10".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 assert "{} 11".format(prefix) == class_name
@pytest.mark.usefixtures("create_users")
def test_default_class_name_with_user(prefix): def test_default_class_name_with_user(prefix):
user = UserFactory(username="hansli") user = UserFactory(username="hansli")
class_name = SchoolClass.generate_default_group_name(user=user) class_name = SchoolClass.generate_default_group_name(user=user)
assert f"{prefix} {user.pk}" == class_name 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): class ModifySchoolClassTest(SkillboxTestCase):
def setUp(self): def setUp(self):
create_users() create_users()