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

tests.integration.services.shop.order.actions.test_create_tickets   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 73
Duplicated Lines 42.47 %

Importance

Changes 0
Metric Value
eloc 45
dl 31
loc 73
rs 10
c 0
b 0
f 0
wmc 6

4 Functions

Rating   Name   Duplication   Size   Complexity  
A ticket_quantity() 0 3 1
A order_action() 0 9 1
A test_create_tickets() 31 31 3
A order() 0 8 1

How to fix   Duplicated Code   

Duplicated Code

Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.

Common duplication problems, and corresponding solutions are:

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
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 4
19
20
21
@pytest.fixture
22
def order(article, ticket_quantity, storefront, orderer):
23
    articles_with_quantity = [(article, ticket_quantity)]
24
    order = place_order(storefront.id, orderer, articles_with_quantity)
25
26
    yield order
27
28
    order_service.delete_order(order.id)
29
30
31
@pytest.fixture
32
def order_action(article, ticket_category):
33
    action_registry_service.register_tickets_creation(
34
        article.item_number, ticket_category.id
35
    )
36
37
    yield
38
39
    action_service.delete_actions(article.item_number)
40
41
42 View Code Duplication
def test_create_tickets(
1 ignored issue
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
43
    admin_app,
44
    article,
45
    ticket_category,
46
    ticket_quantity,
47
    admin_user,
48
    orderer,
49
    order,
50
    order_action,
51
):
52
    tickets_before_paid = get_tickets_for_order(order)
53
    assert len(tickets_before_paid) == 0
54
55
    mark_order_as_paid(order.id, admin_user.id)
56
57
    tickets_after_paid = get_tickets_for_order(order)
58
    assert len(tickets_after_paid) == ticket_quantity
59
60
    for ticket in tickets_after_paid:
61
        assert ticket.owned_by_id == orderer.user_id
62
        assert ticket.used_by_id == orderer.user_id
63
64
    events = order_event_service.get_events_for_order(order.id)
65
    ticket_created_events = {
66
        event for event in events if event.event_type == 'ticket-created'
67
    }
68
    assert len(ticket_created_events) == ticket_quantity
69
70
    # Clean up.
71
    for ticket in tickets_after_paid:
72
        ticket_service.delete_ticket(ticket.id)
73