Skip to content
Snippets Groups Projects
Commit a6ab457a authored by Marte Fossum's avatar Marte Fossum
Browse files

Merge branch 'GREG-323-meta-field-person-objects' into 'master'

Add meta-field to Person objects

See merge request !381
parents 187abbbf 2ca94dd7
No related branches found
No related tags found
1 merge request!381Add meta-field to Person objects
Pipeline #179263 passed
......@@ -23,6 +23,7 @@ class PersonSerializer(serializers.ModelSerializer):
"identities",
"roles",
"consents",
"meta",
]
......
# Generated by Django 4.1.2 on 2023-01-23 15:47
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
("greg", "0027_add_norwegian_national_id_card_identity_type"),
]
operations = [
migrations.AddField(
model_name="person",
name="meta",
field=models.JSONField(blank=True, null=True),
),
migrations.AlterField(
model_name="invitation",
name="role",
field=models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
related_name="invitations",
to="greg.role",
),
),
migrations.AlterField(
model_name="invitationlink",
name="invitation",
field=models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
related_name="invitation_links",
to="greg.invitation",
),
),
]
......@@ -44,6 +44,7 @@ class Person(BaseModel):
null=True,
blank=True,
)
meta = models.JSONField(null=True, blank=True)
objects = PersonManager()
......
......@@ -132,6 +132,7 @@ def test_person_create(client):
"identities": [],
"roles": [],
"consents": [],
"meta": None,
}
......@@ -711,3 +712,49 @@ def test_identity_post_fails_if_duplicate(client, person, person_foo):
results = response.json()["results"]
# No Norwegian national ID should have been added
assert len(results) == 0
@pytest.mark.django_db
def test_meta_field_person(client):
url = reverse("v1:person-list")
data_bar = {"first_name": "Bar", "last_name": "Bar", "meta": {"likes": "math"}}
resp_post_bar = client.post(url, data=data_bar, format="json").json()
assert resp_post_bar.get("meta").get("likes") == data_bar["meta"]["likes"]
resp_get = client.get(url).json()["results"]
assert len(resp_get) == 1
data_foo = {"first_name": "Foo", "last_name": "Foo", "meta": {"likes": "fishing"}}
resp_post_foo = client.post(url, data=data_foo, format="json").json()
assert resp_post_foo.get("meta") == data_foo["meta"]
resp_all = client.get(url).json()["results"]
assert len(resp_all) == 2
resp_bar = resp_all[0]
resp_foo = resp_all[1]
assert resp_bar.get("meta") == data_bar["meta"]
assert resp_foo.get("meta") == data_foo["meta"]
@pytest.mark.django_db
def test_meta_field_person_id(client, person_foo):
url = reverse("v1:person-detail", kwargs={"id": person_foo.id})
resp = client.get(url).json()
assert resp.get("meta") is None
put_data = {"first_name": "Foo", "last_name": "Foo", "meta": {"likes": "math"}}
resp_put = client.put(url, data=put_data, format="json").json()
assert resp_put.get("meta").get("likes") == put_data["meta"]["likes"]
resp = client.get(url).json()
assert resp.get("meta").get("likes") == put_data["meta"]["likes"]
patch_data = {
"meta": {"likes": "math", "hobby": "eating"},
}
resp_patch = client.patch(url, data=patch_data, format="json").json()
assert resp_patch.get("meta") == patch_data["meta"]
resp = client.get(url).json()
assert resp.get("meta") == patch_data["meta"]
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment