73 lines
2.4 KiB
Python
73 lines
2.4 KiB
Python
from django.contrib import auth
|
|
from django.contrib.auth.models import User
|
|
from django.test import TestCase, Client
|
|
from django.urls import reverse
|
|
|
|
from cookbook.models import Recipe, RecipeIngredients
|
|
|
|
|
|
class TestViews(TestCase):
|
|
|
|
def setUp(self):
|
|
self.client = Client()
|
|
self.anonymous_client = Client()
|
|
self.client.force_login(User.objects.get_or_create(username='test')[0])
|
|
user = auth.get_user(self.client)
|
|
self.assertTrue(user.is_authenticated)
|
|
|
|
def test_index(self):
|
|
r = self.client.get(reverse('index'))
|
|
self.assertEqual(r.status_code, 200)
|
|
|
|
r = self.anonymous_client.get(reverse('index'))
|
|
self.assertEqual(r.status_code, 200)
|
|
|
|
def test_books(self):
|
|
url = reverse('view_books')
|
|
r = self.client.get(url)
|
|
self.assertEqual(r.status_code, 200)
|
|
|
|
r = self.anonymous_client.get(url)
|
|
self.assertEqual(r.status_code, 302)
|
|
|
|
def test_plan(self):
|
|
url = reverse('view_plan')
|
|
r = self.client.get(url)
|
|
self.assertEqual(r.status_code, 200)
|
|
|
|
r = self.anonymous_client.get(url)
|
|
self.assertEqual(r.status_code, 302)
|
|
|
|
def test_shopping(self):
|
|
url = reverse('view_shopping')
|
|
r = self.client.get(url)
|
|
self.assertEqual(r.status_code, 200)
|
|
|
|
r = self.anonymous_client.get(url)
|
|
self.assertEqual(r.status_code, 302)
|
|
|
|
def test_internal_recipe_update(self):
|
|
recipe = Recipe.objects.create(
|
|
name='Test',
|
|
created_by=auth.get_user(self.client)
|
|
)
|
|
|
|
url = reverse('edit_internal_recipe', args=[recipe.pk])
|
|
|
|
r = self.client.get(url)
|
|
self.assertEqual(r.status_code, 200)
|
|
|
|
r = self.anonymous_client.get(url)
|
|
self.assertEqual(r.status_code, 302)
|
|
|
|
r = self.client.post(url, {'name': 'Changed', 'working_time': 15, 'waiting_time': 15, 'ingredients': '[]'})
|
|
self.assertEqual(r.status_code, 200)
|
|
|
|
recipe = Recipe.objects.get(pk=recipe.pk)
|
|
self.assertEqual('Changed', recipe.name)
|
|
|
|
r = self.client.post(url,
|
|
{'name': 'Changed', 'working_time': 15, 'waiting_time': 15, 'ingredients': '[{"name":"Tomato","unit__name":"g","amount":100,"delete":false},{"name":"Egg","unit__name":"Piece","amount":2,"delete":false}]'})
|
|
self.assertEqual(r.status_code, 200)
|
|
self.assertEqual(2, RecipeIngredients.objects.filter(recipe=recipe).count())
|