Files
NativeScript/packages/core/ui/transition/shared-transition.spec.ts
2023-08-11 07:09:32 -07:00

75 lines
2.2 KiB
TypeScript

import { GestureTypes } from '../gestures';
import { SharedTransition, SharedTransitionAnimationType } from './shared-transition';
describe('SharedTransition', () => {
it('custom should create a Transition instance', () => {
const transition = SharedTransition.custom(new CustomTransition());
expect(transition.instance.id).toBe(1);
});
it('custom should create a Transition with default state and options', () => {
const transition = SharedTransition.custom(new CustomTransition());
const state = SharedTransition.getState(transition.instance.id);
expect(state.activeType).toBe(SharedTransitionAnimationType.present);
expect(state.pageStart).toBeUndefined();
expect(state.pageEnd).toBeUndefined();
expect(state.pageReturn).toBeUndefined();
expect(state.interactive).toBeUndefined();
});
it('custom should create a Transition with custom options', () => {
const transition = SharedTransition.custom(new CustomTransition(), {
interactive: {
dismiss: {
finishThreshold: 0.6,
percentFormula: (args) => {
return args.deltaX - 0.2;
},
},
},
pageStart: {
x: 200,
y: 100,
spring: {
friction: 40,
},
},
pageEnd: {
x: 0,
y: 0,
},
pageReturn: {
x: -200,
y: -100,
width: 25,
},
});
const state = SharedTransition.getState(transition.instance.id);
expect(state.activeType).toBe(SharedTransitionAnimationType.present);
expect(state.interactive.dismiss.finishThreshold).toBe(0.6);
expect(state.interactive.dismiss.percentFormula({ deltaX: 0.9, deltaY: 0, state: 0, android: null, eventName: 'pan', ios: null, object: null, type: GestureTypes.pan, view: null })).toBe(0.7);
expect(state.pageStart.x).toBe(200);
expect(state.pageStart.y).toBe(100);
expect(state.pageStart.spring.friction).toBe(40);
expect(state.pageEnd.x).toBe(0);
expect(state.pageEnd.y).toBe(0);
expect(state.pageReturn.x).toBe(-200);
expect(state.pageReturn.y).toBe(-100);
expect(state.pageReturn.width).toBe(25);
});
});
class CustomTransition {
id: number;
constructor() {
this.id = 1;
}
getDuration() {
return 0.35;
}
setDuration(value: number) {}
getCurve() {}
animateIOSTransition() {}
createAndroidAnimator() {}
}