[UI Test] list view (#3684)
* [UI Test] List view * some fixes in test_list_menu * codacy fixes * minor fixes * removed menu test
This commit is contained in:
parent
918e426169
commit
f4c955d5b6
5 changed files with 191 additions and 4 deletions
16
frappe/tests/ui/data/test_data_for_views.js
Normal file
16
frappe/tests/ui/data/test_data_for_views.js
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
$.extend(frappe.test_data, {
|
||||
'User': {
|
||||
'user1@mail.com': [
|
||||
{first_name: 'User 1'},
|
||||
{email: 'user1@mail.com'},
|
||||
{send_welcome_email: 0}
|
||||
]
|
||||
},
|
||||
'Kanban Board': {
|
||||
'kanban 1': [
|
||||
{kanban_board_name: 'kanban 1'},
|
||||
{reference_doctype: 'ToDo'},
|
||||
{field_name: 'status'}
|
||||
]
|
||||
}
|
||||
});
|
||||
|
|
@ -8,8 +8,14 @@ frappe.tests = {
|
|||
() => frappe.set_route('List', doctype),
|
||||
() => frappe.new_doc(doctype),
|
||||
() => {
|
||||
let frm = frappe.quick_entry ? frappe.quick_entry.dialog : cur_frm;
|
||||
return frappe.tests.set_form_values(frm, data);
|
||||
if (frappe.quick_entry)
|
||||
{
|
||||
frappe.quick_entry.dialog.$wrapper.find('.edit-full').click();
|
||||
return frappe.timeout(1);
|
||||
}
|
||||
},
|
||||
() => {
|
||||
return frappe.tests.set_form_values(cur_frm, data);
|
||||
},
|
||||
() => frappe.timeout(1),
|
||||
() => (frappe.quick_entry ? frappe.quick_entry.insert() : cur_frm.save())
|
||||
|
|
@ -90,7 +96,57 @@ frappe.tests = {
|
|||
});
|
||||
|
||||
return frappe.run_serially(tasks);
|
||||
}
|
||||
}]);
|
||||
},
|
||||
click_and_wait: (button, obj=0.1) => {
|
||||
return frappe.run_serially([
|
||||
() => {
|
||||
//check if obj value is passed
|
||||
if (obj == 0.1)
|
||||
$(button).click();
|
||||
else
|
||||
$(button)[obj].click();
|
||||
},
|
||||
() => frappe.timeout(0.5)
|
||||
]);
|
||||
},
|
||||
create_todo: (todo_needed) => {
|
||||
let status_list = ['Closed', 'Open'];
|
||||
let priority_list = ['Low', 'Medium', 'High'];
|
||||
let date_list = ['2017-05-05', '2017-06-06', '2017-07-07', '2017-08-08'];
|
||||
let owner_list = ['Administrator', 'user1@mail.com'];
|
||||
let i;
|
||||
let num_of_todo;
|
||||
let tasks = [];
|
||||
|
||||
return frappe.run_serially([
|
||||
() => frappe.set_route('List', 'ToDo', 'List'),
|
||||
() => {
|
||||
//remove todo filters
|
||||
for (i=1; i<=5; i++)
|
||||
$('.col-md-2:nth-child('+i+') .input-sm').val('');
|
||||
},
|
||||
() => cur_list.page.btn_secondary.click(),
|
||||
() => frappe.timeout(0.5),
|
||||
() => num_of_todo = cur_list.data.length,//todo present
|
||||
() => {
|
||||
if (num_of_todo < todo_needed)
|
||||
{
|
||||
for (i=0; i<(todo_needed-num_of_todo); i+=1)
|
||||
{
|
||||
tasks.push(() => frappe.tests.make("ToDo", [
|
||||
{description: 'ToDo for testing'},
|
||||
{status: status_list[i%2]},
|
||||
{priority: priority_list[i%3]},
|
||||
{date: date_list[i%4]},
|
||||
{owner: owner_list[i%2]}
|
||||
]));
|
||||
tasks.push(() => i+=1);
|
||||
}
|
||||
i=0;
|
||||
}
|
||||
},
|
||||
() => frappe.run_serially(tasks)
|
||||
]);
|
||||
},
|
||||
click_page_head_item: (text) => {
|
||||
|
|
@ -175,4 +231,4 @@ frappe.tests = {
|
|||
$(`a:contains("${text}"):visible`).click();
|
||||
return frappe.timeout(1);
|
||||
}
|
||||
};
|
||||
};
|
||||
62
frappe/tests/ui/test_list_delete.js
Normal file
62
frappe/tests/ui/test_list_delete.js
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
QUnit.module('views');
|
||||
|
||||
QUnit.test("Test deletion of one list element", function(assert) {
|
||||
assert.expect(3);
|
||||
let done = assert.async();
|
||||
let count;
|
||||
let random;
|
||||
|
||||
frappe.run_serially([
|
||||
() => frappe.tests.setup_doctype('User'),
|
||||
() => frappe.tests.create_todo(2),
|
||||
() => frappe.set_route('List', 'ToDo', 'List'),
|
||||
() => frappe.timeout(0.5),
|
||||
() => {
|
||||
assert.deepEqual(['List', 'ToDo', 'List'], frappe.get_route(), "List opened successfully.");
|
||||
//total list elements
|
||||
count = cur_list.data.length;
|
||||
random = Math.floor(Math.random() * (count) + 1);
|
||||
//select one element randomly
|
||||
$('div:nth-child('+random+')>div>div>.list-row-checkbox').click();
|
||||
},
|
||||
() => cur_list.page.btn_primary.click(),
|
||||
() => frappe.timeout(0.5),
|
||||
() => {
|
||||
//check if asking for confirmation and click yes
|
||||
assert.equal("Confirm", cur_dialog.title, "Asking for confirmation.");
|
||||
cur_dialog.primary_action(frappe.confirm);
|
||||
},
|
||||
() => frappe.timeout(1),
|
||||
//check if total elements decreased by one
|
||||
() => assert.equal(cur_list.data.length, (count-1), "Only one element is deleted."),
|
||||
() => done()
|
||||
]);
|
||||
});
|
||||
|
||||
QUnit.test("Test deletion of all list element", function(assert) {
|
||||
assert.expect(3);
|
||||
let done = assert.async();
|
||||
|
||||
frappe.run_serially([
|
||||
() => frappe.tests.setup_doctype('User'),
|
||||
() => frappe.tests.create_todo(5),
|
||||
() => frappe.set_route('List', 'ToDo', 'List'),
|
||||
() => frappe.timeout(0.5),
|
||||
() => {
|
||||
assert.deepEqual(['List', 'ToDo', 'List'], frappe.get_route(), "List opened successfully.");
|
||||
//select all element
|
||||
$('.list-select-all.hidden-xs').click();
|
||||
},
|
||||
() => cur_list.page.btn_primary.click(),
|
||||
() => frappe.timeout(0.5),
|
||||
() => {
|
||||
assert.equal("Confirm", cur_dialog.title, "Asking for confirmation.");
|
||||
//click yes for deletion
|
||||
cur_dialog.primary_action(frappe.confirm);
|
||||
},
|
||||
() => frappe.timeout(2),
|
||||
//check zero elements left
|
||||
() => assert.equal( cur_list.data.length, '0', "No element is present in list."),
|
||||
() => done()
|
||||
]);
|
||||
});
|
||||
35
frappe/tests/ui/test_list_filter.js
Normal file
35
frappe/tests/ui/test_list_filter.js
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
QUnit.module('views');
|
||||
|
||||
QUnit.test("Test filters", function(assert) {
|
||||
assert.expect(2);
|
||||
let done = assert.async();
|
||||
|
||||
frappe.run_serially([
|
||||
() => frappe.tests.setup_doctype('User'),
|
||||
() => frappe.tests.create_todo(6),
|
||||
() => frappe.set_route('List', 'ToDo', 'List'),
|
||||
() => frappe.timeout(0.5),
|
||||
() => {
|
||||
assert.deepEqual(['List', 'ToDo', 'List'], frappe.get_route(), "List opened successfully.");
|
||||
//set filter values
|
||||
$('.col-md-2:nth-child(2) .input-sm').val('Closed');
|
||||
$('.col-md-2:nth-child(3) .input-sm').val('Low');
|
||||
$('.col-md-2:nth-child(4) .input-sm').val('05-05-2017');
|
||||
$('.col-md-2:nth-child(5) .input-sm').val('Administrator');
|
||||
},
|
||||
() => frappe.timeout(0.5),
|
||||
() => cur_list.page.btn_secondary.click(),
|
||||
() => frappe.timeout(1),
|
||||
() => {
|
||||
//get total list element
|
||||
var count = cur_list.data.length;
|
||||
//check if all elements are as per filter
|
||||
var i=0;
|
||||
for ( ; i < count ; i++)
|
||||
if ((cur_list.data[i].status!='Closed')||(cur_list.data[i].priority!='Low')||(cur_list.data[i].owner!='Administrator')||(cur_list.data[i].date!='2017-05-05'))
|
||||
break;
|
||||
assert.equal(count, i, "Elements present have content according to filters.");
|
||||
},
|
||||
() => done()
|
||||
]);
|
||||
});
|
||||
18
frappe/tests/ui/test_list_paging.js
Normal file
18
frappe/tests/ui/test_list_paging.js
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
QUnit.module('views');
|
||||
|
||||
QUnit.test("Test paging in list", function(assert) {
|
||||
assert.expect(3);
|
||||
let done = assert.async();
|
||||
|
||||
frappe.run_serially([
|
||||
() => frappe.set_route('List', 'DocType'),
|
||||
() => frappe.timeout(0.5),
|
||||
() => assert.deepEqual(['List', 'DocType', 'List'], frappe.get_route(), "List opened successfully."),
|
||||
//check elements less then page length [20 in this case]
|
||||
() => assert.ok(cur_list.data.length <= cur_list.page_length, "20 or less elements are visible."),
|
||||
() => frappe.tests.click_and_wait('.btn-sm:contains("100"):visible'),
|
||||
//check elements less then page length [100 in this case]
|
||||
() => assert.ok(cur_list.data.length <= cur_list.page_length, "100 or less elements are visible."),
|
||||
() => done()
|
||||
]);
|
||||
});
|
||||
Loading…
Add table
Reference in a new issue