Skip to content

Commit

Permalink
chore: add swipe.cy.ts
Browse files Browse the repository at this point in the history
  • Loading branch information
splincode committed Feb 1, 2024
1 parent 05eb2cd commit e64f73e
Show file tree
Hide file tree
Showing 2 changed files with 95 additions and 97 deletions.
97 changes: 0 additions & 97 deletions projects/cdk/directives/swipe/test/swipe.directive.spec.ts

This file was deleted.

95 changes: 95 additions & 0 deletions projects/demo-cypress/src/tests/swipe.cy.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
import {Component} from '@angular/core';
import {TuiSwipe, TuiSwipeModule} from '@taiga-ui/cdk';
import {TuiRootModule} from '@taiga-ui/core';

describe('TuiSwipe', () => {
let component: TestComponent;

@Component({
template: `
<tui-root>
<section (tuiSwipe)="onSwipe($event)"></section>
</tui-root>
`,
})
class TestComponent {
swiped = '';

onSwipe(swipe: TuiSwipe): void {
this.swiped = swipe.direction;
}
}

beforeEach(() =>
cy
.mount(TestComponent, {
imports: [TuiRootModule, TuiSwipeModule],
})
.then(wrapper => {
component = wrapper.component;
}),
);

it('emits events bottom', () => {
cy.get('section')
.then(query => {
const element = query.get(0);

sendTouchEvent(0, 0, element, 'touchstart', 1);
sendTouchEvent(0, 100, element, 'touchend', 1);
})
.then(() => expect(component.swiped).to.eql('bottom'));
});

it('emits events right', () => {
cy.get('section')
.then(query => {
const element = query.get(0);

sendTouchEvent(0, 0, element, 'touchstart', 1);
sendTouchEvent(100, 0, element, 'touchend', 1);
})
.then(() => expect(component.swiped).to.eql('right'));
});

it('does not emit events due to threshold', () => {
cy.get('section')
.then(query => {
const element = query.get(0);

sendTouchEvent(0, 0, element, 'touchstart', 1);
sendTouchEvent(0, 20, element, 'touchend', 1);
})
.then(() => expect(component.swiped).to.eql(''));
});
});

function sendTouchEvent(
x: number,
y: number,
element: HTMLElement,
eventType: 'touchend' | 'touchstart',
identifier: number,
): void {
const touchObj = new Touch({
identifier,
target: element,
clientX: x,
clientY: y,
radiusX: 2.5,
radiusY: 2.5,
rotationAngle: 10,
force: 0.5,
});

const touchEvent = new TouchEvent(eventType, {
cancelable: true,
bubbles: true,
touches: [touchObj],
targetTouches: [],
changedTouches: [touchObj],
shiftKey: true,
});

element.dispatchEvent(touchEvent);
}

0 comments on commit e64f73e

Please sign in to comment.