it('does not call node.getClientRects if e.clientY is nil', () => { const node = makeNode() doesNodeContainClick(node, { clientY: null }) doesNodeContainClick(node, { clientY: undefined }) node.getClientRects.should.not.have.been.called() })
it('returns false if the node left is nil', () => { const nullNode = makeNode({ left: null }) const undefNode = makeNode({ left: undefined }) doesNodeContainClick(nullNode, makeEvent()).should.equal(false) doesNodeContainClick(undefNode, makeEvent()).should.equal(false) })
it('returns false if there is no node.offsetHeight', () => { const e = makeEvent() doesNodeContainClick(makeNode(null, { offsetHeight: 0 }), e).should.equal(false) doesNodeContainClick(makeNode(null, { offsetHeight: null }), e).should.equal(false) doesNodeContainClick(makeNode(null, { offsetHeight: undefined }), e).should.equal(false) })
it('returns false if there is node.getClientRects is empty', () => { const e = makeEvent() doesNodeContainClick(makeNode(null, { getClientRects: () => [] }), e).should.equal(false) doesNodeContainClick(makeNode(null, { getClientRects: () => ({ length: 0 }) }), e).should.equal(false) doesNodeContainClick(makeNode(null, { getClientRects: () => ({ length: null }) }), e).should.equal(false) doesNodeContainClick(makeNode(null, { getClientRects: () => ({ length: undefined }) }), e).should.equal(false) })
it('returns false if the event is nil', () => { doesNodeContainClick(makeNode(), null).should.equal(false) doesNodeContainClick(makeNode(), undefined).should.equal(false) })
it('returns false if the e.clientY is nil', () => { doesNodeContainClick(makeNode(), { clientY: null }).should.equal(false) doesNodeContainClick(makeNode(), { clientY: undefined }).should.equal(false) })
it('returns false when click is outside node rect', () => { const node = makeNode({ top: 0.1, bottom: 0.9, left: 0.1, right: 0.9 }) const event = makeEvent({ clientX: 1.1, clientY: 1.1 }) doesNodeContainClick(node, event).should.equal(false) })
it('returns false if the node is nil', () => { doesNodeContainClick(null, makeEvent()).should.equal(false) doesNodeContainClick(undefined, makeEvent()).should.equal(false) })
it('returns true if clientX === node right', () => { doesNodeContainClick(makeNode({ left: 1, right: 3 }), makeEvent({ clientX: 3 })).should.equal(true) })
it('returns true when click is inside node rect', () => { const node = makeNode({ top: 0.1, bottom: 0.9, left: 0.1, right: 0.9 }) const event = makeEvent({ clientX: 0.5, clientY: 0.5 }) doesNodeContainClick(node, event).should.equal(true) })
it('returns true if clientY === node bottom', () => { doesNodeContainClick(makeNode({ top: 1, bottom: 3 }), makeEvent({ clientY: 3 })).should.equal(true) })
it('returns false if clientX > node right', () => { doesNodeContainClick(makeNode({ right: 0 }), makeEvent({ clientX: 1 })).should.equal(false) })
it('returns false if clientX < node left', () => { doesNodeContainClick(makeNode({ left: 1 }), makeEvent({ clientX: 0 })).should.equal(false) })
it('returns false if clientY > node bottom', () => { doesNodeContainClick(makeNode({ bottom: 0 }), makeEvent({ clientY: 1 })).should.equal(false) })
it('returns false if clientY < node top', () => { doesNodeContainClick(makeNode({ top: 1 }), makeEvent({ clientY: 0 })).should.equal(false) })