Skip to content

Commit

Permalink
Merge pull request #42 from UnBArqDsw2021-2/182-historico_talhao
Browse files Browse the repository at this point in the history
Adição do endpoint de DETAIL do histórico de um talhão
  • Loading branch information
Joao-Moura authored Apr 13, 2022
2 parents bec487e + fcdfef7 commit 90a0822
Show file tree
Hide file tree
Showing 5 changed files with 63 additions and 8 deletions.
4 changes: 2 additions & 2 deletions propriedade/serializers/propriedade.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
from tecnico.models.tecnico import Tecnico
from tecnico.serializers.tecnico import TecnicoSerializer

from talhao.serializers.talhao import TalhaoListSerializer
from talhao.serializers.talhao import TalhaoDetailSerializer


class PropriedadeSerializer(serializers.ModelSerializer):
Expand Down Expand Up @@ -57,7 +57,7 @@ class Meta(PropriedadeSerializer.Meta):
read_only_fields = fields

def get_talhao(self, propriedade):
return TalhaoListSerializer(
return TalhaoDetailSerializer(
propriedade.talhao_set,
context={'plantio_estado_filtro': [PLANTADO, CARENCIA, COLHEITA]},
many=True
Expand Down
4 changes: 2 additions & 2 deletions talhao/serializers/talhao.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ class Meta:
]


class TalhaoListSerializer(serializers.ModelSerializer):
class TalhaoDetailSerializer(serializers.ModelSerializer):
plantio = serializers.SerializerMethodField()

class Meta:
Expand All @@ -28,7 +28,7 @@ class Meta:
read_only_fields = fields

def get_plantio(self, talhao):
if bool(self.context):
if self.context.get('plantio_estado_filtro'):
[estados] = [*self.context.values()]
plantios = talhao.plantio_set.filter(
estado__in=estados
Expand Down
39 changes: 39 additions & 0 deletions talhao/tests/views/test_talhao.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
from core.consts.plantios import PLANTADO, FINALIZADO

from django.test import TestCase
from core.tests.mixin import APITestMixin
from rest_framework.reverse import reverse_lazy

from parameterized import parameterized

from plantio.tests.recipes import plantio

from propriedade.tests.recipes import propriedade

from talhao.models import Talhao
Expand Down Expand Up @@ -78,3 +82,38 @@ def test_nao_cria_talhao_numero_negativo(self):
'Certifque-se de que este valor seja maior ou igual a 0.',
response.json()['numero']
)


class TalhaoDetailAPIViewTest(APITestMixin, TestCase):

def setUp(self):
self.talhao = talhao.make()
plantio.make(talhao=self.talhao, estado=PLANTADO)
self.plantios = plantio.make(talhao=self.talhao, estado=FINALIZADO, _quantity=7)
self.url = reverse_lazy(
'talhao-detail-historico',
kwargs={'idTalhao': self.talhao.idTalhao}
)

def test_lista_historico_plantios(self):
quantidade_plantios = len(self.plantios) + 1

response = self.client.get(self.url)

self.assertEqual(response.status_code, 200, response.json())
self.assertEqual(quantidade_plantios, len(response.json()['plantio']))

for index in range(1, quantidade_plantios):
estado = response.json()['plantio'][index]['estado']
self.assertEqual(FINALIZADO, estado)

def test_nao_lista_historico_plantios_talhao_inexistente(self):
url = reverse_lazy(
'talhao-detail-historico',
kwargs={'idTalhao': '00000000-0000-4000-8000-000000000000'}
)

response = self.client.get(url)

self.assertEqual(response.status_code, 404, response.json())
self.assertIn('Não encontrado.', response.json()['detail'])
12 changes: 10 additions & 2 deletions talhao/urls.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,19 @@
from core.consts.urls import UUID4_URL

from django.conf.urls import url
from django.urls import include

from talhao.views.talhao import TalhaoAPIView
from talhao.views.talhao import TalhaoAPIView, TalhaoDetailAPIView


urlpatterns = [
url(r'^talhao/', include([
url(r'^$', TalhaoAPIView.as_view(), name='talhao-create')
url(r'^$', TalhaoAPIView.as_view(), name='talhao-create'),

url(
r'^(?P<idTalhao>{})/$'.format(UUID4_URL),
TalhaoDetailAPIView.as_view(),
name='talhao-detail-historico'
)
]))
]
12 changes: 10 additions & 2 deletions talhao/views/talhao.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,19 @@
from rest_framework.generics import CreateAPIView
from rest_framework.generics import CreateAPIView, RetrieveAPIView

from talhao.models import Talhao
from talhao.serializers.talhao import TalhaoSerializer
from talhao.serializers.talhao import TalhaoSerializer, TalhaoDetailSerializer


class TalhaoAPIView(CreateAPIView):
serializer_class = TalhaoSerializer

def get_queryset(self):
return Talhao.objects.all()


class TalhaoDetailAPIView(RetrieveAPIView):
serializer_class = TalhaoDetailSerializer
lookup_field = 'idTalhao'

def get_queryset(self):
return Talhao.objects.all()

0 comments on commit 90a0822

Please sign in to comment.