tests: begin tracker tests

This commit is contained in:
Élie Bouttier 2014-09-03 00:14:20 -07:00
parent 028834ce57
commit 8560c97ebd
2 changed files with 399 additions and 1 deletions

View file

@ -0,0 +1,170 @@
[
{
"fields": {
"color": "#FF0000",
"deleted": false,
"inverted": true,
"name": "bug",
"project": 1
},
"model": "tracker.label",
"pk": 1
},
{
"fields": {
"color": "#00A000",
"deleted": false,
"inverted": true,
"name": "feature",
"project": 1
},
"model": "tracker.label",
"pk": 2
},
{
"fields": {
"color": "#1D3DBE",
"deleted": false,
"inverted": true,
"name": "documentation",
"project": 1
},
"model": "tracker.label",
"pk": 3
},
{
"fields": {
"color": "#FF0000",
"deleted": false,
"inverted": true,
"name": "bug",
"project": 2
},
"model": "tracker.label",
"pk": 4
},
{
"fields": {
"color": "#00A000",
"deleted": false,
"inverted": true,
"name": "feature",
"project": 2
},
"model": "tracker.label",
"pk": 5
},
{
"fields": {
"color": "#1D3DBE",
"deleted": false,
"inverted": true,
"name": "documentation",
"project": 2
},
"model": "tracker.label",
"pk": 6
},
{
"fields": {
"closed": false,
"due_date": "2014-09-02T23:35:00Z",
"name": "v1.0",
"project": 1
},
"model": "tracker.milestone",
"pk": 1
},
{
"fields": {
"date_joined": "2014-09-03T06:34:06.019Z",
"email": "",
"first_name": "",
"groups": [],
"is_active": true,
"is_staff": true,
"is_superuser": true,
"last_login": "2014-09-03T06:34:26.544Z",
"last_name": "",
"password": "pbkdf2_sha256$12000$WrD5Mo69v7O1$JqUWSog9wxF7wyJz+esO9EHlv9j+boD58VODEq+jYLY=",
"user_permissions": [],
"username": "admin"
},
"model": "accounts.user",
"pk": 1
},
{
"fields": {
"date_joined": "2014-09-03T06:34:39.486Z",
"email": "",
"first_name": "",
"groups": [],
"is_active": true,
"is_staff": false,
"is_superuser": false,
"last_login": "2014-09-03T06:34:39.486Z",
"last_name": "",
"password": "pbkdf2_sha256$12000$51A5s5i71FWd$yOFaM/fJGEdykCbfhDRWbz0z/KGHiUNbM3mPzrieDe4=",
"user_permissions": [],
"username": "user1"
},
"model": "accounts.user",
"pk": 2
},
{
"fields": {
"_args": "{}",
"additionnal_section": "",
"author": 1,
"code": 11,
"date": "2014-09-03T06:34:57.233Z",
"issue": 1
},
"model": "tracker.event",
"pk": 1
},
{
"fields": {
"assignee": null,
"author": 1,
"closed": false,
"id": 1,
"labels": [],
"milestone": null,
"opened_at": "2014-09-03T06:34:56.913Z",
"project": 1,
"subscribers": [
1
],
"title": "Issue 1"
},
"model": "tracker.issue",
"pk": 1
},
{
"fields": {
"access": 1,
"description": "",
"display_name": "Project 1",
"name": "project-1",
"subscribers": [
1
]
},
"model": "tracker.project",
"pk": 1
},
{
"fields": {
"access": 1,
"description": "",
"display_name": "Project 2",
"name": "project-2",
"subscribers": [
1
]
},
"model": "tracker.project",
"pk": 2
}
]

View file

@ -1,3 +1,231 @@
from django.test import TestCase from django.test import TestCase
from django.core.urlresolvers import reverse
# Create your tests here. from tracker.models import *
from accounts.models import User
class TestViews(TestCase):
fixtures = ['test_tracker_views']
def setUp(self):
self.client.login(username='admin', password='admin')
def test_admin(self):
response = self.client.get(reverse('admin'))
self.assertRedirects(response, reverse('settings'))
def test_settings(self):
response = self.client.get(reverse('settings'))
self.assertEqual(response.status_code, 200)
# Projects
def test_project_list(self):
response = self.client.get(reverse('list-project'))
self.assertEqual(response.status_code, 200)
Project.objects.all().delete()
response = self.client.get(reverse('list-project'))
self.assertRedirects(response, reverse('add-project'))
def test_project_add(self):
response = self.client.get(reverse('add-project'))
self.assertEqual(response.status_code, 200)
def test_project_edit(self):
project = Project.objects.first()
response = self.client.get(reverse('edit-project', args=[project.name]))
self.assertEqual(response.status_code, 200)
def test_project_delete(self):
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'))
def test_project_subscribe_unsubscribe(self):
self.client.logout()
self.client.login(username='user1', password='user1')
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('subscribe-project', args=[project.name]))
self.assertRedirects(response, reverse('profile'))
user.email = 'user@example.com'
user.save()
response = self.client.get(reverse('subscribe-project', args=[project.name]))
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('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())
# Issue
def test_issue_list(self):
project = Project.objects.get(name='project-1')
response = self.client.get(reverse('list-issue', args=[project.name]))
self.assertEqual(response.status_code, 200)
def test_issue_add(self):
project = Project.objects.get(name='project-1')
response = self.client.get(reverse('add-issue', args=[project.name]))
self.assertEqual(response.status_code, 200)
def test_issue_edit(self):
project = Project.objects.get(name='project-1')
issue = project.issues.first()
response = self.client.get(reverse('edit-issue', args=[project.name, issue.id]))
self.assertEqual(response.status_code, 200)
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)
def test_issue_comment_add(self):
pass
def test_issue_comment_edit(self):
pass
def test_issue_comment_delete(self):
pass
def test_issue_close_reopen(self):
issue = Issue.objects.filter(closed=False).first()
project = issue.project
response = self.client.get(reverse('reopen-issue', args=[project.name, issue.id]))
self.assertEqual(response.status_code, 404)
response = self.client.get(reverse('close-issue', args=[project.name, issue.id]))
self.assertRedirects(response, reverse('list-issue', args=[project.name]))
issue = Issue.objects.get(pk=issue.pk)
self.assertTrue(issue.closed)
response = self.client.get(reverse('close-issue', args=[project.name, issue.id]))
self.assertEqual(response.status_code, 404)
response = self.client.get(reverse('reopen-issue', args=[project.name, issue.id]))
self.assertRedirects(response, reverse('show-issue', args=[project.name, issue.id]))
issue = Issue.objects.get(pk=issue.pk)
self.assertFalse(issue.closed)
def test_issue_delete(self):
count = Issue.objects.count()
issue = Issue.objects.first()
project = issue.project
response = self.client.get(reverse('delete-issue', args=[project.name, issue.id]))
self.assertEqual(response.status_code, 405) # get method forbidden
response = self.client.post(reverse('delete-issue', args=[project.name, issue.id]))
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_remove_label(self):
pass
def test_issue_add_milestone(self):
pass
def test_issue_remove_milestone(self):
pass
def test_issue_subscribe_unsubscribe(self):
self.client.logout()
self.client.login(username='user1', password='user1')
user = User.objects.get(username='user1')
issue = Issue.objects.get(title='Issue 1')
project = issue.project
self.assertFalse(user in issue.subscribers.all())
response = self.client.get(reverse('subscribe-issue', args=[project.name, issue.id]))
self.assertRedirects(response, reverse('profile'))
user.email = 'user@example.com'
user.save()
response = self.client.get(reverse('subscribe-issue', args=[project.name, issue.id]))
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('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)
self.assertFalse(user in issue.subscribers.all())
# Labels
def test_label_list(self):
project = Project.objects.get(name='project-1')
response = self.client.get(reverse('list-label', args=[project.name]))
self.assertEqual(response.status_code, 200)
def test_label_add(self):
project = Project.objects.get(name='project-1')
response = self.client.get(reverse('add-label', args=[project.name]))
self.assertEqual(response.status_code, 200)
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)
def test_label_delete(self):
count_active = Label.objects.filter(deleted=False).count()
count_deleted = Label.objects.filter(deleted=True).count()
label = Label.objects.first()
project = label.project
response = self.client.get(reverse('delete-label', args=[project.name, label.id]))
self.assertEqual(response.status_code, 405) # get method forbidden
response = self.client.post(reverse('delete-label', args=[project.name, label.id]))
self.assertRedirects(response, reverse('list-label', args=[project.name]))
self.assertEqual(Label.objects.filter(deleted=False).count(), count_active - 1)
self.assertEqual(Label.objects.filter(deleted=True).count(), count_deleted + 1)
# Milestones
def test_milestone_list(self):
project = Project.objects.get(name='project-1')
response = self.client.get(reverse('list-milestone', args=[project.name]))
self.assertEqual(response.status_code, 200)
def test_milestone_add(self):
project = Project.objects.get(name='project-1')
response = self.client.get(reverse('add-milestone', args=[project.name]))
self.assertEqual(response.status_code, 200)
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)
def test_milestone_close_reopen(self):
milestone = Milestone.objects.filter(closed=False).first()
project = milestone.project
response = self.client.get(reverse('reopen-milestone', args=[project.name, milestone.name]))
self.assertEqual(response.status_code, 404)
response = self.client.get(reverse('close-milestone', args=[project.name, milestone.name]))
self.assertRedirects(response, reverse('list-milestone', args=[project.name]))
milestone = Milestone.objects.get(pk=milestone.pk)
self.assertTrue(milestone.closed)
response = self.client.get(reverse('close-milestone', args=[project.name, milestone.name]))
self.assertEqual(response.status_code, 404)
response = self.client.get(reverse('reopen-milestone', args=[project.name, milestone.name]))
self.assertRedirects(response, reverse('list-milestone', args=[project.name]))
milestone = Milestone.objects.get(pk=milestone.pk)
self.assertFalse(milestone.closed)
def test_milestone_delete(self):
count = Milestone.objects.count()
project = Project.objects.get(name='project-1')
milestone = project.milestones.first()
response = self.client.get(reverse('delete-milestone', args=[project.name, milestone.name]))
self.assertEqual(response.status_code, 405) # get method forbidden
response = self.client.post(reverse('delete-milestone', args=[project.name, milestone.name]))
self.assertRedirects(response, reverse('list-milestone', args=[project.name]))
self.assertEqual(Milestone.objects.count(), count - 1)