* [UI Test] List view * some fixes in test_list_menu * codacy fixes * minor fixes * removed menu testversion-14
@@ -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.set_route('List', doctype), | ||||
() => frappe.new_doc(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.timeout(1), | ||||
() => (frappe.quick_entry ? frappe.quick_entry.insert() : cur_frm.save()) | () => (frappe.quick_entry ? frappe.quick_entry.insert() : cur_frm.save()) | ||||
@@ -90,7 +96,57 @@ frappe.tests = { | |||||
}); | }); | ||||
return frappe.run_serially(tasks); | 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) => { | click_page_head_item: (text) => { | ||||
@@ -175,4 +231,4 @@ frappe.tests = { | |||||
$(`a:contains("${text}"):visible`).click(); | $(`a:contains("${text}"):visible`).click(); | ||||
return frappe.timeout(1); | return frappe.timeout(1); | ||||
} | } | ||||
}; | |||||
}; |
@@ -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() | |||||
]); | |||||
}); |
@@ -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() | |||||
]); | |||||
}); |
@@ -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() | |||||
]); | |||||
}); |