diff --git a/greg/api/serializers/__init__.py b/greg/api/serializers/__init__.py
index ca5bdad3c424bdcde320e7ef21107d2e4870a92f..bc90346e007873421743b9b32f181ab1a08750ce 100644
--- a/greg/api/serializers/__init__.py
+++ b/greg/api/serializers/__init__.py
@@ -7,5 +7,5 @@ def get_serializer(instance):
     return {
         "notification": NotificationSerializer,
         "person": PersonSerializer,
-        "role": RoleTypeSerializer,
+        "role type": RoleTypeSerializer,
     }.get(instance._meta.verbose_name)
diff --git a/greg/models.py b/greg/models.py
index 89b98116868821320d64c851b1708e78b8f2a596..c523f781997ce24cb3eef3e4aff35e68fb555dd2 100644
--- a/greg/models.py
+++ b/greg/models.py
@@ -77,7 +77,7 @@ class Person(BaseModel):
         # registration_completed_date is set only after accepting consents
         return (
             self.registration_completed_date is not None
-            and self.registration_completed_date <= datetime.now()
+            and self.registration_completed_date <= date.today()
         )
 
     @property
@@ -184,7 +184,7 @@ class Notification(BaseModel):
     meta = models.JSONField(null=True, blank=True)
 
     def __repr__(self):
-        return "{}(id={!r}, identifier={!r}, object_type={!r}, operation={!r}, issued_at={!r}), meta={!r})".format(
+        return "{}(id={!r}, identifier={!r}, object_type={!r}, operation={!r}, issued_at={!r}, meta={!r})".format(
             self.__class__.__name__,
             self.pk,
             self.identifier,
diff --git a/greg/tests/api/test_consent_type.py b/greg/tests/api/test_consent_type.py
index e2eaf0f45dff1eff082604f0b554921b4574ff56..42cdb8d4894a3f1676d608895bc6186bde68742c 100644
--- a/greg/tests/api/test_consent_type.py
+++ b/greg/tests/api/test_consent_type.py
@@ -5,21 +5,6 @@ from rest_framework.reverse import reverse
 from greg.models import ConsentType
 
 
-@pytest.fixture
-def consent_type_foo() -> ConsentType:
-    return ConsentType.objects.create(
-        identifier="test_consent",
-        name_en="Test1",
-        name_nb="Test2",
-        description_en="Test description",
-        description_nb="Test beskrivelse",
-        link_en="https://example.org",
-        link_nb="https://example.org",
-        valid_from="2018-01-20",
-        user_allowed_to_change=True,
-    )
-
-
 @pytest.mark.django_db
 def test_get_consent_type(client, consent_type_foo: ConsentType):
     resp = client.get(
diff --git a/greg/tests/api/test_health.py b/greg/tests/api/test_health.py
new file mode 100644
index 0000000000000000000000000000000000000000..a0de40a24731db8962ac306e5d87cd198f5eed54
--- /dev/null
+++ b/greg/tests/api/test_health.py
@@ -0,0 +1,8 @@
+import pytest
+
+
+@pytest.mark.django_db
+def test_health_says_ok(client):
+    response = client.get("/api/health/")
+    assert response.content == b"OK"
+    assert response.status_code == 200
diff --git a/greg/tests/api/test_person.py b/greg/tests/api/test_person.py
index df7475e6dc9799f62d1f67c004081fe1bd44514c..c8632cea5a26b9ddfee2b19e351279b401980573 100644
--- a/greg/tests/api/test_person.py
+++ b/greg/tests/api/test_person.py
@@ -2,11 +2,11 @@ import datetime
 from typing import Dict
 
 import pytest
+from django.core.exceptions import ValidationError
 from rest_framework import status
 from rest_framework.reverse import reverse
 from rest_framework.status import HTTP_200_OK
-
-from django.core.exceptions import ValidationError
+from rest_framework.test import APIClient
 
 from greg.models import (
     PersonIdentity,
@@ -399,18 +399,18 @@ def test_remove_person(
 
 
 @pytest.mark.django_db
-def test_add_duplicate_role_fails(client, person_foo: Person, person_foo_role: Role):
+def test_add_duplicate_role_fails(client, person_foo: Person, role_person_foo):
     url = reverse("v1:person_role-list", kwargs={"person_id": person_foo.id})
     roles_for_person = client.get(url).json()["results"]
 
     assert len(roles_for_person) == 1
 
     role_data = {
-        "type": person_foo_role.type_id,
-        "start_date": person_foo_role.start_date,
-        "end_date": person_foo_role.end_date,
-        "registered_by": person_foo_role.registered_by,
-        "unit": person_foo_role.unit_id,
+        "type": role_person_foo.type_id,
+        "start_date": role_person_foo.start_date,
+        "end_date": role_person_foo.end_date,
+        "registered_by": role_person_foo.registered_by,
+        "unit": role_person_foo.unit_id,
     }
     response = client.post(url, role_data)
     # If the role cannot be create the return code is 400
@@ -427,7 +427,7 @@ def test_filter_active_includes_person_with_active_role(
     person_foo: Person,
     sponsor_guy: Sponsor,
     unit_foo: OrganizationalUnit,
-    role_type_test_guest: RoleType,
+    role_type_test_guest: Role,
 ):
     date_today = datetime.date.today()
 
@@ -449,9 +449,35 @@ def test_filter_active_includes_person_with_active_role(
 
 @pytest.mark.django_db
 def test_filter_active_excludes_person_with_no_active_role(
-    client, person_foo: Person, person_foo_role: Role
+    client, person_foo: Person, role_person_foo: Role
 ):
     url = reverse("v1:person-list")
     response = client.get(url, {"active": "true"})
     results = response.json()["results"]
     assert len(results) == 0
+
+
+@pytest.mark.django_db
+def test_filter_active_value_false(
+    client: APIClient,
+    person_foo: Person,
+    role_type_test_guest: Role,
+    sponsor_guy: Sponsor,
+    unit_foo: OrganizationalUnit,
+):
+    """Check that filter is not used when specified to False"""
+    date_today = datetime.date.today()
+
+    # Inactive role
+    Role.objects.create(
+        person=person_foo,
+        type=role_type_test_guest,
+        end_date=date_today - datetime.timedelta(days=1),
+        registered_by=sponsor_guy,
+        unit=unit_foo,
+    )
+
+    url = reverse("v1:person-list")
+    response = client.get(url, {"active": False})
+    results = response.json()["results"]
+    assert len(results) == 1
diff --git a/greg/tests/api/test_serializers.py b/greg/tests/api/test_serializers.py
new file mode 100644
index 0000000000000000000000000000000000000000..3e3c88038867a873f61020cc7663cb4dd2cced49
--- /dev/null
+++ b/greg/tests/api/test_serializers.py
@@ -0,0 +1,78 @@
+from collections import OrderedDict
+
+import pytest
+
+from greg.api.serializers import (
+    NotificationSerializer,
+    get_serializer,
+    PersonSerializer,
+    RoleTypeSerializer,
+)
+from greg.models import Notification, RoleType, Person
+
+
+@pytest.mark.django_db
+def test_get_serializer():
+    n = Notification.objects.create(
+        identifier=5, object_type="foo", operation="bar", issued_at=9, meta=""
+    )
+    p = Person.objects.create()
+    rt = RoleType.objects.create()
+    assert get_serializer(n) == NotificationSerializer
+    assert get_serializer(p) == PersonSerializer
+    assert get_serializer(rt) == RoleTypeSerializer
+
+
+@pytest.mark.django_db
+def test_notificationserializer_falsy_meta():
+    ns = NotificationSerializer()
+    n = Notification.objects.create(
+        identifier=5, object_type="foo", operation="bar", issued_at=9, meta=""
+    )
+    expected = OrderedDict(
+        {
+            "identifier": 5,
+            "object_type": "foo",
+            "operation": "bar",
+            "iat": 9,
+        }
+    )
+    assert ns.to_representation(n) == expected
+
+
+@pytest.mark.django_db
+def test_notificationserializer_no_meta():
+    ns = NotificationSerializer()
+    n = Notification.objects.create(
+        identifier=5,
+        object_type="foo",
+        operation="bar",
+        issued_at=9,
+    )
+    expected = OrderedDict(
+        {
+            "identifier": 5,
+            "object_type": "foo",
+            "operation": "bar",
+            "iat": 9,
+        }
+    )
+    assert ns.to_representation(n) == expected
+
+
+@pytest.mark.django_db
+def test_notificationserializer_meta():
+    ns = NotificationSerializer()
+    n = Notification.objects.create(
+        identifier=5, object_type="foo", operation="bar", issued_at=9, meta="baz"
+    )
+    expected = OrderedDict(
+        {
+            "identifier": 5,
+            "object_type": "foo",
+            "operation": "bar",
+            "meta": "baz",
+            "iat": 9,
+        }
+    )
+    assert ns.to_representation(n) == expected
diff --git a/greg/tests/api/test_sponsor.py b/greg/tests/api/test_sponsor.py
index ce444dbbf5e0dbd58527895c81381a4ffcf1b635..65fed98daccf1cdf0f7cba63bfdd0b2d44dafb98 100644
--- a/greg/tests/api/test_sponsor.py
+++ b/greg/tests/api/test_sponsor.py
@@ -28,12 +28,12 @@ def test_add_sponsor(client):
 
 
 @pytest.mark.django_db
-def test_sponsor_guest_list(client, sponsor_guy, person_foo_role):
+def test_sponsor_guest_list(client, sponsor_guy, role_person_foo):
     url = reverse("v1:sponsor_guests-list", kwargs={"sponsor_id": sponsor_guy.id})
     guests_for_sponsor = client.get(url).json()["results"]
 
     assert len(guests_for_sponsor) == 1
-    assert guests_for_sponsor[0]["id"] == person_foo_role.person_id
+    assert guests_for_sponsor[0]["id"] == role_person_foo.person_id
 
 
 @pytest.mark.django_db
diff --git a/greg/tests/conftest.py b/greg/tests/conftest.py
index bf70862847668e3623708bdd7bfaf35f9bab9d5a..15c03b927e3141abc69b58216bbc283a0b4c3fe4 100644
--- a/greg/tests/conftest.py
+++ b/greg/tests/conftest.py
@@ -7,12 +7,16 @@ from django.contrib.auth import get_user_model
 import pytest
 
 from greg.models import (
+    Consent,
+    Notification,
     Person,
     Sponsor,
+    SponsorOrganizationalUnit,
     PersonIdentity,
     Role,
     RoleType,
     OrganizationalUnit,
+    ConsentType,
 )
 
 # faker spams the logs with localisation warnings
@@ -29,38 +33,50 @@ def client() -> APIClient:
     return client
 
 
+@pytest.fixture
+def pcm_mock():
+    class PCMMock:
+        def publish(self, *args, **kwargs):
+            return True
+
+    return PCMMock()
+
+
 @pytest.fixture
 def person_foo() -> Person:
-    return Person.objects.create(
+    pe = Person.objects.create(
         first_name="Foo",
         last_name="Foo",
         date_of_birth="2001-01-27",
         email="test@example.org",
         mobile_phone="123456788",
     )
+    return Person.objects.get(id=pe.id)
 
 
 @pytest.fixture
 def person_bar() -> Person:
-    return Person.objects.create(
+    pe = Person.objects.create(
         first_name="Bar",
         last_name="Bar",
         date_of_birth="2000-07-01",
         email="test2@example.org",
         mobile_phone="123456789",
     )
+    return Person.objects.get(id=pe.id)
 
 
 @pytest.fixture
 def sponsor_guy() -> Sponsor:
-    return Sponsor.objects.create(
+    sp = Sponsor.objects.create(
         feide_id="guy@example.org", first_name="Sponsor", last_name="Guy"
     )
+    return Sponsor.objects.get(id=sp.id)
 
 
 @pytest.fixture
 def person_foo_verified(person_foo, sponsor_guy) -> PersonIdentity:
-    return PersonIdentity.objects.create(
+    pi = PersonIdentity.objects.create(
         person=person_foo,
         type=PersonIdentity.IdentityType.PASSPORT,
         source="Test",
@@ -69,36 +85,40 @@ def person_foo_verified(person_foo, sponsor_guy) -> PersonIdentity:
         verified_by=sponsor_guy,
         verified_when="2021-06-15",
     )
+    return PersonIdentity.objects.get(id=pi.id)
 
 
 @pytest.fixture
 def person_foo_not_verified(person_foo) -> PersonIdentity:
-    return PersonIdentity.objects.create(
+    pi = PersonIdentity.objects.create(
         person=person_foo,
         type=PersonIdentity.IdentityType.DRIVERS_LICENSE,
         source="Test",
         value="12345",
     )
+    return PersonIdentity.objects.get(id=pi.id)
 
 
 @pytest.fixture()
 def role_type_test_guest() -> RoleType:
-    return RoleType.objects.create(identifier="Test Guest")
+    rt = RoleType.objects.create(identifier="Test Guest")
+    return RoleType.objects.get(id=rt.id)
 
 
 @pytest.fixture
 def unit_foo() -> OrganizationalUnit:
-    return OrganizationalUnit.objects.create(orgreg_id="12345", name_en="foo_unit")
+    ou = OrganizationalUnit.objects.create(orgreg_id="12345", name_en="foo_unit")
+    return OrganizationalUnit.objects.get(id=ou.id)
 
 
 @pytest.fixture
-def person_foo_role(
+def role_person_foo(
     person_foo: Person,
     role_type_test_guest: RoleType,
     sponsor_guy: Sponsor,
     unit_foo: OrganizationalUnit,
 ) -> Role:
-    return Role.objects.create(
+    role = Role.objects.create(
         person=person_foo,
         type=role_type_test_guest,
         start_date="2021-08-02",
@@ -106,3 +126,87 @@ def person_foo_role(
         registered_by=sponsor_guy,
         unit=unit_foo,
     )
+    return Role.objects.get(id=role.id)
+
+
+@pytest.fixture
+def person() -> Person:
+    pe = Person.objects.create(
+        first_name="Test",
+        last_name="Tester",
+        date_of_birth="2000-01-27",
+        email="test@example.org",
+        mobile_phone="123456789",
+    )
+    return Person.objects.get(id=pe.id)
+
+
+@pytest.fixture
+def consent_type() -> ConsentType:
+    ct = ConsentType.objects.create(
+        identifier="it-guidelines",
+        name_en="IT Guidelines",
+        name_nb="IT Regelverk",
+        description_en="IT Guidelines description",
+        description_nb="IT Regelverk beskrivelse",
+        link_en="https://example.org/it-guidelines",
+        link_nb="https://example.org/it-guidelines",
+        user_allowed_to_change=False,
+    )
+    return ConsentType.objects.get(id=ct.id)
+
+
+@pytest.fixture
+def role_type_foo() -> RoleType:
+    rt = RoleType.objects.create(identifier="role_foo", name_en="Role Foo")
+    return RoleType.objects.get(id=rt.id)
+
+
+@pytest.fixture
+def role_type_bar() -> RoleType:
+    rt = RoleType.objects.create(identifier="role_bar", name_en="Role Bar")
+    return RoleType.objects.get(id=rt.id)
+
+
+@pytest.fixture
+def consent_fixture(person, consent_type):
+    consent_given_date = "2021-06-20"
+    Consent.objects.create(
+        person=person, type=consent_type, consent_given_at=consent_given_date
+    )
+    return Consent.objects.get(id=1)
+
+
+@pytest.fixture
+def consent_type_foo() -> ConsentType:
+    return ConsentType.objects.create(
+        identifier="test_consent",
+        name_en="Test1",
+        name_nb="Test2",
+        description_en="Test description",
+        description_nb="Test beskrivelse",
+        link_en="https://example.org",
+        link_nb="https://example.org",
+        valid_from="2018-01-20",
+        user_allowed_to_change=True,
+    )
+
+
+@pytest.fixture
+def sponsor_org_unit(sponsor_guy, unit_foo):
+    SponsorOrganizationalUnit.objects.create(
+        sponsor=sponsor_guy, organizational_unit=unit_foo, hierarchical_access=False
+    )
+    return SponsorOrganizationalUnit.objects.get(id=1)
+
+
+@pytest.fixture
+def notification():
+    Notification.objects.create(
+        identifier=5,
+        object_type="foo",
+        operation="bar",
+        issued_at=1234,
+        meta="foometa",
+    )
+    return Notification.objects.get(id=1)
diff --git a/greg/tests/management/__init__.py b/greg/tests/management/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/greg/tests/management/test_notification_publisher.py b/greg/tests/management/test_notification_publisher.py
new file mode 100644
index 0000000000000000000000000000000000000000..76f937516c80fbdb8225048527235d7423b70823
--- /dev/null
+++ b/greg/tests/management/test_notification_publisher.py
@@ -0,0 +1,14 @@
+import pytest
+
+from greg.management.commands.start_notification_publisher import (
+    handle_one_notification,
+)
+from greg.models import Notification
+
+
+@pytest.mark.django_db
+def test_handle_one_notification(notification, pcm_mock):
+    """Check that Notifications are deleted when published to message queue"""
+    assert Notification.objects.count() == 1
+    handle_one_notification(notification, pcm_mock, exchange="bar")
+    assert Notification.objects.count() == 0
diff --git a/greg/tests/models/test_consent.py b/greg/tests/models/test_consent.py
index df6c6483b70fc0db99811dfb3d79b6387cba5b87..9efa4b68ddf6c04c19fbe74c1164b66b46d7e293 100644
--- a/greg/tests/models/test_consent.py
+++ b/greg/tests/models/test_consent.py
@@ -9,31 +9,6 @@ from greg.models import (
 )
 
 
-@pytest.fixture
-def person() -> Person:
-    return Person.objects.create(
-        first_name="Test",
-        last_name="Tester",
-        date_of_birth="2000-01-27",
-        email="test@example.org",
-        mobile_phone="123456789",
-    )
-
-
-@pytest.fixture()
-def consent_type() -> ConsentType:
-    return ConsentType.objects.create(
-        identifier="it-guidelines",
-        name_en="IT Guidelines",
-        name_nb="IT Regelverk",
-        description_en="IT Guidelines description",
-        description_nb="IT Regelverk beskrivelse",
-        link_en="https://example.org/it-guidelines",
-        link_nb="https://example.org/it-guidelines",
-        user_allowed_to_change=False,
-    )
-
-
 @pytest.mark.django_db
 def test_add_consent_to_person(person: Person, consent_type: ConsentType):
     consent_given_date = "2021-06-20"
@@ -58,3 +33,12 @@ def test_add_not_acknowledged_consent_to_person(
     assert consents[0].person_id == person.id
     assert consents[0].type_id == consent_type.id
     assert consents[0].consent_given_at is None
+
+
+@pytest.mark.django_db
+def test_consent_repr(consent_fixture):
+    today = datetime.date.today()
+    assert (
+        repr(consent_fixture)
+        == f"Consent(id=1, person=Person(id=1, first_name='Test', last_name='Tester'), type=ConsentType(id=1, identifier='it-guidelines', name_en='IT Guidelines', valid_from={today!r}, user_allowed_to_change=False), consent_given_at=datetime.date(2021, 6, 20))"
+    )
diff --git a/greg/tests/models/test_consenttype.py b/greg/tests/models/test_consenttype.py
new file mode 100644
index 0000000000000000000000000000000000000000..d69e340b417f95c560a9cd907c1d28f3fec47b1a
--- /dev/null
+++ b/greg/tests/models/test_consenttype.py
@@ -0,0 +1,17 @@
+from datetime import date
+
+import pytest
+
+
+@pytest.mark.django_db
+def test_consenttype_repr(consent_type):
+    today = date.today()
+    assert (
+        repr(consent_type)
+        == f"ConsentType(id=1, identifier='it-guidelines', name_en='IT Guidelines', valid_from={today!r}, user_allowed_to_change=False)"
+    )
+
+
+@pytest.mark.django_db
+def test_consenttype_str(consent_type):
+    assert str(consent_type) == "IT Guidelines (it-guidelines)"
diff --git a/greg/tests/models/test_notification.py b/greg/tests/models/test_notification.py
new file mode 100644
index 0000000000000000000000000000000000000000..5f989054cfd83c247247b9bc2045440b139102b2
--- /dev/null
+++ b/greg/tests/models/test_notification.py
@@ -0,0 +1,9 @@
+import pytest
+
+
+@pytest.mark.django_db
+def test_notification_repr(notification):
+    assert (
+        repr(notification)
+        == "Notification(id=1, identifier=5, object_type='foo', operation='bar', issued_at=1234, meta='foometa')"
+    )
diff --git a/greg/tests/models/test_organizational_unit.py b/greg/tests/models/test_organizational_unit.py
index dd61b87e016fc572805b2cb936c96f051a87f5d2..cc318d824b87df964f095cc8f3bd43810f8e5802 100644
--- a/greg/tests/models/test_organizational_unit.py
+++ b/greg/tests/models/test_organizational_unit.py
@@ -8,3 +8,16 @@ def test_set_parent():
     parent = OrganizationalUnit.objects.create(orgreg_id="parent")
     child = OrganizationalUnit.objects.create(orgreg_id="child", parent=parent)
     assert list(OrganizationalUnit.objects.filter(parent__id=parent.id)) == [child]
+
+
+@pytest.mark.django_db
+def test_org_repr(unit_foo):
+    assert (
+        repr(unit_foo)
+        == "OrganizationalUnit(id=1, orgreg_id='12345', name_en='foo_unit', parent=None)"
+    )
+
+
+@pytest.mark.django_db
+def test_org_str(unit_foo):
+    assert str(unit_foo) == "foo_unit (12345)"
diff --git a/greg/tests/models/test_person.py b/greg/tests/models/test_person.py
index 52b0fd337abf739f528bf3f61bb9eb1c6b3a6703..950820667e386cfd0c4e9cf1c23ead0ef4e3ae99 100644
--- a/greg/tests/models/test_person.py
+++ b/greg/tests/models/test_person.py
@@ -23,52 +23,49 @@ role_with = partial(
     available_in_search=True,
 )
 
-
-@pytest.fixture
-def role_type_foo() -> RoleType:
-    return RoleType.objects.create(identifier="role_foo", name_en="Role Foo")
-
-
-@pytest.fixture
-def role_type_bar() -> RoleType:
-    return RoleType.objects.create(identifier="role_bar", name_en="Role Bar")
+_a_year_ago = (datetime.now() - timedelta(days=365)).date()
+_a_year_into_future = (datetime.now() + timedelta(days=365)).date()
 
 
 @pytest.fixture
-def person(role_type_foo: RoleType, role_type_bar: RoleType) -> Person:
-    person = Person.objects.create(
+def person_registered_past() -> Person:
+    Person.objects.create(
         first_name="Test",
         last_name="Tester",
         date_of_birth="2000-01-27",
         email="test@example.org",
         mobile_phone="123456789",
+        registration_completed_date=_a_year_ago,
     )
-    return person
+    return Person.objects.get(id=1)
 
 
 @pytest.fixture
-def a_year_ago() -> datetime:
-    return datetime.now() - timedelta(days=365)
-
-
-@pytest.fixture
-def a_year_into_future() -> datetime:
-    return datetime.now() + timedelta(days=365)
+def person_registered_future() -> Person:
+    Person.objects.create(
+        first_name="Test",
+        last_name="Tester",
+        date_of_birth="2000-01-27",
+        email="test@example.org",
+        mobile_phone="123456789",
+        registration_completed_date=_a_year_into_future,
+    )
+    return Person.objects.get(id=1)
 
 
 @pytest.fixture
-def feide_id(a_year_ago: datetime) -> PersonIdentity:
+def feide_id() -> PersonIdentity:
     return PersonIdentity(
         type=PersonIdentity.IdentityType.FEIDE_ID,
-        verified_when=a_year_ago,
+        verified_when=_a_year_ago,
     )
 
 
 @pytest.fixture
-def passport(a_year_ago: datetime) -> PersonIdentity:
+def passport() -> PersonIdentity:
     return PersonIdentity(
         type=PersonIdentity.IdentityType.PASSPORT,
-        verified_when=a_year_ago,
+        verified_when=_a_year_ago,
     )
 
 
@@ -78,10 +75,10 @@ def unverified_passport() -> PersonIdentity:
 
 
 @pytest.fixture
-def future_identity(a_year_into_future: datetime) -> PersonIdentity:
+def future_identity() -> PersonIdentity:
     return PersonIdentity(
         type=PersonIdentity.IdentityType.NATIONAL_ID_CARD,
-        verified_when=a_year_into_future,
+        verified_when=_a_year_into_future,
     )
 
 
@@ -126,39 +123,37 @@ def test_is_registered_incomplete(person):
 
 
 @pytest.mark.django_db
-def test_is_registered_completed_in_past(person, a_year_ago):
-    person.registration_completed_date = a_year_ago
-    assert person.is_registered
+def test_is_registered_completed_in_past(person_registered_past):
+    assert person_registered_past.is_registered
 
 
 @pytest.mark.django_db
-def test_is_registered_completed_in_future(person, a_year_into_future):
-    person.registration_completed_date = a_year_into_future
-    assert not person.is_registered
+def test_is_registered_completed_in_future(person_registered_future):
+    assert not person_registered_future.is_registered
 
 
 @pytest.mark.django_db
 @pytest.mark.parametrize("identity_type", PersonIdentity.IdentityType)
-def test_is_verified(identity_type, a_year_ago, person):
-    identity = PersonIdentity(type=identity_type, verified_when=a_year_ago)
+def test_is_verified(identity_type, person):
+    identity = PersonIdentity(type=identity_type, verified_when=_a_year_ago)
     person.identities.add(identity, bulk=False)
     assert person.is_verified
 
 
 @pytest.mark.django_db
-def test_is_verified_multiple_identities(person, feide_id, passport):
+def test_test_is_verified_multiple_identities(person, feide_id, passport):
     person.identities.add(feide_id, passport, bulk=False)
     assert person.is_verified
 
 
 @pytest.mark.django_db
-def is_verified_when_identity_is_unverified(person, unverified_passport):
+def test_is_verified_when_identity_is_unverified(person, unverified_passport):
     person.identities.add(unverified_passport, bulk=False)
     assert not person.is_verified
 
 
 @pytest.mark.django_db
-def is_verified_mixed_verified_and_unverified_identities(
+def test_is_verified_mixed_verified_and_unverified_identities(
     person,
     feide_id,
     unverified_passport,
@@ -169,6 +164,16 @@ def is_verified_mixed_verified_and_unverified_identities(
 
 
 @pytest.mark.django_db
-def is_verified_in_future(person, future_identity):
+def test_is_verified_in_future(person, future_identity):
     person.identities.add(future_identity, bulk=False)
     assert not person.is_verified
+
+
+@pytest.mark.django_db
+def test_person_str(person: Person):
+    assert str(person) == "Test Tester (1)"
+
+
+@pytest.mark.django_db
+def test_person_repr(person: Person):
+    assert repr(person) == "Person(id=1, first_name='Test', last_name='Tester')"
diff --git a/greg/tests/models/test_personidentity.py b/greg/tests/models/test_personidentity.py
new file mode 100644
index 0000000000000000000000000000000000000000..e88e82a566a7fbdfb9b65a47c6fe95ea5767d50e
--- /dev/null
+++ b/greg/tests/models/test_personidentity.py
@@ -0,0 +1,9 @@
+import pytest
+
+
+@pytest.mark.django_db
+def test_personidentity_repr(person_foo_verified):
+    assert (
+        repr(person_foo_verified)
+        == "PersonIdentity(id=1, type='PASSPORT', source='Test', value='12345', verified_by=Sponsor(id=1, feide_id='guy@example.org', first_name='Sponsor', last_name='Guy'), verified_when=datetime.date(2021, 6, 15))"
+    )
diff --git a/greg/tests/models/test_role.py b/greg/tests/models/test_role.py
new file mode 100644
index 0000000000000000000000000000000000000000..6b88a5a15bfcd81ed4d2cb215ab23c4393a04d77
--- /dev/null
+++ b/greg/tests/models/test_role.py
@@ -0,0 +1,9 @@
+import pytest
+
+
+@pytest.mark.django_db
+def test_role_repr(role_person_foo):
+    assert (
+        repr(role_person_foo)
+        == "Role(id=1, person=Person(id=1, first_name='Foo', last_name='Foo'), type=RoleType(pk=1, identifier='Test Guest', name_nb='', name_en=''))"
+    )
diff --git a/greg/tests/models/test_roletype.py b/greg/tests/models/test_roletype.py
new file mode 100644
index 0000000000000000000000000000000000000000..cd17ca43710256b0a098c2befb685d97d1b161ee
--- /dev/null
+++ b/greg/tests/models/test_roletype.py
@@ -0,0 +1,14 @@
+import pytest
+
+
+@pytest.mark.django_db
+def test_roletype_str(role_type_foo):
+    assert str(role_type_foo) == "Role Foo (role_foo)"
+
+
+@pytest.mark.django_db
+def test_role_type_repr(role_type_foo):
+    assert (
+        repr(role_type_foo)
+        == "RoleType(pk=1, identifier='role_foo', name_nb='', name_en='Role Foo')"
+    )
diff --git a/greg/tests/models/test_scheduletask.py b/greg/tests/models/test_scheduletask.py
new file mode 100644
index 0000000000000000000000000000000000000000..37765c773be08fa322f8fa0668035eb86c01a5a1
--- /dev/null
+++ b/greg/tests/models/test_scheduletask.py
@@ -0,0 +1,17 @@
+import pytest
+
+from greg.models import ScheduleTask
+
+
+@pytest.fixture
+def scheduletask():
+    ScheduleTask.objects.create(name="foo", last_completed="2020-10-15 23:04")
+    return ScheduleTask.objects.get(id=1)
+
+
+@pytest.mark.django_db
+def test_scheduletask_repr(scheduletask):
+    assert (
+        repr(scheduletask)
+        == "ScheduleTask(id=1, name='foo', last_completed=datetime.datetime(2020, 10, 15, 23, 4, tzinfo=<UTC>))"
+    )
diff --git a/greg/tests/models/test_sponsor.py b/greg/tests/models/test_sponsor.py
index e82ec2a29d5276bace3bf1dde8c07c4456b37729..9f6db4f60574081b3069570a5c1632daed6d1f61 100644
--- a/greg/tests/models/test_sponsor.py
+++ b/greg/tests/models/test_sponsor.py
@@ -50,3 +50,16 @@ def test_add_muliple_sponsors_to_unit(sponsor_foo, sponsor_bar, unit1, unit2):
     assert list(sponsor_bar.units.all()) == [unit1]
     assert list(Sponsor.objects.filter(units=unit1.id)) == [sponsor_foo, sponsor_bar]
     assert list(Sponsor.objects.filter(units=unit2.id)) == []
+
+
+@pytest.mark.django_db
+def test_sponsor_repr(sponsor_guy):
+    assert (
+        repr(sponsor_guy)
+        == "Sponsor(id=1, feide_id='guy@example.org', first_name='Sponsor', last_name='Guy')"
+    )
+
+
+@pytest.mark.django_db
+def test_sponsor_str(sponsor_guy):
+    assert str(sponsor_guy) == "guy@example.org (Sponsor Guy)"
diff --git a/greg/tests/models/test_sponsor_orgunit.py b/greg/tests/models/test_sponsor_orgunit.py
new file mode 100644
index 0000000000000000000000000000000000000000..317815f7d696142147e17e91628d8b2ca42e3de3
--- /dev/null
+++ b/greg/tests/models/test_sponsor_orgunit.py
@@ -0,0 +1,9 @@
+import pytest
+
+
+@pytest.mark.django_db
+def test_sponsor_org_repr(sponsor_org_unit):
+    assert (
+        repr(sponsor_org_unit)
+        == "SponsorOrganizationalUnit(id=1, sponsor=Sponsor(id=1, feide_id='guy@example.org', first_name='Sponsor', last_name='Guy'), organizational_unit=OrganizationalUnit(id=1, orgreg_id='12345', name_en='foo_unit', parent=None), hierarchical_access=False)"
+    )
diff --git a/greg/tests/test_expire_role.py b/greg/tests/test_expire_role.py
index b1a45bd4f62b7409347ccbfecce7270681d2fd26..df240644cc9b1970e44a8b49560f6b21b816d228 100644
--- a/greg/tests/test_expire_role.py
+++ b/greg/tests/test_expire_role.py
@@ -23,48 +23,22 @@ def role_task():
     )
 
 
-@pytest.fixture
-def role_type_bar() -> RoleType:
-    return RoleType.objects.create(identifier="role_bar", name_en="Role Bar")
-
-
-@pytest.fixture
-def person() -> Person:
-    return Person.objects.create(
-        first_name="Test",
-        last_name="Tester",
-        date_of_birth="2000-01-27",
-        email="test@example.org",
-        mobile_phone="123456789",
-    )
-
-
-@pytest.fixture
-def organizational_unit() -> OrganizationalUnit:
-    return OrganizationalUnit.objects.create(orgreg_id="12345", name_en="Test unit")
-
-
-@pytest.fixture
-def sponsor() -> Sponsor:
-    return Sponsor.objects.create(feide_id="sponsor@example.org")
-
-
 @pytest.fixture
 def role(
     person: Person,
     role_type_bar: RoleType,
-    organizational_unit: OrganizationalUnit,
-    sponsor: Sponsor,
+    unit_foo: OrganizationalUnit,
+    sponsor_guy: Sponsor,
 ) -> Role:
     return Role.objects.create(
         person=person,
         type=role_type_bar,
-        unit=organizational_unit,
+        unit=unit_foo,
         start_date="2020-03-05",
         end_date=datetime.today() + timedelta(days=30),
         contact_person_unit="Contact Person",
         available_in_search=True,
-        registered_by=sponsor,
+        registered_by=sponsor_guy,
     )
 
 
diff --git a/greg/tests/test_notifications.py b/greg/tests/test_notifications.py
index 88437f6cda911e29697592aa0012ccc56e5317cb..ac4cf3d71e54704e18df2554d3fe8754371f160f 100644
--- a/greg/tests/test_notifications.py
+++ b/greg/tests/test_notifications.py
@@ -13,22 +13,6 @@ from greg.models import (
 )
 
 
-@pytest.fixture
-def person() -> Person:
-    return Person.objects.create(
-        first_name="Test",
-        last_name="Tester",
-        date_of_birth="2000-01-27",
-        email="test@example.org",
-        mobile_phone="123456789",
-    )
-
-
-@pytest.fixture
-def role_type_foo() -> RoleType:
-    return RoleType.objects.create(identifier="role_foo", name_en="Role Foo")
-
-
 @pytest.fixture
 def org_unit_bar() -> OrganizationalUnit:
     return OrganizationalUnit.objects.create(orgreg_id="bar_unit")
@@ -39,20 +23,6 @@ def sponsor() -> Sponsor:
     return Sponsor.objects.create(feide_id="sponsor_id")
 
 
-@pytest.fixture
-def consent_type() -> ConsentType:
-    return ConsentType.objects.create(
-        identifier="it-guidelines",
-        name_en="IT Guidelines",
-        name_nb="IT Regelverk",
-        description_en="IT Guidelines description",
-        description_nb="IT Regelverk beskrivelse",
-        link_en="https://example.org/it-guidelines",
-        link_nb="https://example.org/it-guidelines",
-        user_allowed_to_change=False,
-    )
-
-
 @pytest.fixture
 def person_identity(person: Person) -> PersonIdentity:
     return PersonIdentity.objects.create(
diff --git a/greg/tests/test_signals.py b/greg/tests/test_signals.py
new file mode 100644
index 0000000000000000000000000000000000000000..f54eafb24d11f82bd2186bb3b29e1aa85f0cc305
--- /dev/null
+++ b/greg/tests/test_signals.py
@@ -0,0 +1,19 @@
+import pytest
+
+from greg.models import Notification
+
+
+@pytest.mark.django_db
+def test_delete_signal_person(person_foo):
+    """Check that a Notification is created when a Person object is deleted."""
+    assert Notification.objects.count() == 1
+    person_foo.delete()
+    assert Notification.objects.count() == 2
+
+
+@pytest.mark.django_db
+def test_delete_signal_ou(unit_foo):
+    """Check that a Notification is not created when an OrganizationalUnit is deleted."""
+    assert Notification.objects.count() == 0
+    unit_foo.delete()
+    assert Notification.objects.count() == 0