Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- coding: utf-8 -*-
- from __future__ import unicode_literals
- import json
- from django.test import TestCase
- from django.test.client import RequestFactory
- from django.core.urlresolvers import reverse
- from plan.factories import ProjectFactory, TagFactory
- from average_estimation.factories import UserFactory, CategoryFactory, DepartmentFactory
- from plan.models import Question
- from plan.utils import CustomClient
- class GlobalSetUp(TestCase):
- def setUp(self):
- self.client = CustomClient()
- self.factory = RequestFactory()
- self.category = CategoryFactory.create()
- self.department = DepartmentFactory.create()
- self.user = UserFactory.create(department=self.department, password='admin')
- self.user.technologies.add(self.category)
- def tearDown(self):
- self.user.delete()
- self.category.delete()
- self.department.delete()
- class ProjectViewsTestCase(GlobalSetUp):
- def setUp(self):
- super(ProjectViewsTestCase, self).setUp()
- self.project = ProjectFactory.create()
- self.project.members.add(self.user)
- self.urls = {
- 'create': reverse('plan:project_create'),
- 'update': reverse('plan:project_detail', kwargs={'pk': self.project.pk}),
- 'list': reverse('plan:project_list')
- }
- def test_project_list(self):
- url = self.urls['list']
- ProjectFactory.create_batch(10)
- projects = ProjectFactory.create_batch(5)
- for project in projects:
- project.members.add(self.user)
- self.client.force_login(self.user)
- response = self.client.get(url)
- self.assertEqual(response.status_code, 200)
- self.assertContains(response, 'project_wrapper', 6)
- def test_project_create(self):
- url = self.urls['create']
- data = {
- 'name': 'sample project',
- 'manager': self.user,
- 'members': [self.user.id,],
- }
- self.client.force_login(self.user)
- response = self.client.post(url, data)
- self.assertEqual(response.status_code, 200)
- def test_project_update(self):
- url = self.urls['update']
- data = {
- 'name': 'sample project',
- 'manager': self.user,
- 'members': [self.user.id,],
- }
- self.client.force_login(self.user)
- response = self.client.put(url, data)
- self.assertEqual(response.status_code, 200)
- def test_project_detail_invalid(self):
- url = self.urls['update']
- user2 = UserFactory.create(department=self.department)
- user2.technologies.add(self.category)
- self.client.force_login(user2)
- response = self.client.get(url)
- self.assertEqual(response.status_code, 404)
- def test_project_detail(self):
- url = self.urls['update']
- self.client.force_login(self.user)
- response = self.client.get(url)
- self.assertEqual(response.status_code, 200)
- class TagViewsTestCase(GlobalSetUp):
- def setUp(self):
- super(TagViewsTestCase, self).setUp()
- self.url = reverse('plan:project_tags')
- def test_get_list(self):
- tags = TagFactory.create_batch(10)
- self.client.force_login(self.user)
- response = self.client.get(self.url, {'q': tags[0].name})
- self.assertEqual(response.status_code, 200)
- self.assertEqual(json.loads(response.content)['total_count'], 1)
- class ProjectQuestionsViewsTestCase(GlobalSetUp):
- def setUp(self):
- super(ProjectQuestionsViewsTestCase, self).setUp()
- self.project = ProjectFactory.create()
- self.project.members.add(self.user)
- self.question = Question.objects.create(text='some', author=self.user, project=self.project)
- self.urls = {
- 'list': reverse('plan:base_questions', kwargs={'pk': self.project.pk}),
- 'create': reverse('plan:create_question', kwargs={'pk': self.project.pk}),
- 'update': reverse('plan:update_question', kwargs={'pk': self.project.pk, 'primary_key': self.question.pk}),
- # 'list': reverse('plan:project_list')
- }
- def test_add_question(self):
- url = self.urls['create']
- data = {
- 'text': 'sample question',
- }
- response = self.client.post(url, json.dumps(data), content_type='application/json',
- HTTP_X_REQUESTED_WITH='XMLHttpRequest')
- self.assertEqual(response.status_code, 200)
- url = self.urls['list']
- response = self.client.get(url)
- self.assertContains(response, 'some')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement