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 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x | import * as tools from 'utils/tools'; describe('addClass', () => { const divClass = 'test'; it('returns false if null or undefined is passed', () => { const nullCheck = tools.addClass(null, divClass); const undefinedCheck = tools.addClass(undefined, divClass); expect(nullCheck).toBe(false); expect(undefinedCheck).toBe(false); }); it('adds a className to an elements classList', () => { const div = document.createElement('div'); tools.addClass(div, divClass); expect(div.classList.contains(divClass)).toBe(true); }); }); describe('getChildren', () => { it('gets all immediate child nodes of a parent as a simple array', () => { const parent = document.createElement('div'); const child1 = document.createElement('div'); const child2 = document.createElement('div'); parent.appendChild(child1); parent.appendChild(child2); const children = tools.getChildren(parent); expect(children instanceof Array).toBe(true); expect(children.length).toBe(2); }); }); describe('hasClass', () => { it('confirms a class exists on a dom node', () => { const div = document.createElement('div'); div.classList.add('test'); expect(tools.hasClass(div, 'test')).toBe(true); }); it('returns false if el does not exist', () => expect(tools.hasClass(null, 'test')).toBe(false)); }); describe('removeClass', () => { const divClass = 'test'; it('returns false if null or undefined is passed', () => { const nullCheck = tools.removeClass(null, divClass); const undefinedCheck = tools.removeClass(undefined, divClass); expect(nullCheck).toBe(false); expect(undefinedCheck).toBe(false); }); it('adds a className to an elements classList', () => { const div = document.createElement('div'); div.classList.add(divClass); tools.removeClass(div, divClass); expect(div.classList.contains(divClass)).toBe(false); }); }); describe('convertElements', () => { it('converts a nodelist into a simple array', () => { const parent = document.createElement('div'); const child1 = document.createElement('div'); const child2 = document.createElement('div'); parent.appendChild(child1); parent.appendChild(child2); const nodes = parent.querySelectorAll('div'); const converted = tools.convertElements(nodes); expect(converted instanceof Array).toBe(true); expect(converted.length).toBe(2); }); }); describe('getNodes', () => { const parent = document.createElement('div'); const child1 = document.createElement('div'); const child2 = document.createElement('div'); const attributeKey = 'test-attribute'; const classKey = 'test'; child1.setAttribute('data-js', attributeKey); child1.classList.add(classKey); child2.setAttribute('data-js', attributeKey); child2.classList.add(classKey); parent.appendChild(child1); parent.appendChild(child2); it('gets a single node by attribute', () => { const node = tools.getNodes(attributeKey, false, parent)[0]; expect(node).toBeDefined(); }); it('gets multiple nodes by attribute', () => { const nodes = tools.getNodes(attributeKey, false, parent); expect(nodes).toBeDefined(); expect(nodes.length).toBe(2); }); it('gets multiple nodes by attribute and converts them to an array', () => { const nodes = tools.getNodes(attributeKey, true, parent); expect(nodes).toBeDefined(); expect(nodes.length).toBe(2); expect(nodes instanceof Array).toBe(true); }); it('gets multiple nodes by css selector string', () => { const nodes = tools.getNodes(`.${classKey}`, false, parent, true); expect(nodes).toBeDefined(); expect(nodes.length).toBe(2); }); }); describe('closest', () => { const parent = document.createElement('div'); const child = document.createElement('div'); const classKey = 'test'; parent.classList.add(classKey); parent.appendChild(child); it('gets a parent node by selector string', () => { const node = tools.closest(child, `.${classKey}`); expect(node).toBeDefined(); }); it('returns null if no match', () => { const node = tools.closest(child, '.other-test'); expect(node).toBeNull(); }); }); describe('insertAfter', () => { it('inserts an element after another one', () => { const parent = document.createElement('div'); const child1 = document.createElement('div'); const child2 = document.createElement('div'); parent.appendChild(child1); child2.classList.add('test'); tools.insertAfter(child2, child1); const nodes = parent.querySelectorAll('div'); expect(nodes[1].classList.contains('test')).toBe(true); }); }); describe('insertBefore', () => { it('inserts an element before another one', () => { const parent = document.createElement('div'); const child1 = document.createElement('div'); const child2 = document.createElement('div'); parent.appendChild(child1); child2.classList.add('test'); tools.insertBefore(child2, child1); const nodes = parent.querySelectorAll('div'); expect(nodes[0].classList.contains('test')).toBe(true); }); }); |