0003-lingo-make-manager-views-compliant-with-PaymentBacke.patch
combo/apps/lingo/forms.py | ||
---|---|---|
1 |
from django import forms |
|
2 | ||
3 |
from .models import Regie |
|
4 | ||
5 | ||
6 |
class RegieForm(forms.ModelForm): |
|
7 |
class Meta: |
|
8 |
model = Regie |
|
9 |
widgets = { |
|
10 |
'payment_backend': forms.HiddenInput() |
|
11 |
} |
|
12 |
fields = '__all__' |
combo/apps/lingo/manager_views.py | ||
---|---|---|
18 | 18 |
import datetime |
19 | 19 |
from dateutil import parser as date_parser |
20 | 20 | |
21 |
from django.core.urlresolvers import reverse_lazy |
|
21 |
from django.core.urlresolvers import reverse, reverse_lazy
|
|
22 | 22 |
from django.db.models import Q |
23 | 23 |
from django.utils import six |
24 |
from django.utils.functional import cached_property |
|
24 | 25 |
from django.utils.timezone import make_aware |
25 |
from django.views.generic import CreateView, UpdateView, ListView, DeleteView |
|
26 |
from django.http import HttpResponse |
|
26 |
from django.views.generic import CreateView, UpdateView, ListView, DeleteView, DetailView
|
|
27 |
from django.http import HttpResponse, Http404
|
|
27 | 28 | |
28 | 29 |
import eopayment |
29 | 30 | |
30 |
from .models import Regie, Transaction |
|
31 |
from .forms import RegieForm |
|
32 |
from .models import Regie, Transaction, PaymentBackend |
|
33 | ||
31 | 34 | |
32 | 35 |
class RegieListView(ListView): |
33 | 36 |
model = Regie |
34 | 37 | |
35 | 38 | |
39 |
class RegieViewMixin(object): |
|
40 | ||
41 |
def get_success_url(self): |
|
42 |
res = reverse( |
|
43 |
'lingo-manager-paymentbackend', kwargs={'pk': self.get_object().payment_backend.id} |
|
44 |
) |
|
45 |
return res |
|
46 | ||
47 | ||
36 | 48 |
class RegieCreateView(CreateView): |
49 |
form_class = RegieForm |
|
37 | 50 |
model = Regie |
38 |
fields = '__all__' |
|
39 |
success_url = reverse_lazy('lingo-manager-regie-list') |
|
51 | ||
52 |
@cached_property |
|
53 |
def payment_backend(self): |
|
54 |
try: |
|
55 |
return PaymentBackend.objects.get(id=self.kwargs.get('pk')) |
|
56 |
except PaymentBackend.DoesNotExist: |
|
57 |
raise Http404() |
|
40 | 58 | |
41 | 59 |
def get_initial(self): |
60 |
res = {'payment_backend': self.payment_backend} |
|
42 | 61 |
if self.model.objects.all().count() == 0: |
43 |
return {'is_default': True}
|
|
44 |
return {}
|
|
62 |
res['is_default'] = True
|
|
63 |
return res
|
|
45 | 64 | |
65 |
def get_success_url(self): |
|
66 |
res = reverse( |
|
67 |
'lingo-manager-paymentbackend', kwargs={'pk': self.payment_backend.id} |
|
68 |
) |
|
69 |
return res |
|
46 | 70 | |
47 |
class RegieUpdateView(UpdateView): |
|
71 | ||
72 |
class RegieUpdateView(RegieViewMixin, UpdateView): |
|
48 | 73 |
model = Regie |
49 |
fields = '__all__' |
|
50 |
success_url = reverse_lazy('lingo-manager-regie-list') |
|
74 |
form_class = RegieForm |
|
51 | 75 | |
52 | 76 | |
53 |
class RegieDeleteView(DeleteView): |
|
77 |
class RegieDeleteView(RegieViewMixin, DeleteView):
|
|
54 | 78 |
model = Regie |
55 |
success_url = reverse_lazy('lingo-manager-regie-list') |
|
56 | 79 | |
57 | 80 | |
58 | 81 |
class TransactionListView(ListView): |
... | ... | |
102 | 125 |
else: |
103 | 126 |
writer.writerow([unicode(x).encode('utf-8') for x in row]) |
104 | 127 |
return response |
128 | ||
129 | ||
130 |
class PaymentBackendView(DetailView): |
|
131 |
model = PaymentBackend |
|
132 |
template_name = 'lingo/paymentbackend.html' |
|
133 | ||
134 | ||
135 |
class PaymentBackendListView(ListView): |
|
136 |
model = PaymentBackend |
|
137 | ||
138 | ||
139 |
class PaymentBackendMixinView(object): |
|
140 | ||
141 |
def get_success_url(self): |
|
142 |
res = reverse( |
|
143 |
'lingo-manager-paymentbackend', kwargs={'pk': self.object.id} |
|
144 |
) |
|
145 |
return res |
|
146 | ||
147 | ||
148 |
class PaymentBackendCreateView(PaymentBackendMixinView, CreateView): |
|
149 |
model = PaymentBackend |
|
150 |
fields = '__all__' |
|
151 | ||
152 | ||
153 |
class PaymentBackendUpdateView(PaymentBackendMixinView, UpdateView): |
|
154 |
model = PaymentBackend |
|
155 |
fields = '__all__' |
|
156 | ||
157 | ||
158 |
class PaymentBackendDeleteView(DeleteView): |
|
159 |
model = PaymentBackend |
|
160 |
success_url = reverse_lazy('lingo-manager-paymentbackend-list') |
combo/apps/lingo/templates/lingo/paymentbackend.html | ||
---|---|---|
1 |
{% extends "lingo/paymentbackend_list.html" %} |
|
2 |
{% load i18n %} |
|
3 | ||
4 |
{% block breadcrumb %} |
|
5 |
{{ block.super }} |
|
6 |
<a href=".">{% trans "Settings" %}</a> |
|
7 |
{% endblock %} |
|
8 | ||
9 |
{% block appbar %} |
|
10 |
<h2>{% trans "Settings" %} |
|
11 |
<span class="identifier">[{% trans "identifier:" %} {{object.slug}}]</span> |
|
12 |
</h2> |
|
13 |
<span class="actions"> |
|
14 |
<a rel="popup" href="{% url 'lingo-manager-paymentbackend-delete' pk=object.id %}">{% trans 'Delete' %}</a> |
|
15 |
<a rel="popup" href="{% url 'lingo-manager-paymentbackend-edit' pk=object.id %}">{% trans 'Options' %}</a> |
|
16 |
<a rel="popup" href="{% url 'lingo-manager-regie-add' pk=object.id %}">{% trans 'New Regie' %}</a> |
|
17 |
</span> |
|
18 |
{% endblock %} |
|
19 | ||
20 | ||
21 |
{% block content %} |
|
22 |
<div class="section"> |
|
23 |
<h3>{% trans "Regies" %}</h3> |
|
24 |
<div> |
|
25 |
{% if object.regie_set.count %} |
|
26 |
<ul class="objects-list single-links"> |
|
27 |
{% for regie in object.regie_set.all %} |
|
28 |
<li> |
|
29 |
<a rel="popup" href="{% url 'lingo-manager-regie-edit' pk=regie.id %}">{{ regie.slug }}</a> |
|
30 |
<a rel="popup" class="delete" href="{% url 'lingo-manager-regie-delete' pk=regie.id %}">{% trans "remove" %}</a> |
|
31 |
</li> |
|
32 |
{% endfor %} |
|
33 |
</ul> |
|
34 |
{% else %} |
|
35 |
<div class="big-msg-info"> |
|
36 |
{% blocktrans %} |
|
37 |
This payment backend doesn't have any regie yet. Click on the "New Regie" button in |
|
38 |
the top right of the page to add a first one. |
|
39 |
{% endblocktrans %} |
|
40 |
</div> |
|
41 |
{% endif %} |
|
42 |
</div> |
|
43 |
</div> |
|
44 |
{% endblock %} |
combo/apps/lingo/templates/lingo/paymentbackend_confirm_delete.html | ||
---|---|---|
1 |
{% extends "combo/manager_base.html" %} |
|
2 |
{% load i18n %} |
|
3 | ||
4 |
{% block appbar %} |
|
5 |
<h2>{{ view.model.get_verbose_name }}</h2> |
|
6 |
{% endblock %} |
|
7 | ||
8 |
{% block content %} |
|
9 |
<form method="post"> |
|
10 |
{% csrf_token %} |
|
11 |
{% blocktrans %}Are you sure you want to delete this ?{% endblocktrans %} |
|
12 |
<div class="buttons"> |
|
13 |
<button class="delete-button">{% trans 'Delete' %}</button> |
|
14 |
<a class="cancel" href="{% url 'lingo-manager-paymentbackend-list' %}">{% trans 'Cancel' %}</a> |
|
15 |
</div> |
|
16 |
</form> |
|
17 |
{% endblock %} |
combo/apps/lingo/templates/lingo/paymentbackend_form.html | ||
---|---|---|
1 |
{% extends "lingo/paymentbackend_list.html" %} |
|
2 |
{% load i18n %} |
|
3 | ||
4 |
{% block appbar %} |
|
5 |
{% if object.id %} |
|
6 |
<h2>{% trans "Edit Payment backend" %}</h2> |
|
7 |
{% else %} |
|
8 |
<h2>{% trans "New Payment backend" %}</h2> |
|
9 |
{% endif %} |
|
10 |
{% endblock %} |
|
11 | ||
12 |
{% block content %} |
|
13 | ||
14 |
<form method="post" enctype="multipart/form-data"> |
|
15 |
{% csrf_token %} |
|
16 |
{{ form.as_p }} |
|
17 |
<div class="buttons"> |
|
18 |
<button class="submit-button">{% trans "Save" %}</button> |
|
19 |
<a class="cancel" href="{% url 'lingo-manager-homepage' %}">{% trans 'Cancel' %}</a> |
|
20 |
</div> |
|
21 |
</form> |
|
22 |
{% endblock %} |
combo/apps/lingo/templates/lingo/paymentbackend_list.html | ||
---|---|---|
1 |
{% extends "lingo/manager_base.html" %} |
|
2 |
{% load i18n %} |
|
3 | ||
4 |
{% block appbar %} |
|
5 |
<h2>{% trans 'Payment backends' %}</h2> |
|
6 |
<span class="actions"> |
|
7 |
<a rel="popup" href="{% url 'lingo-manager-paymentbackend-add' %}">{% trans 'New' %}</a> |
|
8 |
</span> |
|
9 |
{% endblock %} |
|
10 | ||
11 |
{% block breadcrumb %} |
|
12 |
{{ block.super }} |
|
13 |
<a href="{% url 'lingo-manager-paymentbackend-list' %}">{% trans 'Payment backends' %}</a> |
|
14 |
{% endblock %} |
|
15 | ||
16 |
{% block content %} |
|
17 | ||
18 |
{% if object_list %} |
|
19 |
<ul class="objects-list single-links"> |
|
20 |
{% for pb in object_list %} |
|
21 |
<li> |
|
22 |
<a href="{% url 'lingo-manager-paymentbackend' pk=pb.id %}">{{ pb.label }} |
|
23 |
<span>({{pb.service}})</span> |
|
24 |
</a> |
|
25 |
<a rel="popup" class="delete" href="{% url 'lingo-manager-paymentbackend-delete' pk=pb.id %}">{% trans "remove" %}</a> |
|
26 |
</li> |
|
27 |
{% endfor %} |
|
28 |
</ul> |
|
29 |
{% else %} |
|
30 |
<div class="big-msg-info"> |
|
31 |
{% blocktrans %} |
|
32 |
This site doesn't have any payment backend yet. Click on the "New" button in the top |
|
33 |
right of the page to add a first one. |
|
34 |
{% endblocktrans %} |
|
35 |
</div> |
|
36 |
{% endif %} |
|
37 | ||
38 |
{% endblock %} |
combo/apps/lingo/templates/lingo/regie_list.html | ||
---|---|---|
3 | 3 | |
4 | 4 |
{% block appbar %} |
5 | 5 |
<h2>{% trans 'Regies' %}</h2> |
6 |
<span class="actions"> |
|
7 |
<a rel="popup" href="{% url 'lingo-manager-regie-add' %}">{% trans 'New' %}</a> |
|
8 |
</span> |
|
9 | 6 |
{% endblock %} |
10 | 7 | |
11 | 8 |
{% block breadcrumb %} |
combo/apps/lingo/templates/lingo/transaction_list.html | ||
---|---|---|
4 | 4 |
{% block appbar %} |
5 | 5 |
<h2>{% trans 'Transactions' %}</h2> |
6 | 6 |
<span class="actions"> |
7 |
<a href="{% url 'lingo-manager-regie-list' %}">{% trans 'Regies' %}</a>
|
|
7 |
<a href="{% url 'lingo-manager-paymentbackend-list' %}">{% trans 'Payment backends' %}</a>
|
|
8 | 8 |
<a href="{% url 'lingo-manager-transactions-download' %}">{% trans 'download CSV' %}</a> |
9 | 9 |
</span> |
10 | 10 |
{% endblock %} |
combo/apps/lingo/urls.py | ||
---|---|---|
23 | 23 |
RemoveBasketItemApiView, ValidateTransactionApiView, |
24 | 24 |
CancelTransactionApiView, SelfInvoiceView, BasketItemPayView) |
25 | 25 |
from .manager_views import (RegieListView, RegieCreateView, RegieUpdateView, |
26 |
RegieDeleteView, TransactionListView, download_transactions_csv) |
|
26 |
RegieDeleteView, TransactionListView, download_transactions_csv, |
|
27 |
PaymentBackendListView, PaymentBackendCreateView, |
|
28 |
PaymentBackendUpdateView, PaymentBackendView, PaymentBackendDeleteView) |
|
27 | 29 | |
28 | 30 |
lingo_manager_urls = [ |
29 | 31 |
url('^$', TransactionListView.as_view(), name='lingo-manager-homepage'), |
30 | 32 |
url('^transactions/download-csv/$', download_transactions_csv, name='lingo-manager-transactions-download'), |
31 | 33 |
url('^regies/$', RegieListView.as_view(), name='lingo-manager-regie-list'), |
32 |
url('^regies/add/$', RegieCreateView.as_view(), name='lingo-manager-regie-add'), |
|
33 | 34 |
url(r'^regies/(?P<pk>\w+)/edit$', RegieUpdateView.as_view(), |
34 | 35 |
name='lingo-manager-regie-edit'), |
35 | 36 |
url(r'^regies/(?P<pk>\w+)/delete$', RegieDeleteView.as_view(), |
36 | 37 |
name='lingo-manager-regie-delete'), |
38 |
url('^paymentbackends/$', PaymentBackendListView.as_view(), |
|
39 |
name='lingo-manager-paymentbackend-list'), |
|
40 |
url('^paymentbackends/add/$', PaymentBackendCreateView.as_view(), |
|
41 |
name='lingo-manager-paymentbackend-add'), |
|
42 |
url(r'^paymentbackends/(?P<pk>\w+)/$', PaymentBackendView.as_view(), |
|
43 |
name='lingo-manager-paymentbackend'), |
|
44 |
url(r'^paymentbackends/(?P<pk>\w+)/edit$', PaymentBackendUpdateView.as_view(), |
|
45 |
name='lingo-manager-paymentbackend-edit'), |
|
46 |
url(r'^paymentbackends/(?P<pk>\w+)/delete$', PaymentBackendDeleteView.as_view(), |
|
47 |
name='lingo-manager-paymentbackend-delete'), |
|
48 |
url(r'^paymentbackends/(?P<pk>\w+)/add-regie$', |
|
49 |
RegieCreateView.as_view(), name='lingo-manager-regie-add'), |
|
37 | 50 |
] |
38 | 51 | |
39 | 52 |
urlpatterns = [ |
tests/test_lingo_cells.py | ||
---|---|---|
10 | 10 | |
11 | 11 |
from combo.data.models import Page |
12 | 12 |
from combo.apps.lingo.models import Regie, BasketItem, Transaction |
13 |
from combo.apps.lingo.models import (LingoBasketCell, |
|
13 |
from combo.apps.lingo.models import (LingoBasketCell, PaymentBackend,
|
|
14 | 14 |
LingoRecentTransactionsCell, LingoBasketLinkCell, TipiPaymentFormCell) |
15 | 15 | |
16 | 16 |
pytestmark = pytest.mark.django_db |
... | ... | |
25 | 25 | |
26 | 26 |
@pytest.fixture |
27 | 27 |
def regie(): |
28 |
try: |
|
29 |
pb = PaymentBackend.objects.get(slug='test1') |
|
30 |
except PaymentBackend.DoesNotExist: |
|
31 |
pb = PaymentBackend.objects.create( |
|
32 |
label='test1', slug='test1') |
|
28 | 33 |
try: |
29 | 34 |
regie = Regie.objects.get(slug='test') |
30 | 35 |
except Regie.DoesNotExist: |
... | ... | |
32 | 37 |
regie.label = 'Test' |
33 | 38 |
regie.slug = 'test' |
34 | 39 |
regie.description = 'test' |
40 |
regie.payment_backend = pb |
|
35 | 41 |
regie.save() |
36 | 42 |
return regie |
37 | 43 |
tests/test_lingo_manager.py | ||
---|---|---|
10 | 10 | |
11 | 11 |
import eopayment |
12 | 12 |
from combo.data.models import Page |
13 |
from combo.apps.lingo.models import Regie, BasketItem, Transaction, ActiveItems, TipiPaymentFormCell |
|
13 |
from combo.apps.lingo.models import (Regie, BasketItem, Transaction, ActiveItems, |
|
14 |
TipiPaymentFormCell, PaymentBackend) |
|
14 | 15 |
from decimal import Decimal |
15 | 16 | |
16 | 17 |
pytestmark = pytest.mark.django_db |
17 | 18 | |
18 | 19 | |
20 |
@pytest.fixture |
|
21 |
def payment_backend(): |
|
22 |
return PaymentBackend.objects.create( |
|
23 |
label='test1', slug='test1', service='dummy', service_options={'siret': '1234'}) |
|
24 | ||
25 | ||
19 | 26 |
def login(app, username='admin', password='admin'): |
20 | 27 |
login_page = app.get('/login/') |
21 | 28 |
login_form = login_page.forms[0] |
... | ... | |
30 | 37 |
resp = app.get('/manage/', status=200) |
31 | 38 |
assert '/manage/lingo/' in resp.text |
32 | 39 | |
33 |
def test_add_regie(app, admin_user): |
|
40 |
def test_add_regie(app, admin_user, payment_backend):
|
|
34 | 41 |
Regie.objects.all().delete() |
35 | 42 |
app = login(app) |
36 |
resp = app.get('/manage/lingo/regies/', status=200)
|
|
37 |
resp = resp.click('New') |
|
43 |
resp = app.get('/manage/lingo/paymentbackends/%s/' % payment_backend.pk, status=200)
|
|
44 |
resp = resp.click('New Regie')
|
|
38 | 45 |
resp.forms[0]['label'] = 'Test' |
39 | 46 |
resp.forms[0]['slug'] = 'test' |
40 | 47 |
resp.forms[0]['description'] = 'description' |
41 |
resp.forms[0]['service'] = 'dummy'
|
|
48 |
resp.forms[0]['payment_backend'] = payment_backend.pk
|
|
42 | 49 |
assert resp.form['is_default'].checked is True |
43 | 50 |
resp = resp.forms[0].submit() |
44 |
assert resp.location.endswith('/manage/lingo/regies/')
|
|
51 |
assert resp.location.endswith('/manage/lingo/paymentbackends/%s/' % payment_backend.pk)
|
|
45 | 52 |
assert Regie.objects.count() == 1 |
46 | 53 |
regie = Regie.objects.all()[0] |
47 | 54 |
assert regie.label == 'Test' |
48 | 55 |
assert regie.is_default is True |
49 | 56 | |
50 |
def test_edit_regie(app, admin_user): |
|
51 |
test_add_regie(app, admin_user) |
|
57 |
def test_edit_regie(app, admin_user, payment_backend):
|
|
58 |
test_add_regie(app, admin_user, payment_backend)
|
|
52 | 59 |
app = login(app) |
53 | 60 |
resp = app.get('/manage/lingo/regies/', status=200) |
54 | 61 |
resp = resp.click('Test') |
55 | 62 |
resp.forms[0]['description'] = 'other description' |
56 | 63 |
resp = resp.forms[0].submit() |
57 |
assert resp.location.endswith('/manage/lingo/regies/') |
|
58 | 64 |
assert Regie.objects.count() == 1 |
59 | 65 |
regie = Regie.objects.all()[0] |
60 | 66 |
assert regie.description == 'other description' |
61 | 67 | |
62 |
def test_delete_regie(app, admin_user): |
|
63 |
test_add_regie(app, admin_user) |
|
68 |
def test_delete_regie(app, admin_user, payment_backend):
|
|
69 |
test_add_regie(app, admin_user, payment_backend)
|
|
64 | 70 |
app = login(app) |
65 | 71 |
resp = app.get('/manage/lingo/regies/', status=200) |
66 | 72 |
resp = resp.click('remove') |
67 | 73 |
assert 'Are you sure you want to delete this?' in resp.text |
68 | 74 |
resp = resp.forms[0].submit() |
69 |
assert resp.location.endswith('/manage/lingo/regies/') |
|
70 | 75 |
assert Regie.objects.count() == 0 |
71 | 76 | |
72 |
def test_add_second_regie(app, admin_user): |
|
73 |
test_add_regie(app, admin_user) |
|
77 |
def test_add_second_regie(app, admin_user, payment_backend):
|
|
78 |
test_add_regie(app, admin_user, payment_backend)
|
|
74 | 79 |
regie = Regie.objects.all()[0] |
75 | 80 | |
76 | 81 |
app = login(app) |
77 |
resp = app.get('/manage/lingo/regies/', status=200)
|
|
78 |
resp = resp.click('New') |
|
82 |
resp = app.get('/manage/lingo/paymentbackends/%s/' % payment_backend.pk, status=200)
|
|
83 |
resp = resp.click('New Regie')
|
|
79 | 84 |
resp.forms[0]['label'] = 'Test2' |
80 | 85 |
resp.forms[0]['slug'] = 'test2' |
81 | 86 |
resp.forms[0]['description'] = 'description' |
82 |
resp.forms[0]['service'] = 'dummy'
|
|
87 |
resp.forms[0]['payment_backend'] = payment_backend.pk
|
|
83 | 88 |
assert resp.form['is_default'].checked is False |
84 | 89 |
resp = resp.forms[0].submit() |
85 |
assert resp.location.endswith('/manage/lingo/regies/') |
|
86 | 90 | |
87 | 91 |
assert Regie.objects.count() == 2 |
88 | 92 |
assert Regie.objects.get(id=regie.id).is_default is True |
89 | 93 |
assert Regie.objects.exclude(id=regie.id)[0].is_default is False |
90 | 94 | |
91 |
def test_download_transaction(app, admin_user): |
|
92 |
test_add_regie(app, admin_user) |
|
95 |
def test_download_transaction(app, admin_user, payment_backend):
|
|
96 |
test_add_regie(app, admin_user, payment_backend)
|
|
93 | 97 |
regie = Regie.objects.filter(slug='test')[0] |
94 | 98 |
user = User.objects.create_user('dimebag', 'dime@bag.pan', 'pwd') |
95 | 99 |
user.last_name = u'Darëll' |
... | ... | |
164 | 168 |
assert resp.text.count('ROLDEB:') == 1 |
165 | 169 |
assert resp.text.count('ROLDET:') == 1 |
166 | 170 | |
167 |
def test_configure_invoices_cell(app, admin_user): |
|
171 |
def test_configure_invoices_cell(app, admin_user, payment_backend):
|
|
168 | 172 |
page = Page(title='xxx', slug='test', template_name='standard') |
169 | 173 |
page.save() |
170 | 174 | |
... | ... | |
179 | 183 |
regie.label = 'Test' |
180 | 184 |
regie.slug = 'test' |
181 | 185 |
regie.description = 'test' |
186 |
regie.payment_backend = payment_backend |
|
182 | 187 |
regie.save() |
183 | 188 | |
184 | 189 |
resp = app.get('/manage/pages/%s/' % page.id, status=200) |
... | ... | |
202 | 207 |
regie2.slug = 'test2' |
203 | 208 |
regie2.description = 'test2' |
204 | 209 |
regie2.webservice_url = 'http://example.net/' |
210 |
regie2.payment_backend = payment_backend |
|
205 | 211 |
regie2.save() |
206 | 212 | |
207 | 213 |
resp = app.get('/manage/pages/%s/' % page.id, status=200) |
... | ... | |
215 | 221 |
resp.form['clingo_activeitems-%s-regie' % cell.id].value = 'test2' |
216 | 222 |
resp.form.submit() |
217 | 223 |
assert ActiveItems.objects.get(id=cell.id).regie == regie2.slug |
224 | ||
225 | ||
226 |
def test_payment_backend_list(app, admin_user): |
|
227 |
PaymentBackend.objects.create(label='label1', slug='slug1', description='description1') |
|
228 |
PaymentBackend.objects.create(label='label2', slug='slug2', description='description2') |
|
229 |
app = login(app) |
|
230 |
resp = app.get('/manage/lingo/paymentbackends/', status=200) |
|
231 | ||
232 |
assert '/manage/lingo/paymentbackends/add' in resp.text |
|
233 |
assert 'label1' in resp.content |
|
234 |
assert 'label2' in resp.content |
|
235 | ||
236 |
for pb in PaymentBackend.objects.all(): |
|
237 |
assert '/manage/lingo/paymentbackends/%s' % pb.pk in resp.text |
|
238 |
assert '/manage/lingo/paymentbackends/%s/delete' % pb.pk in resp.text |
|
239 | ||
240 | ||
241 |
def test_view_payment_backend(app, admin_user): |
|
242 |
pb = PaymentBackend.objects.create(label='label1', slug='slug1', description='description1') |
|
243 |
Regie.objects.create( |
|
244 |
label='regie-label1', slug='regie-slug1', description='regie-description1', |
|
245 |
payment_backend=pb) |
|
246 |
Regie.objects.create( |
|
247 |
label='regie-label2', slug='regie-slug2', description='regie-description2', |
|
248 |
payment_backend=pb) |
|
249 | ||
250 |
app = login(app) |
|
251 |
resp = app.get('/manage/lingo/paymentbackends/%s/' % pb.pk, status=200) |
|
252 | ||
253 |
assert '/manage/lingo/paymentbackends/%s/add-regie' % pb.pk in resp.text |
|
254 |
assert '/manage/lingo/paymentbackends/%s/edit' % pb.pk in resp.text |
|
255 |
assert '/manage/lingo/paymentbackends/%s/delete' % pb.pk in resp.text |
|
256 | ||
257 |
for rg in pb.regie_set.all(): |
|
258 |
assert rg.slug in resp.text |
|
259 |
assert '/manage/lingo/regies/%s/edit' % rg.pk in resp.text |
|
260 |
assert '/manage/lingo/regies/%s/delete' % rg.pk in resp.text |
|
261 | ||
262 | ||
263 |
def test_add_payment_backend(app, admin_user): |
|
264 |
assert not PaymentBackend.objects.count() |
|
265 |
app = login(app) |
|
266 |
resp = app.get('/manage/lingo/paymentbackends/add/', status=200) |
|
267 |
resp.forms[0]['label'] = 'Test' |
|
268 |
resp.forms[0]['slug'] = 'test-add' |
|
269 |
resp.forms[0]['description'] = 'description' |
|
270 |
resp.forms[0]['service'] = 'dummy' |
|
271 |
resp.forms[0]['service_options'] = '{"siret": "1234"}' |
|
272 |
resp = resp.forms[0].submit() |
|
273 | ||
274 |
assert PaymentBackend.objects.count() == 1 |
|
275 |
pb = PaymentBackend.objects.get(slug='test-add') |
|
276 |
assert pb.label == 'Test' |
|
277 |
assert pb.description == 'description' |
|
278 |
assert pb.service_options == {'siret': '1234'} |
|
279 | ||
280 |
assert resp.location.endswith('/manage/lingo/paymentbackends/%s/' % pb.pk) |
|
281 | ||
282 | ||
283 |
def test_edit_payment_backend(app, admin_user): |
|
284 |
pb = PaymentBackend.objects.create(label='label1', slug='slug1', description='description1') |
|
285 |
app = login(app) |
|
286 |
resp = app.get('/manage/lingo/paymentbackends/%s/edit' % pb.pk, status=200) |
|
287 | ||
288 |
resp.forms[0]['label'] = 'label1-modified' |
|
289 |
resp.forms[0]['slug'] = 'slug1' |
|
290 |
resp.forms[0]['description'] = 'description1' |
|
291 |
resp.forms[0]['service'] = 'dummy' |
|
292 |
resp.forms[0]['service_options'] = '{"siret": "1234"}' |
|
293 |
resp = resp.forms[0].submit() |
|
294 | ||
295 |
assert resp.location.endswith('/manage/lingo/paymentbackends/%s/' % pb.pk) |
|
296 |
pb = PaymentBackend.objects.get(slug='slug1') |
|
297 |
assert pb.label == 'label1-modified' |
tests/test_notification.py | ||
---|---|---|
14 | 14 | |
15 | 15 |
from combo.data.models import Page |
16 | 16 |
from combo.apps.notifications.models import Notification, NotificationsCell |
17 |
from combo.apps.lingo.models import Regie, ActiveItems |
|
17 |
from combo.apps.lingo.models import Regie, ActiveItems, PaymentBackend
|
|
18 | 18 | |
19 | 19 |
pytestmark = pytest.mark.django_db |
20 | 20 | |
... | ... | |
28 | 28 | |
29 | 29 |
@pytest.fixture |
30 | 30 |
def regie(): |
31 |
try: |
|
32 |
pb = PaymentBackend.objects.get(slug='test1') |
|
33 |
except PaymentBackend.DoesNotExist: |
|
34 |
pb = PaymentBackend.objects.create( |
|
35 |
label='test1', slug='test1', service='dummy') |
|
31 | 36 |
try: |
32 | 37 |
regie = Regie.objects.get(slug='remote') |
33 | 38 |
except Regie.DoesNotExist: |
... | ... | |
36 | 41 |
regie.slug = 'remote' |
37 | 42 |
regie.description = 'remote' |
38 | 43 |
regie.payment_min_amount = Decimal(2.0) |
39 |
regie.service = 'dummy'
|
|
44 |
regie.payment_backend = pb
|
|
40 | 45 |
regie.save() |
41 | 46 |
return regie |
42 | 47 | |
43 |
- |