73 lines
1.9 KiB
TypeScript
73 lines
1.9 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
|
|
import { shouldEnableKeyboardAdaptation } from "../environment";
|
|
import type { KeyboardAdaptEnvironment } from "../types";
|
|
|
|
function makeEnvironment(
|
|
overrides: Partial<KeyboardAdaptEnvironment> = {},
|
|
): KeyboardAdaptEnvironment {
|
|
return {
|
|
platform: "android",
|
|
osName: "Android",
|
|
osVersion: "16",
|
|
deviceVendor: "Xiaomi",
|
|
deviceModel: "2211133C",
|
|
isAndroid: true,
|
|
isIOS: false,
|
|
isMobile: true,
|
|
browserName: "Facebook",
|
|
browserVersion: "566.0.0.48.73",
|
|
isInAppBrowser: true,
|
|
inAppBrowserName: "facebook",
|
|
isXiaomiFamilyDevice: true,
|
|
isFacebookInAppBrowser: true,
|
|
hasVisualViewport: true,
|
|
usesXiaomiFacebookFallback: true,
|
|
...overrides,
|
|
};
|
|
}
|
|
|
|
describe("shouldEnableKeyboardAdaptation", () => {
|
|
it("enables only for Xiaomi Android Facebook in-app browser fallback", () => {
|
|
expect(shouldEnableKeyboardAdaptation(makeEnvironment())).toBe(true);
|
|
|
|
expect(
|
|
shouldEnableKeyboardAdaptation(
|
|
makeEnvironment({
|
|
platform: "ios",
|
|
osName: "iOS",
|
|
osVersion: "18",
|
|
deviceVendor: "Apple",
|
|
deviceModel: "iPhone",
|
|
isAndroid: false,
|
|
isIOS: true,
|
|
isXiaomiFamilyDevice: false,
|
|
usesXiaomiFacebookFallback: false,
|
|
}),
|
|
),
|
|
).toBe(false);
|
|
|
|
expect(
|
|
shouldEnableKeyboardAdaptation(
|
|
makeEnvironment({
|
|
browserName: "Instagram",
|
|
inAppBrowserName: "instagram",
|
|
isFacebookInAppBrowser: false,
|
|
usesXiaomiFacebookFallback: false,
|
|
}),
|
|
),
|
|
).toBe(false);
|
|
|
|
expect(
|
|
shouldEnableKeyboardAdaptation(
|
|
makeEnvironment({
|
|
deviceVendor: "Samsung",
|
|
deviceModel: "SM-G991B",
|
|
isXiaomiFamilyDevice: false,
|
|
usesXiaomiFacebookFallback: false,
|
|
}),
|
|
),
|
|
).toBe(false);
|
|
});
|
|
});
|