Решил протестить вьюхи с помошью юнит-тестов, но не могу разобраться каким образом их тестить, вот собственно вьюхи:
class MovieDetailView(Genrey, DetailView):
"""Полное описание фильма"""
model = Movie
slug_field = "url"
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context["star_form"] = RatingForm()
return context
class FilterMoviesView(Genrey, ListView):
"""Фильтр фильмов"""
def get_queryset(self):
queryset = Movie.objects.distinct('id').filter (genres__in=self.request.GET.getlis t("genre"))
return queryset
class Search(Genrey, ListView):
"""Поиск фильмов"""
paginate_by = 10
def get_queryset(self):
return Movie.objects.filter(title__icontai ns=self.request.GET.get("q"))
class AddStarRating(View):
"""Добавление рейтинга фильму"""
def get_client_ip(self, request):
x_forwarded_for = request.META.get('HTTP_X_FORWARDED_ FOR')
if x_forwarded_for:
ip = x_forwarded_for.split(',')[0]
else:
ip = request.META.get('REMOTE_ADDR')
return ip
def post(self, request):
form = RatingForm(request.POST)
if form.is_valid():
Rating.objects.update_or_create(
ip=self.get_client_ip(request),
movie_id=int(request.POST.get("movi e")),
defaults={'star_id': int(request.POST.get("star"))}
)
return HttpResponse(status=201)
else:
return HttpResponse(status=400)
class AddReview(View):
"""Отзывы"""
def post(self, request, pk):
form = ReviewForm(request.POST)
movie = Movie.objects.get(id=pk)
if form.is_valid():
form = form.save(commit=False)
if request.POST.get("parent", None):
form.parent_id = int(request.POST.get("parent"))
form.movie = movie
form.save()
return redirect(movie.get_absolute_url())
class MovieDetailView(Genrey, DetailView):
"""Полное описание фильма"""
model = Movie
slug_field = "url"
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context["star_form"] = RatingForm()
return context
class FilterMoviesView(Genrey, ListView):
"""Фильтр фильмов"""
def get_queryset(self):
queryset = Movie.objects.distinct('id').filter (genres__in=self.request.GET.getlis t("genre"))
return queryset
class Search(Genrey, ListView):
"""Поиск фильмов"""
paginate_by = 10
def get_queryset(self):
return Movie.objects.filter(title__icontai ns=self.request.GET.get("q"))
class AddStarRating(View):
"""Добавление рейтинга фильму"""
def get_client_ip(self, request):
x_forwarded_for = request.META.get('HTTP_X_FORWARDED_ FOR')
if x_forwarded_for:
ip = x_forwarded_for.split(',')[0]
else:
ip = request.META.get('REMOTE_ADDR')
return ip
def post(self, request):
form = RatingForm(request.POST)
if form.is_valid():
Rating.objects.update_or_create(
ip=self.get_client_ip(request),
movie_id=int(request.POST.get("movi e")),
defaults={'star_id': int(request.POST.get("star"))}
)
return HttpResponse(status=201)
else:
return HttpResponse(status=400)
class AddReview(View):
"""Отзывы"""
def post(self, request, pk):
form = ReviewForm(request.POST)
movie = Movie.objects.get(id=pk)
if form.is_valid():
form = form.save(commit=False)
if request.POST.get("parent", None):
form.parent_id = int(request.POST.get("parent"))
form.movie = movie
form.save()
return redirect(movie.get_absolute_url())