210 lines
6.1 KiB
Python
210 lines
6.1 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
import eopayment
|
|
import pytest
|
|
|
|
from django.contrib.auth.models import User
|
|
from django.test.client import RequestFactory
|
|
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, TipiPaymentFormCell)
|
|
|
|
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 = {'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
|
|
|
|
item.amount = 123.45
|
|
item.save()
|
|
assert cell.get_badge(context) == {'badge': u'123.45€'}
|
|
|
|
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 = {'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 = {'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
|
|
|
|
def test_tipi_cell():
|
|
page = Page(title='example page', slug='example-page')
|
|
page.save()
|
|
cell = TipiPaymentFormCell()
|
|
cell.page = page
|
|
cell.title = 'TIPI Payment'
|
|
cell.regies = "test regie"
|
|
cell.order = 0
|
|
cell.save()
|
|
assert cell.control_protocol == 'pesv2'
|
|
assert cell.url == 'https://www.tipi.budget.gouv.fr/tpa/paiement.web'
|
|
assert cell.template_name == 'lingo/tipi_form.html'
|
|
html = cell.render({})
|
|
assert "<h2>TIPI Payment</h2>" in html
|
|
assert "Community identifier" not in html
|
|
assert '<input type="hidden" id="numcli" value="test regie" />' in html
|
|
assert 'id="exer"' in html
|
|
assert 'id="idpce"' in html
|
|
assert 'id="idligne"' in html
|
|
assert 'id="rolrec"' not in html
|
|
assert 'id="roldeb"' not in html
|
|
assert 'id="roldet"' not in html
|
|
assert 'data-saisie="M"' in html
|
|
|
|
cell.control_protocol = 'rolmre'
|
|
cell.test_mode = True
|
|
cell.save()
|
|
html = cell.render({})
|
|
assert 'id="rolrec"' in html
|
|
assert 'id="roldeb"' in html
|
|
assert 'id="roldet"' in html
|
|
assert 'id="idpce"' not in html
|
|
assert 'id="idligne"' not in html
|
|
assert 'data-saisie="T"' in html
|
|
|
|
cell_media = str(cell.media)
|
|
assert "js/tipi.js" in cell_media
|
|
|
|
cell.regies = 'regie1, regie2'
|
|
cell.save()
|
|
html = cell.render({})
|
|
assert "Community identifier" in html
|
|
assert '<select id="numcli">' in html
|
|
|
|
# set reference default values and check they are filled and readonly
|
|
cell.exer = '1234'
|
|
cell.rolrec = '00'
|
|
cell.save()
|
|
html = cell.render({})
|
|
assert 'value="1234" readonly' in html
|
|
assert 'value="00" readonly' in html
|