2015-04-23 19:11:41 +00:00
|
|
|
define( [
|
|
|
|
"jquery",
|
|
|
|
"lib/common",
|
|
|
|
"ui/widget",
|
|
|
|
"ui/form-reset-mixin"
|
|
|
|
], function( $, common ) {
|
|
|
|
|
|
|
|
module( "widget factory", {
|
|
|
|
setup: function() {
|
|
|
|
$.widget( "ui.testWidget", [ $.ui.formResetMixin, {
|
|
|
|
_create: function() {
|
|
|
|
this._bindFormResetHandler();
|
|
|
|
},
|
|
|
|
_destroy: function() {
|
|
|
|
this._unbindFormResetHandler();
|
|
|
|
},
|
|
|
|
refresh: function() {
|
|
|
|
$.ui.testWidget.refreshed.push( this.element.attr( "id" ) );
|
|
|
|
}
|
|
|
|
} ] );
|
|
|
|
|
|
|
|
$.ui.testWidget.refreshed = [];
|
|
|
|
},
|
|
|
|
|
|
|
|
teardown: function() {
|
|
|
|
delete $.ui.testWidget;
|
|
|
|
delete $.fn.testWidget;
|
|
|
|
}
|
2015-08-24 13:35:44 +00:00
|
|
|
} );
|
2015-04-23 19:11:41 +00:00
|
|
|
|
|
|
|
common.testJshint( "form-reset-mixin" );
|
|
|
|
|
|
|
|
asyncTest( "form reset", function() {
|
|
|
|
expect( 2 );
|
|
|
|
|
|
|
|
var form = $( "#main" );
|
|
|
|
var inputs = form.find( "input" );
|
|
|
|
|
|
|
|
inputs.testWidget();
|
|
|
|
form.on( "reset", function() {
|
2015-08-24 13:35:44 +00:00
|
|
|
setTimeout( function() {
|
2015-04-23 19:11:41 +00:00
|
|
|
deepEqual( $.ui.testWidget.refreshed, [ "input1", "input2", "input3", "input4" ],
|
|
|
|
"All widgets are refreshed on form reset" );
|
|
|
|
equal( form.data( "ui-form-reset-instances" ).length, 4,
|
|
|
|
"All widget instances are tracked against the form" );
|
|
|
|
start();
|
|
|
|
} );
|
|
|
|
} );
|
|
|
|
form[ 0 ].reset();
|
|
|
|
} );
|
|
|
|
|
|
|
|
asyncTest( "destroy", function() {
|
|
|
|
expect( 2 );
|
|
|
|
|
|
|
|
var form = $( "#main" );
|
|
|
|
var inputs = form.find( "input" );
|
|
|
|
|
|
|
|
inputs
|
|
|
|
.testWidget()
|
|
|
|
.eq( 1 )
|
|
|
|
.testWidget( "destroy" );
|
|
|
|
|
|
|
|
form.on( "reset", function() {
|
2015-08-24 13:35:44 +00:00
|
|
|
setTimeout( function() {
|
2015-04-23 19:11:41 +00:00
|
|
|
deepEqual( $.ui.testWidget.refreshed, [ "input1", "input3", "input4" ],
|
|
|
|
"All widgets are refreshed on form reset" );
|
|
|
|
deepEqual( form.data( "ui-form-reset-instances" ).length, 3,
|
|
|
|
"All widget instances are tracked against the form" );
|
|
|
|
start();
|
|
|
|
} );
|
|
|
|
} );
|
|
|
|
form[ 0 ].reset();
|
|
|
|
} );
|
|
|
|
|
|
|
|
asyncTest( "destroy all", function() {
|
|
|
|
expect( 2 );
|
|
|
|
|
|
|
|
var form = $( "#main" );
|
|
|
|
|
|
|
|
form.find( "input" )
|
|
|
|
.testWidget()
|
|
|
|
.testWidget( "destroy" );
|
|
|
|
|
|
|
|
form.on( "reset", function() {
|
2015-08-24 13:35:44 +00:00
|
|
|
setTimeout( function() {
|
2015-04-23 19:11:41 +00:00
|
|
|
deepEqual( $.ui.testWidget.refreshed, [], "No widgets are refreshed after destroy" );
|
|
|
|
strictEqual( form.data( "ui-form-reset-instances" ), undefined,
|
|
|
|
"Form data is removed when the last widget instance is destroyed" );
|
|
|
|
start();
|
|
|
|
} );
|
|
|
|
} );
|
|
|
|
form[ 0 ].reset();
|
|
|
|
} );
|
|
|
|
|
|
|
|
} );
|