Passed
Push — master ( b26c53...97b1b2 )
by Jochen
02:16
created

shop/order/email/test_email_on_order_canceled.py (1 issue)

1
"""
2
:Copyright: 2006-2019 Jochen Kupperschmidt
3
:License: Modified BSD, see LICENSE for details.
4
"""
5
6
from datetime import datetime
7
from unittest.mock import patch
8
9
from byceps.services.email import service as email_service
10
from byceps.services.shop.order.email import service as order_email_service
11
from byceps.services.shop.order import service as order_service
12
13
from tests.helpers import create_brand, create_party, create_user_with_detail, \
14
    current_party_set, current_user_set
15
16
from .base import OrderEmailTestBase
17
18
19
class EmailOnOrderCanceledTest(OrderEmailTestBase):
1 ignored issue
show
This code seems to be duplicated in your project.
Loading history...
20
21
    def setUp(self):
22
        super().setUp()
23
24
        brand = create_brand()
25
        email_service.set_sender_address_for_brand(brand.id,
26
                                                   '[email protected]')
27
28
        self.party = create_party(brand.id)
29
30
        self.shop = self.create_shop(self.party.id)
31
        self.create_order_number_sequence(self.shop.id, 'AC-14-B', value=16)
32
33
        self.create_email_footer_snippet()
34
35
        self.user = create_user_with_detail('Versager')
36
37
        self.order_id = self.place_order(self.user)
38
39
        reason = 'Du hast nicht rechtzeitig bezahlt.'
40
        order_service.cancel_order(self.order_id, self.admin.id, reason)
41
42
    def create_email_footer_snippet(self):
43
        self.create_shop_fragment(self.shop.id, 'email_footer', '''
44
Für Fragen stehen wir gerne zur Verfügung.
45
46
Viele Grüße,
47
das Team der Acme Entertainment Convention
48
49
-- 
50
Acme Entertainment Convention
51
52
E-Mail: [email protected]
53
''')
54
55
    @patch('byceps.email.send')
56
    def test_email_on_order_canceled(self, send_email_mock):
57
        with \
58
                current_party_set(self.app, self.party), \
59
                current_user_set(self.app, self.user), \
60
                self.app.app_context():
61
            order_email_service \
62
                .send_email_for_canceled_order_to_orderer(self.order_id)
63
64
        expected_sender = '[email protected]'
65
        expected_recipients = [self.user.email_address]
66
        expected_subject = '\u274c Deine Bestellung (AC-14-B00017) wurde storniert.'
67
        expected_body = '''
68
Hallo Versager,
69
70
deine Bestellung mit der Nummer AC-14-B00017 vom 06.11.2014 wurde von uns aus folgendem Grund storniert:
71
72
Du hast nicht rechtzeitig bezahlt.
73
74
Für Fragen stehen wir gerne zur Verfügung.
75
76
Viele Grüße,
77
das Team der Acme Entertainment Convention
78
79
-- 
80
Acme Entertainment Convention
81
82
E-Mail: [email protected]
83
        '''.strip()
84
85
        send_email_mock.assert_called_once_with(
86
            expected_sender,
87
            expected_recipients,
88
            expected_subject,
89
            expected_body)
90
91
    # helpers
92
93
    def place_order(self, orderer):
94
        created_at = datetime(2014, 11, 5, 23, 32, 9)
95
96
        return self.place_order_with_items(self.shop.id, orderer, created_at,
97
                                           [])
98