From 171556d60a4078f9942475cf949e94ebcdb9a2bd Mon Sep 17 00:00:00 2001
From: Andreas Ellewsenn <ae@uio.no>
Date: Thu, 24 Feb 2022 13:15:59 +0100
Subject: [PATCH] Sprinkle unicode characters on tests

Verify that the backend accepts unicode for text fields and that it
survives to the database and back again
---
 greg/tests/api/test_person.py               | 18 ++++++++++++++++++
 gregui/api/views/role.py                    |  3 +--
 gregui/tests/api/views/test_invite_guest.py |  8 ++++----
 gregui/tests/api/views/test_userinfo.py     |  4 ++--
 gregui/tests/conftest.py                    |  6 +++---
 5 files changed, 28 insertions(+), 11 deletions(-)

diff --git a/greg/tests/api/test_person.py b/greg/tests/api/test_person.py
index 9be93335..06ef86a6 100644
--- a/greg/tests/api/test_person.py
+++ b/greg/tests/api/test_person.py
@@ -114,6 +114,24 @@ def test_persons_verified_filter_exclude(
     assert results[0]["last_name"] == "Bar"
 
 
+@pytest.mark.django_db
+def test_person_create(client):
+    url = reverse("v1:person-list")
+    response = client.post(url, {"first_name": "foo木👍أ", "last_name": "غbar水"})
+    results = response.json()
+    assert results == {
+        "id": 1,
+        "first_name": "foo木👍أ",
+        "last_name": "غbar水",
+        "gender": None,
+        "date_of_birth": None,
+        "registration_completed_date": None,
+        "identities": [],
+        "roles": [],
+        "consents": [],
+    }
+
+
 @pytest.mark.django_db
 def test_add_role(
     client, person, role_type_visiting_professor, sponsor_guy, unit_human_resources
diff --git a/gregui/api/views/role.py b/gregui/api/views/role.py
index f81e83aa..da4b24c8 100644
--- a/gregui/api/views/role.py
+++ b/gregui/api/views/role.py
@@ -31,8 +31,7 @@ class RoleInfoViewSet(ModelViewSet):
                 context={"sponsor": sponsor},
             )
             serializer.is_valid(raise_exception=True)
-            instance = serializer.update(role, serializer.validated_data)
-            instance.save()
+            serializer.update(role, serializer.validated_data)
         return Response(status=status.HTTP_200_OK)
 
     def create(self, request):
diff --git a/gregui/tests/api/views/test_invite_guest.py b/gregui/tests/api/views/test_invite_guest.py
index 5a7f8ebf..588529ed 100644
--- a/gregui/tests/api/views/test_invite_guest.py
+++ b/gregui/tests/api/views/test_invite_guest.py
@@ -21,8 +21,8 @@ def test_invite_guest(client, user_sponsor, unit_foo, role_type_foo, mocker):
     role_end_date = datetime.datetime.today() + datetime.timedelta(days=10)
 
     data = {
-        "first_name": "Foo",
-        "last_name": "Bar",
+        "first_name": "foo木👍أ",
+        "last_name": "غbar水",
         "email": "test@example.com",
         "role": {
             "start_date": (role_start_date).strftime("%Y-%m-%d"),
@@ -46,8 +46,8 @@ def test_invite_guest(client, user_sponsor, unit_foo, role_type_foo, mocker):
 
     assert Person.objects.count() == 1
     person = Person.objects.first()
-    assert person.first_name == "Foo"
-    assert person.last_name == "Bar"
+    assert person.first_name == "foo木👍أ"
+    assert person.last_name == "غbar水"
 
     assert Identity.objects.filter(
         person=person,
diff --git a/gregui/tests/api/views/test_userinfo.py b/gregui/tests/api/views/test_userinfo.py
index b135ff8e..e6212bc7 100644
--- a/gregui/tests/api/views/test_userinfo.py
+++ b/gregui/tests/api/views/test_userinfo.py
@@ -24,7 +24,7 @@ def test_userinfo_invited_get(client, invitation_link):
         "sponsor_id": None,
         "person_id": 1,
         "first_name": "Foo",
-        "last_name": "Bar",
+        "last_name": "BaÙ…r",
         "email": "foo@example.org",
         "mobile_phone": None,
         "fnr": None,
@@ -85,7 +85,7 @@ def test_userinfo_guest_get(client, log_in, user_person):
         "person_id": 1,
         "roles": [],
         "consents": [],
-        "first_name": "Foo",
+        "first_name": "FooÙ…",
         "last_name": "Bar",
         "email": "foo@bar.com",
         "mobile_phone": None,
diff --git a/gregui/tests/conftest.py b/gregui/tests/conftest.py
index e3571037..c7500fd5 100644
--- a/gregui/tests/conftest.py
+++ b/gregui/tests/conftest.py
@@ -367,7 +367,7 @@ def create_person() -> Callable[
 @pytest.fixture
 def person_foo_data() -> dict:
     return dict(
-        first_name="Foo",
+        first_name="FooÙ…",
         last_name="Bar",
         email="foo@bar.com",
         feide_id="bar@baz.org",
@@ -378,7 +378,7 @@ def person_foo_data() -> dict:
 @pytest.fixture
 def person_foo(create_person) -> Person:
     person = create_person(
-        first_name="Foo",
+        first_name="FooÙ…",
         last_name="Bar",
         email="foo@bar.com",
         feide_id="bar@baz.org",
@@ -390,7 +390,7 @@ def person_foo(create_person) -> Person:
 @pytest.fixture
 def person_invited(create_person) -> Person:
     """Invited person before registration."""
-    person = create_person(first_name="Foo", last_name="Bar", email="foo@example.org")
+    person = create_person(first_name="Foo", last_name="BaÙ…r", email="foo@example.org")
     return Person.objects.get(id=person.id)
 
 
-- 
GitLab