12 |
12 |
pytestmark = pytest.mark.django_db
|
13 |
13 |
|
14 |
14 |
|
15 |
|
@pytest.fixture
|
16 |
|
def agenda_with_restrictions(manager_user):
|
17 |
|
agenda = Agenda(label='Foo Bar')
|
18 |
|
agenda.view_role = manager_user.groups.all()[0]
|
19 |
|
agenda.save()
|
20 |
|
return agenda
|
21 |
|
|
22 |
|
|
23 |
15 |
def test_export_site(settings, freezer, app, admin_user):
|
24 |
16 |
freezer.move_to('2020-06-15')
|
25 |
17 |
login(app)
|
... | ... | |
56 |
48 |
assert 'pricing_models' not in site_json
|
57 |
49 |
|
58 |
50 |
|
59 |
|
@pytest.mark.xfail(reason='/manage/ limited to admin')
|
60 |
|
def test_list_pricings_as_manager(app, manager_user, agenda_with_restrictions):
|
61 |
|
app = login(app, username='manager', password='manager')
|
62 |
|
app.get('/manage/pricing/', status=403)
|
63 |
|
|
64 |
|
resp = app.get('/manage/')
|
65 |
|
assert 'Pricing' not in resp.text
|
66 |
|
|
67 |
|
|
68 |
51 |
def test_add_pricing(settings, app, admin_user):
|
69 |
52 |
app = login(app)
|
70 |
53 |
resp = app.get('/manage/')
|
... | ... | |
78 |
61 |
assert pricing.slug == 'pricing-model-for-lunch'
|
79 |
62 |
|
80 |
63 |
|
81 |
|
@pytest.mark.xfail(reason='/manage/ limited to admin')
|
82 |
|
def test_add_pricing_as_manager(app, manager_user):
|
83 |
|
app = login(app, username='manager', password='manager')
|
84 |
|
app.get('/manage/pricing/add/', status=403)
|
85 |
|
|
86 |
|
|
87 |
64 |
def test_detail_pricing(app, admin_user):
|
88 |
65 |
pricing = Pricing.objects.create(label='Model')
|
89 |
66 |
|
... | ... | |
94 |
71 |
assert '/manage/pricing/%s/delete/' % pricing.pk in resp
|
95 |
72 |
|
96 |
73 |
|
97 |
|
@pytest.mark.xfail(reason='/manage/ limited to admin')
|
98 |
|
def test_detail_pricing_as_manager(app, manager_user):
|
99 |
|
pricing = Pricing.objects.create(label='Model')
|
100 |
|
|
101 |
|
app = login(app, username='manager', password='manager')
|
102 |
|
app.get('/manage/pricing/%s/' % pricing.pk, status=403)
|
103 |
|
|
104 |
|
|
105 |
74 |
def test_edit_pricing(app, admin_user):
|
106 |
75 |
pricing = Pricing.objects.create(label='Model 1')
|
107 |
76 |
pricing2 = Pricing.objects.create(label='Model 2')
|
... | ... | |
122 |
91 |
assert pricing.slug == 'foo-bar'
|
123 |
92 |
|
124 |
93 |
|
125 |
|
@pytest.mark.xfail(reason='/manage/ limited to admin')
|
126 |
|
def test_edit_pricing_as_manager(app, manager_user):
|
127 |
|
pricing = Pricing.objects.create(label='Model')
|
128 |
|
|
129 |
|
app = login(app, username='manager', password='manager')
|
130 |
|
app.get('/manage/pricing/%s/edit/' % pricing.pk, status=403)
|
131 |
|
|
132 |
|
|
133 |
94 |
def test_delete_pricing(app, admin_user):
|
134 |
95 |
pricing = Pricing.objects.create(label='Model')
|
135 |
96 |
|
... | ... | |
141 |
102 |
assert Pricing.objects.exists() is False
|
142 |
103 |
|
143 |
104 |
|
144 |
|
@pytest.mark.xfail(reason='/manage/ limited to admin')
|
145 |
|
def test_delete_pricing_as_manager(app, manager_user):
|
146 |
|
pricing = Pricing.objects.create(label='Model')
|
147 |
|
|
148 |
|
app = login(app, username='manager', password='manager')
|
149 |
|
app.get('/manage/pricing/%s/delete/' % pricing.pk, status=403)
|
150 |
|
|
151 |
|
|
152 |
105 |
def test_duplicate_pricing(app, admin_user):
|
153 |
106 |
pricing = Pricing.objects.create(label='Model')
|
154 |
107 |
assert Pricing.objects.count() == 1
|
... | ... | |
172 |
125 |
assert 'hop' in resp.text
|
173 |
126 |
|
174 |
127 |
|
175 |
|
@pytest.mark.xfail(reason='/manage/ limited to admin')
|
176 |
|
def test_duplicate_pricing_as_manager(app, manager_user):
|
177 |
|
pricing = Pricing.objects.create(label='Model')
|
178 |
|
|
179 |
|
app = login(app, username='manager', password='manager')
|
180 |
|
app.get('/manage/pricing/%s/duplicate/' % pricing.pk, status=403)
|
181 |
|
|
182 |
|
|
183 |
128 |
@pytest.mark.freeze_time('2021-07-08')
|
184 |
129 |
def test_import_pricing(app, admin_user):
|
185 |
130 |
pricing = Pricing.objects.create(label='Model')
|
... | ... | |
291 |
236 |
assert '<i>foo</i>' in resp
|
292 |
237 |
|
293 |
238 |
|
294 |
|
@pytest.mark.xfail(reason='/manage/ limited to admin')
|
295 |
|
def test_pricing_edit_extra_variables_as_manager(app, manager_user):
|
296 |
|
pricing = Pricing.objects.create(label='Model')
|
297 |
|
|
298 |
|
app = login(app, username='manager', password='manager')
|
299 |
|
app.get('/manage/pricing/%s/variable/' % pricing.pk, status=403)
|
300 |
|
|
301 |
|
|
302 |
239 |
def test_pricing_add_category(app, admin_user):
|
303 |
240 |
pricing = Pricing.objects.create(label='Model')
|
304 |
241 |
category1 = CriteriaCategory.objects.create(label='Cat 1')
|
... | ... | |
356 |
293 |
app.get('/manage/pricing/%s/category/add/' % pricing.pk, status=404)
|
357 |
294 |
|
358 |
295 |
|
359 |
|
@pytest.mark.xfail(reason='/manage/ limited to admin')
|
360 |
|
def test_pricing_add_category_as_manager(app, manager_user):
|
361 |
|
pricing = Pricing.objects.create(label='Model')
|
362 |
|
|
363 |
|
app = login(app, username='manager', password='manager')
|
364 |
|
app.get('/manage/pricing/%s/category/add/' % pricing.pk, status=403)
|
365 |
|
|
366 |
|
|
367 |
296 |
def test_pricing_edit_category(app, admin_user):
|
368 |
297 |
category1 = CriteriaCategory.objects.create(label='Cat 1')
|
369 |
298 |
criteria1 = Criteria.objects.create(label='Crit 1', category=category1)
|
... | ... | |
406 |
335 |
assert list(pricing.criterias.order_by('pk')) == [criteria1, criteria4, criteria5]
|
407 |
336 |
|
408 |
337 |
|
409 |
|
@pytest.mark.xfail(reason='/manage/ limited to admin')
|
410 |
|
def test_pricing_edit_category_as_manager(app, manager_user):
|
411 |
|
pricing = Pricing.objects.create(label='Model')
|
412 |
|
category = CriteriaCategory.objects.create(label='Cat')
|
413 |
|
pricing.categories.add(category, through_defaults={'order': 1})
|
414 |
|
|
415 |
|
app = login(app, username='manager', password='manager')
|
416 |
|
app.get('/manage/pricing/%s/category/%s/edit/' % (pricing.pk, category.pk), status=403)
|
417 |
|
|
418 |
|
|
419 |
338 |
def test_pricing_delete_category(app, admin_user):
|
420 |
339 |
category1 = CriteriaCategory.objects.create(label='Cat 1')
|
421 |
340 |
criteria1 = Criteria.objects.create(label='Crit 1', category=category1)
|
... | ... | |
441 |
360 |
app.get('/manage/pricing/%s/category/%s/delete/' % (pricing.pk, 0), status=404)
|
442 |
361 |
|
443 |
362 |
|
444 |
|
@pytest.mark.xfail(reason='/manage/ limited to admin')
|
445 |
|
def test_pricing_delete_category_as_manager(app, manager_user):
|
446 |
|
pricing = Pricing.objects.create(label='Model')
|
447 |
|
category = CriteriaCategory.objects.create(label='Cat')
|
448 |
|
|
449 |
|
app = login(app, username='manager', password='manager')
|
450 |
|
app.get('/manage/pricing/%s/category/%s/delete/' % (pricing.pk, category.pk), status=403)
|
451 |
|
|
452 |
|
|
453 |
363 |
def test_pricing_reorder_categories(app, admin_user):
|
454 |
364 |
category1 = CriteriaCategory.objects.create(label='Cat 1')
|
455 |
365 |
category2 = CriteriaCategory.objects.create(label='Cat 2')
|
... | ... | |
515 |
425 |
]
|
516 |
426 |
|
517 |
427 |
|
518 |
|
@pytest.mark.xfail(reason='/manage/ limited to admin')
|
519 |
|
def test_pricing_reorder_categories_as_manager(app, manager_user):
|
520 |
|
pricing = Pricing.objects.create(label='Model')
|
521 |
|
|
522 |
|
app = login(app, username='manager', password='manager')
|
523 |
|
app.get('/manage/pricing/%s/order/' % (pricing.pk), status=403)
|
524 |
|
|
525 |
|
|
526 |
|
@pytest.mark.xfail(reason='/manage/ limited to admin')
|
527 |
|
def test_list_criterias_as_manager(app, manager_user):
|
528 |
|
app = login(app, username='manager', password='manager')
|
529 |
|
app.get('/manage/pricing/criterias/', status=403)
|
530 |
|
|
531 |
|
|
532 |
428 |
def test_add_category(settings, app, admin_user):
|
533 |
429 |
app = login(app)
|
534 |
430 |
resp = app.get('/manage/')
|
... | ... | |
543 |
439 |
assert category.slug == 'qf'
|
544 |
440 |
|
545 |
441 |
|
546 |
|
@pytest.mark.xfail(reason='/manage/ limited to admin')
|
547 |
|
def test_add_category_as_manager(app, manager_user):
|
548 |
|
app = login(app, username='manager', password='manager')
|
549 |
|
app.get('/manage/pricing/criteria/category/add/', status=403)
|
550 |
|
|
551 |
|
|
552 |
442 |
def test_edit_category(app, admin_user):
|
553 |
443 |
category = CriteriaCategory.objects.create(label='QF')
|
554 |
444 |
category2 = CriteriaCategory.objects.create(label='Domicile')
|
... | ... | |
569 |
459 |
assert category.slug == 'baz2'
|
570 |
460 |
|
571 |
461 |
|
572 |
|
@pytest.mark.xfail(reason='/manage/ limited to admin')
|
573 |
|
def test_edit_category_as_manager(app, manager_user):
|
574 |
|
category = CriteriaCategory.objects.create(label='Foo bar')
|
575 |
|
|
576 |
|
app = login(app, username='manager', password='manager')
|
577 |
|
app.get('/manage/pricing/criteria/category/%s/edit/' % category.pk, status=403)
|
578 |
|
|
579 |
|
|
580 |
462 |
def test_delete_category(app, admin_user):
|
581 |
463 |
category = CriteriaCategory.objects.create(label='QF')
|
582 |
464 |
Criteria.objects.create(label='QF 1', category=category)
|
... | ... | |
590 |
472 |
assert Criteria.objects.exists() is False
|
591 |
473 |
|
592 |
474 |
|
593 |
|
@pytest.mark.xfail(reason='/manage/ limited to admin')
|
594 |
|
def test_delete_category_as_manager(app, manager_user):
|
595 |
|
category = CriteriaCategory.objects.create(label='Foo bar')
|
596 |
|
|
597 |
|
app = login(app, username='manager', password='manager')
|
598 |
|
app.get('/manage/pricing/criteria/category/%s/delete/' % category.pk, status=403)
|
599 |
|
|
600 |
|
|
601 |
475 |
def test_add_criteria(app, admin_user):
|
602 |
476 |
category = CriteriaCategory.objects.create(label='QF')
|
603 |
477 |
|
... | ... | |
632 |
506 |
assert criteria.order == 2
|
633 |
507 |
|
634 |
508 |
|
635 |
|
@pytest.mark.xfail(reason='/manage/ limited to admin')
|
636 |
|
def test_add_criteria_as_manager(app, manager_user):
|
637 |
|
category = CriteriaCategory.objects.create(label='Foo bar')
|
638 |
|
|
639 |
|
app = login(app, username='manager', password='manager')
|
640 |
|
app.get('/manage/pricing/criteria/category/%s/add/' % category.pk, status=403)
|
641 |
|
|
642 |
|
|
643 |
509 |
def test_edit_criteria(app, admin_user):
|
644 |
510 |
category = CriteriaCategory.objects.create(label='QF')
|
645 |
511 |
criteria = Criteria.objects.create(label='QF 1', category=category)
|
... | ... | |
667 |
533 |
assert criteria.condition == 'qf <= 1'
|
668 |
534 |
|
669 |
535 |
|
670 |
|
@pytest.mark.xfail(reason='/manage/ limited to admin')
|
671 |
|
def test_edit_criteria_as_manager(app, manager_user):
|
672 |
|
category = CriteriaCategory.objects.create(label='QF')
|
673 |
|
criteria = Criteria.objects.create(label='QF 1', category=category)
|
674 |
|
|
675 |
|
app = login(app, username='manager', password='manager')
|
676 |
|
app.get('/manage/pricing/criteria/category/%s/%s/edit/' % (category.pk, criteria.pk), status=403)
|
677 |
|
|
678 |
|
|
679 |
536 |
def test_delete_criteria(app, admin_user):
|
680 |
537 |
category = CriteriaCategory.objects.create(label='QF')
|
681 |
538 |
criteria = Criteria.objects.create(label='QF 1', category=category)
|
... | ... | |
689 |
546 |
assert Criteria.objects.exists() is False
|
690 |
547 |
|
691 |
548 |
|
692 |
|
@pytest.mark.xfail(reason='/manage/ limited to admin')
|
693 |
|
def test_delete_criteria_as_manager(app, manager_user):
|
694 |
|
category = CriteriaCategory.objects.create(label='QF')
|
695 |
|
criteria = Criteria.objects.create(label='QF 1', category=category)
|
696 |
|
|
697 |
|
app = login(app, username='manager', password='manager')
|
698 |
|
app.get('/manage/pricing/criteria/category/%s/%s/delete/' % (category.pk, criteria.pk), status=403)
|
699 |
|
|
700 |
|
|
701 |
549 |
def test_reorder_criterias(app, admin_user):
|
702 |
550 |
category = CriteriaCategory.objects.create(label='QF')
|
703 |
551 |
criteria1 = Criteria.objects.create(label='QF 1', category=category)
|
... | ... | |
757 |
605 |
assert list(category.criterias.values_list('order', flat=True).order_by('order')) == [1, 2, 3, 4]
|
758 |
606 |
|
759 |
607 |
|
760 |
|
@pytest.mark.xfail(reason='/manage/ limited to admin')
|
761 |
|
def test_reorder_criterias_as_manager(app, manager_user):
|
762 |
|
category = CriteriaCategory.objects.create(label='QF')
|
763 |
|
|
764 |
|
app = login(app, username='manager', password='manager')
|
765 |
|
app.get('/manage/pricing/criteria/category/%s/order/' % (category.pk), status=403)
|
766 |
|
|
767 |
|
|
768 |
608 |
@pytest.mark.freeze_time('2021-07-08')
|
769 |
609 |
def test_import_criteria_category(app, admin_user):
|
770 |
610 |
category = CriteriaCategory.objects.create(label='Foo bar')
|
... | ... | |
883 |
723 |
assert agenda_pricing.date_end == datetime.date(2023, 9, 1)
|
884 |
724 |
|
885 |
725 |
|
886 |
|
@pytest.mark.xfail(reason='/manage/ limited to admin')
|
887 |
|
def test_add_agenda_pricing_as_manager(app, manager_user, agenda_with_restrictions):
|
888 |
|
app = login(app, username='manager', password='manager')
|
889 |
|
app.get('/manage/pricing/agenda/%s/pricing/add/' % agenda_with_restrictions.pk, status=403)
|
890 |
|
|
891 |
|
|
892 |
726 |
def test_edit_agenda_pricing(app, admin_user):
|
893 |
727 |
agenda = Agenda.objects.create(label='Foo Bar')
|
894 |
728 |
pricing = Pricing.objects.create(label='Model')
|
... | ... | |
940 |
774 |
app.get('/manage/pricing/agenda/%s/pricing/%s/edit/' % (agenda.pk, 0), status=404)
|
941 |
775 |
|
942 |
776 |
|
943 |
|
@pytest.mark.xfail(reason='/manage/ limited to admin')
|
944 |
|
def test_edit_agenda_pricing_as_manager(app, manager_user, agenda_with_restrictions):
|
945 |
|
pricing = Pricing.objects.create(label='Model')
|
946 |
|
agenda_pricing = AgendaPricing.objects.create(
|
947 |
|
agenda=agenda_with_restrictions,
|
948 |
|
pricing=pricing,
|
949 |
|
date_start=datetime.date(year=2021, month=9, day=1),
|
950 |
|
date_end=datetime.date(year=2021, month=10, day=1),
|
951 |
|
)
|
952 |
|
app = login(app, username='manager', password='manager')
|
953 |
|
app.get(
|
954 |
|
'/manage/pricing/agenda/%s/pricing/%s/edit/' % (agenda_with_restrictions.pk, agenda_pricing.pk),
|
955 |
|
status=403,
|
956 |
|
)
|
957 |
|
|
958 |
|
resp = app.get('/manage/pricing/agenda/%s/pricing/%s/' % (agenda_with_restrictions.pk, agenda_pricing.pk))
|
959 |
|
assert (
|
960 |
|
'/manage/pricing/agenda/%s/pricing/%s/edit/' % (agenda_with_restrictions.pk, agenda_pricing.pk)
|
961 |
|
not in resp
|
962 |
|
)
|
963 |
|
|
964 |
|
|
965 |
|
@pytest.mark.xfail(reason='/manage/ limited to admin')
|
966 |
|
def test_delete_agenda_pricing_as_manager(app, manager_user, agenda_with_restrictions):
|
967 |
|
pricing = Pricing.objects.create(label='Model')
|
968 |
|
agenda_pricing = AgendaPricing.objects.create(
|
969 |
|
agenda=agenda_with_restrictions,
|
970 |
|
pricing=pricing,
|
971 |
|
date_start=datetime.date(year=2021, month=9, day=1),
|
972 |
|
date_end=datetime.date(year=2021, month=10, day=1),
|
973 |
|
)
|
974 |
|
app = login(app, username='manager', password='manager')
|
975 |
|
app.get(
|
976 |
|
'/manage/pricing/agenda/%s/pricing/%s/delete/' % (agenda_with_restrictions.pk, agenda_pricing.pk),
|
977 |
|
status=403,
|
978 |
|
)
|
979 |
|
|
980 |
|
resp = app.get('/manage/pricing/agenda/%s/pricing/%s/' % (agenda_with_restrictions.pk, agenda_pricing.pk))
|
981 |
|
assert (
|
982 |
|
'/manage/pricing/agenda/%s/pricing/%s/delete/' % (agenda_with_restrictions.pk, agenda_pricing.pk)
|
983 |
|
not in resp
|
984 |
|
)
|
985 |
|
|
986 |
|
|
987 |
777 |
def test_delete_agenda_pricing(app, admin_user):
|
988 |
778 |
agenda = Agenda.objects.create(label='Foo Bar')
|
989 |
779 |
pricing = Pricing.objects.create(label='Model')
|
... | ... | |
1600 |
1390 |
|
1601 |
1391 |
app = login(app)
|
1602 |
1392 |
app.get('/manage/pricing/agenda/%s/pricing/%s/matrix/edit/' % (agenda.pk, agenda_pricing.pk), status=404)
|
1603 |
|
|
1604 |
|
|
1605 |
|
@pytest.mark.xfail(reason='/manage/ limited to admin')
|
1606 |
|
def test_edit_agenda_pricing_matrix_as_manager(app, manager_user, agenda_with_restrictions):
|
1607 |
|
category1 = CriteriaCategory.objects.create(label='Cat 1')
|
1608 |
|
Criteria.objects.create(label='Crit 1-1', slug='crit-1-1', category=category1, order=1)
|
1609 |
|
Criteria.objects.create(label='Crit 1-2', slug='crit-1-2', category=category1, order=2)
|
1610 |
|
category2 = CriteriaCategory.objects.create(label='Cat 2')
|
1611 |
|
category3 = CriteriaCategory.objects.create(label='Cat 3')
|
1612 |
|
pricing = Pricing.objects.create(label='Model')
|
1613 |
|
agenda_pricing = AgendaPricing.objects.create(
|
1614 |
|
agenda=agenda_with_restrictions,
|
1615 |
|
pricing=pricing,
|
1616 |
|
date_start=datetime.date(year=2021, month=9, day=1),
|
1617 |
|
date_end=datetime.date(year=2021, month=10, day=1),
|
1618 |
|
)
|
1619 |
|
pricing.categories.add(category1, through_defaults={'order': 1})
|
1620 |
|
pricing.criterias.set(Criteria.objects.all())
|
1621 |
|
|
1622 |
|
def check():
|
1623 |
|
resp = app.get(
|
1624 |
|
'/manage/pricing/agenda/%s/pricing/%s/' % (agenda_with_restrictions.pk, agenda_pricing.pk)
|
1625 |
|
)
|
1626 |
|
assert (
|
1627 |
|
'/manage/pricing/agenda/%s/pricing/%s/matrix/edit/'
|
1628 |
|
% (agenda_with_restrictions.pk, agenda_pricing.pk)
|
1629 |
|
not in resp
|
1630 |
|
)
|
1631 |
|
for slug in ['crit-1-1', 'crit-1-2']:
|
1632 |
|
assert (
|
1633 |
|
'/manage/pricing/agenda/%s/pricing/%s/matrix/%s/edit/'
|
1634 |
|
% (agenda_with_restrictions.pk, agenda_pricing.pk, slug)
|
1635 |
|
not in resp
|
1636 |
|
)
|
1637 |
|
|
1638 |
|
app = login(app, username='manager', password='manager')
|
1639 |
|
app.get(
|
1640 |
|
'/manage/pricing/agenda/%s/pricing/%s/matrix/edit/'
|
1641 |
|
% (agenda_with_restrictions.pk, agenda_pricing.pk),
|
1642 |
|
status=403,
|
1643 |
|
)
|
1644 |
|
check()
|
1645 |
|
|
1646 |
|
pricing.categories.add(category2, through_defaults={'order': 2})
|
1647 |
|
app.get(
|
1648 |
|
'/manage/pricing/agenda/%s/pricing/%s/matrix/edit/'
|
1649 |
|
% (agenda_with_restrictions.pk, agenda_pricing.pk),
|
1650 |
|
status=403,
|
1651 |
|
)
|
1652 |
|
check()
|
1653 |
|
|
1654 |
|
pricing.categories.add(category3, through_defaults={'order': 3})
|
1655 |
|
app.get(
|
1656 |
|
'/manage/pricing/agenda/%s/pricing/%s/matrix/crit-1-1/edit/'
|
1657 |
|
% (agenda_with_restrictions.pk, agenda_pricing.pk),
|
1658 |
|
status=403,
|
1659 |
|
)
|
1660 |
|
app.get(
|
1661 |
|
'/manage/pricing/agenda/%s/pricing/%s/matrix/crit-1-2/edit/'
|
1662 |
|
% (agenda_with_restrictions.pk, agenda_pricing.pk),
|
1663 |
|
status=403,
|
1664 |
|
)
|
1665 |
|
check()
|
1666 |
|
-
|