selectOnClose-tests.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. module('Dropdown - selectOnClose');
  2. var Utils = require('select2/utils');
  3. var Options = require('select2/options');
  4. var SelectData = require('select2/data/select');
  5. var Results = require('select2/results');
  6. var SelectOnClose = require('select2/dropdown/selectOnClose');
  7. var ModifiedResults = Utils.Decorate(Results, SelectOnClose);
  8. var options = new Options({
  9. selectOnClose: true
  10. });
  11. test('will not trigger if no results were given', function (assert) {
  12. expect(0);
  13. var $element = $('<select></select>');
  14. var select = new ModifiedResults($element, options, new SelectData($element));
  15. var $dropdown = select.render();
  16. var container = new MockContainer();
  17. select.bind(container, $('<div></div>'));
  18. select.on('select', function () {
  19. assert.ok(false, 'The select event should not have been triggered');
  20. });
  21. container.trigger('close');
  22. });
  23. test('will not trigger if the results list is empty', function (assert) {
  24. expect(1);
  25. var $element = $('<select></select>');
  26. var select = new ModifiedResults($element, options, new SelectData($element));
  27. var $dropdown = select.render();
  28. var container = new MockContainer();
  29. select.bind(container, $('<div></div>'));
  30. select.on('select', function () {
  31. assert.ok(false, 'The select event should not have been triggered');
  32. });
  33. select.append({
  34. results: []
  35. });
  36. assert.equal(
  37. $dropdown.find('li').length,
  38. 0,
  39. 'There should not be any results in the dropdown'
  40. );
  41. container.trigger('close');
  42. });
  43. test('will not trigger if no results here highlighted', function (assert) {
  44. expect(2);
  45. var $element = $('<select></select>');
  46. var select = new ModifiedResults($element, options, new SelectData($element));
  47. var $dropdown = select.render();
  48. var container = new MockContainer();
  49. select.bind(container, $('<div></div>'));
  50. select.on('select', function () {
  51. assert.ok(false, 'The select event should not have been triggered');
  52. });
  53. select.append({
  54. results: [
  55. {
  56. id: '1',
  57. text: 'Test'
  58. }
  59. ]
  60. });
  61. assert.equal(
  62. $dropdown.find('li').length,
  63. 1,
  64. 'There should be one result in the dropdown'
  65. );
  66. assert.equal(
  67. $.trim($dropdown.find('li').text()),
  68. 'Test',
  69. 'The result should be the same as the one we appended'
  70. );
  71. container.trigger('close');
  72. });
  73. test('will trigger if there is a highlighted result', function (assert) {
  74. expect(2);
  75. var $element = $('<select></select>');
  76. var select = new ModifiedResults($element, options, new SelectData($element));
  77. var $dropdown = select.render();
  78. var container = new MockContainer();
  79. select.bind(container, $('<div></div>'));
  80. select.on('select', function () {
  81. assert.ok(true, 'The select event should have been triggered');
  82. });
  83. select.append({
  84. results: [
  85. {
  86. id: '1',
  87. text: 'Test'
  88. }
  89. ]
  90. });
  91. assert.equal(
  92. $dropdown.find('li').length,
  93. 1,
  94. 'There should be one result in the dropdown'
  95. );
  96. $dropdown.find('li').addClass('select2-results__option--highlighted');
  97. container.trigger('close');
  98. });