From d0fe07f954ddc07941817c08a873d4adfabc840b Mon Sep 17 00:00:00 2001 From: Kevin Brown Date: Thu, 16 Oct 2014 17:55:32 -0400 Subject: [PATCH] Added tests for the query function --- tests/data/select-tests.js | 98 +++++++++++++++++++++++++++++++++++++- tests/data/select.html | 8 ++++ 2 files changed, 104 insertions(+), 2 deletions(-) diff --git a/tests/data/select-tests.js b/tests/data/select-tests.js index df1a302e..788a9fc7 100644 --- a/tests/data/select-tests.js +++ b/tests/data/select-tests.js @@ -1,11 +1,11 @@ -module('Data adapters - Select'); - var SelectData = require('select2/data/select'); var $ = require('jquery'); var Options = require('select2/options'); var options = new Options({}); +module('Data adapters - Select - current'); + test('current gets default for single', function (assert) { var $select = $('#qunit-fixture .single'); @@ -124,3 +124,97 @@ test('multiple adds to the old value', function (assert) { assert.deepEqual($select.val(), ['default', '2']); }); + +module('Data adapter - Select - query'); + +test('all options are returned with no term', function (assert) { + var $select = $('#qunit-fixture .single'); + + var data = new SelectData($select, options); + + data.query({}, function (data) { + assert.equal( + data.length, + 3, + 'The number of items returned should be equal to the number of options' + ); + }); +}); + +test('the matcher checks the text', function (assert) { + var $select = $('#qunit-fixture .single'); + + var data = new SelectData($select, options); + + data.query({ + term: 'Default' + }, function (data) { + assert.equal( + data.length, + 1, + 'Only the "Default" option should be found' + ); + }); +}); + +test('the matcher ignores case', function (assert) { + var $select = $('#qunit-fixture .single'); + + var data = new SelectData($select, options); + + data.query({ + term: 'one' + }, function (data) { + assert.equal( + data.length, + 1, + 'The "One" option should still be found' + ); + }); +}); + +test('no options may be returned with no matches', function (assert) { + var $select = $('#qunit-fixture .single'); + + var data = new SelectData($select, options); + + data.query({ + term: 'qwerty' + }, function (data) { + assert.equal( + data.length, + 0, + 'Only matching items should be returned' + ); + }); +}); + +test('optgroup tags are marked with children', function (assert) { + var $select = $('#qunit-fixture .groups'); + + var data = new SelectData($select, options); + + data.query({}, function (data) { + assert.ok( + 'children' in data[0], + 'The optgroup element should have children when queried' + ); + }); +}); + +test('empty optgroups are still shown when queried', function (assert) { + var $select = $('#qunit-fixture .groups'); + + var data = new SelectData($select, options); + + data.query({}, function (data) { + assert.deepEqual( + data[1], + { + text: 'Empty', + children: [] + }, + 'The empty optgroup element should still be returned when queried' + ); + }); +}); diff --git a/tests/data/select.html b/tests/data/select.html index af777103..ad9676f3 100644 --- a/tests/data/select.html +++ b/tests/data/select.html @@ -18,6 +18,14 @@ + +