Skip to content
Snippets Groups Projects
Commit b2ccc29e authored by Tore.Brede's avatar Tore.Brede
Browse files

Merge branch 'GREG-5_role_update' into 'master'

GREG-5: Adding methods for updating and deleting role for person

See merge request !15
parents 19250641 033d6d9e
No related branches found
No related tags found
1 merge request!15GREG-5: Adding methods for updating and deleting role for person
Pipeline #89061 passed
......@@ -44,7 +44,9 @@ urlpatterns += [
),
re_path(
r"^persons/(?P<person_id>[0-9]+)/roles/(?P<id>[0-9]+)/$",
PersonRoleViewSet.as_view({"get": "retrieve"}),
PersonRoleViewSet.as_view(
{"get": "retrieve", "patch": "partial_update", "delete": "destroy"}
),
name="person_role-detail",
),
re_path(
......
......@@ -47,6 +47,7 @@ class PersonRoleViewSet(viewsets.ModelViewSet):
pagination_class = PrimaryKeyCursorPagination
filter_backends = (filters.DjangoFilterBackend,)
filterset_class = PersonRoleFilter
lookup_field = "id"
def get_queryset(self):
qs = self.queryset
......
from typing import Dict
import pytest
from rest_framework import status
from rest_framework.reverse import reverse
......@@ -75,6 +77,34 @@ def unit_human_resources() -> OrganizationalUnit:
)
@pytest.fixture()
def role_test_guest() -> Role:
return Role.objects.create(type="Test Guest")
@pytest.fixture()
def sponsor_bar() -> Sponsor:
return Sponsor.objects.create(feide_id="bar")
@pytest.fixture
def unit_foo() -> OrganizationalUnit:
return OrganizationalUnit.objects.create(orgreg_id="12345", name_en="foo_unit")
@pytest.fixture
def role_data_guest(
role_test_guest: Role, sponsor_bar: Sponsor, unit_foo: OrganizationalUnit
) -> Dict:
return {
"role": "Test Guest",
"start_date": "2021-06-10",
"end_date": "2021-08-10",
"registered_by": sponsor_bar.id,
"unit": unit_foo.id,
}
@pytest.mark.django_db
def test_get_person(client, person_foo):
resp = client.get(reverse("person-detail", kwargs={"id": person_foo.id}))
......@@ -146,6 +176,47 @@ def test_add_role(
assert roles_for_person[0]["id"] == response_data["id"]
@pytest.mark.django_db
def test_update_role(client, person_foo, role_data_guest):
url = reverse("person_role-list", kwargs={"person_id": person_foo.id})
response = client.post(url, role_data_guest)
response_data = response.json()
assert response_data["start_date"] == "2021-06-10"
# Update the date and check that the change is registered
role_id = response.json()["id"]
updated_role = role_data_guest.copy()
updated_role["start_date"] = "2021-06-15"
url_detail = reverse(
"person_role-detail", kwargs={"person_id": person_foo.id, "id": role_id}
)
client.patch(url_detail, updated_role)
updated_role_data = client.get(url)
updated_data = updated_role_data.json()["results"][0]
assert updated_data["id"] == role_id
assert updated_data["start_date"] == "2021-06-15"
@pytest.mark.django_db
def test_delete_role(client, person_foo, role_data_guest):
url = reverse("person_role-list", kwargs={"person_id": person_foo.id})
role_id = client.post(url, role_data_guest).json()["id"]
roles_for_person = client.get(url).json()["results"]
assert len(roles_for_person) == 1
url_detail = reverse(
"person_role-detail", kwargs={"person_id": person_foo.id, "id": role_id}
)
client.delete(url_detail)
assert len(client.get(url).json()["results"]) == 0
@pytest.mark.django_db
def test_identity_list(
client, person_foo, person_foo_verified, person_foo_not_verified
......
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