Projet

Général

Profil

0003-lingo-make-manager-views-compliant-with-PaymentBacke.patch

Emmanuel Cazenave, 09 mai 2019 17:52

Télécharger (23,8 ko)

Voir les différences:

Subject: [PATCH 3/3] lingo: make manager views compliant with PaymentBackend
 (#32441)

 combo/apps/lingo/forms.py                     |  12 ++
 combo/apps/lingo/manager_views.py             |  82 ++++++++++--
 .../lingo/templates/lingo/paymentbackend.html |  44 +++++++
 .../lingo/paymentbackend_confirm_delete.html  |  17 +++
 .../templates/lingo/paymentbackend_form.html  |  22 ++++
 .../templates/lingo/paymentbackend_list.html  |  38 ++++++
 .../lingo/templates/lingo/regie_list.html     |   3 -
 .../templates/lingo/transaction_list.html     |   2 +-
 combo/apps/lingo/urls.py                      |  18 ++-
 tests/test_lingo_cells.py                     |   8 +-
 tests/test_lingo_manager.py                   | 122 +++++++++++++++---
 tests/test_notification.py                    |   9 +-
 12 files changed, 334 insertions(+), 43 deletions(-)
 create mode 100644 combo/apps/lingo/forms.py
 create mode 100644 combo/apps/lingo/templates/lingo/paymentbackend.html
 create mode 100644 combo/apps/lingo/templates/lingo/paymentbackend_confirm_delete.html
 create mode 100644 combo/apps/lingo/templates/lingo/paymentbackend_form.html
 create mode 100644 combo/apps/lingo/templates/lingo/paymentbackend_list.html
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'),
34
#    url('^regies/add/$', RegieCreateView.as_view(), name='lingo-manager-regie-add'),
33 35
    url(r'^regies/(?P<pk>\w+)/edit$', RegieUpdateView.as_view(),
34 36
        name='lingo-manager-regie-edit'),
35 37
    url(r'^regies/(?P<pk>\w+)/delete$', RegieDeleteView.as_view(),
36 38
        name='lingo-manager-regie-delete'),
39
    url('^paymentbackends/$', PaymentBackendListView.as_view(),
40
        name='lingo-manager-paymentbackend-list'),
41
    url('^paymentbackends/add/$', PaymentBackendCreateView.as_view(),
42
        name='lingo-manager-paymentbackend-add'),
43
    url(r'^paymentbackends/(?P<pk>\w+)/$', PaymentBackendView.as_view(),
44
        name='lingo-manager-paymentbackend'),
45
    url(r'^paymentbackends/(?P<pk>\w+)/edit$', PaymentBackendUpdateView.as_view(),
46
        name='lingo-manager-paymentbackend-edit'),
47
    url(r'^paymentbackends/(?P<pk>\w+)/delete$', PaymentBackendDeleteView.as_view(),
48
        name='lingo-manager-paymentbackend-delete'),
49
    url(r'^paymentbackends/(?P<pk>\w+)/add-regie$',
50
        RegieCreateView.as_view(), name='lingo-manager-regie-add'),
37 51
]
38 52

  
39 53
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
-