describe('tests from angular.js jqLite', function() { var jqLite; var a, b, c; beforeEach(function() { jqLite = angular.element; a = jqLite('
A
')[0]; b = jqLite('
B
')[0]; c = jqLite('
C
')[0]; }); describe('class', function() { // classList changes do not support svg elements! /* it('should properly do with SVG elements', function() { // this is a jqLite & SVG only test if (!window.SVGElement) return; var svg = jqLite(''); var rect = svg.children(); expect(rect.hasClass('foo-class')).toBe(false); rect.addClass('foo-class'); expect(rect.hasClass('foo-class')).toBe(true); rect.removeClass('foo-class'); expect(rect.hasClass('foo-class')).toBe(false); }); */ it('should ignore comment elements', function() { var comment = jqLite(document.createComment('something')); comment.addClass('whatever'); comment.hasClass('whatever'); comment.toggleClass('whatever'); comment.removeClass('whatever'); }); describe('hasClass', function() { it('should check class', function() { var selector = jqLite([a, b]); expect(selector.hasClass('abc')).toEqual(false); }); it('should make sure that partial class is not checked as a subset', function() { var selector = jqLite([a, b]); selector.addClass('a'); selector.addClass('b'); selector.addClass('c'); expect(selector.addClass('abc')).toEqual(selector); expect(selector.removeClass('abc')).toEqual(selector); expect(jqLite(a).hasClass('abc')).toEqual(false); expect(jqLite(b).hasClass('abc')).toEqual(false); expect(jqLite(a).hasClass('a')).toEqual(true); expect(jqLite(a).hasClass('b')).toEqual(true); expect(jqLite(a).hasClass('c')).toEqual(true); }); }); describe('addClass', function() { it('should allow adding of class', function() { var selector = jqLite([a, b]); expect(selector.addClass('abc')).toEqual(selector); expect(jqLite(a).hasClass('abc')).toEqual(true); expect(jqLite(b).hasClass('abc')).toEqual(true); }); it('should ignore falsy values', function() { var jqA = jqLite(a); expect(jqA[0].className).toBe(''); jqA.addClass(undefined); expect(jqA[0].className).toBe(''); jqA.addClass(null); expect(jqA[0].className).toBe(''); jqA.addClass(false); expect(jqA[0].className).toBe(''); }); it('should allow multiple classes to be added in a single string', function() { var jqA = jqLite(a); expect(a.className).toBe(''); jqA.addClass('foo bar baz'); expect(a.className).toBe('foo bar baz'); }); it('should not add duplicate classes', function() { var jqA = jqLite(a); expect(a.className).toBe(''); a.className = 'foo'; jqA.addClass('foo'); expect(a.className).toBe('foo'); jqA.addClass('bar foo baz'); expect(a.className).toBe('foo bar baz'); }); }); describe('toggleClass', function() { it('should allow toggling of class', function() { var selector = jqLite([a, b]); expect(selector.toggleClass('abc')).toEqual(selector); expect(jqLite(a).hasClass('abc')).toEqual(true); expect(jqLite(b).hasClass('abc')).toEqual(true); expect(selector.toggleClass('abc')).toEqual(selector); expect(jqLite(a).hasClass('abc')).toEqual(false); expect(jqLite(b).hasClass('abc')).toEqual(false); expect(selector.toggleClass('abc'), true).toEqual(selector); expect(jqLite(a).hasClass('abc')).toEqual(true); expect(jqLite(b).hasClass('abc')).toEqual(true); expect(selector.toggleClass('abc'), false).toEqual(selector); expect(jqLite(a).hasClass('abc')).toEqual(false); expect(jqLite(b).hasClass('abc')).toEqual(false); }); }); describe('removeClass', function() { it('should allow removal of class', function() { var selector = jqLite([a, b]); expect(selector.addClass('abc')).toEqual(selector); expect(selector.removeClass('abc')).toEqual(selector); expect(jqLite(a).hasClass('abc')).toEqual(false); expect(jqLite(b).hasClass('abc')).toEqual(false); }); it('should correctly remove middle class', function() { var element = jqLite('
'); expect(element.hasClass('bar')).toBe(true); element.removeClass('bar'); expect(element.hasClass('foo')).toBe(true); expect(element.hasClass('bar')).toBe(false); expect(element.hasClass('baz')).toBe(true); }); it('should remove multiple classes specified as one string', function() { var jqA = jqLite(a); a.className = 'foo bar baz'; jqA.removeClass('foo baz noexistent'); expect(a.className).toBe('bar'); }); }); }); });