73 lines
2.3 KiB
TypeScript
73 lines
2.3 KiB
TypeScript
import { describe, expect, it } from 'bun:test';
|
|
|
|
import {
|
|
IOS_NAVIGATION_EDGE_WIDTH,
|
|
MOBILE_SIDEBAR_EDGE_WIDTH,
|
|
canStartSidebarOpenSwipe,
|
|
getSidebarSwipeMode,
|
|
isAppleMobileTouchNavigator,
|
|
} from '~/utils/sidebarSwipe';
|
|
|
|
describe('sidebarSwipe', () => {
|
|
it('detect_apple_touch', () => {
|
|
expect(
|
|
isAppleMobileTouchNavigator({
|
|
userAgent:
|
|
'Mozilla/5.0 (iPhone; CPU iPhone OS 18_4 like Mac OS X) AppleWebKit/605.1.15 Version/18.4 Mobile/15E148 Safari/604.1',
|
|
platform: 'iPhone',
|
|
maxTouchPoints: 5,
|
|
}),
|
|
).toBe(true);
|
|
|
|
expect(
|
|
isAppleMobileTouchNavigator({
|
|
userAgent:
|
|
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15) AppleWebKit/605.1.15 Version/18.4 Mobile/15E148 Safari/604.1',
|
|
platform: 'MacIntel',
|
|
maxTouchPoints: 5,
|
|
}),
|
|
).toBe(true);
|
|
|
|
expect(
|
|
isAppleMobileTouchNavigator({
|
|
userAgent:
|
|
'Mozilla/5.0 (Linux; Android 15) AppleWebKit/537.36 Chrome/147.0.0.0 Mobile Safari/537.36',
|
|
platform: 'Linux armv8l',
|
|
maxTouchPoints: 5,
|
|
}),
|
|
).toBe(false);
|
|
});
|
|
|
|
it('reserve_ios_edge', () => {
|
|
const nav = {
|
|
userAgent:
|
|
'Mozilla/5.0 (iPhone; CPU iPhone OS 18_4 like Mac OS X) AppleWebKit/605.1.15 Version/18.4 Mobile/15E148 Safari/604.1',
|
|
platform: 'iPhone',
|
|
maxTouchPoints: 5,
|
|
};
|
|
|
|
expect(canStartSidebarOpenSwipe(IOS_NAVIGATION_EDGE_WIDTH, nav)).toBe(false);
|
|
expect(canStartSidebarOpenSwipe(IOS_NAVIGATION_EDGE_WIDTH + 1, nav)).toBe(true);
|
|
expect(canStartSidebarOpenSwipe(IOS_NAVIGATION_EDGE_WIDTH + MOBILE_SIDEBAR_EDGE_WIDTH, nav)).toBe(true);
|
|
expect(canStartSidebarOpenSwipe(IOS_NAVIGATION_EDGE_WIDTH + MOBILE_SIDEBAR_EDGE_WIDTH + 1, nav)).toBe(
|
|
false,
|
|
);
|
|
});
|
|
|
|
it('keep_default_edge', () => {
|
|
const nav = {
|
|
userAgent:
|
|
'Mozilla/5.0 (Linux; Android 15) AppleWebKit/537.36 Chrome/147.0.0.0 Mobile Safari/537.36',
|
|
platform: 'Linux armv8l',
|
|
maxTouchPoints: 5,
|
|
};
|
|
|
|
expect(canStartSidebarOpenSwipe(1, nav)).toBe(true);
|
|
expect(canStartSidebarOpenSwipe(MOBILE_SIDEBAR_EDGE_WIDTH, nav)).toBe(true);
|
|
expect(canStartSidebarOpenSwipe(MOBILE_SIDEBAR_EDGE_WIDTH + 1, nav)).toBe(false);
|
|
});
|
|
|
|
it('return_close', () => {
|
|
expect(getSidebarSwipeMode(true, 4)).toBe('close');
|
|
});
|
|
});
|