Created tests to projects app
parent
fd14b1132c
commit
7c4ab12ec5
|
@ -80,24 +80,24 @@ class WatchedMixin(object):
|
|||
watchers_to_notify = set()
|
||||
watchers_by_role = self._get_watchers_by_role()
|
||||
|
||||
owner = watchers_by_role.get("owner")
|
||||
owner = watchers_by_role.get("owner", None)
|
||||
if (owner and owner.allow_notify_owned()
|
||||
and owner.allow_notify_by_me(changer)):
|
||||
watchers_to_notify.add(owner)
|
||||
|
||||
assigned_to = watchers_by_role.get("assigned_to")
|
||||
assigned_to = watchers_by_role.get("assigned_to", None)
|
||||
if (assigned_to and assigned_to.allow_notify_assigned_to()
|
||||
and assigned_to.allow_notify_by_me(changer)):
|
||||
watchers_to_notify.add(assigned_to)
|
||||
|
||||
suscribed_watchers = watchers_by_role.get("suscribed_watchers")
|
||||
suscribed_watchers = watchers_by_role.get("suscribed_watchers", None)
|
||||
if suscribed_watchers:
|
||||
for suscribed_watcher in suscribed_watchers:
|
||||
if (suscribed_watcher and suscribed_watcher.allow_notify_suscribed()
|
||||
and suscribed_watcher.allow_notify_by_me(changer)):
|
||||
watchers_to_notify.add(suscribed_watcher)
|
||||
|
||||
(project, project_owner) = watchers_by_role.get("project_owner")
|
||||
(project, project_owner) = watchers_by_role.get("project_owner", (None, None))
|
||||
if project_owner \
|
||||
and project_owner.allow_notify_project(project) \
|
||||
and project_owner.allow_notify_by_me(self._changer):
|
||||
|
|
|
@ -11,25 +11,22 @@ class AttachmentSerializer(serializers.ModelSerializer):
|
|||
url = serializers.SerializerMethodField("get_url")
|
||||
|
||||
def get_url(self, obj):
|
||||
# FIXME: add sites or correct url.
|
||||
if obj.attached_file:
|
||||
return "http://localhost:8000{0}".format(obj.attached_file.url)
|
||||
return None
|
||||
return obj.attached_file.url if obj and obj.attached_file else ""
|
||||
|
||||
class Meta:
|
||||
model = models.Attachment
|
||||
fields = ("id", "project", "owner", "attached_file",
|
||||
"created_date", "object_id", "url")
|
||||
fields = ("id", "project", "owner", "attached_file", "created_date",
|
||||
"modified_date", "object_id", "url")
|
||||
read_only_fields = ("owner",)
|
||||
fields = ()
|
||||
|
||||
|
||||
class ProjectSerializer(serializers.ModelSerializer):
|
||||
tags = PickleField()
|
||||
tags = PickleField(required=False)
|
||||
list_of_milestones = serializers.Field(source="list_of_milestones")
|
||||
|
||||
class Meta:
|
||||
model = models.Project
|
||||
read_only_fields = ("owner",)
|
||||
|
||||
|
||||
# User Stories common serializers
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
from django.db.models.loading import get_model
|
||||
|
||||
|
||||
def create_project(id, owner, save=True):
|
||||
model = get_model("projects", "Project")
|
||||
|
||||
instance = model(
|
||||
name="Project {0}".format(id),
|
||||
description="This is a test project",
|
||||
owner=owner,
|
||||
total_story_points=id
|
||||
)
|
||||
|
||||
if save:
|
||||
instance.save()
|
||||
return instance
|
||||
|
||||
|
||||
def add_membership(project, user, role_slug="dev"):
|
||||
model = get_model("users", "Role")
|
||||
role = model.objects.get(slug=role_slug)
|
||||
|
||||
model = get_model("projects", "Membership")
|
||||
instance = model.objects.create(
|
||||
project=project,
|
||||
user=user,
|
||||
role=role
|
||||
)
|
||||
return instance
|
|
@ -0,0 +1,232 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
import json
|
||||
|
||||
from django import test
|
||||
from django.core.urlresolvers import reverse
|
||||
|
||||
from greenmine.base.users.tests import create_user
|
||||
from greenmine.projects.models import Project
|
||||
|
||||
from . import create_project, add_membership
|
||||
|
||||
|
||||
class ProjectsTestCase(test.TestCase):
|
||||
fixtures = ["initial_role.json", ]
|
||||
|
||||
def setUp(self):
|
||||
self.user1 = create_user(1)
|
||||
self.user2 = create_user(2)
|
||||
self.user3 = create_user(3)
|
||||
|
||||
self.project1 = create_project(1, self.user1)
|
||||
self.project2 = create_project(2, self.user1)
|
||||
self.project3 = create_project(3, self.user2)
|
||||
|
||||
add_membership(self.project1, self.user3, "dev")
|
||||
add_membership(self.project3, self.user3, "dev")
|
||||
|
||||
def test_list_projects_by_anon(self):
|
||||
response = self.client.get(reverse("projects-list"))
|
||||
self.assertEqual(response.status_code, 401)
|
||||
|
||||
def test_list_projects_by_owner(self):
|
||||
response = self.client.login(username=self.user1.username,
|
||||
password=self.user1.username)
|
||||
self.assertTrue(response)
|
||||
response = self.client.get(reverse("projects-list"))
|
||||
self.assertEqual(response.status_code, 200)
|
||||
projects_list = response.data
|
||||
self.assertEqual(len(projects_list), 2)
|
||||
self.client.logout()
|
||||
|
||||
response = self.client.login(username=self.user2.username,
|
||||
password=self.user2.username)
|
||||
self.assertTrue(response)
|
||||
response = self.client.get(reverse("projects-list"))
|
||||
self.assertEqual(response.status_code, 200)
|
||||
projects_list = response.data
|
||||
self.assertEqual(len(projects_list), 1)
|
||||
self.client.logout()
|
||||
|
||||
def test_list_projects_by_membership(self):
|
||||
response = self.client.login(username=self.user3.username,
|
||||
password=self.user3.username)
|
||||
self.assertTrue(response)
|
||||
response = self.client.get(reverse("projects-list"))
|
||||
self.assertEqual(response.status_code, 200)
|
||||
projects_list = response.data
|
||||
self.assertEqual(len(projects_list), 2)
|
||||
self.client.logout()
|
||||
|
||||
def test_view_project_by_anon(self):
|
||||
response = self.client.get(reverse("projects-detail", args=(self.project1.id,)))
|
||||
self.assertEqual(response.status_code, 401)
|
||||
|
||||
def test_view_project_by_owner(self):
|
||||
response = self.client.login(username=self.user1.username,
|
||||
password=self.user1.username)
|
||||
self.assertTrue(response)
|
||||
response = self.client.get(reverse("projects-detail", args=(self.project1.id,)))
|
||||
self.assertEqual(response.status_code, 200)
|
||||
response = self.client.get(reverse("projects-detail", args=(self.project2.id,)))
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.client.logout()
|
||||
|
||||
def test_view_project_by_membership(self):
|
||||
response = self.client.login(username=self.user3.username,
|
||||
password=self.user3.username)
|
||||
self.assertTrue(response)
|
||||
response = self.client.get(reverse("projects-detail", args=(self.project1.id,)))
|
||||
self.assertEqual(response.status_code, 200)
|
||||
response = self.client.get(reverse("projects-detail", args=(self.project3.id,)))
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.client.logout()
|
||||
|
||||
def test_view_project_by_not_membership(self):
|
||||
response = self.client.login(username=self.user1.username,
|
||||
password=self.user1.username)
|
||||
self.assertTrue(response)
|
||||
response = self.client.get(reverse("projects-detail", args=(self.project3.id,)))
|
||||
self.assertEqual(response.status_code, 404)
|
||||
self.client.logout()
|
||||
|
||||
def test_create_project_by_anon(self):
|
||||
data = {
|
||||
"name": "Test Project",
|
||||
"description": "A new Test Project",
|
||||
"total_story_points": 10
|
||||
}
|
||||
|
||||
self.assertEqual(Project.objects.all().count(), 3)
|
||||
response = self.client.post(
|
||||
reverse("projects-list"),
|
||||
json.dumps(data),
|
||||
content_type="application/json")
|
||||
self.assertEqual(response.status_code, 401)
|
||||
self.assertEqual(Project.objects.all().count(), 3)
|
||||
|
||||
def test_create_project_by_auth(self):
|
||||
data = {
|
||||
"name": "Test Project",
|
||||
"description": "A new Test Project",
|
||||
"total_story_points": 10
|
||||
}
|
||||
|
||||
self.assertEqual(Project.objects.all().count(), 3)
|
||||
response = self.client.login(username=self.user1.username,
|
||||
password=self.user1.username)
|
||||
self.assertTrue(response)
|
||||
response = self.client.post(
|
||||
reverse("projects-list"),
|
||||
json.dumps(data),
|
||||
content_type="application/json")
|
||||
self.assertEqual(response.status_code, 201)
|
||||
self.assertEqual(Project.objects.all().count(), 4)
|
||||
self.client.logout()
|
||||
|
||||
def test_edit_project_by_anon(self):
|
||||
data = {
|
||||
"description": "Edited project description",
|
||||
}
|
||||
|
||||
self.assertEqual(Project.objects.all().count(), 3)
|
||||
self.assertNotEqual(data["description"], self.project1.description)
|
||||
response = self.client.patch(
|
||||
reverse("projects-detail", args=(self.project1.id,)),
|
||||
json.dumps(data),
|
||||
content_type="application/json")
|
||||
self.assertEqual(response.status_code, 401)
|
||||
self.assertEqual(Project.objects.all().count(), 3)
|
||||
|
||||
def test_edit_project_by_owner(self):
|
||||
data = {
|
||||
"description": "Modified project description",
|
||||
}
|
||||
|
||||
self.assertEqual(Project.objects.all().count(), 3)
|
||||
self.assertNotEqual(data["description"], self.project1.description)
|
||||
response = self.client.login(username=self.user1.username,
|
||||
password=self.user1.username)
|
||||
self.assertTrue(response)
|
||||
response = self.client.patch(
|
||||
reverse("projects-detail", args=(self.project1.id,)),
|
||||
json.dumps(data),
|
||||
content_type="application/json")
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertEqual(data["description"], response.data["description"])
|
||||
self.assertEqual(Project.objects.all().count(), 3)
|
||||
self.client.logout()
|
||||
|
||||
def test_edit_project_by_membership(self):
|
||||
data = {
|
||||
"description": "Edited project description",
|
||||
}
|
||||
|
||||
self.assertEqual(Project.objects.all().count(), 3)
|
||||
self.assertNotEqual(data["description"], self.project1.description)
|
||||
response = self.client.login(username=self.user3.username,
|
||||
password=self.user3.username)
|
||||
self.assertTrue(response)
|
||||
response = self.client.patch(
|
||||
reverse("projects-detail", args=(self.project1.id,)),
|
||||
json.dumps(data),
|
||||
content_type="application/json")
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertEqual(data["description"], response.data["description"])
|
||||
self.assertEqual(Project.objects.all().count(), 3)
|
||||
self.client.logout()
|
||||
|
||||
def test_edit_project_by_not_membership(self):
|
||||
data = {
|
||||
"description": "Edited project description",
|
||||
}
|
||||
|
||||
self.assertEqual(Project.objects.all().count(), 3)
|
||||
self.assertNotEqual(data["description"], self.project1.description)
|
||||
response = self.client.login(username=self.user2.username,
|
||||
password=self.user2.username)
|
||||
self.assertTrue(response)
|
||||
response = self.client.patch(
|
||||
reverse("projects-detail", args=(self.project1.id,)),
|
||||
json.dumps(data),
|
||||
content_type="application/json")
|
||||
self.assertEqual(response.status_code, 404)
|
||||
self.assertEqual(Project.objects.all().count(), 3)
|
||||
self.client.logout()
|
||||
|
||||
def test_delete_project_by_anon(self):
|
||||
self.assertEqual(Project.objects.all().count(), 3)
|
||||
response = self.client.delete(reverse("projects-detail", args=(self.project1.id,)))
|
||||
self.assertEqual(response.status_code, 401)
|
||||
self.assertEqual(Project.objects.all().count(), 3)
|
||||
|
||||
def test_delete_project_by_owner(self):
|
||||
self.assertEqual(Project.objects.all().count(), 3)
|
||||
response = self.client.login(username=self.user1.username,
|
||||
password=self.user1.username)
|
||||
self.assertTrue(response)
|
||||
response = self.client.delete(reverse("projects-detail", args=(self.project1.id,)))
|
||||
self.assertEqual(response.status_code, 204)
|
||||
self.assertEqual(Project.objects.all().count(), 2)
|
||||
self.client.logout()
|
||||
|
||||
def test_delete_project_by_membership(self):
|
||||
self.assertEqual(Project.objects.all().count(), 3)
|
||||
response = self.client.login(username=self.user3.username,
|
||||
password=self.user3.username)
|
||||
self.assertTrue(response)
|
||||
response = self.client.delete(reverse("projects-detail", args=(self.project1.id,)))
|
||||
self.assertEqual(response.status_code, 204)
|
||||
self.assertEqual(Project.objects.all().count(), 2)
|
||||
self.client.logout()
|
||||
|
||||
def test_delete_project_by_not_membership(self):
|
||||
self.assertEqual(Project.objects.all().count(), 3)
|
||||
response = self.client.login(username=self.user1.username,
|
||||
password=self.user1.username)
|
||||
self.assertTrue(response)
|
||||
response = self.client.delete(reverse("projects-detail", args=(self.project3.id,)))
|
||||
self.assertEqual(response.status_code, 404)
|
||||
self.assertEqual(Project.objects.all().count(), 3)
|
||||
self.client.logout()
|
Loading…
Reference in New Issue