~ubuntu-branches/ubuntu/wily/psi/wily-proposed

« back to all changes in this revision

Viewing changes to qa/integration/suite_Psi/tst_contactlist/test.js

  • Committer: Package Import Robot
  • Author(s): Jan Niehusmann
  • Date: 2014-07-01 21:49:34 UTC
  • mfrom: (6.1.7 sid)
  • Revision ID: package-import@ubuntu.com-20140701214934-gt4dkgm94byi4vnn
Tags: 0.15-1
* New upstream version
* set debhelper compat level to 9
* set Standards-Version to 3.9.5 (no further changes)
* add lintian override regarding license-problem-non-free-RFC
* use qconf to regenerate configure script
* implement hardening using buildflags instead of hardening-wrapper

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
var UserRole = 32;
 
2
var StatusTypeRole = UserRole + 5;
 
3
var IsAlertingRole = UserRole + 10;
 
4
var OnlineContactsRole = UserRole + 15;
 
5
var TotalContactsRole = UserRole + 16;
 
6
 
 
7
var Status_Offline = 0;
 
8
var Status_Online = 1;
 
9
var Status_Away = 2;
 
10
var Status_XA = 3;
 
11
var Status_DND = 4;
 
12
var Status_Invisible = 5;
 
13
var Status_FFC = 6;
 
14
 
 
15
var Status_Names = new Array();
 
16
Status_Names[Status_Offline] = "Offline";
 
17
Status_Names[Status_Online] = "Online";
 
18
Status_Names[Status_Away] = "Away";
 
19
Status_Names[Status_XA] = "Not Available";
 
20
Status_Names[Status_DND] = "Do not Disturb";
 
21
Status_Names[Status_Invisible] = "Invisible";
 
22
Status_Names[Status_FFC] = "Free for Chat";
 
23
 
 
24
function add_account(account_name, account_jid, account_password)
 
25
{
 
26
    waitForObjectItem(":Psi_QMenuBar", "General");
 
27
    activateItem(":Psi_QMenuBar", "General");
 
28
    waitForObjectItem(":Psi.General_QMenu", "Account Setup");
 
29
    activateItem(":Psi.General_QMenu", "Account Setup");
 
30
    waitForObject(":Psi: XMPP Accounts.Add_IconButton");
 
31
    clickButton(":Psi: XMPP Accounts.Add_IconButton");
 
32
    waitForObject(":Psi: Add Account.le_name_QLineEdit");
 
33
    type(":Psi: Add Account.le_name_QLineEdit", account_name);
 
34
    waitForObject(":Psi: Add Account.le_name_QLineEdit");
 
35
    type(":Psi: Add Account.le_name_QLineEdit", "<Return>");
 
36
 
 
37
    waitForObject(":Account.le_jid_QLineEdit");
 
38
    type(":Account.le_jid_QLineEdit", account_jid);
 
39
    waitForObject(":Account.le_jid_QLineEdit");
 
40
    type(":Account.le_jid_QLineEdit", "<Tab>");
 
41
    waitForObject(":Account.le_pass_QLineEdit");
 
42
    type(":Account.le_pass_QLineEdit", account_password);
 
43
    waitForObject(":Account.le_pass_QLineEdit");
 
44
    type(":Account.le_pass_QLineEdit", "<Return>");
 
45
}
 
46
 
 
47
function remove_account(account_name)
 
48
{
 
49
    waitForObject(":Psi: XMPP Accounts.lv_accs_QTreeWidget");
 
50
    clickItem(":Psi: XMPP Accounts.lv_accs_QTreeWidget", account_name, 31, 10, 1, Qt.LeftButton);
 
51
 
 
52
    waitForObject(":Psi: XMPP Accounts.Remove_IconButton");
 
53
    clickButton(":Psi: XMPP Accounts.Remove_IconButton");
 
54
    waitForObject(":Psi: Remove Account.Remove_QPushButton");
 
55
    clickButton(":Psi: Remove Account.Remove_QPushButton");
 
56
    waitForObject(":Remove_QPushButton");
 
57
    clickButton(":Remove_QPushButton");
 
58
}
 
59
 
 
60
function dismiss_ssl_error()
 
61
{
 
62
    if (object.exists(":Trust this certificate_QPushButton")) {
 
63
        clickButton(":Trust this certificate_QPushButton");
 
64
    }
 
65
}
 
66
 
 
67
function set_global_status(status_type)
 
68
{
 
69
    waitForObjectItem(":Psi_QMenuBar", "Status");
 
70
    activateItem(":Psi.Status_QMenu", Status_Names[status_type]);
 
71
    ensure_all_accounts_status(status_type);
 
72
}
 
73
 
 
74
function ensure_all_accounts_status(status_type)
 
75
{
 
76
    var model = findObject(":Psi_PsiContactListView").model();
 
77
    var total_time = 0.0;
 
78
    var interval = 0.1;
 
79
    while (true) {
 
80
        total_time += interval;
 
81
        snooze(interval);
 
82
 
 
83
        dismiss_ssl_error();
 
84
 
 
85
        var ok = true;
 
86
        for (i = 0; i < model.rowCount(); ++i) {
 
87
            if (model.index(i, 0).data(StatusTypeRole).toInt() != status_type ||
 
88
                model.index(i, 0).data(IsAlertingRole).toBool())
 
89
            {
 
90
                ok = false;
 
91
                break;
 
92
            }
 
93
        }
 
94
 
 
95
        if (ok) {
 
96
            break;
 
97
        }
 
98
 
 
99
        if (total_time > 20.0) {
 
100
            test.fail("ensure_all_accounts_status " + status_type);
 
101
        }
 
102
    }
 
103
}
 
104
 
 
105
function ensure_all_connected()
 
106
{
 
107
    ensure_all_accounts_status(Status_Online);
 
108
}
 
109
 
 
110
function ensure_all_disconnected()
 
111
{
 
112
    ensure_all_accounts_status(Status_Offline);
 
113
}
 
114
 
 
115
function set_account_status(account_name, status_name)
 
116
{
 
117
    waitForObject(":Psi_PsiContactListView");
 
118
    openItemContextMenu(":Psi_PsiContactListView", account_name, 173, 9, 2);
 
119
    waitForObjectItem(":_ContactListAccountMenu", "Status");
 
120
    activateItem(":_ContactListAccountMenu", "Status");
 
121
    waitForObjectItem(":Status_StatusMenu", status_name);
 
122
    activateItem(":Status_StatusMenu", status_name);
 
123
}
 
124
 
 
125
function add_contact(account_name, contact_jid)
 
126
{
 
127
    add_contact_to_group(account_name, contact_jid, '', '', true);
 
128
}
 
129
 
 
130
function add_contact_to_group(account_name, contact_jid, contact_name, group_name, request_auth)
 
131
{
 
132
    waitForObjectItem(":Psi_PsiContactListView", account_name);
 
133
    openItemContextMenu(":Psi_PsiContactListView", account_name, 102, 6, 2);
 
134
 
 
135
    waitForObjectItem(":_ContactListAccountMenu", "Add a Contact");
 
136
    activateItem(":_ContactListAccountMenu", "Add a Contact");
 
137
    waitForObject(":Psi: Add Contact.le_jid_QLineEdit");
 
138
    type(":Psi: Add Contact.le_jid_QLineEdit", contact_jid);
 
139
    waitForObject(":Psi: Add Contact.le_jid_QLineEdit");
 
140
    type(":Psi: Add Contact.le_jid_QLineEdit", "<Tab>");
 
141
    if (contact_name.length) {
 
142
        waitForObject(":Psi: Add Contact.le_nick_QLineEdit");
 
143
        type(":Psi: Add Contact.le_nick_QLineEdit", contact_name);
 
144
    }
 
145
    waitForObject(":Psi: Add Contact.le_nick_QLineEdit");
 
146
    type(":Psi: Add Contact.le_nick_QLineEdit", "<Tab>");
 
147
    if (group_name.length) {
 
148
        waitForObject(":Psi: Add Contact.cb_group_QComboBox");
 
149
        type(":Psi: Add Contact.cb_group_QComboBox", group_name);
 
150
    }
 
151
    waitForObject(":Psi: Add Contact.cb_group_QComboBox");
 
152
    type(":Psi: Add Contact.cb_group_QComboBox", "<Tab>");
 
153
    if (!request_auth) {
 
154
        waitForObject(":Psi: Add Contact.Request authorization when adding_QCheckBox");
 
155
        type(":Psi: Add Contact.Request authorization when adding_QCheckBox", " ");
 
156
    }
 
157
    waitForObject(":Psi: Add Contact.Request authorization when adding_QCheckBox");
 
158
    type(":Psi: Add Contact.Request authorization when adding_QCheckBox", "<Return>");
 
159
    waitForObject(":OK_QPushButton");
 
160
    type(":OK_QPushButton", "<Return>");
 
161
}
 
162
 
 
163
function remove_contact(contact_list_item)
 
164
{
 
165
    waitForObjectItem(":Psi_PsiContactListView", contact_list_item);
 
166
    openItemContextMenu(":Psi_PsiContactListView", contact_list_item, 102, 6, 2);
 
167
    waitForObjectItem(":_PsiContactMenu", "Remove");
 
168
    activateItem(":_PsiContactMenu", "Remove");
 
169
    waitForObject(":Delete_QPushButton");
 
170
    type(":Delete_QPushButton", "<Return>");
 
171
    // FIXME: ensure that the item actually disappeared
 
172
}
 
173
 
 
174
function remove_group(contact_list_item)
 
175
{
 
176
    waitForObjectItem(":Psi_PsiContactListView", contact_list_item);
 
177
    openItemContextMenu(":Psi_PsiContactListView", contact_list_item, 102, 6, 2);
 
178
    waitForObjectItem(":_ContactListGroupMenu", "Remove Group");
 
179
    activateItem(":_ContactListGroupMenu", "Remove Group");
 
180
    waitForObject(":_QMessageBox_2");
 
181
    sendEvent("QMoveEvent", ":_QMessageBox_2", 0, 323, 253, 250);
 
182
    waitForObject(":Yes_QPushButton");
 
183
    type(":Yes_QPushButton", "<Enter>");
 
184
    // FIXME: ensure that the group was actually deleted
 
185
}
 
186
 
 
187
function remove_group_and_contacts(contact_list_item)
 
188
{
 
189
    waitForObjectItem(":Psi_PsiContactListView", contact_list_item);
 
190
    openItemContextMenu(":Psi_PsiContactListView", contact_list_item, 102, 6, 2);
 
191
    waitForObjectItem(":_ContactListGroupMenu", "Remove Group and Contacts");
 
192
    activateItem(":_ContactListGroupMenu", "Remove Group and Contacts");
 
193
    waitForObject(":Delete_QPushButton");
 
194
    type(":Delete_QPushButton", "<Return>");
 
195
    // FIXME: ensure that the group was actually deleted
 
196
}
 
197
 
 
198
function send_chat_message(contact_list_item, message)
 
199
{
 
200
    doubleClickItem(":Psi_PsiContactListView", "user-66.General.user01", 114, 10, 0, Qt.LeftButton);
 
201
    waitForObject(":bottomFrame_LineEdit");
 
202
    type(":bottomFrame_LineEdit", message);
 
203
    waitForObject(":bottomFrame_LineEdit");
 
204
    type(":bottomFrame_LineEdit", "<Return>");
 
205
    waitForObject(":bottomFrame_LineEdit");
 
206
    type(":bottomFrame_LineEdit", "<Esc>");
 
207
}
 
208
 
 
209
function rename_group(contact_list_item, new_group_name)
 
210
{
 
211
    waitForObject(":Psi_PsiContactListView");
 
212
    openItemContextMenu(":Psi_PsiContactListView", contact_list_item, 135, 12, 2);
 
213
 
 
214
    waitForObjectItem(":_ContactListGroupMenu", "Rename");
 
215
    activateItem(":_ContactListGroupMenu", "Rename");
 
216
 
 
217
    waitForObject(":contactListView_QExpandingLineEdit");
 
218
    type(":contactListView_QExpandingLineEdit", new_group_name);
 
219
    waitForObject(":contactListView_QExpandingLineEdit");
 
220
    type(":contactListView_QExpandingLineEdit", "<Return>");
 
221
    // FIXME: ensure that the group was actually renamed
 
222
}
 
223
 
 
224
// existing_group_name: "None" / "1. Test" / etc.
 
225
function set_contact_existing_group(contact_list_item, existing_group_name)
 
226
{
 
227
    waitForObject(":Psi_PsiContactListView");
 
228
    openItemContextMenu(":Psi_PsiContactListView", contact_list_item, 133, 13, 2);
 
229
    waitForObjectItem(":_PsiContactMenu", "Group");
 
230
    activateItem(":_PsiContactMenu", "Group");
 
231
    waitForObjectItem(":Group_GroupMenu", existing_group_name);
 
232
    activateItem(":Group_GroupMenu", existing_group_name);
 
233
    // FIXME: ensure that the item was actually moved to new group
 
234
}
 
235
 
 
236
// FIXME: needs work
 
237
function drag_and_drop_contacts(contacts)
 
238
{
 
239
    waitForObjectItem(":Psi_PsiContactListView", "user01.Test2.user03");
 
240
    clickItem(":Psi_PsiContactListView", "user01.Test2.user03", 174, 12, 67108865, Qt.LeftButton);
 
241
    waitForObjectItem(":Psi_PsiContactListView", "user01.Test2.user04");
 
242
    clickItem(":Psi_PsiContactListView", "user01.Test2.user04", 172, 6, 67108865, Qt.LeftButton);
 
243
    waitForObjectItem(":Psi_PsiContactListView", "user01.Test2.user05");
 
244
    clickItem(":Psi_PsiContactListView", "user01.Test2.user05", 164, 5, 67108865, Qt.LeftButton);
 
245
 
 
246
    waitForObject(":Psi_PsiContactListView");
 
247
    dragAndDrop(":Psi_PsiContactListView", 163, 122, ":Psi_PsiContactListView", 152, 65, Qt.CopyAction);
 
248
 
 
249
    waitForObject(":Psi_PsiContactListView");
 
250
    dragItemBy(":Psi_PsiContactListView", 163, 122, -11, -57, 1, Qt.LeftButton);
 
251
}
 
252
 
 
253
function tst_account_contact_counter()
 
254
{
 
255
    waitForObject(":Psi_PsiContactListView");
 
256
    snooze(1.0);
 
257
    var model = findObject(":Psi_PsiContactListView").model();
 
258
    test.compare(model.rowCount(), 3);
 
259
 
 
260
    set_global_status(Status_Online);
 
261
 
 
262
    for (i = 0; i < 3; ++i) {
 
263
        test.compare(model.index(i, 0).data(OnlineContactsRole).toInt(), 2);
 
264
        test.compare(model.index(i, 0).data(TotalContactsRole).toInt(), 4);
 
265
    }
 
266
 
 
267
    set_global_status(Status_Offline);
 
268
}
 
269
 
 
270
function tst_1080_account_removing()
 
271
{
 
272
    add_account("user04", "user04@localhost", "user04");
 
273
 
 
274
    set_global_status(Status_Online);
 
275
    set_account_status("user04", "Offline");
 
276
    snooze(1.0);
 
277
 
 
278
    remove_account("user04");
 
279
    set_global_status(Status_Offline);
 
280
}
 
281
 
 
282
function tst_remove_transport()
 
283
{
 
284
    add_contact('user-66', 'test');
 
285
    remove_contact("user-66.Agents/Transports.test");
 
286
}
 
287
 
 
288
function tst_remove_not_in_list()
 
289
{
 
290
    send_chat_message("user-66.General.user01", "hi");
 
291
    remove_contact("user01.Not in List.user-66");
 
292
 
 
293
    send_chat_message("user-66.General.user01", "hi");
 
294
    remove_group_and_contacts("user01.Not in List");
 
295
}
 
296
 
 
297
function tst_remove_groups()
 
298
{
 
299
    add_contact_to_group('user-66', 'user02@localhost', 'user02', 'Test', false);
 
300
    remove_group('user-66.Test');
 
301
    remove_contact("user-66.General.user02");
 
302
 
 
303
    add_contact_to_group('user-66', 'user02@localhost', 'user02', 'Test', false);
 
304
    remove_contact("user-66.Test.user02");
 
305
}
 
306
 
 
307
function tst_remove_items()
 
308
{
 
309
    add_account("user-66", "user-66@localhost", "user-66");
 
310
    set_global_status(Status_Online);
 
311
 
 
312
    tst_remove_transport();
 
313
    tst_remove_not_in_list();
 
314
    tst_remove_groups();
 
315
 
 
316
    set_global_status(Status_Offline);
 
317
 
 
318
    remove_account("user-66");
 
319
}
 
320
 
 
321
function tst_rename_items()
 
322
{
 
323
    set_global_status(Status_Online);
 
324
 
 
325
    rename_group("user01.General", "Test");
 
326
    set_contact_existing_group("user01.Test.user02", "None");
 
327
    set_contact_existing_group("user01.Test.user03", "None");
 
328
    set_contact_existing_group("user01.Test.user04", "None");
 
329
    set_contact_existing_group("user01.Test.user05", "None");
 
330
 
 
331
    // set_contact_new_group("user01.General.user02", "Test");
 
332
    // set_contact_existing_group("user01.Test.user02", "None");
 
333
 
 
334
    // rename_general_group();
 
335
    // rename_rosteR_items();
 
336
 
 
337
    set_global_status(Status_Offline);
 
338
}
 
339
 
 
340
function tst_drag_and_drop()
 
341
{
 
342
    // TODO
 
343
}
 
344
 
 
345
function main()
 
346
{
 
347
    // startApplication("psi");
 
348
    tst_account_contact_counter();
 
349
    tst_1080_account_removing();
 
350
    tst_remove_items();
 
351
    tst_rename_items();
 
352
    tst_drag_and_drop();
 
353
 
 
354
    waitForObject(":Psi_PsiApplication");
 
355
    sendEvent("QCloseEvent", ":Psi_PsiApplication");
 
356
}