[#927] Rename parameter for better readability
[pixelated-user-agent.git] / service / test / functional / features / steps / mail_view.py
1 #
2 # Copyright (c) 2014 ThoughtWorks, Inc.
3 #
4 # Pixelated is free software: you can redistribute it and/or modify
5 # it under the terms of the GNU Affero General Public License as published by
6 # the Free Software Foundation, either version 3 of the License, or
7 # (at your option) any later version.
8 #
9 # Pixelated is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 # GNU Affero General Public License for more details.
13 #
14 # You should have received a copy of the GNU Affero General Public License
15 # along with Pixelated. If not, see <http://www.gnu.org/licenses/>.
16
17 from behave import then, when
18 from selenium.webdriver.common.keys import Keys
19
20 from ..page_objects import InboxPage
21 from common import (
22     click_button,
23     find_element_by_css_selector,
24     find_elements_by_css_selector,
25     reply_subject,
26     wait_until_button_is_visible)
27
28
29 @then('I see that the subject reads \'{expected_subject}\'')
30 def impl(context, expected_subject):
31     actual_subject = find_element_by_css_selector(context, '#mail-view .mail-read-view__header-subject').text
32     assert expected_subject == actual_subject
33
34
35 @then('I see that the body reads \'{expected_body}\'')
36 @then('I see that the body has \'{expected_body}\'')
37 def impl(context, expected_body):
38     actual_body = InboxPage(context).get_body_message()
39     assert expected_body in actual_body
40
41
42 @then('that email has the \'{tag}\' tag')
43 def impl(context, tag):
44     find_element_by_css_selector(context, '#mail-view .tagsArea .tag')
45     elements = find_elements_by_css_selector(context, '#mail-view .tagsArea .tag')
46     tags = [e.text for e in elements]
47     assert tag in tags
48
49
50 @when('I add the tag \'{tag}\' to that mail')
51 def impl(context, tag):
52     b = find_element_by_css_selector(context, '#new-tag-button')
53     b.click()
54
55     e = find_element_by_css_selector(context, '#new-tag-input')
56     e.send_keys(tag)
57     e.send_keys(Keys.ENTER)
58     find_element_by_css_selector(context, 'li[data-tag=%s]' % tag)
59
60
61 @when('I reply to it')
62 def impl(context):
63     click_button(context, 'Reply')
64     context.reply_subject = reply_subject(context)
65     click_button(context, 'Send')
66
67
68 @when('I try to delete the first mail')
69 def impl(context):
70     context.execute_steps(u"When I open the first mail in the mail list")
71     find_element_by_css_selector(context, '#mail-view #view-more-actions').click()
72     context.browser.execute_script("$('#delete-button-top').click();")
73
74     e = find_element_by_css_selector(context, '.message-panel__growl--success')
75     assert 'Your message was moved to trash!' == e.text
76
77
78 @when('I choose to forward this mail')
79 def impl(context):
80     wait_until_button_is_visible(context, 'Forward')
81     click_button(context, 'Forward')
82
83
84 @when('I forward this mail')
85 def impl(context):
86     wait_until_button_is_visible(context, 'Send')
87     click_button(context, 'Send')
88
89
90 @when('I remove all tags')
91 def impl(context):
92     e = find_element_by_css_selector(context, '.tagsArea')
93     tags = e.find_elements_by_css_selector('.tag')
94     assert len(tags) > 0
95     for tag in tags:
96         tag.click()
97
98
99 @when('I choose to trash')
100 def impl(context):
101     context.browser.execute_script("$('button#view-more-actions').click()")
102     click_button(context, 'Delete this message', 'li')
103
104
105 @then('I see the mail has a cc and a bcc recipient')
106 def impl(context):
107     cc = find_element_by_css_selector(context, '.mail-read-view__header-recipients .cc')
108     bcc = find_element_by_css_selector(context, '.mail-read-view__header-recipients .bcc')
109
110     assert cc is not None
111     assert bcc is not None