2
var StatusTypeRole = UserRole + 5;
3
var IsAlertingRole = UserRole + 10;
4
var OnlineContactsRole = UserRole + 15;
5
var TotalContactsRole = UserRole + 16;
7
var Status_Offline = 0;
12
var Status_Invisible = 5;
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";
24
function add_account(account_name, account_jid, account_password)
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>");
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>");
47
function remove_account(account_name)
49
waitForObject(":Psi: XMPP Accounts.lv_accs_QTreeWidget");
50
clickItem(":Psi: XMPP Accounts.lv_accs_QTreeWidget", account_name, 31, 10, 1, Qt.LeftButton);
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");
60
function dismiss_ssl_error()
62
if (object.exists(":Trust this certificate_QPushButton")) {
63
clickButton(":Trust this certificate_QPushButton");
67
function set_global_status(status_type)
69
waitForObjectItem(":Psi_QMenuBar", "Status");
70
activateItem(":Psi.Status_QMenu", Status_Names[status_type]);
71
ensure_all_accounts_status(status_type);
74
function ensure_all_accounts_status(status_type)
76
var model = findObject(":Psi_PsiContactListView").model();
80
total_time += interval;
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())
99
if (total_time > 20.0) {
100
test.fail("ensure_all_accounts_status " + status_type);
105
function ensure_all_connected()
107
ensure_all_accounts_status(Status_Online);
110
function ensure_all_disconnected()
112
ensure_all_accounts_status(Status_Offline);
115
function set_account_status(account_name, status_name)
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);
125
function add_contact(account_name, contact_jid)
127
add_contact_to_group(account_name, contact_jid, '', '', true);
130
function add_contact_to_group(account_name, contact_jid, contact_name, group_name, request_auth)
132
waitForObjectItem(":Psi_PsiContactListView", account_name);
133
openItemContextMenu(":Psi_PsiContactListView", account_name, 102, 6, 2);
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);
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);
151
waitForObject(":Psi: Add Contact.cb_group_QComboBox");
152
type(":Psi: Add Contact.cb_group_QComboBox", "<Tab>");
154
waitForObject(":Psi: Add Contact.Request authorization when adding_QCheckBox");
155
type(":Psi: Add Contact.Request authorization when adding_QCheckBox", " ");
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>");
163
function remove_contact(contact_list_item)
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
174
function remove_group(contact_list_item)
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
187
function remove_group_and_contacts(contact_list_item)
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
198
function send_chat_message(contact_list_item, message)
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>");
209
function rename_group(contact_list_item, new_group_name)
211
waitForObject(":Psi_PsiContactListView");
212
openItemContextMenu(":Psi_PsiContactListView", contact_list_item, 135, 12, 2);
214
waitForObjectItem(":_ContactListGroupMenu", "Rename");
215
activateItem(":_ContactListGroupMenu", "Rename");
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
224
// existing_group_name: "None" / "1. Test" / etc.
225
function set_contact_existing_group(contact_list_item, existing_group_name)
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
237
function drag_and_drop_contacts(contacts)
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);
246
waitForObject(":Psi_PsiContactListView");
247
dragAndDrop(":Psi_PsiContactListView", 163, 122, ":Psi_PsiContactListView", 152, 65, Qt.CopyAction);
249
waitForObject(":Psi_PsiContactListView");
250
dragItemBy(":Psi_PsiContactListView", 163, 122, -11, -57, 1, Qt.LeftButton);
253
function tst_account_contact_counter()
255
waitForObject(":Psi_PsiContactListView");
257
var model = findObject(":Psi_PsiContactListView").model();
258
test.compare(model.rowCount(), 3);
260
set_global_status(Status_Online);
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);
267
set_global_status(Status_Offline);
270
function tst_1080_account_removing()
272
add_account("user04", "user04@localhost", "user04");
274
set_global_status(Status_Online);
275
set_account_status("user04", "Offline");
278
remove_account("user04");
279
set_global_status(Status_Offline);
282
function tst_remove_transport()
284
add_contact('user-66', 'test');
285
remove_contact("user-66.Agents/Transports.test");
288
function tst_remove_not_in_list()
290
send_chat_message("user-66.General.user01", "hi");
291
remove_contact("user01.Not in List.user-66");
293
send_chat_message("user-66.General.user01", "hi");
294
remove_group_and_contacts("user01.Not in List");
297
function tst_remove_groups()
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");
303
add_contact_to_group('user-66', 'user02@localhost', 'user02', 'Test', false);
304
remove_contact("user-66.Test.user02");
307
function tst_remove_items()
309
add_account("user-66", "user-66@localhost", "user-66");
310
set_global_status(Status_Online);
312
tst_remove_transport();
313
tst_remove_not_in_list();
316
set_global_status(Status_Offline);
318
remove_account("user-66");
321
function tst_rename_items()
323
set_global_status(Status_Online);
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");
331
// set_contact_new_group("user01.General.user02", "Test");
332
// set_contact_existing_group("user01.Test.user02", "None");
334
// rename_general_group();
335
// rename_rosteR_items();
337
set_global_status(Status_Offline);
340
function tst_drag_and_drop()
347
// startApplication("psi");
348
tst_account_contact_counter();
349
tst_1080_account_removing();
354
waitForObject(":Psi_PsiApplication");
355
sendEvent("QCloseEvent", ":Psi_PsiApplication");