Skip to content

Commit

Permalink
Advice end point (#834)
Browse files Browse the repository at this point in the history
Add advice data workspace endpoint
  • Loading branch information
dgnball authored Oct 11, 2021
1 parent 8c37ca6 commit 4ea99ba
Show file tree
Hide file tree
Showing 4 changed files with 75 additions and 0 deletions.
8 changes: 8 additions & 0 deletions api/cases/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -356,6 +356,14 @@ class Meta:
read_only_fields = fields


class AdviceSerializer(serializers.ModelSerializer):
type = KeyValueChoiceField(choices=AdviceType.choices)

class Meta:
model = Advice
fields = "__all__"


class EcjuQueryGovSerializer(serializers.ModelSerializer):
raised_by_user_name = serializers.SerializerMethodField()
responded_by_user_name = serializers.SerializerMethodField()
Expand Down
13 changes: 13 additions & 0 deletions api/data_workspace/advice_views.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
from rest_framework import viewsets
from rest_framework.pagination import LimitOffsetPagination

from api.cases.serializers import AdviceSerializer
from api.core.authentication import DataWorkspaceOnlyAuthentication
from api.applications.serializers.advice import Advice


class AdviceListView(viewsets.ReadOnlyModelViewSet):
authentication_classes = (DataWorkspaceOnlyAuthentication,)
serializer_class = AdviceSerializer
pagination_class = LimitOffsetPagination
queryset = Advice.objects.all()
52 changes: 52 additions & 0 deletions api/data_workspace/tests/test_advice_views.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
from django.urls import reverse

from api.cases.enums import AdviceType, AdviceLevel
from test_helpers.clients import DataTestClient


class AdviceDataWorkspaceTests(DataTestClient):
def setUp(self):
super().setUp()
self.standard_application = self.create_standard_application_case(self.organisation)
self.create_advice(
self.gov_user,
self.standard_application,
"good",
AdviceType.APPROVE,
AdviceLevel.FINAL,
advice_text="advice_text",
)

def test_advice(self):
url = reverse("data_workspace:dw-advice-list")
response = self.client.get(url)
payload = response.json()
last_result = payload["results"][-1]

# Ensure we get some expected fields
expected_fields = {
"id",
"type",
"created_at",
"updated_at",
"text",
"note",
"level",
"footnote",
"footnote_required",
"proviso",
"pv_grading",
"collated_pv_grading",
"case",
"user",
"team",
"good",
"goods_type",
"country",
"end_user",
"ultimate_end_user",
"consignee",
"third_party",
"denial_reasons",
}
assert set(last_result.keys()) == expected_fields
2 changes: 2 additions & 0 deletions api/data_workspace/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
staticdata_views,
external_data_views,
users_views,
advice_views,
)

app_name = "data_workspace"
Expand Down Expand Up @@ -67,5 +68,6 @@
router_v1.register("users-base-users", users_views.BaseUserListView, basename="dw-users-base-users")
router_v1.register("users-gov-users", users_views.GovUserListView, basename="dw-users-gov-users")
router_v1.register("audit-move-case", audit_views.AuditMoveCaseListView, basename="dw-audit-move-case")
router_v1.register("advice", advice_views.AdviceListView, basename="dw-advice")

urlpatterns = [path("v0/", include(router_v0.urls)), path("v1/", include(router_v1.urls))]

0 comments on commit 4ea99ba

Please sign in to comment.