Add more tests and cleanup coverage reports (#13)

Closes #11
This commit is contained in:
Cristi Vîjdea
2017-12-12 17:30:58 +01:00
committed by GitHub
parent 53ac55a24b
commit 8883894775
29 changed files with 385 additions and 134 deletions
+12 -1
View File
@@ -4,13 +4,24 @@ from articles.models import Article
class ArticleSerializer(serializers.ModelSerializer):
references = serializers.DictField(
help_text="this is a really bad example",
child=serializers.URLField(help_text="but i needed to test these 2 fields somehow"),
)
uuid = serializers.UUIDField(help_text="should articles have UUIDs?")
class Meta:
model = Article
fields = ('title', 'body', 'slug', 'date_created', 'date_modified')
fields = ('title', 'body', 'slug', 'date_created', 'date_modified', 'references', 'uuid')
read_only_fields = ('date_created', 'date_modified')
lookup_field = 'slug'
extra_kwargs = {'body': {'help_text': 'body serializer help_text'}}
class ImageUploadSerializer(serializers.Serializer):
what_am_i_doing = serializers.RegexField(regex=r"^69$", help_text="test")
image_styles = serializers.ListSerializer(
child=serializers.ChoiceField(choices=['wide', 'tall', 'thumb', 'social']),
help_text="Parameter with Items"
)
upload = serializers.ImageField(help_text="image serializer help_text")
+2 -1
View File
@@ -28,9 +28,10 @@ class SnippetSerializer(serializers.Serializer):
code = serializers.CharField(style={'base_template': 'textarea.html'})
linenos = serializers.BooleanField(required=False)
language = LanguageSerializer(help_text="Sample help text for language")
style = serializers.ChoiceField(choices=STYLE_CHOICES, default='friendly')
styles = serializers.MultipleChoiceField(choices=STYLE_CHOICES, default=['friendly'])
lines = serializers.ListField(child=serializers.IntegerField(), allow_empty=True, allow_null=True, required=False)
example_projects = serializers.ListSerializer(child=ExampleProjectSerializer())
difficulty_factor = serializers.FloatField(help_text="this is here just to test FloatField")
def create(self, validated_data):
"""
+6
View File
@@ -97,6 +97,12 @@ AUTH_PASSWORD_VALIDATORS = [
},
]
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticated',
)
}
SWAGGER_SETTINGS = {
'LOGIN_URL': '/admin/login',
'LOGOUT_URL': '/admin/logout',
+8
View File
@@ -1,6 +1,7 @@
from django.conf.urls import url, include
from django.contrib import admin
from rest_framework import permissions
from rest_framework.decorators import api_view
from drf_swagger import openapi
from drf_swagger.views import get_schema_view
@@ -19,6 +20,12 @@ schema_view = get_schema_view(
permission_classes=(permissions.AllowAny,),
)
@api_view(['GET'])
def plain_view(request):
pass
urlpatterns = [
url(r'^swagger(?P<format>.json|.yaml)$', schema_view.without_ui(cache_timeout=0), name='schema-json'),
url(r'^swagger/$', schema_view.with_ui('swagger', cache_timeout=0), name='schema-swagger-ui'),
@@ -28,4 +35,5 @@ urlpatterns = [
url(r'^snippets/', include('snippets.urls')),
url(r'^articles/', include('articles.urls')),
url(r'^users/', include('users.urls')),
url(r'^plain/', plain_view),
]
+4 -2
View File
@@ -4,9 +4,11 @@ from rest_framework import serializers
from snippets.models import Snippet
class UserSerializer(serializers.ModelSerializer):
class UserSerializerrr(serializers.ModelSerializer):
snippets = serializers.PrimaryKeyRelatedField(many=True, queryset=Snippet.objects.all())
last_connected_ip = serializers.IPAddressField(help_text="i'm out of ideas", protocol='ipv4', read_only=True)
last_connected_at = serializers.DateField(help_text="really?", read_only=True)
class Meta:
model = User
fields = ('id', 'username', 'snippets')
fields = ('id', 'username', 'email', 'snippets', 'last_connected_ip', 'last_connected_at')
+7 -7
View File
@@ -7,16 +7,16 @@ from rest_framework.views import APIView
from drf_swagger import openapi
from drf_swagger.utils import swagger_auto_schema, no_body
from users.serializers import UserSerializer
from users.serializers import UserSerializerrr
class UserList(APIView):
"""UserList cbv classdoc"""
@swagger_auto_schema(responses={200: UserSerializer(many=True)})
@swagger_auto_schema(responses={200: UserSerializerrr(many=True)})
def get(self, request):
queryset = User.objects.all()
serializer = UserSerializer(queryset, many=True)
serializer = UserSerializerrr(queryset, many=True)
return Response(serializer.data)
@swagger_auto_schema(operation_description="apiview post description override", request_body=openapi.Schema(
@@ -27,7 +27,7 @@ class UserList(APIView):
},
))
def post(self, request):
serializer = UserSerializer(request.data)
serializer = UserSerializerrr(request.data)
serializer.is_valid(raise_exception=True)
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
@@ -37,15 +37,15 @@ class UserList(APIView):
pass
@swagger_auto_schema(method='put', request_body=UserSerializer)
@swagger_auto_schema(method='put', request_body=UserSerializerrr)
@swagger_auto_schema(methods=['get'], manual_parameters=[
openapi.Parameter('test', openapi.IN_QUERY, "test manual param", type=openapi.TYPE_BOOLEAN),
], responses={
200: openapi.Response('response description', UserSerializer),
200: openapi.Response('response description', UserSerializerrr),
})
@api_view(['GET', 'PUT'])
def user_detail(request, pk):
"""user_detail fbv docstring"""
user = get_object_or_404(User.objects, pk=pk)
serializer = UserSerializer(user)
serializer = UserSerializerrr(user)
return Response(serializer.data)