define( [
	"qunit",
	"jquery",
	"lib/helper",
	"ui/widgets/selectable"
], function( QUnit, $, helper ) {
"use strict";

QUnit.module( "selectable: options", { afterEach: helper.moduleAfterEach }  );

QUnit.test( "autoRefresh", function( assert ) {
	assert.expect( 3 );

	var actual = 0,
		el = $( "#selectable1" ),
		sel = $( "*", el ),
		selected = function() {
			actual += 1;
		};

	el = $( "#selectable1" ).selectable( { autoRefresh: false,	selected: selected } );
	sel.hide();
	el.simulate( "drag", {
		dx: 1000,
		dy: 1000
	} );
	assert.equal( actual, sel.length );
	el.selectable( "destroy" );

	actual = 0;
	sel.show();
	el = $( "#selectable1" ).selectable( { autoRefresh: true,	selected: selected } );
	sel.hide();
	el.simulate( "drag", {
		dx: 1000,
		dy: 1000
	} );
	assert.equal( actual, 0 );

	sel.show();
	$( sel[ 0 ] ).simulate( "drag", {
		dx: 1000,
		dy: 1000
	} );
	assert.equal( actual, sel.length );

	el.selectable( "destroy" );
	sel.show();
} );

QUnit.test( "filter", function( assert ) {
	assert.expect( 2 );

	var actual = 0,
		el = $( "#selectable1" ),
		sel = $( "*", el ),
		selected = function() {
			actual += 1;
		};

	el = $( "#selectable1" ).selectable( { filter: ".special", selected: selected } );
	el.simulate( "drag", {
		dx: 1000,
		dy: 1000
	} );
	assert.ok( sel.length !== 1, "this test assumes more than 1 selectee" );
	assert.equal( actual, 1 );
	el.selectable( "destroy" );
} );

} );
