taiga-back/tests/integration/test_project_settings.py

97 lines
3.5 KiB
Python

import json
import pytest
from django.apps import apps
from django.core.urlresolvers import reverse
from .. import factories as f
from taiga.projects.settings import services
from taiga.projects.settings.choices import Section
pytestmark = pytest.mark.django_db
def test_home_page_setting_existence():
project = f.ProjectFactory.create()
assert not services.user_project_settings_exists(project, project.owner)
services.create_user_project_settings(project, project.owner, Section.kanban)
assert services.user_project_settings_exists(project, project.owner)
def test_create_retrieve_home_page_setting():
project = f.ProjectFactory.create()
policy_model_cls = apps.get_model("settings", "UserProjectSettings")
current_number = policy_model_cls.objects.all().count()
assert current_number == 0
setting = services.create_user_project_settings_if_not_exists(project,
project.owner)
current_number = policy_model_cls.objects.all().count()
assert current_number == 1
assert setting.homepage == Section.timeline
def test_retrieve_homepage_setting_with_allowed_sections(client):
# Default template has next configuration:
# "is_epics_activated": false,
# "is_backlog_activated": true,
# "is_kanban_activated": false,
# "is_wiki_activated": true,
# "is_issues_activated": true,
user = f.UserFactory.create()
project = f.ProjectFactory.create(owner=user)
membership = f.MembershipFactory.create(user=user, project=project, is_admin=False)
membership.role.permissions = ["view_us", "view_wiki_pages"]
membership.role.save()
url = reverse("user-project-settings-list")
client.login(project.owner)
response = client.get(url)
assert response.status_code == 200
assert 1 == len(response.data)
assert 1 == response.data[0].get("homepage")
assert 5 == len(response.data[0].get("allowed_sections"))
assert Section.timeline in response.data[0].get("allowed_sections")
assert Section.search in response.data[0].get("allowed_sections")
assert Section.team in response.data[0].get("allowed_sections")
assert Section.backlog in response.data[0].get("allowed_sections")
assert Section.wiki in response.data[0].get("allowed_sections")
assert Section.epics not in response.data[0].get("allowed_sections")
assert Section.issues not in response.data[0].get("allowed_sections")
def test_avoid_patch_homepage_setting_with_not_allowed_section(client):
# Default template has next configuration:
# "is_epics_activated": false,
# "is_backlog_activated": true,
# "is_kanban_activated": false,
# "is_wiki_activated": true,
# "is_issues_activated": true,
user = f.UserFactory.create()
project = f.ProjectFactory.create(owner=user)
membership = f.MembershipFactory.create(user=user, project=project,
is_admin=False)
membership.role.permissions = ["view_us", "view_wiki_pages"]
membership.role.save()
setting = services.create_user_project_settings_if_not_exists(project,
project.owner)
url = reverse("user-project-settings-detail", args=[setting.pk])
client.login(project.owner)
response = client.json.patch(url, data=json.dumps({"homepage": Section.backlog}))
assert response.status_code == 200
response = client.json.patch(url, data=json.dumps({"homepage": Section.issues}))
assert response.status_code == 400