Repository navigation
Expand file tree
/
Copy pathAccessibilityInfo-contrastLevelChanged-test.js
More file actions
74 lines (63 loc) · 2.36 KB
/
Copy pathAccessibilityInfo-contrastLevelChanged-test.js
File metadata and controls
74 lines (63 loc) · 2.36 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @flow strict-local
* @format
*/
import typeof RCTDeviceEventEmitterType from '../../../EventEmitter/RCTDeviceEventEmitter';
import typeof AccessibilityInfoType from '../AccessibilityInfo';
const invariant = require('invariant');
jest.unmock('../AccessibilityInfo');
type LoadedModules = {
AccessibilityInfo: AccessibilityInfoType,
RCTDeviceEventEmitter: RCTDeviceEventEmitterType,
};
// `AccessibilityInfo` picks its native event names when it is first loaded,
// so each platform needs a fresh module registry.
function loadForPlatform(os: 'android' | 'ios'): LoadedModules {
let modules: ?LoadedModules = null;
jest.isolateModules(() => {
const Platform = require('../../../Utilities/Platform').default;
/* $FlowFixMe[incompatible-type] */
Platform.OS = os;
modules = {
AccessibilityInfo: require('../AccessibilityInfo').default,
RCTDeviceEventEmitter:
require('../../../EventEmitter/RCTDeviceEventEmitter').default,
};
});
invariant(modules != null, 'Expected modules to load');
return modules;
}
describe('AccessibilityInfo contrastLevelChanged', () => {
it('delivers contrastLevelDidChange as contrastLevelChanged on Android', () => {
const {AccessibilityInfo, RCTDeviceEventEmitter} =
loadForPlatform('android');
const handler = jest.fn();
const subscription = AccessibilityInfo.addEventListener(
'contrastLevelChanged',
handler,
);
RCTDeviceEventEmitter.emit('contrastLevelDidChange', 0.5);
RCTDeviceEventEmitter.emit('contrastLevelDidChange', -0.25);
subscription.remove();
RCTDeviceEventEmitter.emit('contrastLevelDidChange', 1);
expect(handler).toHaveBeenCalledTimes(2);
expect(handler).toHaveBeenNthCalledWith(1, 0.5);
expect(handler).toHaveBeenNthCalledWith(2, -0.25);
});
it('does not subscribe on iOS', () => {
const {AccessibilityInfo, RCTDeviceEventEmitter} = loadForPlatform('ios');
const handler = jest.fn();
const subscription = AccessibilityInfo.addEventListener(
'contrastLevelChanged',
handler,
);
RCTDeviceEventEmitter.emit('contrastLevelDidChange', 0.5);
subscription.remove();
expect(handler).not.toHaveBeenCalled();
});
});