tests: tracker: increase coverage
This commit is contained in:
parent
939533472a
commit
b8cf0c830d
2 changed files with 477 additions and 71 deletions
260
tracker/tests.py
260
tracker/tests.py
|
@ -3,6 +3,7 @@ from django.core.urlresolvers import reverse
|
|||
|
||||
from tracker.models import *
|
||||
from accounts.models import User
|
||||
from permissions.models import PermissionModel as PermModel
|
||||
|
||||
|
||||
class TestViews(TestCase):
|
||||
|
@ -15,10 +16,22 @@ class TestViews(TestCase):
|
|||
def test_admin(self):
|
||||
response = self.client.get(reverse('admin'))
|
||||
self.assertRedirects(response, reverse('settings'))
|
||||
self.client.logout()
|
||||
response = self.client.get(reverse('admin'))
|
||||
self.assertRedirects(response, reverse('login')+'?next='+reverse('admin'))
|
||||
self.client.login(username='user1', password='user1')
|
||||
response = self.client.get(reverse('admin'))
|
||||
self.assertEqual(response.status_code, 403)
|
||||
|
||||
def test_settings(self):
|
||||
response = self.client.get(reverse('settings'))
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.client.logout()
|
||||
response = self.client.get(reverse('settings'))
|
||||
self.assertRedirects(response, reverse('login')+'?next='+reverse('settings'))
|
||||
self.client.login(username='user1', password='user1')
|
||||
response = self.client.get(reverse('settings'))
|
||||
self.assertEqual(response.status_code, 403)
|
||||
|
||||
# Projects
|
||||
|
||||
|
@ -28,22 +41,82 @@ class TestViews(TestCase):
|
|||
Project.objects.all().delete()
|
||||
response = self.client.get(reverse('list-project'))
|
||||
self.assertRedirects(response, reverse('add-project'))
|
||||
self.client.logout()
|
||||
response = self.client.get(reverse('list-project'))
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
def test_project_add(self):
|
||||
count = Project.objects.count()
|
||||
response = self.client.get(reverse('add-project'))
|
||||
self.assertEqual(response.status_code, 200)
|
||||
response = self.client.post(reverse('add-project'), {
|
||||
'display_name': 'project 1', # Project 1 already exist
|
||||
'name': 'newproject',
|
||||
'description': '',
|
||||
'access': Project.ACCESS_PUBLIC,
|
||||
})
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertContains(response, 'already a project')
|
||||
response = self.client.post(reverse('add-project'), {
|
||||
'display_name': 'New project',
|
||||
'name': 'admin', # reserved name
|
||||
'description': '',
|
||||
'access': Project.ACCESS_PUBLIC,
|
||||
})
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertContains(response, 'this URL is reserved')
|
||||
response = self.client.post(reverse('add-project'), {
|
||||
'display_name': 'New project',
|
||||
'name': 'newproject',
|
||||
'description': '',
|
||||
'access': Project.ACCESS_PUBLIC,
|
||||
})
|
||||
self.assertEqual(Project.objects.count(), count + 1)
|
||||
project = Project.objects.get(name='newproject')
|
||||
self.assertRedirects(response, reverse('list-project-permission', args=[project.name]))
|
||||
self.assertEqual(project.permissions.count(), 1)
|
||||
perm = project.permissions.first()
|
||||
self.assertEqual(perm.grantee_type, PermModel.GRANTEE_USER)
|
||||
user = User.objects.get(username='admin')
|
||||
self.assertEqual(perm.grantee_id, user.id)
|
||||
|
||||
def test_project_edit(self):
|
||||
project = Project.objects.first()
|
||||
project = Project.objects.get(name='project-1')
|
||||
response = self.client.get(reverse('edit-project', args=[project.name]))
|
||||
self.assertEqual(response.status_code, 200)
|
||||
response = self.client.post(reverse('edit-project', args=[project.name]), {
|
||||
'display_name': 'project 2', # Project 2 already exist
|
||||
'name': 'newproject',
|
||||
'description': '',
|
||||
'access': Project.ACCESS_PUBLIC,
|
||||
})
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertContains(response, 'already a project')
|
||||
response = self.client.post(reverse('edit-project', args=[project.name]), {
|
||||
'display_name': 'New project name',
|
||||
'name': 'admin', # reserved name
|
||||
'description': '',
|
||||
'access': Project.ACCESS_PUBLIC,
|
||||
})
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertContains(response, 'this URL is reserved')
|
||||
response = self.client.post(reverse('edit-project', args=[project.name]), {
|
||||
'display_name': 'New project name',
|
||||
'name': project.name,
|
||||
'access': project.access,
|
||||
})
|
||||
self.assertRedirects(response, reverse('list-issue', args=[project.name]))
|
||||
project = Project.objects.get(pk=project.pk)
|
||||
self.assertEqual(project.display_name, 'New project name')
|
||||
|
||||
def test_project_delete(self):
|
||||
count = Project.objects.count()
|
||||
project = Project.objects.first()
|
||||
response = self.client.get(reverse('delete-project', args=[project.name]))
|
||||
self.assertEqual(response.status_code, 405) # get method not allowed
|
||||
response = self.client.post(reverse('delete-project', args=[project.name]))
|
||||
self.assertRedirects(response, reverse('list-project'))
|
||||
self.assertEqual(Project.objects.count(), count - 1)
|
||||
|
||||
def test_project_subscribe_unsubscribe(self):
|
||||
self.client.logout()
|
||||
|
@ -51,6 +124,9 @@ class TestViews(TestCase):
|
|||
user = User.objects.get(username='user1')
|
||||
project = Project.objects.get(name='project-1')
|
||||
self.assertFalse(user in project.subscribers.all())
|
||||
response = self.client.get(reverse('unsubscribe-project', args=[project.name]), follow=True)
|
||||
self.assertRedirects(response, reverse('list-issue', args=[project.name]))
|
||||
self.assertContains(response, 'not subscribed to this project')
|
||||
response = self.client.get(reverse('subscribe-project', args=[project.name]))
|
||||
self.assertRedirects(response, reverse('profile'))
|
||||
user.email = 'user@example.com'
|
||||
|
@ -59,10 +135,18 @@ class TestViews(TestCase):
|
|||
self.assertRedirects(response, reverse('list-issue', args=[project.name]))
|
||||
project = Project.objects.get(pk=project.pk)
|
||||
self.assertTrue(user in project.subscribers.all())
|
||||
response = self.client.get(reverse('subscribe-project', args=[project.name]), follow=True)
|
||||
self.assertRedirects(response, reverse('list-issue', args=[project.name]))
|
||||
self.assertContains(response, 'already subscribed')
|
||||
response = self.client.get(reverse('unsubscribe-project', args=[project.name]))
|
||||
self.assertRedirects(response, reverse('list-issue', args=[project.name]))
|
||||
project = Project.objects.get(pk=project.pk)
|
||||
self.assertFalse(user in project.subscribers.all())
|
||||
# test redirect with next=
|
||||
response = self.client.get(reverse('subscribe-project', args=[project.name])+'?next='+reverse('profile'))
|
||||
self.assertRedirects(response, reverse('profile'))
|
||||
response = self.client.get(reverse('unsubscribe-project', args=[project.name])+'?next='+reverse('profile'))
|
||||
self.assertRedirects(response, reverse('profile'))
|
||||
|
||||
# Issue
|
||||
|
||||
|
@ -70,32 +154,113 @@ class TestViews(TestCase):
|
|||
project = Project.objects.get(name='project-1')
|
||||
response = self.client.get(reverse('list-issue', args=[project.name]))
|
||||
self.assertEqual(response.status_code, 200)
|
||||
url = reverse('list-issue', args=['not-existing-project'])
|
||||
response = self.client.get(url)
|
||||
self.assertEqual(response.status_code, 403)
|
||||
self.client.logout()
|
||||
response = self.client.get(url)
|
||||
self.assertRedirects(response, reverse('login')+'?next='+url)
|
||||
|
||||
def test_issue_add(self):
|
||||
count = Issue.objects.count()
|
||||
project = Project.objects.get(name='project-1')
|
||||
response = self.client.get(reverse('add-issue', args=[project.name]))
|
||||
self.assertEqual(response.status_code, 200)
|
||||
response = self.client.post(reverse('add-issue', args=[project.name]), {
|
||||
'title': 'new issue',
|
||||
'description': 'New issue.',
|
||||
})
|
||||
issue = Issue.objects.get(title='new issue')
|
||||
self.assertRedirects(response, reverse('show-issue', args=[project.name, issue.id]))
|
||||
self.assertEqual(Issue.objects.count(), count + 1)
|
||||
response = self.client.post(reverse('add-issue', args=[project.name]), {
|
||||
'title': 'new issue bis',
|
||||
})
|
||||
issue = Issue.objects.get(title='new issue bis')
|
||||
self.assertRedirects(response, reverse('show-issue', args=[project.name, issue.id]))
|
||||
self.assertEqual(Issue.objects.count(), count + 2)
|
||||
|
||||
def test_issue_edit(self):
|
||||
project = Project.objects.get(name='project-1')
|
||||
issue = project.issues.first()
|
||||
count = issue.events.count()
|
||||
response = self.client.get(reverse('edit-issue', args=[project.name, issue.id]))
|
||||
self.assertEqual(response.status_code, 200)
|
||||
response = self.client.post(reverse('edit-issue', args=[project.name, issue.id]), {
|
||||
'title': 'new title',
|
||||
}, follow=True)
|
||||
self.assertRedirects(response, reverse('show-issue', args=[project.name, issue.id]))
|
||||
self.assertContains(response, 'updated successfully')
|
||||
issue = Issue.objects.get(pk=issue.pk)
|
||||
self.assertEqual(issue.title, 'new title')
|
||||
self.assertEqual(issue.events.count(), count + 1)
|
||||
response = self.client.post(reverse('edit-issue', args=[project.name, issue.id]), {
|
||||
'title': 'new title',
|
||||
'description': 'new description',
|
||||
}, follow=True)
|
||||
self.assertRedirects(response, reverse('show-issue', args=[project.name, issue.id]))
|
||||
self.assertContains(response, 'updated successfully')
|
||||
issue = Issue.objects.get(pk=issue.pk)
|
||||
self.assertEqual(issue.description, 'new description')
|
||||
response = self.client.post(reverse('edit-issue', args=[project.name, issue.id]), {
|
||||
'title': 'new title',
|
||||
'description': 'new description',
|
||||
}, follow=True)
|
||||
self.assertRedirects(response, reverse('show-issue', args=[project.name, issue.id]))
|
||||
self.assertContains(response, 'not modified')
|
||||
|
||||
def test_issue_details(self):
|
||||
project = Project.objects.get(name='project-1')
|
||||
issue = project.issues.get(title='Issue 1')
|
||||
response = self.client.get(reverse('show-issue', args=[project.name, issue.id]))
|
||||
self.assertEqual(response.status_code, 200)
|
||||
issue = project.issues.get(title='THE Issue 2')
|
||||
response = self.client.get(reverse('show-issue', args=[project.name, issue.id]))
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
def test_issue_comment_add(self):
|
||||
pass
|
||||
project = Project.objects.get(name='project-1')
|
||||
issue = project.issues.get(title='Issue 1')
|
||||
count = issue.comments.count()
|
||||
response = self.client.get(reverse('comment-issue', args=[project.name, issue.id]))
|
||||
self.assertEqual(response.status_code, 200)
|
||||
response = self.client.post(reverse('comment-issue', args=[project.name, issue.id]), {
|
||||
'comment': 'New comment.',
|
||||
})
|
||||
self.assertRedirects(response, reverse('show-issue', args=[project.name, issue.id]))
|
||||
issue = Issue.objects.get(pk=issue.pk)
|
||||
self.assertEqual(issue.comments.count(), count + 1)
|
||||
|
||||
def test_issue_comment_edit(self):
|
||||
pass
|
||||
project = Project.objects.get(name='project-1')
|
||||
issue = project.issues.get(title='THE Issue 2')
|
||||
comment = issue.comments.first()
|
||||
response = self.client.get(reverse('edit-comment', args=[project.name, issue.id, comment.id]))
|
||||
self.assertEqual(response.status_code, 200)
|
||||
response = self.client.post(reverse('edit-comment', args=[project.name, issue.id, comment.id]), {
|
||||
'comment': 'New comment.',
|
||||
}, follow=True)
|
||||
self.assertRedirects(response, reverse('show-issue', args=[project.name, issue.id]))
|
||||
self.assertContains(response, 'modified successfully')
|
||||
comment = Event.objects.get(pk=comment.pk)
|
||||
self.assertEqual(comment.additionnal_section, 'New comment.')
|
||||
response = self.client.post(reverse('edit-comment', args=[project.name, issue.id, comment.id]), {
|
||||
'comment': 'New comment.',
|
||||
}, follow=True)
|
||||
self.assertRedirects(response, reverse('show-issue', args=[project.name, issue.id]))
|
||||
self.assertContains(response, 'not modified')
|
||||
|
||||
def test_issue_comment_delete(self):
|
||||
pass
|
||||
project = Project.objects.get(name='project-1')
|
||||
issue = project.issues.get(title='THE Issue 2')
|
||||
count = issue.comments.count()
|
||||
comment = issue.comments.first()
|
||||
response = self.client.get(reverse('delete-comment', args=[project.name, issue.id, comment.id]))
|
||||
self.assertEqual(response.status_code, 405) # get method not allowed
|
||||
response = self.client.post(reverse('delete-comment', args=[project.name, issue.id, comment.id]))
|
||||
self.assertRedirects(response, reverse('show-issue', args=[project.name, issue.id]))
|
||||
issue = Issue.objects.get(pk=issue.pk)
|
||||
self.assertEqual(issue.comments.count(), count - 1)
|
||||
|
||||
def test_issue_close_reopen(self):
|
||||
issue = Issue.objects.filter(closed=False).first()
|
||||
|
@ -123,17 +288,50 @@ class TestViews(TestCase):
|
|||
self.assertRedirects(response, reverse('list-issue', args=[project.name]))
|
||||
self.assertEqual(Issue.objects.count(), count - 1)
|
||||
|
||||
def test_issue_add_label(self):
|
||||
pass
|
||||
def test_issue_add_remove_label(self):
|
||||
project = Project.objects.get(name='project-1')
|
||||
issue = project.issues.get(title='Issue 1')
|
||||
count = issue.events.count()
|
||||
label = project.labels.get(name='documentation')
|
||||
self.assertFalse(label in issue.labels.all())
|
||||
response = self.client.get(reverse('add-label-to-issue', args=[project.name, issue.id, label.id]))
|
||||
self.assertRedirects(response, reverse('show-issue', args=[project.name, issue.id]))
|
||||
issue = Issue.objects.get(pk=issue.pk)
|
||||
self.assertTrue(label in issue.labels.all())
|
||||
self.assertEqual(issue.events.count(), count + 1)
|
||||
response = self.client.get(reverse('remove-label-from-issue', args=[project.name, issue.id, label.id]))
|
||||
self.assertRedirects(response, reverse('show-issue', args=[project.name, issue.id]))
|
||||
issue = Issue.objects.get(pk=issue.pk)
|
||||
self.assertFalse(label in issue.labels.all())
|
||||
self.assertEqual(issue.events.count(), count + 2)
|
||||
|
||||
def test_issue_remove_label(self):
|
||||
pass
|
||||
|
||||
def test_issue_add_milestone(self):
|
||||
pass
|
||||
|
||||
def test_issue_remove_milestone(self):
|
||||
pass
|
||||
def test_issue_add_remove_milestone(self):
|
||||
project = Project.objects.get(name='project-1')
|
||||
issue = project.issues.get(title='Issue 1')
|
||||
count = issue.events.count()
|
||||
milestone = project.milestones.get(name='v1.0')
|
||||
self.assertEqual(issue.milestone, None)
|
||||
response = self.client.get(reverse('add-milestone-to-issue', args=[project.name, issue.id, milestone.name]))
|
||||
self.assertRedirects(response, reverse('show-issue', args=[project.name, issue.id]))
|
||||
issue = Issue.objects.get(pk=issue.pk)
|
||||
self.assertEqual(issue.milestone, milestone)
|
||||
self.assertEqual(issue.events.count(), count + 1)
|
||||
milestone = project.milestones.get(name='v2.0')
|
||||
response = self.client.post(reverse('add-milestone', args=[project.name])+'?issue='+str(issue.id), {
|
||||
'name': 'new-milestone',
|
||||
'color': '#00ff00',
|
||||
}, follow=True)
|
||||
self.assertRedirects(response, reverse('show-issue', args=[project.name, issue.id]))
|
||||
project = Project.objects.get(pk=project.pk)
|
||||
milestone = project.milestones.get(name='new-milestone')
|
||||
issue = Issue.objects.get(pk=issue.pk)
|
||||
self.assertEqual(issue.milestone, milestone)
|
||||
self.assertEqual(issue.events.count(), count + 2)
|
||||
response = self.client.get(reverse('remove-milestone-from-issue', args=[project.name, issue.id, milestone.name]))
|
||||
self.assertRedirects(response, reverse('show-issue', args=[project.name, issue.id]))
|
||||
issue = Issue.objects.get(pk=issue.pk)
|
||||
self.assertEqual(issue.milestone, None)
|
||||
self.assertEqual(issue.events.count(), count + 3)
|
||||
|
||||
def test_issue_subscribe_unsubscribe(self):
|
||||
self.client.logout()
|
||||
|
@ -142,6 +340,9 @@ class TestViews(TestCase):
|
|||
issue = Issue.objects.get(title='Issue 1')
|
||||
project = issue.project
|
||||
self.assertFalse(user in issue.subscribers.all())
|
||||
response = self.client.get(reverse('unsubscribe-issue', args=[project.name, issue.id]), follow=True)
|
||||
self.assertRedirects(response, reverse('show-issue', args=[project.name, issue.id]))
|
||||
self.assertContains(response, 'not subscribed to this issue')
|
||||
response = self.client.get(reverse('subscribe-issue', args=[project.name, issue.id]))
|
||||
self.assertRedirects(response, reverse('profile'))
|
||||
user.email = 'user@example.com'
|
||||
|
@ -150,6 +351,9 @@ class TestViews(TestCase):
|
|||
self.assertRedirects(response, reverse('show-issue', args=[project.name, issue.id]))
|
||||
issue = Issue.objects.get(pk=issue.pk)
|
||||
self.assertTrue(user in issue.subscribers.all())
|
||||
response = self.client.get(reverse('subscribe-issue', args=[project.name, issue.id]), follow=True)
|
||||
self.assertRedirects(response, reverse('show-issue', args=[project.name, issue.id]))
|
||||
self.assertContains(response, 'already subscribed to this issue')
|
||||
response = self.client.get(reverse('unsubscribe-issue', args=[project.name, issue.id]))
|
||||
self.assertRedirects(response, reverse('show-issue', args=[project.name, issue.id]))
|
||||
issue = Issue.objects.get(pk=issue.pk)
|
||||
|
@ -164,14 +368,29 @@ class TestViews(TestCase):
|
|||
|
||||
def test_label_add(self):
|
||||
project = Project.objects.get(name='project-1')
|
||||
count = project.labels.count()
|
||||
response = self.client.get(reverse('add-label', args=[project.name]))
|
||||
self.assertEqual(response.status_code, 200)
|
||||
response = self.client.post(reverse('add-label', args=[project.name]), {
|
||||
'name': 'test-label',
|
||||
'color': '#ff0000',
|
||||
})
|
||||
self.assertRedirects(response, reverse('list-label', args=[project.name]))
|
||||
project = Project.objects.get(pk=project.pk)
|
||||
self.assertEqual(project.labels.count(), count + 1)
|
||||
|
||||
def test_label_edit(self):
|
||||
project = Project.objects.get(name='project-1')
|
||||
label = project.labels.first()
|
||||
response = self.client.get(reverse('edit-label', args=[project.name, label.id]))
|
||||
self.assertEqual(response.status_code, 200)
|
||||
response = self.client.post(reverse('edit-label', args=[project.name, label.id]), {
|
||||
'name': 'new-label-name',
|
||||
'color': label.color,
|
||||
})
|
||||
self.assertRedirects(response, reverse('list-label', args=[project.name]))
|
||||
label = Label.objects.get(pk=label.pk)
|
||||
self.assertEqual(label.name, 'new-label-name')
|
||||
|
||||
def test_label_delete(self):
|
||||
count_active = Label.objects.filter(deleted=False).count()
|
||||
|
@ -195,14 +414,27 @@ class TestViews(TestCase):
|
|||
|
||||
def test_milestone_add(self):
|
||||
project = Project.objects.get(name='project-1')
|
||||
count = project.milestones.count()
|
||||
response = self.client.get(reverse('add-milestone', args=[project.name]))
|
||||
self.assertEqual(response.status_code, 200)
|
||||
response = self.client.post(reverse('add-milestone', args=[project.name]), {
|
||||
'name': 'new-version',
|
||||
})
|
||||
self.assertRedirects(response, reverse('list-milestone', args=[project.name]))
|
||||
project = Project.objects.get(pk=project.pk)
|
||||
self.assertEqual(project.milestones.count(), count + 1)
|
||||
|
||||
def test_milestone_edit(self):
|
||||
project = Project.objects.get(name='project-1')
|
||||
milestone = project.milestones.first()
|
||||
response = self.client.get(reverse('edit-milestone', args=[project.name, milestone.name]))
|
||||
self.assertEqual(response.status_code, 200)
|
||||
response = self.client.post(reverse('edit-milestone', args=[project.name, milestone.name]), {
|
||||
'name': 'new-milestone-name',
|
||||
})
|
||||
self.assertRedirects(response, reverse('list-milestone', args=[project.name]))
|
||||
milestone = Milestone.objects.get(pk=milestone.pk)
|
||||
self.assertEqual(milestone.name, 'new-milestone-name')
|
||||
|
||||
def test_milestone_close_reopen(self):
|
||||
milestone = Milestone.objects.filter(closed=False).first()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue