Completed
Push — main ( cd54d0...3ec8de )
by Jochen
03:28
created

bundle_quantity()   A

Complexity

Conditions 1

Size

Total Lines 3
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 3
nop 0
dl 0
loc 3
rs 10
c 0
b 0
f 0
1
"""
2
:Copyright: 2006-2020 Jochen Kupperschmidt
3
:License: Modified BSD, see LICENSE for details.
4
"""
5
6
import pytest
7
8
from byceps.services.shop.order import action_service, action_registry_service
9
from byceps.services.shop.order import event_service as order_event_service
10
from byceps.services.shop.order import service as order_service
11
from byceps.services.ticketing import ticket_service, ticket_bundle_service
12
13
from .helpers import get_tickets_for_order, mark_order_as_paid, place_order
14
15
16
@pytest.fixture(scope='module')
17
def ticket_quantity():
18
    return 5
19
20
21
@pytest.fixture(scope='module')
22
def bundle_quantity():
23
    return 2
24
25
26
@pytest.fixture
27
def order(article, bundle_quantity, storefront, orderer):
28
    articles_with_quantity = [(article, bundle_quantity)]
29
    order = place_order(storefront.id, orderer, articles_with_quantity)
30
31
    yield order
32
33
    order_service.delete_order(order.id)
34
35
36
@pytest.fixture
37
def order_action(article, ticket_category, ticket_quantity):
38
    action_registry_service.register_ticket_bundles_creation(
39
        article.item_number, ticket_category.id, ticket_quantity
40
    )
41
42
    yield
43
44
    action_service.delete_actions(article.item_number)
45
46
47 View Code Duplication
def test_create_ticket_bundles(
48
    admin_app,
49
    article,
50
    ticket_category,
51
    ticket_quantity,
52
    bundle_quantity,
53
    admin_user,
54
    orderer,
55
    order,
56
    order_action,
57
):
58
    tickets_before_paid = get_tickets_for_order(order)
59
    assert len(tickets_before_paid) == 0
60
61
    mark_order_as_paid(order.id, admin_user.id)
62
63
    tickets_after_paid = get_tickets_for_order(order)
64
    assert len(tickets_after_paid) == ticket_quantity * bundle_quantity
65
66
    for ticket in tickets_after_paid:
67
        assert ticket.owned_by_id == orderer.user_id
68
        assert ticket.used_by_id == orderer.user_id
69
70
    events = order_event_service.get_events_for_order(order.id)
71
    ticket_bundle_created_events = {
72
        event
73
        for event in events
74
        if event.event_type == 'ticket-bundle-created'
75
    }
76
    assert len(ticket_bundle_created_events) == bundle_quantity
77
78
    tear_down_bundles(tickets_after_paid)
79
80
81
# helpers
82
83
84
def tear_down_bundles(tickets):
85
    bundle_ids = {t.bundle_id for t in tickets}
86
87
    for ticket in tickets:
88
        ticket_service.delete_ticket(ticket.id)
89
90
    for bundle_id in bundle_ids:
91
        ticket_bundle_service.delete_bundle(bundle_id)
92