var search_form='
'; function setup_search_test(){ var test_data={}; test_data.body=$('body'); test_data.body.empty(); test_data.body.append(search_form); test_data.form=test_data.body.find('form'); test_data.form.attr('action','#'); test_data.posted_ajax=[]; test_data.post_ajax=function(url,data,handler,failure_handler){ test_data.posted_ajax.push( {url:url,data:data,handler:handler,failure:failure_handler}); } setup_search_form(test_data.form,test_data.post_ajax); return test_data; } function test_when_search_button_is_not_clicked_ajax_request_not_sent(){ var test_data=setup_search_test(); if(test_data.posted_ajax.length !=0){ alert("Bogus AJAX Posted"); return false; } return true; } function test_when_search_button_is_clicked_ajax_request_sent(){ var test_data=setup_search_test(); test_data.form.find('button').click(); if(test_data.posted_ajax.length !=1){ alert("No AJAX Posted"); return false; } if(test_data.posted_ajax[0].url!='/ajax.php'){ alert("Wrong AJAX URL"); return false; } if(test_data.posted_ajax[0].data.request!='search'){ alert("AJAX request is wrong"); return false; } return true; } function test_when_search_button_is_clicked_search_term_in_ajax(){ var test_data=setup_search_test(); var search_term="green widgets"; test_data.form.find('#search-term').val(search_term); test_data.form.find('button').click(); if(test_data.posted_ajax.length !=1){ alert("No AJAX Posted"); return false; } if(test_data.posted_ajax[0].data.term!=search_term){ alert("AJAX search term is wrong"); return false; } return true; } function test_when_search_button_is_clicked_UI_updated_to_show_searching(){ var test_data=setup_search_test(); var search_term="red widgets"; test_data.form.find('#search-term').val(search_term); test_data.form.find('button').click(); if(!test_data.form.find('button').prop("disabled") || !test_data.form.find('#search-term').prop("disabled")){ alert("UI not disabled"); return false; } if(test_data.form.find('.results').text()!="Searching for "+search_term){ alert("Results field has wrong content"); return false; } return true; } function test_results_of_search_go_in_results_div(){ var test_data=setup_search_test(); var search_term="red widgets"; test_data.form.find('#search-term').val(search_term); test_data.form.find('button').click(); if(test_data.posted_ajax.length !=1){ alert("No AJAX Posted"); return false; } var result_data={ results:[ "red spinning widgets", "fast red widgets", "big red widgets" ] }; test_data.posted_ajax[0].handler(result_data); var result_div=test_data.form.find('.results'); if(result_div.children().length!=1){ alert("Should only be one child in result div"); return false; } if(result_div.find('ul').length!=1){ alert("Results are an unordered list"); return false; } var list_entries=result_div.find('ul li'); if(list_entries.length!=result_data.results.length){ alert("One list element per result entry"); return false; } for(var i=0;i