hobo/tests/test_theme.py

65 lines
2.2 KiB
Python

from unittest.mock import patch
import pytest
from django.core.exceptions import ValidationError
from test_manager import login
from hobo.environment.models import Variable
pytestmark = pytest.mark.django_db
@patch('hobo.theme.views.random.random', return_value=0.1)
def test_theme_view(mocked_random, app, admin_user, fake_themes):
app = login(app)
resp = app.get('/theme').follow()
assert [x['value'] for x in resp.html.findAll('input', {'type': 'radio'})] == ['alfortville', 'publik']
resp.form['theme'].value = 'alfortville'
resp = resp.form.submit()
assert Variable.objects.filter(name='theme')[0].value == 'alfortville'
assert Variable.objects.filter(name='foo')[0].value == 'bar'
assert resp.location == '/theme/'
resp = resp.follow()
assert "The theme has been changed" in str(resp.html)
assert resp.form['theme'].value == 'alfortville'
resp.form['theme'].value = 'publik'
resp = resp.form.submit()
assert resp.location == '/theme/'
assert Variable.objects.filter(name='theme')[0].value == 'publik'
assert Variable.objects.filter(name='foo')[0].value == ''
# easter egg, sometimes it gets sorted by colour
mocked_random.return_value = 0.09
resp = app.get('/theme').follow()
assert [x['value'] for x in resp.html.findAll('input', {'type': 'radio'})] == ['publik', 'alfortville']
def test_theme_view_empty(app, admin_user, settings):
del settings.THEMES_DIRECTORY
app = login(app)
resp = app.get('/theme').follow()
assert 'Theme' in resp.text
def test_theme_option_view(app, admin_user, fake_themes):
app = login(app)
resp = app.get('/theme').follow()
resp = resp.click('Options')
assert resp.html.find('label').text == 'Global Title:'
resp.form['global_title'] = 'foo'
resp = resp.form.submit()
assert Variable.objects.all()[0].name == 'global_title'
assert Variable.objects.all()[0].value == 'foo'
assert resp.location == '.'
resp = resp.follow()
assert resp.html.find('li').text == 'foo'
def test_theme_select_view_without_theme_selected(app, admin_user, fake_themes):
assert Variable.objects.filter(name='theme').count() == 0
app = login(app)
resp = app.get('/theme/select')
assert resp.location == '/theme/'