You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

151 lines
3.8 KiB

  1. describe("UI Modal", function() {
  2. var
  3. module = 'modal',
  4. testValue = 'Test',
  5. name = module.charAt(0).toUpperCase() + module.slice(1),
  6. fixtures = jasmine.getFixtures(),
  7. $module
  8. ;
  9. fixtures.fixturesPath = 'base/test/fixtures/';
  10. beforeEach(function() {
  11. // load fixtures
  12. fixtures.load(module + '.html');
  13. // disable debug
  14. $.fn[module].debug = false;
  15. // module available in scope
  16. $module = $('.ui.'+ module);
  17. });
  18. afterEach(function() {
  19. $('.ui.'+ module).remove();
  20. });
  21. /*******************************
  22. Module
  23. *******************************/
  24. /*-------------------
  25. Instantiation
  26. --------------------*/
  27. it("should have an instance in metadata after init", function() {
  28. $module[module]();
  29. expect($module).toHaveData('module-' + module);
  30. });
  31. /*-------------------
  32. Settings
  33. --------------------*/
  34. describe('Settings', function() {
  35. it("should allow default settings to be changed", function() {
  36. $.fn[module].settings.name = testValue;
  37. $module[module]();
  38. var retrievedValue = $module[module]('setting', 'name');
  39. $.fn[module].settings.name = name;
  40. expect(retrievedValue).toBe(testValue);
  41. });
  42. it("should allow settings to be changed during init", function() {
  43. $module[module]({
  44. name: testValue
  45. });
  46. var retrievedValue = $module[module]('setting', 'name');
  47. expect(retrievedValue).toBe(testValue);
  48. });
  49. it("should allow settings to be changed during runtime", function() {
  50. $module[module]();
  51. var retrievedValue = $module[module]('setting', 'name');
  52. expect(retrievedValue).toBe(name);
  53. });
  54. });
  55. /*-------------------
  56. Groups
  57. --------------------*/
  58. describe('Group Contamination', function() {
  59. it("should create settings for all instances", function() {
  60. $moduleClone = $module.clone().appendTo( $(sandbox() ));
  61. $modules = $moduleClone.add($module);
  62. $modules[module]('setting', 'name', testValue);
  63. var retrievedValue = $module[module]('setting', 'name');
  64. var clonedSetting = $moduleClone[module]('setting', 'name');
  65. expect(retrievedValue).toBe(testValue);
  66. expect(clonedSetting).toBe(testValue);
  67. $modules[module]({
  68. 'name': testValue
  69. });
  70. expect(retrievedValue).toBe(testValue);
  71. expect(clonedSetting).toBe(testValue);
  72. });
  73. it("should not change other elements settings when changing one element", function() {
  74. $moduleClone = $module.clone().appendTo( $(sandbox() ));
  75. $modules = $moduleClone.add($module);
  76. $modules[module]();
  77. $module[module]('setting', 'name', testValue);
  78. var retrievedValue = $module[module]('setting', 'name');
  79. var clonedSetting = $moduleClone[module]('setting', 'name');
  80. expect(retrievedValue).toBe(testValue);
  81. expect(clonedSetting).toBe(name);
  82. });
  83. it("should not change other elements when re-initalized", function() {
  84. $moduleClone = $module.clone().appendTo( $(sandbox() ));
  85. $modules = $moduleClone.add($module);
  86. $modules[module]();
  87. $module[module]({
  88. 'name': testValue
  89. });
  90. var retrievedValue = $module[module]('setting', 'name');
  91. var clonedSetting = $moduleClone[module]('setting', 'name');
  92. expect(retrievedValue).toBe(testValue);
  93. expect(clonedSetting).toBe(name);
  94. });
  95. });
  96. /*-------------------
  97. Destroy
  98. --------------------*/
  99. describe('Destroy', function() {
  100. it("destroy should remove all events from page", function() {
  101. $module[module]('destroy');
  102. expect($.events().length).toBe(0);
  103. });
  104. it("destroy should remove instance metadata", function() {
  105. $module[module]('destroy');
  106. expect( $module.data('module-'+ module) ).toBe(undefined);
  107. });
  108. });
  109. });