Skip to content

Commit

Permalink
Merge pull request #858 from uktrade/LTD-1445-advice-denial-reasons-e…
Browse files Browse the repository at this point in the history
…ndpoint

Create DW endpoint for exposing advice denial reasons
  • Loading branch information
wkeeling authored Nov 12, 2021
2 parents 33590e1 + f307fde commit fb972fd
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 1 deletion.
10 changes: 9 additions & 1 deletion api/data_workspace/advice_views.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,21 @@
from rest_framework import viewsets
from rest_framework.pagination import LimitOffsetPagination

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


class AdviceListView(viewsets.ReadOnlyModelViewSet):
authentication_classes = (DataWorkspaceOnlyAuthentication,)
serializer_class = AdviceSerializer
pagination_class = LimitOffsetPagination
queryset = Advice.objects.all()


class AdviceDenialReasonListView(viewsets.ReadOnlyModelViewSet):
authentication_classes = (DataWorkspaceOnlyAuthentication,)
serializer_class = AdviceDenialReasonSerializer
pagination_class = LimitOffsetPagination
queryset = Advice.denial_reasons.through.objects.all()
6 changes: 6 additions & 0 deletions api/data_workspace/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -104,3 +104,9 @@ def get_licence(self, instance):

def get_status(self, instance):
return instance.payload["status"].lower()


class AdviceDenialReasonSerializer(serializers.Serializer):
id = serializers.IntegerField()
advice_id = serializers.UUIDField()
denialreason_id = serializers.CharField()
24 changes: 24 additions & 0 deletions api/data_workspace/tests/test_advice_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,3 +52,27 @@ def test_advice(self):
"countersign_comments",
}
assert set(last_result.keys()) == expected_fields


class AdviceDenialReasonsDataWorkspaceTests(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.REFUSE,
AdviceLevel.FINAL,
advice_text="advice_text",
)

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

# Ensure we get some expected fields
expected_fields = {"id", "advice_id", "denialreason_id"}
assert set(last_result.keys()) == expected_fields
3 changes: 3 additions & 0 deletions api/data_workspace/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,9 @@
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")
router_v1.register(
"advice-denial-reasons", advice_views.AdviceDenialReasonListView, basename="dw-advice-denial-reasons"
)
router_v1.register(
"audit-updated-status", audit_views.AuditUpdatedCaseStatusListView, basename="dw-audit-updated-status"
)
Expand Down

0 comments on commit fb972fd

Please sign in to comment.