chrono/tests/manager/test_category.py

83 lines
2.7 KiB
Python

import pytest
from chrono.agendas.models import Agenda, Category
from tests.utils import login
pytestmark = pytest.mark.django_db
def test_list_categories_as_manager(app, manager_user):
agenda = Agenda(label='Foo Bar')
agenda.view_role = manager_user.groups.all()[0]
agenda.save()
app = login(app, username='manager', password='manager')
app.get('/manage/categories/', status=403)
resp = app.get('/manage/', status=200)
assert 'Categories' not in resp.text
def test_add_category(app, admin_user):
app = login(app)
resp = app.get('/manage/', status=200)
resp = resp.click('Categories')
resp = resp.click('New')
resp.form['label'] = 'Foo bar'
resp = resp.form.submit()
category = Category.objects.latest('pk')
assert resp.location.endswith('/manage/categories/')
assert category.label == 'Foo bar'
assert category.slug == 'foo-bar'
def test_add_category_as_manager(app, manager_user):
agenda = Agenda(label='Foo Bar')
agenda.view_role = manager_user.groups.all()[0]
agenda.save()
app = login(app, username='manager', password='manager')
app.get('/manage/category/add/', status=403)
def test_edit_category(app, admin_user):
category = Category.objects.create(label='Foo bar')
app = login(app)
resp = app.get('/manage/categories/', status=200)
resp = resp.click(href='/manage/category/%s/edit/' % category.pk)
resp.form['label'] = 'Foo bar baz'
resp.form['slug'] = 'baz'
resp = resp.form.submit()
assert resp.location.endswith('/manage/categories/')
category.refresh_from_db()
assert category.label == 'Foo bar baz'
assert category.slug == 'baz'
def test_edit_category_as_manager(app, manager_user):
agenda = Agenda(label='Foo Bar')
agenda.view_role = manager_user.groups.all()[0]
agenda.save()
category = Category.objects.create(label='Foo bar')
app = login(app, username='manager', password='manager')
app.get('/manage/category/%s/edit/' % category.pk, status=403)
def test_delete_category(app, admin_user):
category = Category.objects.create(label='Foo bar')
app = login(app)
resp = app.get('/manage/categories/', status=200)
resp = resp.click(href='/manage/category/%s/delete/' % category.pk)
resp = resp.form.submit()
assert resp.location.endswith('/manage/categories/')
assert Category.objects.exists() is False
def test_delete_category_as_manager(app, manager_user):
agenda = Agenda(label='Foo Bar')
agenda.view_role = manager_user.groups.all()[0]
agenda.save()
category = Category.objects.create(label='Foo bar')
app = login(app, username='manager', password='manager')
app.get('/manage/category/%s/delete/' % category.pk, status=403)