jquery-ui/tests/unit/form-reset-mixin/core.js
Scott González ad98cb1673 Form Reset: Add form reset mixin
Fixes #12638
Closes gh-1555
2015-05-14 20:39:51 -04:00

96 lines
2.1 KiB
JavaScript

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;
}
});
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() {
setTimeout(function() {
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() {
setTimeout(function() {
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() {
setTimeout(function() {
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();
} );
} );