93 lines
2.4 KiB
Python
93 lines
2.4 KiB
Python
import pytest
|
|
|
|
from combo.data.models import Page, CellBase, TextCell, LinkCell
|
|
from django.forms.widgets import Media
|
|
|
|
pytestmark = pytest.mark.django_db
|
|
|
|
|
|
def test_cell_reference():
|
|
page = Page()
|
|
page.save()
|
|
|
|
cell = TextCell()
|
|
cell.page = page
|
|
cell.text = 'foobar'
|
|
cell.order = 0
|
|
cell.save()
|
|
|
|
assert CellBase.get_cell(cell.get_reference()) == cell
|
|
|
|
|
|
def test_media():
|
|
class TextCelleWithMedia(TextCell):
|
|
class Media:
|
|
js = ['coincoin.js']
|
|
|
|
class Meta:
|
|
# to prevent error in Models metaclass as the current module is not
|
|
# in a registered applicatoin
|
|
app_label = 'data'
|
|
abstract = True
|
|
cells = [TextCelleWithMedia() for i in range(3)]
|
|
assert unicode(sum((cell.media for cell in cells), Media())) == u'<script type="text/javascript" src="/static/coincoin.js"></script>'
|
|
|
|
|
|
def test_additional_label():
|
|
page = Page()
|
|
page.save()
|
|
|
|
cell = TextCell()
|
|
cell.page = page
|
|
cell.text = '<p>foobar</p>'
|
|
cell.order = 0
|
|
cell.save()
|
|
|
|
assert cell.get_additional_label() == 'foobar'
|
|
|
|
cell = TextCell()
|
|
cell.page = page
|
|
cell.text = '<p>%s</p>' % 'foo'*30
|
|
cell.order = 0
|
|
cell.save()
|
|
|
|
assert len(cell.get_additional_label()) < 100
|
|
assert '...' in cell.get_additional_label()
|
|
|
|
def test_link_cell():
|
|
page = Page(title='example page', slug='example-page')
|
|
page.save()
|
|
|
|
cell = LinkCell()
|
|
cell.page = page
|
|
cell.title = 'Example Site'
|
|
cell.url = 'http://example.net/'
|
|
cell.order = 0
|
|
cell.save()
|
|
|
|
assert cell.get_additional_label() == 'Example Site'
|
|
|
|
from django.template import Context
|
|
ctx = Context()
|
|
assert cell.render(ctx).strip() == '<a href="http://example.net/">Example Site</a>'
|
|
|
|
cell.title = ''
|
|
cell.save()
|
|
assert cell.render(ctx).strip() == '<a href="http://example.net/">http://example.net/</a>'
|
|
|
|
cell.link_page = page
|
|
cell.save()
|
|
assert cell.render(ctx).strip() == '<a href="/example-page/">example page</a>'
|
|
|
|
cell.title = 'altertitle'
|
|
cell.save()
|
|
assert cell.render(ctx).strip() == '<a href="/example-page/">altertitle</a>'
|
|
|
|
cell.anchor = 'anchor'
|
|
cell.save()
|
|
assert cell.render(ctx).strip() == '<a href="/example-page/#anchor">altertitle</a>'
|
|
|
|
cell.link_page = None
|
|
cell.save()
|
|
assert cell.render(ctx).strip() == '<a href="http://example.net/#anchor">altertitle</a>'
|