97 lines
3.5 KiB
Python
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
|