positioning-tests.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. module('Dropdown - attachBody - positioning');
  2. test('appends to the dropdown parent', function (assert) {
  3. expect(4);
  4. var $ = require('jquery');
  5. var $select = $('<select></select>');
  6. var $parent = $('<div></div>');
  7. var $container = $('<span></span>');
  8. var container = new MockContainer();
  9. $parent.appendTo($('#qunit-fixture'));
  10. $select.appendTo($parent);
  11. var Utils = require('select2/utils');
  12. var Options = require('select2/options');
  13. var Dropdown = require('select2/dropdown');
  14. var AttachBody = require('select2/dropdown/attachBody');
  15. var DropdownAdapter = Utils.Decorate(Dropdown, AttachBody);
  16. var dropdown = new DropdownAdapter($select, new Options({
  17. dropdownParent: $parent
  18. }));
  19. assert.equal(
  20. $parent.children().length,
  21. 1,
  22. 'Only the select should be in the container'
  23. );
  24. var $dropdown = dropdown.render();
  25. dropdown.bind(container, $container);
  26. dropdown.position($dropdown, $container);
  27. assert.equal(
  28. $parent.children().length,
  29. 1,
  30. 'The dropdown should not be placed until after it is opened'
  31. );
  32. dropdown._showDropdown();
  33. assert.equal(
  34. $parent.children().length,
  35. 2,
  36. 'The dropdown should now be in the container as well'
  37. );
  38. assert.ok(
  39. $.contains($parent[0], $dropdown[0]),
  40. 'The dropdown should be contained within the parent container'
  41. );
  42. });