UNPKG

2.04 kBPlain TextView Raw
1import { Platform } from '@unimodules/core';
2
3import ExponentMagnetometer from '../ExponentMagnetometer';
4import ExponentMagnetometerUncalibrated from '../ExponentMagnetometerUncalibrated';
5import Magnetometer from '../Magnetometer';
6import MagnetometerUncalibrated from '../MagnetometerUncalibrated';
7
8describe(
9 'Magnetometer',
10 declareMagnetometerSpecs(Magnetometer, ExponentMagnetometer, {
11 magnetometerDidUpdate: 'magnetometerDidUpdate',
12 })
13);
14
15describe(
16 'MagnetometerUncalibrated',
17 declareMagnetometerSpecs(MagnetometerUncalibrated, ExponentMagnetometerUncalibrated, {
18 magnetometerDidUpdate: 'magnetometerUncalibratedDidUpdate',
19 })
20);
21
22function declareMagnetometerSpecs(Magnetometer, NativeMagnetometer, eventNames) {
23 return () => {
24 afterEach(() => {
25 Magnetometer.removeAllListeners();
26 });
27
28 if (Platform.OS === 'ios') {
29 it(`adds an magnetometer update listener`, () => {
30 const mockListener = jest.fn();
31 const subscription = Magnetometer.addListener(mockListener);
32
33 expect(NativeMagnetometer.addListener).toHaveBeenCalledTimes(1);
34 expect(NativeMagnetometer.addListener).toHaveBeenCalledWith(
35 eventNames.magnetometerDidUpdate
36 );
37
38 subscription.remove();
39 expect(NativeMagnetometer.removeListeners).toHaveBeenCalledTimes(1);
40 expect(NativeMagnetometer.removeListeners).toHaveBeenCalledWith(1);
41 });
42
43 it(`notifies listeners`, () => {
44 const mockListener = jest.fn();
45 Magnetometer.addListener(mockListener);
46
47 const mockEvent = { x: 0.2, y: 0.1, z: 0.3 };
48 Magnetometer._nativeEmitter.emit(eventNames.magnetometerDidUpdate, mockEvent);
49 expect(mockListener).toHaveBeenCalledWith(mockEvent);
50 });
51 }
52
53 it(`sets the update interval`, async () => {
54 await Magnetometer.setUpdateInterval(1234);
55 expect(NativeMagnetometer.setUpdateInterval).toHaveBeenCalledTimes(1);
56 expect(NativeMagnetometer.setUpdateInterval).toHaveBeenCalledWith(1234);
57 });
58 };
59}