inputData-tests.js 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. module('Data adapters - <input> compatibility');
  2. var $ = require('jquery');
  3. var Options = require('select2/options');
  4. var Utils = require('select2/utils');
  5. var ArrayData = require('select2/data/array');
  6. var InputData = require('select2/compat/inputData');
  7. var InputAdapter = Utils.Decorate(ArrayData, InputData);
  8. test('test that options can be selected', function (assert) {
  9. var options = new Options({
  10. data: [
  11. {
  12. id: 'test',
  13. text: 'Test'
  14. }
  15. ]
  16. });
  17. var $element = $('<input />');
  18. var adapter = new InputAdapter($element, options);
  19. adapter.select({
  20. id: 'test'
  21. });
  22. assert.equal(
  23. $element.val(),
  24. 'test',
  25. 'The id of the item should be the value'
  26. );
  27. });
  28. test('test that options can be unselected', function (assert) {
  29. var options = new Options({
  30. data: [
  31. {
  32. id: 'test',
  33. text: 'Test',
  34. selected: true
  35. }
  36. ]
  37. });
  38. var $element = $('<input />');
  39. var adapter = new InputAdapter($element, options);
  40. adapter.unselect({
  41. id: 'test'
  42. });
  43. assert.equal(
  44. $element.val(),
  45. '',
  46. 'The id should no longer be in the value'
  47. );
  48. });
  49. test('default values can be set', function (assert) {
  50. expect(4);
  51. var options = new Options({
  52. data: [
  53. {
  54. id: 'test',
  55. text: 'Test'
  56. }
  57. ]
  58. });
  59. var $element = $('<input value="test" />');
  60. var adapter = new InputAdapter($element, options);
  61. adapter.current(function (data) {
  62. assert.equal(
  63. data.length,
  64. 1,
  65. 'There should only be a single selected option'
  66. );
  67. var item = data[0];
  68. assert.equal(item.id, 'test');
  69. assert.equal(item.text, 'Test');
  70. });
  71. assert.equal(
  72. $element.val(),
  73. 'test',
  74. 'The value should not have been altered'
  75. );
  76. });
  77. test('no default value', function (assert) {
  78. expect(2);
  79. var options = new Options({
  80. data: [
  81. {
  82. id: 'test',
  83. text: 'Test'
  84. }
  85. ]
  86. });
  87. var $element = $('<input />');
  88. var adapter = new InputAdapter($element, options);
  89. adapter.current(function (data) {
  90. assert.equal(
  91. data.length,
  92. 0,
  93. 'There should be no selected options'
  94. );
  95. });
  96. assert.equal(
  97. $element.val(),
  98. '',
  99. 'The value should not have been altered'
  100. );
  101. });