|
7 | 7 | from drf_spectacular.types import OpenApiTypes |
8 | 8 | from drf_spectacular.utils import ( |
9 | 9 | OpenApiCallback, |
| 10 | + OpenApiExample, |
10 | 11 | OpenApiResponse, |
11 | 12 | PolymorphicProxySerializer, |
12 | 13 | extend_schema, |
| 14 | + extend_schema_serializer, |
13 | 15 | inline_serializer, |
14 | 16 | ) |
15 | 17 | from rest_framework import serializers |
@@ -621,3 +623,36 @@ def test_get_view_does_not_raise_missing_serializer_warning(capsys): |
621 | 623 | def test_schema_generated(api_client): |
622 | 624 | response = api_client.get("/schema/") |
623 | 625 | assert response.status_code == 200 |
| 626 | + |
| 627 | + |
| 628 | +@extend_schema_serializer( |
| 629 | + examples=[ |
| 630 | + OpenApiExample( |
| 631 | + "extend_schema_serializer_example", |
| 632 | + summary="short summary", |
| 633 | + value={"field": "specific_value"}, |
| 634 | + response_only=True, |
| 635 | + ), |
| 636 | + ] |
| 637 | +) |
| 638 | +class SomeSerializer(serializers.Serializer): |
| 639 | + field = serializers.CharField() |
| 640 | + |
| 641 | + |
| 642 | +class ExtendSchemaSerializerView(GenericAPIView): |
| 643 | + serializer_class = SomeSerializer |
| 644 | + |
| 645 | + def get(self, request, *args, **kwargs): |
| 646 | + serializer = self.get_serializer(instance={"field": "value1"}) |
| 647 | + return Response(serializer.data) |
| 648 | + |
| 649 | + |
| 650 | +def test_examples_from_extend_schema_serializer_are_showing_up(api_client): |
| 651 | + view = ExtendSchemaSerializerView.as_view() |
| 652 | + schema = generate_view_schema("extend_schema_serializer/", view) |
| 653 | + resp200 = schema["paths"]["/extend_schema_serializer/"]["get"]["responses"]["200"] |
| 654 | + assert "examples" in resp200["content"]["application/json"] |
| 655 | + examples = resp200["content"]["application/json"]["examples"] |
| 656 | + assert ( |
| 657 | + examples["ExtendSchemaSerializerExample"]["value"]["field"] == "specific_value" |
| 658 | + ) |
0 commit comments