combo/tests/test_lingo_cells.py

155 lines
4.4 KiB
Python

# -*- coding: utf-8 -*-
import eopayment
import pytest
from django.contrib.auth.models import User
from django.test.client import RequestFactory
from django.template import Context
from django.utils import timezone
from combo.data.models import Page
from combo.apps.lingo.models import Regie, BasketItem, Transaction
from combo.apps.lingo.models import (LingoBasketCell,
LingoRecentTransactionsCell, LingoBasketLinkCell)
pytestmark = pytest.mark.django_db
@pytest.fixture
def user():
try:
user = User.objects.get(username='admin')
except User.DoesNotExist:
user = User.objects.create_user('admin', email=None, password='admin')
return user
@pytest.fixture
def regie():
try:
regie = Regie.objects.get(slug='test')
except Regie.DoesNotExist:
regie = Regie()
regie.label = 'Test'
regie.slug = 'test'
regie.description = 'test'
regie.save()
return regie
def test_cell_disabled():
Regie.objects.all().delete()
assert LingoBasketCell.is_enabled() is False
assert LingoRecentTransactionsCell.is_enabled() is False
def test_cell_enabled(regie):
assert LingoBasketCell.is_enabled() is True
assert LingoRecentTransactionsCell.is_enabled() is True
def test_basket_cell(regie, user):
page = Page(title='xxx', slug='test_basket_cell', template_name='standard')
page.save()
cell = LingoBasketCell(page=page, placeholder='content', order=0)
context = Context({'request': RequestFactory().get('/')})
context['request'].user = None
assert cell.is_relevant(context) is False
assert cell.get_badge(context) is None
context['request'].user = user
assert cell.is_relevant(context) is False
assert cell.get_badge(context) is None
item = BasketItem()
item.user = user
item.regie = regie
item.subject = 'foo'
item.source_url = 'http://example.net'
item.amount = 12345
item.save()
item_anonymous = BasketItem()
item_anonymous.user = None
item_anonymous.regie = regie
item_anonymous.subject = 'randall'
item_anonymous.source_url = 'http://example.net'
item_anonymous.amount = 667
item_anonymous.save()
assert cell.is_relevant(context) is True
assert cell.get_badge(context) == {'badge': u'12345€'}
item.cancellation_date = timezone.now()
item.save()
assert cell.is_relevant(context) is False
item.cancellation_date = None
item.save()
content = cell.render(context)
assert '12345' in content
assert '667' not in content
def test_recent_transaction_cell(regie, user):
page = Page(title='xxx', slug='test_basket_cell', template_name='standard')
page.save()
cell = LingoRecentTransactionsCell(page=page, placeholder='content', order=0)
context = Context({'request': RequestFactory().get('/')})
context['request'].user = None
assert cell.is_relevant(context) is False
context['request'].user = user
assert cell.is_relevant(context) is False
transaction = Transaction(user=user, status=eopayment.PAID)
transaction.save()
assert cell.is_relevant(context) is True
item = BasketItem()
item.user = user
item.regie = regie
item.subject = 'foo'
item.source_url = 'http://example.net'
item.amount = 12345
item.save()
transaction.items.add(item)
content = cell.render(context)
assert '12345' in content
assert item.source_url in content
assert 'open' in content
item.source_url = ''
item.save()
content = cell.render(context)
assert not 'open' in content
def test_basket_link_cell(regie, user):
page = Page(title='xxx', slug='test_basket_cell', template_name='standard')
page.save()
cell = LingoBasketLinkCell(page=page, placeholder='content', order=0)
context = Context({'request': RequestFactory().get('/')})
context['request'].user = None
assert cell.is_relevant(context) is False
context['request'].user = user
assert cell.is_relevant(context) is False
item = BasketItem()
item.user = user
item.regie = regie
item.subject = 'foo'
item.source_url = 'http://example.net'
item.amount = 12345
item.save()
assert cell.is_relevant(context) is True
# no basket cell to link to
content = cell.render(context)
assert content == ''
cell2 = LingoBasketCell(page=page, placeholder='content', order=0)
cell2.save()
content = cell.render(context)
assert '12345' in content
assert page.get_online_url() in content