aboutsummaryrefslogtreecommitdiffhomepage
path: root/public/bower_components/select2/tests/data/tokenizer-tests.js
diff options
context:
space:
mode:
Diffstat (limited to 'public/bower_components/select2/tests/data/tokenizer-tests.js')
-rw-r--r--public/bower_components/select2/tests/data/tokenizer-tests.js219
1 files changed, 219 insertions, 0 deletions
diff --git a/public/bower_components/select2/tests/data/tokenizer-tests.js b/public/bower_components/select2/tests/data/tokenizer-tests.js
new file mode 100644
index 0000000..2fa0121
--- /dev/null
+++ b/public/bower_components/select2/tests/data/tokenizer-tests.js
@@ -0,0 +1,219 @@
+module('Data adaptor - Tokenizer');
+
+test('triggers the select event', function (assert) {
+ assert.expect(2);
+
+ var SelectData = require('select2/data/select');
+ var Tokenizer = require('select2/data/tokenizer');
+ var Tags = require('select2/data/tags');
+
+ var Options = require('select2/options');
+ var Utils = require('select2/utils');
+
+ var $ = require('jquery');
+
+ var TokenizedSelect = Utils.Decorate(
+ Utils.Decorate(SelectData, Tags),
+ Tokenizer
+ );
+ var $select = $('#qunit-fixture .single');
+
+ var options = new Options({
+ tags: true,
+ tokenSeparators: [',']
+ });
+
+ var container = new MockContainer();
+ container.dropdown = container.selection = {};
+
+ var $container = $('<div></div>');
+
+ var data = new TokenizedSelect($select, options);
+ data.bind(container, $container);
+
+ data.on('select', function () {
+ assert.ok(true, 'The select event should be triggered');
+ });
+
+ data.query({
+ term: 'first,second'
+ }, function () {
+ assert.ok(true, 'The callback should have succeeded');
+ });
+});
+
+test('createTag can return null', function (assert) {
+ assert.expect(3);
+
+ var SelectData = require('select2/data/select');
+ var Tokenizer = require('select2/data/tokenizer');
+ var Tags = require('select2/data/tags');
+
+ var Options = require('select2/options');
+ var Utils = require('select2/utils');
+
+ var $ = require('jquery');
+
+ var TokenizedSelect = Utils.Decorate(
+ Utils.Decorate(SelectData, Tags),
+ Tokenizer
+ );
+ var $select = $('#qunit-fixture .single');
+
+ var options = new Options({
+ tags: true,
+ tokenSeparators: [','],
+ createTag: function () {
+ assert.ok(true, 'createTag should have been called');
+
+ return null;
+ }
+ });
+
+ var container = new MockContainer();
+ container.dropdown = container.selection = {};
+
+ var $container = $('<div></div>');
+
+ var data = new TokenizedSelect($select, options);
+ data.bind(container, $container);
+
+ data.on('select', function (params) {
+ if (params.data == null) {
+ assert.ok(false, 'Null data should never be selected');
+ }
+ });
+
+ data.query({
+ term: 'first,second'
+ }, function () {
+ assert.ok(true, 'The callback should have succeeded');
+ });
+});
+
+test('createTag returning null does not cut the term', function (assert) {
+ assert.expect(4);
+
+ var SelectData = require('select2/data/select');
+ var Tokenizer = require('select2/data/tokenizer');
+ var Tags = require('select2/data/tags');
+
+ var Options = require('select2/options');
+ var Utils = require('select2/utils');
+
+ var $ = require('jquery');
+
+ var TokenizedSelect = Utils.Decorate(
+ Utils.Decorate(SelectData, Tags),
+ Tokenizer
+ );
+ var $select = $('#qunit-fixture .single');
+
+ var options = new Options({
+ tags: true,
+ tokenSeparators: [',', '"'],
+ createTag: function (params) {
+ var term = params.term;
+
+ // Ignore blanks
+ if (term.length === 0) {
+ return null;
+ }
+
+ // Ignore the leading quote
+ if (term === '"') {
+ return null;
+ }
+
+ // If there is a leading quote, check for a second one
+ if (term[0] === '"' && term[term.length - 1] !== '"') {
+ return null;
+ }
+
+ var text = term.substr(1, term.length - 2);
+
+ return {
+ id: term,
+ text: text
+ };
+ }
+ });
+
+ var container = new MockContainer();
+ container.dropdown = container.selection = {};
+
+ var $container = $('<div></div>');
+
+ var data = new TokenizedSelect($select, options);
+ data.bind(container, $container);
+
+ data.on('select', function (params) {
+ assert.ok(params.data, 'Data should not be null');
+
+ assert.equal(
+ params.data.id,
+ '"first, second"',
+ 'The id should have the quotes'
+ );
+
+ assert.equal(
+ params.data.text,
+ 'first, second',
+ 'The text should not have the quotes'
+ );
+ });
+
+ data.query({
+ term: '"first, second",abc'
+ }, function () {
+ assert.ok(true, 'The callback should have succeeded');
+ });
+});
+
+test('works with multiple tokens given', function (assert) {
+ assert.expect(4);
+
+ var SelectData = require('select2/data/select');
+ var Tokenizer = require('select2/data/tokenizer');
+ var Tags = require('select2/data/tags');
+
+ var Options = require('select2/options');
+ var Utils = require('select2/utils');
+
+ var $ = require('jquery');
+
+ var TokenizedSelect = Utils.Decorate(
+ Utils.Decorate(SelectData, Tags),
+ Tokenizer
+ );
+ var $select = $('#qunit-fixture .multiple');
+
+ var options = new Options({
+ tags: true,
+ tokenSeparators: [',']
+ });
+
+ var container = new MockContainer();
+ container.dropdown = container.selection = {};
+
+ var $container = $('<div></div>');
+
+ var data = new TokenizedSelect($select, options);
+ data.bind(container, $container);
+
+ data.on('select', function () {
+ assert.ok(true, 'The select event should be triggered');
+ });
+
+ data.query({
+ term: 'first,second,third'
+ }, function () {
+ assert.ok(true, 'The callback should have succeeded');
+ });
+
+ assert.equal(
+ $select.children('option').length,
+ 3,
+ 'The two new tags should have been created'
+ );
+}); \ No newline at end of file