87 lines
3.0 KiB
Python
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
|