describe( 'Entwine', function() { beforeEach(function() { $.entwine.warningLevel = $.entwine.WARN_LEVEL_BESTPRACTISE; $('body').append('
'); }); afterEach(function() { $('#dom_test').remove(); }); describe( 'Basics', function() { beforeEach(function() { $.entwine.clear_all_rules(); $('#dom_test').html('
'); }); it( 'can attach and call a base function', function() { $('#a').entwine({ foo: function(){return this.attr('id');} }); expect($('.a').foo()).toEqual('a'); }); it( 'can attach and call a base function on a selector using a data attribute selection', function() { $('[data-fieldtype=foo]').entwine({ foo: function(){return this.attr('id');} }); expect($('.a').foo()).toEqual('a') ; }); it( 'can attach and call several base functions', function() { $('#a').entwine({ foo: function(){return 'foo_' + this.attr('id');}, bar: function(){return 'bar_' + this.attr('id');} }); expect($('.a').foo()).toEqual( 'foo_a'); expect($('.a').bar()).toEqual( 'bar_a'); }); it( 'can attach and call a namespaced function', function() { $.entwine('bar', function($){ $('#a').entwine({ foo: function(){return this.attr('id');} }); }); expect($('.a').entwine('bar').foo()).toEqual( 'a'); }); it( 'can attach and call a nested namespaced function', function() { $.entwine('qux.baz.bar', function($){ $('#a').entwine({ foo: function(){return this.attr('id');} }); }); expect($('.a').entwine('qux.baz.bar').foo()).toEqual( 'a'); }); it( 'can call two functions on two elements', function() { var res = [] $('#a').entwine({ foo: function(){res.push(this.attr('id'));} }); $('#b.c').entwine({ foo: function(){res.push(this.attr('id'));} }); $('#dom_test div').foo(); expect(res).toEqual( ['b', 'a']); }); it( 'can call two namespaced functions on two elements', function() { var res = [] $.entwine('bar', function($){ $('#a').entwine({ foo: function(){res.push(this.attr('id'));} }); $('#b.c').entwine({ foo: function(){res.push(this.attr('id'));} }); }); $('#dom_test div').entwine('bar').foo(); expect(res).toEqual( ['b', 'a']); }); }); });