wcs/tests/test_role.py

79 lines
2.1 KiB
Python

# -*- coding: utf-8 -*-
import pickle
from quixote import get_publisher
from wcs.roles import get_user_roles
from .utilities import clean_temporary_pub, create_temporary_pub
def setup_module(module):
pub = create_temporary_pub()
pub.cfg['language'] = {'language': 'en'}
pub.cfg['misc'] = {'charset': 'utf-8'}
def teardown_module(module):
clean_temporary_pub()
def test_slug():
get_publisher().role_class.wipe()
role = get_publisher().role_class(name='Hello world')
role.store()
assert role.slug == 'hello-world'
def test_duplicated_name():
get_publisher().role_class.wipe()
role = get_publisher().role_class(name='Hello world')
role.store()
assert role.slug == 'hello-world'
role = get_publisher().role_class(name='Hello world')
role.store()
assert role.slug == 'hello-world-1'
def test_migrate():
get_publisher().role_class.wipe()
role = get_publisher().role_class(name='Hello world')
role.store()
obj = pickle.load(open(role.get_object_filename(), 'rb'))
del obj.slug
pickle.dump(obj, open(role.get_object_filename(), 'wb'))
assert pickle.load(open(role.get_object_filename(), 'rb')).slug is None
assert get_publisher().role_class.get(role.id).slug == 'hello-world'
def test_get_user_roles():
get_publisher().role_class.wipe()
get_publisher().role_class(name='f1').store()
get_publisher().role_class(name='é1').store()
get_publisher().role_class(name='a1').store()
assert [x[1] for x in get_user_roles()] == ['a1', 'é1', 'f1']
def test_get_emails():
User = get_publisher().user_class
User.wipe()
get_publisher().role_class.wipe()
role = get_publisher().role_class(name='role')
role.emails_to_members = True
role.store()
users = []
for i in range(2):
user = User(name='John Doe %s' % i)
user.email = 'john.doe.%s@example.com' % i
user.add_roles([role.id])
user.store()
users.append(user)
assert len(set(role.get_emails())) == 2
users[-1].is_active = False
users[-1].store()
assert len(set(role.get_emails())) == 1