From 76e4ea8340f2b5e787b2e93e0fe2af018e4b32f6 Mon Sep 17 00:00:00 2001 From: Kevin Brown Date: Tue, 25 Nov 2014 21:28:16 -0500 Subject: [PATCH] Added tests for tags --- tests/data/minimumInputLength-tests.js | 4 +- tests/data/select-tests.js | 5 +- tests/data/tags-tests.js | 132 +++++++++++++++++++++++++ tests/data/tags.html | 22 +++++ 4 files changed, 158 insertions(+), 5 deletions(-) create mode 100644 tests/data/tags-tests.js create mode 100644 tests/data/tags.html diff --git a/tests/data/minimumInputLength-tests.js b/tests/data/minimumInputLength-tests.js index 92cee4bb..a67db08d 100644 --- a/tests/data/minimumInputLength-tests.js +++ b/tests/data/minimumInputLength-tests.js @@ -1,3 +1,5 @@ +module('Data adapters - Minimum input length'); + var MinimumInputLength = require('select2/data/minimumInputLength'); var $ = require('jquery'); var Options = require('select2/options'); @@ -13,8 +15,6 @@ StubData.prototype.query = function (params, callback) { 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 diff --git a/tests/data/select-tests.js b/tests/data/select-tests.js index 95d0e899..cec64ba1 100644 --- a/tests/data/select-tests.js +++ b/tests/data/select-tests.js @@ -1,11 +1,10 @@ +module('Data adapters - Select - current'); + 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'); diff --git a/tests/data/tags-tests.js b/tests/data/tags-tests.js new file mode 100644 index 00000000..269c4138 --- /dev/null +++ b/tests/data/tags-tests.js @@ -0,0 +1,132 @@ +module('Data adapters - Tags'); + +var SelectData = require('select2/data/select'); +var Tags = require('select2/data/tags'); + +var $ = require('jquery'); +var Options = require('select2/options'); +var Utils = require('select2/utils'); + +var SelectTags = Utils.Decorate(SelectData, Tags); +var options = new Options({ + tags: true +}); + +test('does not trigger on blank/null terms', function (assert) { + var data = new SelectTags($('#qunit-fixture .single'), options); + + data.query({ + term: '' + }, function (data) { + assert.equal(data.length, 1); + + var item = data[0]; + + assert.equal(item.id, 'One'); + assert.equal(item.text, 'One'); + }); + + data.query({ + term: null + }, function (data) { + assert.equal(data.length, 1); + + var item = data[0]; + + assert.equal(item.id, 'One'); + assert.equal(item.text, 'One'); + }); +}); + +test('does not trigger for additional pages', function (assert) { + var data = new SelectTags($('#qunit-fixture .single'), options); + + data.query({ + page: 2 + }, function (data) { + assert.equal(data.length, 1); + + var item = data[0]; + + assert.equal(item.id, 'One'); + assert.equal(item.text, 'One'); + }); +}); + +test('creates tag at beginning', function (assert) { + var data = new SelectTags($('#qunit-fixture .single'), options); + + data.query({ + term: 'o' + }, function (data) { + assert.equal(data.length, 2); + + var first = data[0]; + + assert.equal(first.id, 'o'); + assert.equal(first.text, 'o'); + }); +}); + +test('tags can be the only result', function (assert) { + var data = new SelectTags($('#qunit-fixture .single'), options); + + data.query({ + term: 'test' + }, function (data) { + assert.equal(data.length, 1); + + var item = data[0]; + + assert.equal(item.id, 'test'); + assert.equal(item.text, 'test'); + }); +}); + +test('tags are injected as options', function (assert) { + var data = new SelectTags($('#qunit-fixture .single'), options); + + data.query({ + term: 'test' + }, function (data) { + assert.equal(data.length, 1); + + var $children = $('#qunit-fixture .single option'); + + assert.equal($children.length, 2); + + var $tag = $children.last(); + + assert.equal($tag.val(), 'test'); + assert.equal($tag.text(), 'test'); + }); +}); + +test('old tags are removed automatically', function (assert) { + var data = new SelectTags($('#qunit-fixture .single'), options); + + data.query({ + term: 'first' + }, function (data) { + assert.equal(data.length, 1); + + var $children = $('#qunit-fixture .single option'); + + assert.equal($children.length, 2); + }); + + data.query({ + term: 'second' + }, function (data) { + assert.equal(data.length, 1); + + var $children = $('#qunit-fixture .single option'); + + assert.equal($children.length, 2); + + var $tag = $children.last(); + + assert.equal($tag.val(), 'second'); + assert.equal($tag.text(), 'second'); + }); +}); diff --git a/tests/data/tags.html b/tests/data/tags.html new file mode 100644 index 00000000..6f50a1d3 --- /dev/null +++ b/tests/data/tags.html @@ -0,0 +1,22 @@ + + + + + + + +
+
+ +
+ + + + + + + + +