* [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.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); | |||
} | |||
}; | |||
}; |
@@ -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() | |||
]); | |||
}); |