fixes for select tests and tests to cover basic functionality for new cached pages and select dialogs

This commit is contained in:
John Bender 2011-08-01 18:07:28 -07:00
parent d958983e5b
commit f7d5d918ae
5 changed files with 504 additions and 72 deletions

View file

@ -0,0 +1,65 @@
<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset="utf-8">
</head>
<body>
<div id="dialog-select-parent-cache-test" data-nstest-role="page">
<div data-nstest-role="fieldcontain" id="cached-page-select-container">
<label for="cached-page-select" class="select">Your state:</label>
<select name="cached-page-select" id="cached-page-select" data-nstest-native-menu="false">
<option value="AL">Alabama</option>
<option value="AK">Alaska</option>
<option value="AZ">Arizona</option>
<option value="AR">Arkansas</option>
<option value="CA">California</option>
<option value="CO">Colorado</option>
<option value="CT">Connecticut</option>
<option value="DE">Delaware</option>
<option value="FL">Florida</option>
<option value="GA">Georgia</option>
<option value="HI">Hawaii</option>
<option value="ID">Idaho</option>
<option value="IL">Illinois</option>
<option value="IN">Indiana</option>
<option value="IA">Iowa</option>
<option value="KS">Kansas</option>
<option value="KY">Kentucky</option>
<option value="LA">Louisiana</option>
<option value="ME">Maine</option>
<option value="MD">Maryland</option>
<option value="MA">Massachusetts</option>
<option value="MI">Michigan</option>
<option value="MN">Minnesota</option>
<option value="MS">Mississippi</option>
<option value="MO">Missouri</option>
<option value="MT">Montana</option>
<option value="NE">Nebraska</option>
<option value="NV">Nevada</option>
<option value="NH">New Hampshire</option>
<option value="NJ">New Jersey</option>
<option value="NM">New Mexico</option>
<option value="NY">New York</option>
<option value="NC">North Carolina</option>
<option value="ND">North Dakota</option>
<option value="OH">Ohio</option>
<option value="OK">Oklahoma</option>
<option value="OR">Oregon</option>
<option value="PA">Pennsylvania</option>
<option value="RI">Rhode Island</option>
<option value="SC">South Carolina</option>
<option value="SD">South Dakota</option>
<option value="TN">Tennessee</option>
<option value="TX">Texas</option>
<option value="UT">Utah</option>
<option value="VT">Vermont</option>
<option value="VA">Virginia</option>
<option value="WA">Washington</option>
<option value="WV">West Virginia</option>
<option value="WI">Wisconsin</option>
<option value="WY">Wyoming</option>
</select>
</div>
</div>
</body>
</html>

View file

@ -13,7 +13,6 @@
<script src="select_events.js"></script>
<script src="select_core.js"></script>
<link rel="stylesheet" href="../../../themes/default/"/>
<link rel="stylesheet" href="../../../external/qunit.css"/>
</head>
@ -25,7 +24,7 @@
<ol id="qunit-tests">
</ol>
<div id="foo" data-nstest-role="page">
<div id="default" data-nstest-role="page">
<div data-nstest-role="fieldcontain" id="select-choice-few-container">
<select name="select-choice-few" id="select-choice-few" data-nstest-native-menu="false">
<option value="standard">Standard: 7 day</option>

View file

@ -5,65 +5,89 @@
(function($){
var libName = "jquery.mobile.forms.select.js",
originalDefaultDialogTrans = $.mobile.defaultDialogTransition,
originalDefTransitionHandler = $.mobile.defaultTransitionHandler;
originalDefTransitionHandler = $.mobile.defaultTransitionHandler,
resetHash, closeDialog;
resetHash = function(timeout){
$.testHelper.openPage( location.hash.indexOf("#default") >= 0 ? "#" : "#default" );
};
closeDialog = function(timeout){
$.mobile.activePage.find("li a").first().click();
};
module(libName, {
teardown: function(){
location.hash = "";
$.mobile.defaultDialogTransition = originalDefaultDialogTrans;
$.mobile.defaultTransitionHandler = originalDefTransitionHandler;
}
});
asyncTest( "a large select menu should use the default dialog transition", function(){
var select = $("#select-choice-many-container-1 a");
//set to something else
$.mobile.defaultTransitionHandler = $.testHelper.decorate({
fn: $.mobile.defaultTransitionHandler,
before: function(name){
same(name, $.mobile.defaultDialogTransition);
}
});
setTimeout(function(){
$.testHelper.pageSequence([
asyncTest( "firing a click at least 400 ms later on the select screen overlay does close it", function(){
$.testHelper.sequence([
function(){
// bring up the smaller choice menu
ok($("#select-choice-few-container a").length > 0, "there is in fact a button in the page");
$("#select-choice-few-container a").trigger("click");
},
function(){
//select the first menu item
$("#select-choice-few-menu a:first").click();
},
function(){
same($("#select-choice-few-menu").parent(".ui-selectmenu-hidden").length, 1);
start();
}
], 1000);
});
asyncTest( "a large select menu should use the default dialog transition", function(){
var select;
$.testHelper.pageSequence([
resetHash,
function(timeout){
select = $("#select-choice-many-container-1 a");
//set to something else
$.mobile.defaultTransitionHandler = $.testHelper.decorate({
fn: $.mobile.defaultTransitionHandler,
before: function(name){
same(name, $.mobile.defaultDialogTransition);
}
});
// bring up the dialog
select.trigger("click");
},
function(){
$.mobile.activePage.find(".ui-header .ui-btn").click();
},
closeDialog,
function(){
start();
}
start
]);
}, 1000);
});
asyncTest( "a large select menu should come up in a dialog many times", function(){
var menu, select = $("#select-choice-many-container a");
var menu, select;
$.testHelper.pageSequence([
resetHash,
function(){
select = $("#select-choice-many-container a");
// bring up the dialog
select.trigger("click");
},
function(){
menu = $("#select-choice-many-menu");
same(menu.closest('.ui-dialog').length, 1);
},
function(){
// select and close the dialog
$.mobile.activePage.find(".ui-header .ui-btn").click();
closeDialog();
},
function(){
@ -71,27 +95,27 @@
select.trigger("click");
},
function(){
$.mobile.activePage.find(".ui-header .ui-btn").click();
},
closeDialog,
function(){
start();
}
start
]);
});
asyncTest( "custom select menu always renders screen from the left", function(){
var select;
expect( 1 );
var select = $("ul#select-offscreen-menu");
$.testHelper.sequence([
resetHash,
function(){
select = $("ul#select-offscreen-menu");
$("#select-offscreen-container a").trigger("click");
},
function(){
ok(select.offset().left >= 30);
ok(select.offset().left >= 30, "offset from the left is greater than or equal to 30px" );
start();
}
], 1000);
@ -101,13 +125,15 @@
var dialogHashKey = "ui-state=dialog";
$.testHelper.pageSequence([
function(){
resetHash,
function(timeout){
$("#select-choice-many-container-hash-check a").click();
},
function(){
ok(location.hash.indexOf(dialogHashKey) > -1);
$.mobile.activePage.find(".ui-header .ui-btn").click();
closeDialog();
},
function(){
@ -121,13 +147,15 @@
var dialogHashKey = "ui-state=dialog",
openDialogSequence = [
resetHash,
function(){
$("#select-choice-many-container-many-clicks a").click();
},
function(){
ok(location.hash.indexOf(dialogHashKey) > -1, "hash should have the dialog hash key");
$(".ui-page-active li").click();
closeDialog();
}
],
@ -147,10 +175,13 @@
asyncTest( "a large select option should not overflow", function(){
// https://github.com/jquery/jquery-mobile/issues/1338
var menu, select = $("#select-long-option-label");
var menu, select;
$.testHelper.sequence([
resetHash,
function(){
select = $("#select-long-option-label");
// bring up the dialog
select.trigger("click");
},
@ -162,6 +193,68 @@
start();
}
], 500);
});
// https://github.com/jquery/jquery-mobile/issues/2181
asyncTest( "dialog sized select should alter the value of its parent select", function(){
var selectButton, value;
$.testHelper.pageSequence([
resetHash,
function(){
$.mobile.changePage( "cached-tests.html" );
},
function(){
selectButton = $( "#cached-page-select" ).siblings( 'a' );
selectButton.click();
},
function(){
ok( $.mobile.activePage.hasClass('ui-dialog'), "the dialog came up" );
var option = $.mobile.activePage.find( "li a" ).not(":contains('" + selectButton.text() + "')").last();
value = option.text();
option.click();
},
function(){
same( value, selectButton.text(), "the selected value is propogated back to the button text" );
start();
}
]);
});
// https://github.com/jquery/jquery-mobile/issues/2181
asyncTest( "dialog sized select should prevent the removal of its parent page from the dom", function(){
var selectButton, parentPageId;
expect( 2 );
$.testHelper.pageSequence([
resetHash,
function(){
$.mobile.changePage( "cached-tests.html" );
},
function(){
selectButton = $.mobile.activePage.find( "#cached-page-select" ).siblings( 'a' ),
parentPageId = $.mobile.activePage.attr( 'id' );
same( $("#" + parentPageId).length, 1, "establish the parent page exists" );
selectButton.click();
},
function(){
same( $( "#" + parentPageId).length, 1, "make sure parent page is still there after opening the dialog" );
$.mobile.activePage.find( "li a" ).last().click();
},
function(){
window.history.back();
},
start
]);
});
})(jQuery);

View file

@ -9,31 +9,10 @@
$.mobile.selectmenu.prototype.options.nativeMenu = false;
});
module(libName, {
teardown: function(){ location.hash = ""; }
});
asyncTest( "firing a click at least 400 ms later on the select screen overlay does close it", function(){
$.Event.prototype.originalEvent = {
touches: [ 'foo' ]
};
$.testHelper.sequence([
function(){
// bring up the smaller choice menu
$("#select-choice-few-button").trigger("click");
},
function(){
//select the first menu item
$("#select-choice-few-menu a:first").click();
},
function(){
same($("#select-choice-few-menu").parent(".ui-selectmenu-hidden").length, 1);
start();
}
], 400);
module(libName,{
setup: function(){
$.testHelper.openPage( location.hash.indexOf("#default") >= 0 ? "#" : "#default" );
}
});
test( "selects marked with data-native-menu=true should use a div as their button", function(){
@ -47,10 +26,9 @@
test( "selects marked with data-native-menu=true should sit inside the button", function(){
same($("#select-choice-native-container div.ui-btn select").length, 1);
});
test( "select controls will create when inside a container that receives a 'create' event", function(){
ok( !$("#enhancetest").appendTo(".ui-page-active").find(".ui-select").length, "did not have enhancements applied" );
ok( $("#enhancetest").trigger("create").find(".ui-select").length, "enhancements applied" );
});
})(jQuery);

View file

@ -0,0 +1,297 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
</head>
<body>
<div id="first" data-nstest-role="page">
<div data-nstest-role="fieldcontain" id="select-choice-few-container">
<select name="select-choice-few" id="select-choice-few" data-nstest-native-menu="false">
<option value="standard">Standard: 7 day</option>
<option value="rush">Rush: 3 days</option>
<option value="express">Express: next day</option>
<option value="overnight">Overnight</option>
</select>
</div>
<div data-nstest-role="fieldcontain" id="select-choice-native-container">
<select name="select-choice-native" id="select-choice-native" data-nstest-native-menu="true">
<option value="standard">Standard: 7 day</option>
<option value="rush">Rush: 3 days</option>
<option value="express">Express: next day</option>
<option value="overnight">Overnight</option>
</select>
</div>
<div data-nstest-role="fieldcontain" id="select-choice-global-native-container">
<select name="select-choice-global-native" id="select-choice-global-native" data-nstest-native-menu="false">
<option value="standard">Standard: 7 day</option>
<option value="rush">Rush: 3 days</option>
<option value="express">Express: next day</option>
<option value="overnight">Overnight</option>
</select>
</div>
<div data-nstest-role="fieldcontain" id="select-choice-many-container-1">
<label for="select-choice-many-1" class="select">Your state:</label>
<select name="select-choice-many-1" id="select-choice-many-1" data-nstest-native-menu="false">
<option value="AL">Alabama</option>
<option value="AK">Alaska</option>
<option value="AZ">Arizona</option>
<option value="AR">Arkansas</option>
<option value="CA">California</option>
<option value="CO">Colorado</option>
<option value="CT">Connecticut</option>
<option value="DE">Delaware</option>
<option value="FL">Florida</option>
<option value="GA">Georgia</option>
<option value="HI">Hawaii</option>
<option value="ID">Idaho</option>
<option value="IL">Illinois</option>
<option value="IN">Indiana</option>
<option value="IA">Iowa</option>
<option value="KS">Kansas</option>
<option value="KY">Kentucky</option>
<option value="LA">Louisiana</option>
<option value="ME">Maine</option>
<option value="MD">Maryland</option>
<option value="MA">Massachusetts</option>
<option value="MI">Michigan</option>
<option value="MN">Minnesota</option>
<option value="MS">Mississippi</option>
<option value="MO">Missouri</option>
<option value="MT">Montana</option>
<option value="NE">Nebraska</option>
<option value="NV">Nevada</option>
<option value="NH">New Hampshire</option>
<option value="NJ">New Jersey</option>
<option value="NM">New Mexico</option>
<option value="NY">New York</option>
<option value="NC">North Carolina</option>
<option value="ND">North Dakota</option>
<option value="OH">Ohio</option>
<option value="OK">Oklahoma</option>
<option value="OR">Oregon</option>
<option value="PA">Pennsylvania</option>
<option value="RI">Rhode Island</option>
<option value="SC">South Carolina</option>
<option value="SD">South Dakota</option>
<option value="TN">Tennessee</option>
<option value="TX">Texas</option>
<option value="UT">Utah</option>
<option value="VT">Vermont</option>
<option value="VA">Virginia</option>
<option value="WA">Washington</option>
<option value="WV">West Virginia</option>
<option value="WI">Wisconsin</option>
<option value="WY">Wyoming</option>
</select>
</div>
<div data-nstest-role="fieldcontain" id="select-choice-many-container">
<label for="select-choice-many" class="select">Your state:</label>
<select name="select-choice-many" id="select-choice-many" data-nstest-native-menu="false">
<option value="AL">Alabama</option>
<option value="AK">Alaska</option>
<option value="AZ">Arizona</option>
<option value="AR">Arkansas</option>
<option value="CA">California</option>
<option value="CO">Colorado</option>
<option value="CT">Connecticut</option>
<option value="DE">Delaware</option>
<option value="FL">Florida</option>
<option value="GA">Georgia</option>
<option value="HI">Hawaii</option>
<option value="ID">Idaho</option>
<option value="IL">Illinois</option>
<option value="IN">Indiana</option>
<option value="IA">Iowa</option>
<option value="KS">Kansas</option>
<option value="KY">Kentucky</option>
<option value="LA">Louisiana</option>
<option value="ME">Maine</option>
<option value="MD">Maryland</option>
<option value="MA">Massachusetts</option>
<option value="MI">Michigan</option>
<option value="MN">Minnesota</option>
<option value="MS">Mississippi</option>
<option value="MO">Missouri</option>
<option value="MT">Montana</option>
<option value="NE">Nebraska</option>
<option value="NV">Nevada</option>
<option value="NH">New Hampshire</option>
<option value="NJ">New Jersey</option>
<option value="NM">New Mexico</option>
<option value="NY">New York</option>
<option value="NC">North Carolina</option>
<option value="ND">North Dakota</option>
<option value="OH">Ohio</option>
<option value="OK">Oklahoma</option>
<option value="OR">Oregon</option>
<option value="PA">Pennsylvania</option>
<option value="RI">Rhode Island</option>
<option value="SC">South Carolina</option>
<option value="SD">South Dakota</option>
<option value="TN">Tennessee</option>
<option value="TX">Texas</option>
<option value="UT">Utah</option>
<option value="VT">Vermont</option>
<option value="VA">Virginia</option>
<option value="WA">Washington</option>
<option value="WV">West Virginia</option>
<option value="WI">Wisconsin</option>
<option value="WY">Wyoming</option>
</select>
</div>
<div data-nstest-role="fieldcontain" id="select-choice-many-container-hash-check">
<label for="select-choice-many-hash-check" class="select">Your state:</label>
<select name="select-choice-many-hash-check" id="select-choice-many-hash-check" data-nstest-native-menu="false">
<option value="AL">Alabama</option>
<option value="AK">Alaska</option>
<option value="AZ">Arizona</option>
<option value="AR">Arkansas</option>
<option value="CA">California</option>
<option value="CO">Colorado</option>
<option value="CT">Connecticut</option>
<option value="DE">Delaware</option>
<option value="FL">Florida</option>
<option value="GA">Georgia</option>
<option value="HI">Hawaii</option>
<option value="ID">Idaho</option>
<option value="IL">Illinois</option>
<option value="IN">Indiana</option>
<option value="IA">Iowa</option>
<option value="KS">Kansas</option>
<option value="KY">Kentucky</option>
<option value="LA">Louisiana</option>
<option value="ME">Maine</option>
<option value="MD">Maryland</option>
<option value="MA">Massachusetts</option>
<option value="MI">Michigan</option>
<option value="MN">Minnesota</option>
<option value="MS">Mississippi</option>
<option value="MO">Missouri</option>
<option value="MT">Montana</option>
<option value="NE">Nebraska</option>
<option value="NV">Nevada</option>
<option value="NH">New Hampshire</option>
<option value="NJ">New Jersey</option>
<option value="NM">New Mexico</option>
<option value="NY">New York</option>
<option value="NC">North Carolina</option>
<option value="ND">North Dakota</option>
<option value="OH">Ohio</option>
<option value="OK">Oklahoma</option>
<option value="OR">Oregon</option>
<option value="PA">Pennsylvania</option>
<option value="RI">Rhode Island</option>
<option value="SC">South Carolina</option>
<option value="SD">South Dakota</option>
<option value="TN">Tennessee</option>
<option value="TX">Texas</option>
<option value="UT">Utah</option>
<option value="VT">Vermont</option>
<option value="VA">Virginia</option>
<option value="WA">Washington</option>
<option value="WV">West Virginia</option>
<option value="WI">Wisconsin</option>
<option value="WY">Wyoming</option>
</select>
</div>
<div data-nstest-role="fieldcontain" id="select-choice-many-container-many-clicks">
<label for="select-choice-many-many-clicks" class="select">Your state:</label>
<select name="select-choice-many-many-clicks" id="select-choice-many-many-clicks" data-nstest-native-menu="false">
<option value="AL">Alabama</option>
<option value="AK">Alaska</option>
<option value="AZ">Arizona</option>
<option value="AR">Arkansas</option>
<option value="CA">California</option>
<option value="CO">Colorado</option>
<option value="CT">Connecticut</option>
<option value="DE">Delaware</option>
<option value="FL">Florida</option>
<option value="GA">Georgia</option>
<option value="HI">Hawaii</option>
<option value="ID">Idaho</option>
<option value="IL">Illinois</option>
<option value="IN">Indiana</option>
<option value="IA">Iowa</option>
<option value="KS">Kansas</option>
<option value="KY">Kentucky</option>
<option value="LA">Louisiana</option>
<option value="ME">Maine</option>
<option value="MD">Maryland</option>
<option value="MA">Massachusetts</option>
<option value="MI">Michigan</option>
<option value="MN">Minnesota</option>
<option value="MS">Mississippi</option>
<option value="MO">Missouri</option>
<option value="MT">Montana</option>
<option value="NE">Nebraska</option>
<option value="NV">Nevada</option>
<option value="NH">New Hampshire</option>
<option value="NJ">New Jersey</option>
<option value="NM">New Mexico</option>
<option value="NY">New York</option>
<option value="NC">North Carolina</option>
<option value="ND">North Dakota</option>
<option value="OH">Ohio</option>
<option value="OK">Oklahoma</option>
<option value="OR">Oregon</option>
<option value="PA">Pennsylvania</option>
<option value="RI">Rhode Island</option>
<option value="SC">South Carolina</option>
<option value="SD">South Dakota</option>
<option value="TN">Tennessee</option>
<option value="TX">Texas</option>
<option value="UT">Utah</option>
<option value="VT">Vermont</option>
<option value="VA">Virginia</option>
<option value="WA">Washington</option>
<option value="WV">West Virginia</option>
<option value="WI">Wisconsin</option>
<option value="WY">Wyoming</option>
</select>
</div>
<div data-nstest-role="fieldcontain" id="select-offscreen-container">
<style>
/* keep the select small and close to the screen border to test rendering */
#select-offscreen-container {
width: 100px;
position: absolute;
left: 0px;
top: 0px;
}
</style>
<select name="select-choice-few" id="select-offscreen" data-nstest-native-menu="false">
<option value="standard">Standard: 7 day</option>
<option value="rush">Rush: 3 days</option>
<option value="express">Express: next day</option>
<option value="overnight">Overnight</option>
</select>
</div>
<div data-nstest-role="fieldcontain" id="select-long-option-label-container">
<select name="select-long-option-label" id="select-long-option-label" data-nstest-native-menu="false">
<option value="short">Choice 1</option>
<option value="long">Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.</option>
</select>
</div>
</div>
<div id="enhancetest">
<select name="select-enhancetest" id="select-enhancetest">
<option value="standard">Standard: 7 day</option>
<option value="rush">Rush: 3 days</option>
<option value="express">Express: next day</option>
<option value="overnight">Overnight</option>
</select>
</div>
</body>
</html>