combo/tests/test_dashboard.py

87 lines
3.0 KiB
Python

from webtest import TestApp
import pytest
from django.contrib.auth.models import User
from django.core.urlresolvers import reverse
from combo.wsgi import application
from combo.data.models import Page, CellBase, TextCell
from combo.apps.dashboard.models import DashboardCell, Tile
pytestmark = pytest.mark.django_db
from test_manager import admin_user, login
@pytest.fixture
def site(admin_user):
page = Page(title='One', slug='index')
page.save()
# order=100 will be useful to get to the cell later on
cell = TextCell(page=page, order=100, placeholder='content', text='hello world')
cell.save()
page = Page(title='Two', slug='two')
page.save()
dashboard_cell = DashboardCell(page=page, order=0, placeholder='content')
dashboard_cell.save()
def test_empty_dashboard(app, site):
resp = app.get('/', status=200)
assert 'hello world' in resp.body
resp = app.get('/two/', status=200)
assert not 'dashboardcell' in resp.body
app = login(app)
resp = app.get('/two/', status=200)
assert 'dashboardcell' in resp.body
def test_add_to_dashboard(app, site):
app = login(app)
cell = TextCell.objects.get(order=100)
dashboard = DashboardCell.objects.all()[0]
user = User.objects.all()[0]
resp = app.get(reverse('combo-dashboard-add-tile',
kwargs={'cell_reference': cell.get_reference()}))
assert Tile.objects.count() == 1
assert Tile.objects.all()[0].cell.id != cell.id
assert Tile.objects.all()[0].cell.text == cell.text
assert Tile.objects.all()[0].dashboard_id == dashboard.id
assert Tile.objects.all()[0].user_id == user.id
app = login(app)
resp = app.get('/two/', status=200)
assert 'hello world' in resp.body
def test_ajax_render(app, site):
test_add_to_dashboard(app, site)
app.reset() # logout
tile = Tile.objects.all()[0]
page = Page.objects.get(slug='two')
resp = app.get(reverse('combo-public-ajax-page-cell',
kwargs={'page_pk': page.id, 'cell_reference': tile.cell.get_reference()}),
status=403)
app = login(app)
resp = app.get(reverse('combo-public-ajax-page-cell',
kwargs={'page_pk': page.id, 'cell_reference': tile.cell.get_reference()}),
status=200)
user = User.objects.create_user('plop', email=None, password='plop')
app = login(app, username='plop', password='plop')
resp = app.get(reverse('combo-public-ajax-page-cell',
kwargs={'page_pk': page.id, 'cell_reference': tile.cell.get_reference()}),
status=403)
def test_remove_from_dashboard(app, site):
test_add_to_dashboard(app, site)
app.reset() # logout
tile = Tile.objects.all()[0]
resp = app.get(reverse('combo-dashboard-remove-tile',
kwargs={'cell_reference': tile.cell.get_reference()}), status=403)
app = login(app)
resp = app.get(reverse('combo-dashboard-remove-tile',
kwargs={'cell_reference': tile.cell.get_reference()}), status=302)
assert Tile.objects.count() == 0
assert TextCell.objects.count() == 1