diff --git a/tests/data/minimumInputLength-tests.js b/tests/data/minimumInputLength-tests.js new file mode 100644 index 00000000..92cee4bb --- /dev/null +++ b/tests/data/minimumInputLength-tests.js @@ -0,0 +1,138 @@ +var MinimumInputLength = require('select2/data/minimumInputLength'); +var $ = require('jquery'); +var Options = require('select2/options'); +var Utils = require('select2/utils'); + +function StubData () { + this.called = false; +} + +StubData.prototype.query = function (params, callback) { + this.called = true; +}; + +var MinimumData = Utils.Decorate(StubData, MinimumInputLength); + +module('Data adapters - Select - current'); + +test('0 never displays the notice', function (assert) { + var zeroOptions = new Options({ + minimumInputLength: 0 + }); + + var data = new MinimumData(null, zeroOptions); + + data.trigger = function () { + assert.ok(false, 'No events should be triggered'); + }; + + data.query({ + term: '' + }); + + assert.ok(data.called); + + data = new MinimumData(null, zeroOptions); + + data.query({ + term: 'test' + }); + + assert.ok(data.called); +}); + +test('< 0 never displays the notice', function (assert) { + var negativeOptions = new Options({ + minimumInputLength: -1 + }); + + var data = new MinimumData(null, negativeOptions); + + data.trigger = function () { + assert.ok(false, 'No events should be triggered'); + }; + + data.query({ + term: '' + }); + + assert.ok(data.called); + + data = new MinimumData(null, negativeOptions); + + data.query({ + term: 'test' + }); + + assert.ok(data.called); +}); + +test('triggers when input is not long enough', function (assert) { + var options = new Options({ + minimumInputLength: 10 + }); + + var data = new MinimumData(null, options); + + data.trigger = function () { + assert.ok(true, 'The event should be triggered.'); + }; + + data.query({ + term: 'no' + }); + + assert.ok(!data.called); +}); + +test('does not trigger when equal', function (assert) { + var options = new Options({ + minimumInputLength: 10 + }); + + var data = new MinimumData(null, options); + + data.trigger = function () { + assert.ok(false, 'The event should not be triggered.'); + }; + + data.query({ + term: '1234567890' + }); + + assert.ok(data.called); +}); + +test('does not trigger when greater', function (assert) { + var options = new Options({ + minimumInputLength: 10 + }); + + var data = new MinimumData(null, options); + + data.trigger = function () { + assert.ok(false, 'The event should not be triggered.'); + }; + + data.query({ + term: '12345678901' + }); + + assert.ok(data.called); +}); + +test('works with null term', function (assert) { + var options = new Options({ + minimumInputLength: 1 + }); + + var data = new MinimumData(null, options); + + data.trigger = function () { + assert.ok(true, 'The event should be triggered'); + }; + + data.query({}); + + assert.ok(!data.called); +}); diff --git a/tests/data/minimumInputLength.html b/tests/data/minimumInputLength.html new file mode 100644 index 00000000..1dc6020c --- /dev/null +++ b/tests/data/minimumInputLength.html @@ -0,0 +1,18 @@ + + + + + + + +
+
+ + + + + + + + +