123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218 |
- function moduleTests(ui) {
- var
- module = ui.module,
- element = ui.element,
- singleton = ui.singleton,
- name = $.fn[module].settings.name,
- testValue = 'Test',
- fixtures = jasmine.getFixtures(),
- originalSettings,
- $modules,
- $oneModule,
- $module,
- $clone
- ;
- // set fixture path
- fixtures.fixturesPath = 'base/test/fixtures/';
- // disable debug
- $.fn[module].settings.debug = false;
- $.fn[module].settings.performance = false;
- $.fn[module].settings.verbose = false;
- beforeEach(function() {
- // load fixtures
- fixtures.load(module + '.html');
- // save settings
- originalSettings = $.fn[module].settings;
- // module available in scope
- $module = $(element);
- // one module available in fixture
- if($module.size() == 1) {
- $oneModule = $module;
- $clone = $module.clone().appendTo( $(sandbox()) );
- $modules = $clone.add($module);
- }
- // multiple modules available in fixture
- else {
- $modules = $(element);
- $clone = $module.eq(1);
- $oneModule = $modules.first();
- }
- });
- afterEach(function() {
- // restore settings
- $.fn[module].settings = originalSettings;
- // remove element
- $(element).remove();
- });
- /*******************************
- Module
- *******************************/
- /*-------------------
- Instantiation
- --------------------*/
- describe('Module', function() {
- it("allows chaining when no settings returned", function() {
- var $chain = $modules[module]();
- expect($chain).toExist();
- expect($chain.size()).toBe($modules.size());
- });
- it("returns a string when one setting returned", function() {
- var result = $oneModule[module]('setting', 'name');
- expect(typeof result).toBe('string');
- });
- it("returns an array when multiple settings returned", function() {
- var result = $modules[module]('setting', 'name');
- expect( $.isArray(result) ).toBeTruthy();
- });
- it("has an instance in metadata after init", function() {
- $oneModule[module]();
- expect($module).toHaveData('module-' + module);
- });
- });
- /*-------------------
- Settings
- --------------------*/
- describe('Settings', function() {
- it("clears settings on re-init", function() {
- $oneModule[module]({
- name: testValue
- });
- var retrievedValue = $oneModule[module]('setting', 'name');
- expect(retrievedValue).toBe(testValue);
- // reinit
- $oneModule[module]();
- retrievedValue = $oneModule[module]('setting', 'name');
- expect(retrievedValue).toBe(name);
- });
- it("allows default settings to be changed", function() {
- $.fn[module].settings.name = testValue;
- $oneModule[module]();
- var retrievedValue = $oneModule[module]('setting', 'name');
- $.fn[module].settings.name = name;
- expect(retrievedValue).toBe(testValue);
- });
- it("allows settings to be changed during init", function() {
- $oneModule[module]({
- name: testValue
- });
- var retrievedValue = $oneModule[module]('setting', 'name');
- expect(retrievedValue).toBe(testValue);
- });
- it("allows settings to be changed during runtime", function() {
- $oneModule[module]();
- var retrievedValue = $oneModule[module]('setting', 'name');
- expect(retrievedValue).toBe(name);
- });
- });
- /*-------------------
- Groups
- --------------------*/
- if(!singleton) {
- describe('Group Contamination', function() {
- it("creates settings for all instances", function() {
- $modules[module]('setting', 'name', testValue);
- var retrievedValue = $oneModule[module]('setting', 'name');
- var clonedSetting = $clone[module]('setting', 'name');
- expect(retrievedValue).toBe(testValue);
- expect(clonedSetting).toBe(testValue);
- $oneModule[module]({
- 'name': testValue
- });
- expect(retrievedValue).toBe(testValue);
- expect(clonedSetting).toBe(testValue);
- });
- it("does not change other elements settings when changing one element", function() {
- $modules[module]();
- $oneModule[module]('setting', 'name', testValue);
- var retrievedValue = $oneModule[module]('setting', 'name');
- var clonedSetting = $clone[module]('setting', 'name');
- expect(retrievedValue).toBe(testValue);
- expect(clonedSetting).toBe(name);
- });
- it("does not change other elements when re-initialized", function() {
- $modules[module]();
- $oneModule[module]({
- 'name': testValue
- });
- var retrievedValue = $oneModule[module]('setting', 'name');
- var clonedSetting = $clone[module]('setting', 'name');
- expect(retrievedValue).toBe(testValue);
- expect(clonedSetting).toBe(name);
- });
- });
- }
- /*-------------------
- Destroy
- --------------------*/
- describe('Destroy', function() {
- it("removes all events from page", function() {
- $module[module]('destroy');
- if($.events().length > 0) {
- dump($.events());
- }
- expect($.events().length).toBe(0);
- });
- it("removes instance metadata", function() {
- $module[module]('destroy');
- expect( $module.data('module-'+ module) ).toBe(undefined);
- });
- });
- }
|