1 | import { Platform } from '@unimodules/core';
|
2 |
|
3 | import ExponentMagnetometer from '../ExponentMagnetometer';
|
4 | import ExponentMagnetometerUncalibrated from '../ExponentMagnetometerUncalibrated';
|
5 | import Magnetometer from '../Magnetometer';
|
6 | import MagnetometerUncalibrated from '../MagnetometerUncalibrated';
|
7 |
|
8 | describe(
|
9 | 'Magnetometer',
|
10 | declareMagnetometerSpecs(Magnetometer, ExponentMagnetometer, {
|
11 | magnetometerDidUpdate: 'magnetometerDidUpdate',
|
12 | })
|
13 | );
|
14 |
|
15 | describe(
|
16 | 'MagnetometerUncalibrated',
|
17 | declareMagnetometerSpecs(MagnetometerUncalibrated, ExponentMagnetometerUncalibrated, {
|
18 | magnetometerDidUpdate: 'magnetometerUncalibratedDidUpdate',
|
19 | })
|
20 | );
|
21 |
|
22 | function 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 | }
|