Browse Source

Finished off tests for tags

This also adds back the ability for tags to return `null` in order
for no tag to be added to the results.
Kevin Brown 10 years ago
parent
commit
56d5778590

+ 6 - 4
dist/js/select2.amd.full.js

@@ -2492,12 +2492,14 @@ define('select2/data/tags',[
 
       var tag = self.createTag(params);
 
-      var $option = self.option(tag);
-      $option.attr('data-select2-tag', true);
+      if (tag != null) {
+        var $option = self.option(tag);
+        $option.attr('data-select2-tag', true);
 
-      self.$element.append($option);
+        self.$element.append($option);
 
-      self.insertTag(data, tag);
+        self.insertTag(data, tag);
+      }
 
       callback(data);
     }

+ 6 - 4
dist/js/select2.amd.js

@@ -2492,12 +2492,14 @@ define('select2/data/tags',[
 
       var tag = self.createTag(params);
 
-      var $option = self.option(tag);
-      $option.attr('data-select2-tag', true);
+      if (tag != null) {
+        var $option = self.option(tag);
+        $option.attr('data-select2-tag', true);
 
-      self.$element.append($option);
+        self.$element.append($option);
 
-      self.insertTag(data, tag);
+        self.insertTag(data, tag);
+      }
 
       callback(data);
     }

+ 6 - 4
dist/js/select2.full.js

@@ -12027,12 +12027,14 @@ define('select2/data/tags',[
 
       var tag = self.createTag(params);
 
-      var $option = self.option(tag);
-      $option.attr('data-select2-tag', true);
+      if (tag != null) {
+        var $option = self.option(tag);
+        $option.attr('data-select2-tag', true);
 
-      self.$element.append($option);
+        self.$element.append($option);
 
-      self.insertTag(data, tag);
+        self.insertTag(data, tag);
+      }
 
       callback(data);
     }

File diff suppressed because it is too large
+ 0 - 0
dist/js/select2.full.min.js


+ 6 - 4
dist/js/select2.js

@@ -2920,12 +2920,14 @@ define('select2/data/tags',[
 
       var tag = self.createTag(params);
 
-      var $option = self.option(tag);
-      $option.attr('data-select2-tag', true);
+      if (tag != null) {
+        var $option = self.option(tag);
+        $option.attr('data-select2-tag', true);
 
-      self.$element.append($option);
+        self.$element.append($option);
 
-      self.insertTag(data, tag);
+        self.insertTag(data, tag);
+      }
 
       callback(data);
     }

File diff suppressed because it is too large
+ 0 - 0
dist/js/select2.min.js


+ 6 - 4
src/js/select2/data/tags.js

@@ -55,12 +55,14 @@ define([
 
       var tag = self.createTag(params);
 
-      var $option = self.option(tag);
-      $option.attr('data-select2-tag', true);
+      if (tag != null) {
+        var $option = self.option(tag);
+        $option.attr('data-select2-tag', true);
 
-      self.$element.append($option);
+        self.$element.append($option);
 
-      self.insertTag(data, tag);
+        self.insertTag(data, tag);
+      }
 
       callback(data);
     }

+ 55 - 0
tests/data/tags-tests.js

@@ -130,3 +130,58 @@ test('old tags are removed automatically', function (assert) {
     assert.equal($tag.text(), 'second');
   });
 });
+
+test('insertTag controls the tag location', function (assert) {
+  var data = new SelectTags($('#qunit-fixture .single'), options);
+
+  data.insertTag = function (data, tag) {
+    data.push(tag);
+  };
+
+  data.query({
+    term: 'o'
+  }, function (data) {
+    assert.equal(data.length, 2);
+
+    var item = data[1];
+
+    assert.equal(item.id, 'o');
+    assert.equal(item.text, 'o');
+  });
+});
+
+test('createTag controls the tag object', function (assert) {
+  var data = new SelectTags($('#qunit-fixture .single'), options);
+
+  data.createTag = function (params) {
+    return {
+      id: 0,
+      text: params.term
+    };
+  };
+
+  data.query({
+    term: 'test'
+  }, function (data) {
+    assert.equal(data.length, 1);
+
+    var item = data[0];
+
+    assert.equal(item.id, 0);
+    assert.equal(item.text, 'test');
+  });
+});
+
+test('createTag returns null for no tag', function (assert) {
+  var data = new SelectTags($('#qunit-fixture .single'), options);
+
+  data.createTag = function (params) {
+    return null;
+  };
+
+  data.query({
+    term: 'o'
+  }, function (data) {
+    assert.equal(data.length, 1);
+  });
+});

Some files were not shown because too many files changed in this diff