~ci-train-bot/ubuntu-settings-components/ubuntu-settings-components-ubuntu-yakkety-1993

« back to all changes in this revision

Viewing changes to tests/qmltests/Menus/tst_TextMessageMenu.qml

  • Committer: Tarmac
  • Author(s): Nick Dedekind
  • Date: 2013-10-07 17:15:38 UTC
  • mfrom: (50.2.7 usc.indicators-tests)
  • Revision ID: tarmac-20131007171538-xe5hz6ypxuqsxcl7
Added tests for indicator menu components.

Approved by Andrea Cimitan, PS Jenkins bot.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Copyright 2013 Canonical Ltd.
 
3
 *
 
4
 * This program is free software; you can redistribute it and/or modify
 
5
 * it under the terms of the GNU Lesser General Public License as published by
 
6
 * the Free Software Foundation; version 3.
 
7
 *
 
8
 * This program is distributed in the hope that it will be useful,
 
9
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 
10
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
11
 * GNU Lesser General Public License for more details.
 
12
 *
 
13
 * You should have received a copy of the GNU Lesser General Public License
 
14
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
15
 *
 
16
 * Authored by Nick Dedekind <nick.dedekind@canonical.com>
 
17
 */
 
18
 
 
19
import QtQuick 2.0
 
20
import QtTest 1.0
 
21
import Ubuntu.Test 0.1
 
22
import Ubuntu.Components 0.1
 
23
import Ubuntu.Settings.Menus 0.1
 
24
import "../utils.js" as UtilsJS
 
25
 
 
26
Item {
 
27
    width: units.gu(42)
 
28
    height: units.gu(75)
 
29
 
 
30
    Flickable {
 
31
        id: flickable
 
32
 
 
33
        anchors.fill: parent
 
34
        contentWidth: column.width
 
35
        contentHeight: column.height
 
36
 
 
37
        Item {
 
38
            id: column
 
39
 
 
40
            width: flickable.width
 
41
            height: childrenRect.height
 
42
 
 
43
            TextMessageMenu {
 
44
                id: messageMenu
 
45
                removable: false
 
46
 
 
47
                title: "Text Message"
 
48
                time: "11:08am"
 
49
                message: "I am a little teapot"
 
50
            }
 
51
 
 
52
            TextMessageMenu {
 
53
                id: messageMenuRemovable
 
54
                removable: true
 
55
                anchors.top: messageMenu.bottom
 
56
            }
 
57
 
 
58
            TextMessageMenu {
 
59
                id: messageMenuSelected
 
60
                removable: true
 
61
                anchors.top: messageMenuRemovable.bottom
 
62
 
 
63
                onReplied: {
 
64
                    textMessageReply = value;
 
65
                }
 
66
            }
 
67
        }
 
68
    }
 
69
 
 
70
    property string textMessageReply: ""
 
71
 
 
72
    SignalSpy {
 
73
        id: signalSpyActivateApp
 
74
        signalName: "appActivated"
 
75
        target: messageMenuSelected
 
76
    }
 
77
 
 
78
    SignalSpy {
 
79
        id: signalSpyDismiss
 
80
        signalName: "dismissed"
 
81
        target: messageMenuRemovable
 
82
    }
 
83
 
 
84
    SignalSpy {
 
85
        id: signalSpyReply
 
86
        signalName: "replied"
 
87
        target: messageMenuSelected
 
88
    }
 
89
 
 
90
    UbuntuTestCase {
 
91
        name: "TextMessageMenu"
 
92
        when: windowShown
 
93
 
 
94
        function init() {
 
95
            signalSpyActivateApp.clear();
 
96
            signalSpyDismiss.clear();
 
97
            signalSpyReply.clear();
 
98
            textMessageReply = "";
 
99
 
 
100
            messageMenu.replyEnabled = true;
 
101
            messageMenuSelected.selected = false;
 
102
        }
 
103
 
 
104
        function test_title_data() {
 
105
            return [
 
106
                { title: "title1" },
 
107
                { title: "title2" },
 
108
            ];
 
109
        }
 
110
 
 
111
        function test_title(data) {
 
112
            messageMenu.title = data.title;
 
113
 
 
114
            var title = UtilsJS.findChild(messageMenu, "title");
 
115
            verify(title, "No title");
 
116
            compare(title.text, data.title, "Title does not match set title.");
 
117
        }
 
118
 
 
119
        function test_time_data() {
 
120
            return [
 
121
                { time: "11:09am" },
 
122
                { time: "4pm" },
 
123
            ];
 
124
        }
 
125
 
 
126
        function test_time(data) {
 
127
            messageMenu.time = data.time;
 
128
 
 
129
            var subtitle = UtilsJS.findChild(messageMenu, "subtitle");
 
130
            verify(subtitle !== undefined, "No subtitle");
 
131
            compare(subtitle.text, data.time, "Time does not match set time.");
 
132
        }
 
133
 
 
134
        function test_appIcon_data() {
 
135
            return [
 
136
                { appIcon: Qt.resolvedUrl("../../artwork/avatar.png") },
 
137
                { appIcon: Qt.resolvedUrl("../../artwork/rhythmbox.png") },
 
138
            ];
 
139
        }
 
140
 
 
141
        function test_appIcon(data) {
 
142
            messageMenu.appIcon = data.appIcon;
 
143
 
 
144
            var appIcon = UtilsJS.findChild(messageMenu, "appIcon");
 
145
            verify(appIcon !== undefined, "No app icon");
 
146
            compare(appIcon.source, data.appIcon, "App Icon does not match set icon.");
 
147
        }
 
148
 
 
149
        function test_message_data() {
 
150
            return [
 
151
                { message: "This is a test." },
 
152
                { message: "Test is also a test." },
 
153
            ];
 
154
        }
 
155
 
 
156
        function test_message(data) {
 
157
            messageMenu.message = data.message;
 
158
 
 
159
            var body = UtilsJS.findChild(messageMenu, "body");
 
160
            verify(body !== undefined, "No body");
 
161
            compare(body.text, data.message, "Message does not match set message.");
 
162
        }
 
163
 
 
164
        function test_replyButtonText_data() {
 
165
            return [
 
166
                { buttonText: "Send" },
 
167
                { buttonText: "reply" },
 
168
            ];
 
169
        }
 
170
 
 
171
        function test_replyButtonText(data) {
 
172
            messageMenu.replyButtonText = data.buttonText;
 
173
 
 
174
            var button = UtilsJS.findChild(messageMenu, "sendButton");
 
175
            verify(button !== undefined, "No send button");
 
176
            compare(button.text, data.buttonText, "Button text does not match set text.");
 
177
        }
 
178
 
 
179
        function test_activateApp() {
 
180
            var appIcon = UtilsJS.findChild(messageMenuSelected, "appIcon");
 
181
 
 
182
            mouseClick(appIcon, appIcon.width * 2, appIcon.height / 2, Qt.LeftButton, Qt.NoModifier, 0);
 
183
            compare(signalSpyActivateApp.count, 0, "activate app should not have been triggered");
 
184
 
 
185
            messageMenuSelected.selected = false;
 
186
            mouseClick(appIcon, appIcon.width / 2, appIcon.height / 2, Qt.LeftButton, Qt.NoModifier, 0);
 
187
            compare(signalSpyActivateApp.count, 0, "activate app should not have been triggered when not selected");
 
188
 
 
189
            messageMenuSelected.selected = true;
 
190
            mouseClick(appIcon, appIcon.width / 2, appIcon.height / 2, Qt.LeftButton, Qt.NoModifier, 0);
 
191
            compare(signalSpyActivateApp.count > 0, true, "activate app should have been triggered when selected");
 
192
        }
 
193
 
 
194
        function test_dismiss() {
 
195
            mouseFlick(messageMenuRemovable,
 
196
                       messageMenuRemovable.width / 2,
 
197
                       messageMenuRemovable.height / 2,
 
198
                       messageMenuRemovable.width,
 
199
                       messageMenuRemovable.height / 2,
 
200
                       true, true, units.gu(1), 10);
 
201
            tryCompare(function() { return signalSpyDismiss.count > 0; }, true);
 
202
        }
 
203
 
 
204
        function test_replyEnabled_data() {
 
205
            return [
 
206
                { tag: 'disabledNoReply', enabled: false, reply: "", expected: false},
 
207
                { tag: 'enabledNoReply', enabled: true, reply: "", expected: false},
 
208
                { tag: 'disabledWithReply', enabled: false, reply: "test", expected: false},
 
209
                { tag: 'enabledWithReply', enabled: true, reply: "test", expected: true},
 
210
            ];
 
211
        }
 
212
 
 
213
        function test_replyEnabled(data) {
 
214
            messageMenuSelected.selected = true;
 
215
            messageMenuSelected.replyEnabled = data.enabled
 
216
 
 
217
            var replyText = UtilsJS.findChild(messageMenuSelected, "replyText");
 
218
            verify(replyText !== undefined, "Reply text not found");
 
219
 
 
220
            var sendButton = UtilsJS.findChild(messageMenuSelected, "sendButton");
 
221
            verify(sendButton !== undefined, "Send button not found");
 
222
 
 
223
            replyText.text = data.reply;
 
224
 
 
225
            compare(sendButton.enabled, data.expected, "Reply button is not in correct state");
 
226
        }
 
227
 
 
228
        function test_reply() {
 
229
            messageMenuSelected.selected = true;
 
230
            messageMenuSelected.replyEnabled = true;
 
231
 
 
232
            var replyText = UtilsJS.findChild(messageMenuSelected, "replyText");
 
233
            verify(replyText !== undefined, "Reply text not found");
 
234
            replyText.text = "reply1";
 
235
 
 
236
            var sendButton = UtilsJS.findChild(messageMenuSelected, "sendButton");
 
237
            verify(sendButton !== undefined, "Send button not found");
 
238
 
 
239
            mouseClick(sendButton, sendButton.width / 2, sendButton.height / 2, Qt.LeftButton, Qt.NoModifier, 0);
 
240
            compare(signalSpyReply.count > 0, true);
 
241
            compare(textMessageReply, "reply1", "Text message did not reply with correct text.");
 
242
        }
 
243
    }
 
244
}