import * as React from "react"; import { SearchkitManager, FastClick } from "../../../" import {mount} from "enzyme"; describe("FastClick", ()=> { beforeEach(()=> { this.handler = jasmine.createSpy("fastclick handler") this.wrapper = mount( ) }) it("should render children", ()=> { expect(this.wrapper.html()) .toEqual("") }) it("test mousedown", ()=> { this.wrapper.simulate("mouseDown", {button:1}) expect(this.handler).not.toHaveBeenCalled() this.wrapper.simulate("mouseDown", {button:0}) expect(this.handler).toHaveBeenCalled() }) describe("Touch events", ()=> { beforeEach(()=> { this.fastClick = this.wrapper.node this.simulateTouch = (event, x, y)=> { this.wrapper.simulate(event, { changedTouches:[ {pageX:x, pageY:y} ] }) } this.simulateTouch("touchStart", 10, 20) expect(this.fastClick.supportsTouch).toBe(true) expect(this.fastClick.startPoint).toEqual({ x:10, y:20 }) }) it("test touch above threshold", ()=> { this.simulateTouch("touchEnd", 30, 40) expect(this.handler).not.toHaveBeenCalled() expect(this.fastClick.startPoint).toBe(undefined) //ignore mousedowns if supports touch this.wrapper.simulate("mouseDown", {button:0}) expect(this.handler).not.toHaveBeenCalled() }) it("test touch within threshold", ()=> { this.simulateTouch("touchEnd", 29, 39) expect(this.handler).toHaveBeenCalled() expect(this.fastClick.startPoint).toBe(undefined) }) it("ignore multiple touch", ()=> { this.wrapper.simulate("touchStart", { changedTouches:[ {pageX:1,pageY:2}, {pageX:10,pageY:22} ] }) expect(this.fastClick.startPoint).toBe(null) }) it("prevents default click behaviour", ()=> { let event = { preventDefault:jasmine.createSpy("preventDefault") } this.wrapper.simulate("click", event) expect(event.preventDefault).toHaveBeenCalled() }) }) })