# Code coverage report for ./suites/dom/DomUtilSpec.js

## Statements: 100% (55 / 55) Branches: 100% (0 / 0) Functions: 100% (13 / 13) Lines: 100% (55 / 55)

All files » ./suites/dom/ » DomUtilSpec.js

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    901
    1

    1
    6
    6
    6
    6

    1
    6

    1
    1
    1
    1

    1
    1

    1
    1
    1
    1
    1
    1
    1

    1
    1
    1

    1
    1

    1
    1
    1

    1
    1
    1

    1
    1
    1

    1
    1
    1
    1

    1
    1
    1
    1
    1
    1
    1
    1
    1

    1
    1

    1

    1

    1

    1

     describe('DomUtil', function() {
    	var el;

    	beforeEach(function() {
    		el = document.createElement('div');
    		el.style.position = 'absolute';
    		el.style.top = el.style.left = '-10000px';
    		document.body.appendChild(el);
    	});

    	afterEach(function() {
    		document.body.removeChild(el);
    	});

    	describe('#get', function() {
    		it('gets element by id if the given argument is string', function() {
    			el.id = 'testId';
    			expect(L.DomUtil.get(el.id)).to.eql(el);
    		});

    		it('returns the element if it is given as an argument', function() {
    			expect(L.DomUtil.get(el)).to.eql(el);
    		});
    	});

    	describe('#addClass, #removeClass, #hasClass', function() {
    		it('has defined class for test element', function() {
    			el.className = 'bar foo baz ';
    			expect(L.DomUtil.hasClass(el, 'foo')).to.be.ok();
    			expect(L.DomUtil.hasClass(el, 'bar')).to.be.ok();
    			expect(L.DomUtil.hasClass(el, 'baz')).to.be.ok();
    			expect(L.DomUtil.hasClass(el, 'boo')).to.not.be.ok();
    		});

    		it('adds or removes the class', function() {
    			el.className = '';
    			L.DomUtil.addClass(el, 'foo');

    			expect(el.className).to.eql('foo');
    			expect(L.DomUtil.hasClass(el, 'foo')).to.be.ok();

    			L.DomUtil.addClass(el, 'bar');
    			expect(el.className).to.eql('foo bar');
    			expect(L.DomUtil.hasClass(el, 'foo')).to.be.ok();

    			L.DomUtil.removeClass(el, 'foo');
    			expect(el.className).to.eql('bar');
    			expect(L.DomUtil.hasClass(el, 'foo')).to.not.be.ok();

    			el.className = 'foo bar barz';
    			L.DomUtil.removeClass(el, 'bar');
    			expect(el.className).to.eql('foo barz');
    		});
    	});

    	describe('#documentIsLtr', function () {
    		it('returns true if doc direction is ltr', function () {
    			expect(L.DomUtil.documentIsLtr()).to.eql(true);
    			expect(L.DomUtil.documentIsLtr()).to.eql(true); // cached
    		});
    	});

    	describe('#getViewportOffset', function () {
    		it('calculates the viewport offset of an element', function () {
    			var div = document.createElement('div');
    			div.style.position = 'absolute';
    			div.style.top = '100px';
    			div.style.left = '200px';
    			div.style.border = '10px solid black';
    			div.style.padding = '50px';
    			div.style.visibility = 'hidden';

    			var div2 = document.createElement('div');
    			div.style.marginTop = '100px';

    			div.appendChild(div2);

    			document.body.appendChild(div);

    			expect(L.DomUtil.getViewportOffset(div2)).to.eql(new L.Point(260, 260));

    			document.body.removeChild(div);
    		});
    	});

    	// describe('#setPosition', noSpecs);

    	// describe('#getStyle', noSpecs);
    });