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

shop/order/email/test_email_on_order_paid.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
from byceps.services.shop.order.transfer.models import PaymentMethod
13
14
from tests.helpers import create_brand, create_party, create_user_with_detail, \
15
    current_party_set, current_user_set
16
17
from .base import OrderEmailTestBase
18
19
20
class EmailOnOrderPaidTest(OrderEmailTestBase):
1 ignored issue
show
This code seems to be duplicated in your project.
Loading history...
21
22
    def setUp(self):
23
        super().setUp()
24
25
        brand = create_brand()
26
        email_service.set_sender_address_for_brand(brand.id,
27
                                                   '[email protected]')
28
29
        self.party = create_party(brand.id)
30
31
        self.shop = self.create_shop(self.party.id)
32
        self.create_order_number_sequence(self.shop.id, 'AC-14-B', value=21)
33
34
        self.create_email_footer_snippet()
35
36
        self.user = create_user_with_detail('Vorbild')
37
38
        self.order_id = self.place_order(self.user)
39
40
        order_service.mark_order_as_paid(self.order_id,
41
                                         PaymentMethod.bank_transfer,
42
                                         self.admin.id)
43
44
    def create_email_footer_snippet(self):
45
        self.create_shop_fragment(self.shop.id, 'email_footer', '''
46
Für Fragen stehen wir gerne zur Verfügung.
47
48
Viele Grüße,
49
das Team der Acme Entertainment Convention
50
51
-- 
52
Acme Entertainment Convention
53
54
E-Mail: [email protected]
55
''')
56
57
    @patch('byceps.email.send')
58
    def test_email_on_order_paid(self, send_email_mock):
59
        with \
60
                current_party_set(self.app, self.party), \
61
                current_user_set(self.app, self.user), \
62
                self.app.app_context():
63
            order_email_service \
64
                .send_email_for_paid_order_to_orderer(self.order_id)
65
66
        expected_sender = '[email protected]'
67
        expected_recipients = [self.user.email_address]
68
        expected_subject = '\u2705 Deine Bestellung (AC-14-B00022) ist bezahlt worden.'
69
        expected_body = '''
70
Hallo Vorbild,
71
72
vielen Dank für deine Bestellung mit der Nummer AC-14-B00022 am 23.09.2014 über unsere Website.
73
74
Wir haben deine Zahlung erhalten und deine Bestellung als „bezahlt“ erfasst.
75
76
Für Fragen stehen wir gerne zur Verfügung.
77
78
Viele Grüße,
79
das Team der Acme Entertainment Convention
80
81
-- 
82
Acme Entertainment Convention
83
84
E-Mail: [email protected]
85
        '''.strip()
86
87
        send_email_mock.assert_called_once_with(
88
            expected_sender,
89
            expected_recipients,
90
            expected_subject,
91
            expected_body)
92
93
    # helpers
94
95
    def place_order(self, orderer):
96
        created_at = datetime(2014, 9, 23, 18, 40, 53)
97
98
        return self.place_order_with_items(self.shop.id, orderer, created_at,
99
                                           [])
100