Add books
This commit is contained in:
parent
d0a2dfeddc
commit
2e3f2029d3
10
app/libros/urls.py
Normal file
10
app/libros/urls.py
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
# app/libros/urls.py
|
||||||
|
|
||||||
|
from django.urls import path
|
||||||
|
from app.libros.views import ping, LibrosList
|
||||||
|
|
||||||
|
|
||||||
|
urlpatterns = [
|
||||||
|
path("ping/", ping, name="ping"),
|
||||||
|
path("api/libros/", LibrosList.as_view()),
|
||||||
|
]
|
@ -1,11 +1,22 @@
|
|||||||
|
# app/libros/views.py
|
||||||
|
|
||||||
from django.http import JsonResponse
|
from django.http import JsonResponse
|
||||||
from django.http import JsonResponse
|
from rest_framework.views import APIView # nuevo
|
||||||
|
from rest_framework.response import Response # nuevo
|
||||||
|
from rest_framework import status # nuevo
|
||||||
|
from .serializers import LibroSerializer # nuevo
|
||||||
|
|
||||||
|
|
||||||
def ping(request):
|
def ping(request):
|
||||||
data = {"ping": "pong!"}
|
data = {"ping": "pong!"}
|
||||||
return JsonResponse(data)
|
return JsonResponse(data)
|
||||||
|
|
||||||
def ping(request):
|
|
||||||
data = {"ping": "pong!"}
|
class LibrosList(APIView):
|
||||||
return JsonResponse(data)
|
|
||||||
|
def post(self, request):
|
||||||
|
serializer = LibroSerializer(data=request.data)
|
||||||
|
if serializer.is_valid():
|
||||||
|
serializer.save()
|
||||||
|
return Response(serializer.data, status=status.HTTP_201_CREATED)
|
||||||
|
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
|
@ -1,10 +1,9 @@
|
|||||||
|
# proyecto/urls.py
|
||||||
|
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
from django.urls import path
|
from django.urls import path, include
|
||||||
|
|
||||||
from app.libros.views import ping
|
|
||||||
|
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('admin/', admin.site.urls),
|
path("admin/", admin.site.urls),
|
||||||
path('ping/', ping, name="ping"),
|
path("", include("app.libros.urls")),
|
||||||
]
|
]
|
30
tests/libros/test_views.py
Normal file
30
tests/libros/test_views.py
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
# tests/libros/test_views.py
|
||||||
|
|
||||||
|
import pytest
|
||||||
|
from app.libros.models import Libros
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.django_db
|
||||||
|
def test_add_movie(client):
|
||||||
|
# Given
|
||||||
|
libros = Libros.objects.all()
|
||||||
|
assert len(libros) == 0
|
||||||
|
|
||||||
|
# When
|
||||||
|
resp = client.post(
|
||||||
|
"/api/libros/",
|
||||||
|
{
|
||||||
|
"title": "El fin de la eternidad",
|
||||||
|
"genre": "Ciencia Ficción",
|
||||||
|
"author": "Isaac Asimov",
|
||||||
|
"year": "1955",
|
||||||
|
},
|
||||||
|
content_type="application/json"
|
||||||
|
)
|
||||||
|
|
||||||
|
# Then
|
||||||
|
assert resp.status_code == 201
|
||||||
|
assert resp.data["title"] == "El fin de la eternidad"
|
||||||
|
|
||||||
|
libros = Libros.objects.all()
|
||||||
|
assert len(libros) == 1
|
Loading…
Reference in New Issue
Block a user