node-switchbot 2.5.0-beta.30 → 2.5.0-beta.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/BLE.md +10 -10
  2. package/OpenAPI.md +6 -6
  3. package/dist/advertising.d.ts +3 -3
  4. package/dist/advertising.d.ts.map +1 -1
  5. package/dist/advertising.js +25 -26
  6. package/dist/advertising.js.map +1 -1
  7. package/dist/device/woblindtilt.d.ts +3 -2
  8. package/dist/device/woblindtilt.d.ts.map +1 -1
  9. package/dist/device/woblindtilt.js +3 -7
  10. package/dist/device/woblindtilt.js.map +1 -1
  11. package/dist/device/wobulb.d.ts +3 -2
  12. package/dist/device/wobulb.d.ts.map +1 -1
  13. package/dist/device/wobulb.js +4 -8
  14. package/dist/device/wobulb.js.map +1 -1
  15. package/dist/device/woceilinglight.d.ts +4 -4
  16. package/dist/device/woceilinglight.d.ts.map +1 -1
  17. package/dist/device/woceilinglight.js +5 -10
  18. package/dist/device/woceilinglight.js.map +1 -1
  19. package/dist/device/wocontact.d.ts +3 -2
  20. package/dist/device/wocontact.d.ts.map +1 -1
  21. package/dist/device/wocontact.js +3 -3
  22. package/dist/device/wocontact.js.map +1 -1
  23. package/dist/device/wocurtain.d.ts +3 -2
  24. package/dist/device/wocurtain.d.ts.map +1 -1
  25. package/dist/device/wocurtain.js +3 -7
  26. package/dist/device/wocurtain.js.map +1 -1
  27. package/dist/device/wohand.d.ts +3 -2
  28. package/dist/device/wohand.d.ts.map +1 -1
  29. package/dist/device/wohand.js +3 -7
  30. package/dist/device/wohand.js.map +1 -1
  31. package/dist/device/wohub2.d.ts +3 -2
  32. package/dist/device/wohub2.d.ts.map +1 -1
  33. package/dist/device/wohub2.js +3 -3
  34. package/dist/device/wohub2.js.map +1 -1
  35. package/dist/device/wohumi.d.ts +3 -2
  36. package/dist/device/wohumi.d.ts.map +1 -1
  37. package/dist/device/wohumi.js +3 -7
  38. package/dist/device/wohumi.js.map +1 -1
  39. package/dist/device/woiosensorth.d.ts +3 -2
  40. package/dist/device/woiosensorth.d.ts.map +1 -1
  41. package/dist/device/woiosensorth.js +4 -4
  42. package/dist/device/woiosensorth.js.map +1 -1
  43. package/dist/device/woplugmini.d.ts +4 -5
  44. package/dist/device/woplugmini.d.ts.map +1 -1
  45. package/dist/device/woplugmini.js +7 -13
  46. package/dist/device/woplugmini.js.map +1 -1
  47. package/dist/device/wopresence.d.ts +3 -2
  48. package/dist/device/wopresence.d.ts.map +1 -1
  49. package/dist/device/wopresence.js +3 -3
  50. package/dist/device/wopresence.js.map +1 -1
  51. package/dist/device/wosensorth.d.ts +4 -4
  52. package/dist/device/wosensorth.d.ts.map +1 -1
  53. package/dist/device/wosensorth.js +5 -6
  54. package/dist/device/wosensorth.js.map +1 -1
  55. package/dist/device/wosmartlock.d.ts +3 -1
  56. package/dist/device/wosmartlock.d.ts.map +1 -1
  57. package/dist/device/wosmartlock.js +3 -2
  58. package/dist/device/wosmartlock.js.map +1 -1
  59. package/dist/device/wosmartlockpro.d.ts +3 -1
  60. package/dist/device/wosmartlockpro.d.ts.map +1 -1
  61. package/dist/device/wosmartlockpro.js +3 -2
  62. package/dist/device/wosmartlockpro.js.map +1 -1
  63. package/dist/device/wostrip.d.ts +3 -2
  64. package/dist/device/wostrip.d.ts.map +1 -1
  65. package/dist/device/wostrip.js +3 -3
  66. package/dist/device/wostrip.js.map +1 -1
  67. package/dist/switchbot-ble.d.ts +9 -2
  68. package/dist/switchbot-ble.d.ts.map +1 -1
  69. package/dist/switchbot-ble.js +20 -4
  70. package/dist/switchbot-ble.js.map +1 -1
  71. package/dist/test/advertising.test.js +1 -1
  72. package/dist/test/advertising.test.js.map +1 -1
  73. package/dist/test/device.test.js +0 -22
  74. package/dist/test/device.test.js.map +1 -1
  75. package/dist/test/index.test.js +1 -0
  76. package/dist/test/index.test.js.map +1 -1
  77. package/dist/test/settings.test.js +1 -0
  78. package/dist/test/settings.test.js.map +1 -1
  79. package/dist/test/switchbot-openapi.test.js +1 -0
  80. package/dist/test/switchbot-openapi.test.js.map +1 -1
  81. package/dist/test/woblindtilt.test.js +1 -96
  82. package/dist/test/woblindtilt.test.js.map +1 -1
  83. package/dist/test/wobulb.test.js +1 -103
  84. package/dist/test/wobulb.test.js.map +1 -1
  85. package/dist/test/woceilinglight.test.js +1 -94
  86. package/dist/test/woceilinglight.test.js.map +1 -1
  87. package/dist/test/wocontact.test.js +1 -37
  88. package/dist/test/wocontact.test.js.map +1 -1
  89. package/dist/test/wocurtain.test.js +1 -75
  90. package/dist/test/wocurtain.test.js.map +1 -1
  91. package/dist/test/wohand.test.js +1 -75
  92. package/dist/test/wohand.test.js.map +1 -1
  93. package/dist/test/wohub2.test.js +1 -51
  94. package/dist/test/wohub2.test.js.map +1 -1
  95. package/dist/test/wohumi.test.js +1 -63
  96. package/dist/test/wohumi.test.js.map +1 -1
  97. package/dist/test/woiosensorth.test.js +1 -40
  98. package/dist/test/woiosensorth.test.js.map +1 -1
  99. package/dist/test/woplugmini.test.js +1 -95
  100. package/dist/test/woplugmini.test.js.map +1 -1
  101. package/dist/test/wopresence.test.js +1 -45
  102. package/dist/test/wopresence.test.js.map +1 -1
  103. package/dist/test/wosensorth.test.js +1 -49
  104. package/dist/test/wosensorth.test.js.map +1 -1
  105. package/dist/test/wosmartlock.test.js +1 -146
  106. package/dist/test/wosmartlock.test.js.map +1 -1
  107. package/dist/test/wosmartlockpro.test.js +1 -127
  108. package/dist/test/wosmartlockpro.test.js.map +1 -1
  109. package/dist/test/wostrip.test.js +1 -113
  110. package/dist/test/wostrip.test.js.map +1 -1
  111. package/package.json +8 -8
@@ -1,97 +1,2 @@
1
- /* Copyright(C) 2024, donavanbecker (https://github.com/donavanbecker). All rights reserved.
2
- *
3
- * woblindtilt.test.ts: Switchbot BLE API registration.
4
- */
5
- import { Buffer } from 'node:buffer';
6
- import { WoBlindTilt } from '../device/woblindtilt.js';
7
- describe('woBlindTilt', () => {
8
- let onlog;
9
- beforeEach(() => {
10
- onlog = jest.fn();
11
- });
12
- it('should return null if manufacturerData length is not 5 or 6', async () => {
13
- const serviceData = Buffer.alloc(3);
14
- const manufacturerData = Buffer.alloc(4); // Invalid length
15
- const result = await WoBlindTilt.parseServiceData(serviceData, manufacturerData, onlog);
16
- expect(result).toBeNull();
17
- expect(onlog).toHaveBeenCalledWith('[parseServiceDataForWoBlindTilt] Buffer length 4 !== 5 or 6!');
18
- });
19
- it('should parse valid serviceData and manufacturerData correctly', async () => {
20
- const serviceData = Buffer.from([0x00, 0x00, 0x80]);
21
- const manufacturerData = Buffer.from([0x00, 0x00, 0x00, 0x00, 0x00, 0x7F]);
22
- const result = await WoBlindTilt.parseServiceData(serviceData, manufacturerData, onlog);
23
- expect(result).toEqual({
24
- model: 'BlindTilt',
25
- modelName: 'BlindTilt',
26
- modelFriendlyName: 'BlindTilt',
27
- calibration: false,
28
- battery: 0,
29
- inMotion: true,
30
- tilt: 127,
31
- lightLevel: 0,
32
- sequenceNumber: 0,
33
- });
34
- expect(onlog).not.toHaveBeenCalled();
35
- });
36
- describe('operateBlindTilt', () => {
37
- let woBlindTilt;
38
- beforeEach(() => {
39
- const peripheral = {}; // Replace with the actual peripheral object (e.g. from Noble)
40
- woBlindTilt = new WoBlindTilt(peripheral, {});
41
- jest.spyOn(woBlindTilt, 'command').mockResolvedValue(Buffer.from([0x01, 0x00, 0x00]));
42
- });
43
- it('open should call operateBlindTilt with correct bytes', async () => {
44
- const operateBlindTiltSpy = jest.spyOn(woBlindTilt, 'operateBlindTilt');
45
- await woBlindTilt.open();
46
- expect(operateBlindTiltSpy).toHaveBeenCalledWith([0x57, 0x0F, 0x45, 0x01, 0x05, 0xFF, 0x32]);
47
- });
48
- it('closeUp should call operateBlindTilt with correct bytes', async () => {
49
- const operateBlindTiltSpy = jest.spyOn(woBlindTilt, 'operateBlindTilt');
50
- await woBlindTilt.closeUp();
51
- expect(operateBlindTiltSpy).toHaveBeenCalledWith([0x57, 0x0F, 0x45, 0x01, 0x05, 0xFF, 0x64]);
52
- });
53
- it('closeDown should call operateBlindTilt with correct bytes', async () => {
54
- const operateBlindTiltSpy = jest.spyOn(woBlindTilt, 'operateBlindTilt');
55
- await woBlindTilt.closeDown();
56
- expect(operateBlindTiltSpy).toHaveBeenCalledWith([0x57, 0x0F, 0x45, 0x01, 0x05, 0xFF, 0x00]);
57
- });
58
- it('close should call closeUp or closeDown based on position', async () => {
59
- jest.spyOn(woBlindTilt, 'getPosition').mockResolvedValue(60);
60
- const closeUpSpy = jest.spyOn(woBlindTilt, 'closeUp');
61
- const closeDownSpy = jest.spyOn(woBlindTilt, 'closeDown');
62
- await woBlindTilt.close();
63
- expect(closeUpSpy).toHaveBeenCalled();
64
- expect(closeDownSpy).not.toHaveBeenCalled();
65
- jest.spyOn(woBlindTilt, 'getPosition').mockResolvedValue(40);
66
- await woBlindTilt.close();
67
- expect(closeDownSpy).toHaveBeenCalled();
68
- });
69
- it('getPosition should return valid tilt position', async () => {
70
- jest.spyOn(woBlindTilt, '_getAdvValue').mockResolvedValue(50);
71
- const position = await woBlindTilt.getPosition();
72
- expect(position).toBe(50);
73
- });
74
- it('pause should call operateBlindTilt with correct bytes', async () => {
75
- const operateBlindTiltSpy = jest.spyOn(woBlindTilt, 'operateBlindTilt');
76
- await woBlindTilt.pause();
77
- expect(operateBlindTiltSpy).toHaveBeenCalledWith([0x57, 0x0F, 0x45, 0x01, 0x00, 0xFF]);
78
- });
79
- it('runToPos should call operateBlindTilt with correct bytes', async () => {
80
- const operateBlindTiltSpy = jest.spyOn(woBlindTilt, 'operateBlindTilt');
81
- await woBlindTilt.runToPos(50, 1);
82
- expect(operateBlindTiltSpy).toHaveBeenCalledWith([0x57, 0x0F, 0x45, 0x01, 0x05, 1, 50]);
83
- });
84
- it('operateBlindTilt should handle successful response', async () => {
85
- await expect(woBlindTilt.operateBlindTilt([0x57, 0x0F, 0x45, 0x01, 0x05, 1, 50])).resolves.toBeUndefined();
86
- });
87
- it('operateBlindTilt should handle error response', async () => {
88
- jest.spyOn(woBlindTilt, 'command').mockResolvedValue(Buffer.from([0x00, 0x01, 0x00]));
89
- await expect(woBlindTilt.operateBlindTilt([0x57, 0x0F, 0x45, 0x01, 0x05, 1, 50])).rejects.toThrow('The device returned an error: 0x000100');
90
- });
91
- it('operateBlindTilt should handle command rejection', async () => {
92
- jest.spyOn(woBlindTilt, 'command').mockRejectedValue(new Error('Command failed'));
93
- await expect(woBlindTilt.operateBlindTilt([0x57, 0x0F, 0x45, 0x01, 0x05, 1, 50])).rejects.toThrow('Command failed');
94
- });
95
- });
96
- });
1
+ export {};
97
2
  //# sourceMappingURL=woblindtilt.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"woblindtilt.test.js","sourceRoot":"","sources":["../../src/test/woblindtilt.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"woblindtilt.test.js","sourceRoot":"","sources":["../../src/test/woblindtilt.test.ts"],"names":[],"mappings":""}
@@ -1,104 +1,2 @@
1
- /* Copyright(C) 2024, donavanbecker (https://github.com/donavanbecker). All rights reserved.
2
- *
3
- * wobulb.test.ts: Switchbot BLE API registration.
4
- */
5
- import { Buffer } from 'node:buffer';
6
- import { WoBulb } from '../device/wobulb.js';
7
- describe('woBulb', () => {
8
- let onlog;
9
- beforeEach(() => {
10
- onlog = jest.fn();
11
- });
12
- it('should return null if serviceData length is not 18', async () => {
13
- const serviceData = Buffer.alloc(17); // Invalid length
14
- const manufacturerData = Buffer.alloc(13);
15
- const result = await WoBulb.parseServiceData(serviceData, manufacturerData, onlog);
16
- expect(result).toBeNull();
17
- expect(onlog).toHaveBeenCalledWith('[parseServiceDataForWoBulb] Buffer length 17 !== 18!');
18
- });
19
- it('should return null if manufacturerData length is not 13', async () => {
20
- const serviceData = Buffer.alloc(18);
21
- const manufacturerData = Buffer.alloc(12); // Invalid length
22
- const result = await WoBulb.parseServiceData(serviceData, manufacturerData, onlog);
23
- expect(result).toBeNull();
24
- expect(onlog).toHaveBeenCalledWith('[parseServiceDataForWoBulb] Buffer length 12 !== 13!');
25
- });
26
- it('should parse valid serviceData and manufacturerData correctly', async () => {
27
- const serviceData = Buffer.alloc(18);
28
- const manufacturerData = Buffer.from([0x00, 0x01, 0x00, 0xFF, 0x00, 0x00, 0x64, 0x7F, 0x80, 0x00, 0x00, 0x00, 0x00]);
29
- const result = await WoBulb.parseServiceData(serviceData, manufacturerData, onlog);
30
- expect(result).toEqual({
31
- model: 'ColorBulb',
32
- modelName: 'ColorBulb',
33
- modelFriendlyName: 'ColorBulb',
34
- power: 1,
35
- red: 255,
36
- green: 0,
37
- blue: 0,
38
- color_temperature: 100,
39
- state: true,
40
- brightness: 127,
41
- delay: true,
42
- preset: false,
43
- color_mode: 0,
44
- speed: 0,
45
- loop_index: 0,
46
- });
47
- expect(onlog).not.toHaveBeenCalled();
48
- });
49
- describe('operateBulb', () => {
50
- let woBulb;
51
- beforeEach(() => {
52
- const peripheral = {}; // Replace with the actual peripheral object (e.g. from Noble)
53
- woBulb = new WoBulb(peripheral, {});
54
- jest.spyOn(woBulb, 'command').mockResolvedValue(Buffer.from([0x00, 0x80]));
55
- });
56
- it('readState should call operateBulb with correct bytes', async () => {
57
- const operateBulbSpy = jest.spyOn(woBulb, 'operateBulb');
58
- await woBulb.readState();
59
- expect(operateBulbSpy).toHaveBeenCalledWith([0x57, 0x0F, 0x48, 0x01]);
60
- });
61
- it('setState should call operateBulb with correct bytes', async () => {
62
- const operateBulbSpy = jest.spyOn(woBulb, 'operateBulb');
63
- await woBulb.setState([0x01, 0x01]);
64
- expect(operateBulbSpy).toHaveBeenCalledWith([0x57, 0x0F, 0x47, 0x01, 0x01, 0x01]);
65
- });
66
- it('turnOn should call setState with correct arguments', async () => {
67
- const setStateSpy = jest.spyOn(woBulb, 'setState');
68
- await woBulb.turnOn();
69
- expect(setStateSpy).toHaveBeenCalledWith([0x01, 0x01]);
70
- });
71
- it('turnOff should call setState with correct arguments', async () => {
72
- const setStateSpy = jest.spyOn(woBulb, 'setState');
73
- await woBulb.turnOff();
74
- expect(setStateSpy).toHaveBeenCalledWith([0x01, 0x02]);
75
- });
76
- it('setBrightness should call setState with correct arguments', async () => {
77
- const setStateSpy = jest.spyOn(woBulb, 'setState');
78
- await woBulb.setBrightness(50);
79
- expect(setStateSpy).toHaveBeenCalledWith([0x02, 0x14, 50]);
80
- });
81
- it('setColorTemperature should call setState with correct arguments', async () => {
82
- const setStateSpy = jest.spyOn(woBulb, 'setState');
83
- await woBulb.setColorTemperature(50);
84
- expect(setStateSpy).toHaveBeenCalledWith([0x02, 0x17, 50]);
85
- });
86
- it('setRGB should call setState with correct arguments', async () => {
87
- const setStateSpy = jest.spyOn(woBulb, 'setState');
88
- await woBulb.setRGB(50, 255, 0, 0);
89
- expect(setStateSpy).toHaveBeenCalledWith([0x02, 0x12, 50, 255, 0, 0]);
90
- });
91
- it('operateBulb should handle successful response', async () => {
92
- await expect(woBulb.operateBulb([0x57, 0x0F, 0x48, 0x01])).resolves.toBe(true);
93
- });
94
- it('operateBulb should handle error response', async () => {
95
- jest.spyOn(woBulb, 'command').mockResolvedValue(Buffer.from([0x00, 0x01]));
96
- await expect(woBulb.operateBulb([0x57, 0x0F, 0x48, 0x01])).rejects.toThrow('The device returned an error: 0x0001');
97
- });
98
- it('operateBulb should handle command rejection', async () => {
99
- jest.spyOn(woBulb, 'command').mockRejectedValue(new Error('Command failed'));
100
- await expect(woBulb.operateBulb([0x57, 0x0F, 0x48, 0x01])).rejects.toThrow('Command failed');
101
- });
102
- });
103
- });
1
+ export {};
104
2
  //# sourceMappingURL=wobulb.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"wobulb.test.js","sourceRoot":"","sources":["../../src/test/wobulb.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wobulb.test.js","sourceRoot":"","sources":["../../src/test/wobulb.test.ts"],"names":[],"mappings":""}
@@ -1,95 +1,2 @@
1
- /* Copyright(C) 2024, donavanbecker (https://github.com/donavanbecker). All rights reserved.
2
- *
3
- * woceiling.test.ts: Switchbot BLE API registration.
4
- */
5
- import { Buffer } from 'node:buffer';
6
- import { WoCeilingLight } from '../device/woceilinglight.js';
7
- describe('woCeilingLight', () => {
8
- let onlog;
9
- beforeEach(() => {
10
- onlog = jest.fn();
11
- });
12
- it('should return null if manufacturerData length is not 13', async () => {
13
- const manufacturerData = Buffer.alloc(12); // Invalid length
14
- const result = await WoCeilingLight.parseServiceData(manufacturerData, onlog);
15
- expect(result).toBeNull();
16
- expect(onlog).toHaveBeenCalledWith('[parseServiceDataForWoCeilingLight] Buffer length 12 !== 13!');
17
- });
18
- it('should parse valid manufacturerData correctly', async () => {
19
- const manufacturerData = Buffer.from([0x00, 0x01, 0x00, 0xFF, 0x00, 0x00, 0x64, 0x7F, 0x80, 0x00, 0x00, 0x00, 0x00]);
20
- const result = await WoCeilingLight.parseServiceData(manufacturerData, onlog);
21
- expect(result).toEqual({
22
- model: 'CeilingLight',
23
- modelName: 'CeilingLight',
24
- modelFriendlyName: 'CeilingLight',
25
- power: 1,
26
- red: 255,
27
- green: 0,
28
- blue: 0,
29
- color_temperature: 100,
30
- state: true,
31
- brightness: 127,
32
- delay: true,
33
- preset: false,
34
- color_mode: 0,
35
- speed: 0,
36
- loop_index: 0,
37
- });
38
- expect(onlog).not.toHaveBeenCalled();
39
- });
40
- describe('operateCeilingLight', () => {
41
- let woCeilingLight;
42
- beforeEach(() => {
43
- const peripheral = {}; // Replace with the actual peripheral object (e.g. from Noble)
44
- woCeilingLight = new WoCeilingLight(peripheral, {});
45
- jest.spyOn(woCeilingLight, 'command').mockResolvedValue(Buffer.from([0x00, 0x80]));
46
- });
47
- it('readState should call operateCeilingLight with correct bytes', async () => {
48
- const operateCeilingLightSpy = jest.spyOn(woCeilingLight, 'operateCeilingLight');
49
- await woCeilingLight.readState();
50
- expect(operateCeilingLightSpy).toHaveBeenCalledWith([0x57, 0x0F, 0x48, 0x01]);
51
- });
52
- it('setState should call operateCeilingLight with correct bytes', async () => {
53
- const operateCeilingLightSpy = jest.spyOn(woCeilingLight, 'operateCeilingLight');
54
- await woCeilingLight.setState([0x01, 0x01]);
55
- expect(operateCeilingLightSpy).toHaveBeenCalledWith([0x57, 0x0F, 0x47, 0x01, 0x01, 0x01]);
56
- });
57
- it('turnOn should call setState with correct arguments', async () => {
58
- const setStateSpy = jest.spyOn(woCeilingLight, 'setState');
59
- await woCeilingLight.turnOn();
60
- expect(setStateSpy).toHaveBeenCalledWith([0x01, 0x01]);
61
- });
62
- it('turnOff should call setState with correct arguments', async () => {
63
- const setStateSpy = jest.spyOn(woCeilingLight, 'setState');
64
- await woCeilingLight.turnOff();
65
- expect(setStateSpy).toHaveBeenCalledWith([0x01, 0x02]);
66
- });
67
- it('setBrightness should call setState with correct arguments', async () => {
68
- const setStateSpy = jest.spyOn(woCeilingLight, 'setState');
69
- await woCeilingLight.setBrightness(50);
70
- expect(setStateSpy).toHaveBeenCalledWith([0x02, 0x14, 50]);
71
- });
72
- it('setColorTemperature should call setState with correct arguments', async () => {
73
- const setStateSpy = jest.spyOn(woCeilingLight, 'setState');
74
- await woCeilingLight.setColorTemperature(50);
75
- expect(setStateSpy).toHaveBeenCalledWith([0x02, 0x17, 50]);
76
- });
77
- it('setRGB should call setState with correct arguments', async () => {
78
- const setStateSpy = jest.spyOn(woCeilingLight, 'setState');
79
- await woCeilingLight.setRGB(50, 255, 0, 0);
80
- expect(setStateSpy).toHaveBeenCalledWith([0x02, 0x12, 50, 255, 0, 0]);
81
- });
82
- it('operateCeilingLight should handle successful response', async () => {
83
- await expect(woCeilingLight.operateCeilingLight([0x57, 0x0F, 0x48, 0x01])).resolves.toBe(true);
84
- });
85
- it('operateCeilingLight should handle error response', async () => {
86
- jest.spyOn(woCeilingLight, 'command').mockResolvedValue(Buffer.from([0x00, 0x01]));
87
- await expect(woCeilingLight.operateCeilingLight([0x57, 0x0F, 0x48, 0x01])).rejects.toThrow('The device returned an error: 0x0001');
88
- });
89
- it('operateCeilingLight should handle command rejection', async () => {
90
- jest.spyOn(woCeilingLight, 'command').mockRejectedValue(new Error('Command failed'));
91
- await expect(woCeilingLight.operateCeilingLight([0x57, 0x0F, 0x48, 0x01])).rejects.toThrow('Command failed');
92
- });
93
- });
94
- });
1
+ export {};
95
2
  //# sourceMappingURL=woceilinglight.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"woceilinglight.test.js","sourceRoot":"","sources":["../../src/test/woceilinglight.test.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAE5D,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,IAAI,KAAgB,CAAA;IAEpB,UAAU,CAAC,GAAG,EAAE;QACd,KAAK,GAAG,IAAI,CAAC,EAAE,EAAE,CAAA;IACnB,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;QACvE,MAAM,gBAAgB,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA,CAAC,iBAAiB;QAC3D,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAA;QAC7E,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAA;QACzB,MAAM,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAAC,8DAA8D,CAAC,CAAA;IACpG,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;QACpH,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAA;QAC7E,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACrB,KAAK,EAAE,cAAc;YACrB,SAAS,EAAE,cAAc;YACzB,iBAAiB,EAAE,cAAc;YACjC,KAAK,EAAE,CAAC;YACR,GAAG,EAAE,GAAG;YACR,KAAK,EAAE,CAAC;YACR,IAAI,EAAE,CAAC;YACP,iBAAiB,EAAE,GAAG;YACtB,KAAK,EAAE,IAAI;YACX,UAAU,EAAE,GAAG;YACf,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,KAAK;YACb,UAAU,EAAE,CAAC;YACb,KAAK,EAAE,CAAC;YACR,UAAU,EAAE,CAAC;SACd,CAAC,CAAA;QACF,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAA;IACtC,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;QACnC,IAAI,cAA8B,CAAA;QAElC,UAAU,CAAC,GAAG,EAAE;YACd,MAAM,UAAU,GAAG,EAAE,CAAA,CAAC,8DAA8D;YACpF,cAAc,GAAG,IAAI,cAAc,CAAC,UAAiB,EAAE,EAAS,CAAC,CAAA;YACjE,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;QACpF,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;YAC5E,MAAM,sBAAsB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAqB,EAAE,qBAAqB,CAAC,CAAA;YACvF,MAAM,cAAc,CAAC,SAAS,EAAE,CAAA;YAChC,MAAM,CAAC,sBAAsB,CAAC,CAAC,oBAAoB,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;QAC/E,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;YAC3E,MAAM,sBAAsB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAqB,EAAE,qBAAqB,CAAC,CAAA;YACvF,MAAM,cAAc,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;YAC3C,MAAM,CAAC,sBAAsB,CAAC,CAAC,oBAAoB,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;QAC3F,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;YAClE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,UAAU,CAAC,CAAA;YAC1D,MAAM,cAAc,CAAC,MAAM,EAAE,CAAA;YAC7B,MAAM,CAAC,WAAW,CAAC,CAAC,oBAAoB,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;QACxD,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;YACnE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,UAAU,CAAC,CAAA;YAC1D,MAAM,cAAc,CAAC,OAAO,EAAE,CAAA;YAC9B,MAAM,CAAC,WAAW,CAAC,CAAC,oBAAoB,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;QACxD,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;YACzE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,UAAU,CAAC,CAAA;YAC1D,MAAM,cAAc,CAAC,aAAa,CAAC,EAAE,CAAC,CAAA;YACtC,MAAM,CAAC,WAAW,CAAC,CAAC,oBAAoB,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAA;QAC5D,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;YAC/E,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,UAAU,CAAC,CAAA;YAC1D,MAAM,cAAc,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAA;YAC5C,MAAM,CAAC,WAAW,CAAC,CAAC,oBAAoB,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAA;QAC5D,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;YAClE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,UAAU,CAAC,CAAA;YAC1D,MAAM,cAAc,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;YAC1C,MAAM,CAAC,WAAW,CAAC,CAAC,oBAAoB,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QACvE,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;YACrE,MAAM,MAAM,CAAE,cAAsB,CAAC,mBAAmB,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACzG,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;YAChE,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;YAClF,MAAM,MAAM,CAAE,cAAsB,CAAC,mBAAmB,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAA;QAC7I,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;YACnE,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAA;YACpF,MAAM,MAAM,CAAE,cAAsB,CAAC,mBAAmB,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAA;QACvH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"woceilinglight.test.js","sourceRoot":"","sources":["../../src/test/woceilinglight.test.ts"],"names":[],"mappings":""}
@@ -1,38 +1,2 @@
1
- /* Copyright(C) 2024, donavanbecker (https://github.com/donavanbecker). All rights reserved.
2
- *
3
- * wocontact.test.ts: Switchbot BLE API registration.
4
- */
5
- import { Buffer } from 'node:buffer';
6
- import { WoContact } from '../device/wocontact.js';
7
- describe('woContact', () => {
8
- let onlog;
9
- beforeEach(() => {
10
- onlog = jest.fn();
11
- });
12
- it('should return null if serviceData length is not 9', async () => {
13
- const serviceData = Buffer.alloc(8); // Invalid length
14
- const result = await WoContact.parseServiceData(serviceData, onlog);
15
- expect(result).toBeNull();
16
- expect(onlog).toHaveBeenCalledWith('[parseServiceDataForWoContact] Buffer length 8 !== 9!');
17
- });
18
- it('should parse valid serviceData correctly', async () => {
19
- const serviceData = Buffer.from([0x00, 0x80, 0x7F, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F]); // Example valid data
20
- const result = await WoContact.parseServiceData(serviceData, onlog);
21
- expect(result).toEqual({
22
- model: 'ContactSensor',
23
- modelName: 'ContactSensor',
24
- modelFriendlyName: 'ContactSensor',
25
- movement: true,
26
- tested: true,
27
- battery: 127,
28
- contact_open: true,
29
- contact_timeout: false,
30
- lightLevel: 'dark',
31
- button_count: 15,
32
- doorState: 'open',
33
- });
34
- expect(onlog).not.toHaveBeenCalled();
35
- });
36
- // Add more test cases as needed
37
- });
1
+ export {};
38
2
  //# sourceMappingURL=wocontact.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"wocontact.test.js","sourceRoot":"","sources":["../../src/test/wocontact.test.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAElD,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACzB,IAAI,KAAgB,CAAA;IAEpB,UAAU,CAAC,GAAG,EAAE;QACd,KAAK,GAAG,IAAI,CAAC,EAAE,EAAE,CAAA;IACnB,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;QACjE,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA,CAAC,iBAAiB;QACrD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,gBAAgB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;QACnE,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAA;QACzB,MAAM,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAAC,uDAAuD,CAAC,CAAA;IAC7F,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;QACxD,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA,CAAC,qBAAqB;QAC7G,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,gBAAgB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;QACnE,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACrB,KAAK,EAAE,eAAe;YACtB,SAAS,EAAE,eAAe;YAC1B,iBAAiB,EAAE,eAAe;YAClC,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,GAAG;YACZ,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,UAAU,EAAE,MAAM;YAClB,YAAY,EAAE,EAAE;YAChB,SAAS,EAAE,MAAM;SAClB,CAAC,CAAA;QACF,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAA;IACtC,CAAC,CAAC,CAAA;IAEF,gCAAgC;AAClC,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"wocontact.test.js","sourceRoot":"","sources":["../../src/test/wocontact.test.ts"],"names":[],"mappings":""}
@@ -1,76 +1,2 @@
1
- /* Copyright(C) 2024, donavanbecker (https://github.com/donavanbecker). All rights reserved.
2
- *
3
- * wocurtain.test.ts: Switchbot BLE API registration.
4
- */
5
- import { Buffer } from 'node:buffer';
6
- import { WoCurtain } from '../device/wocurtain.js';
7
- describe('woCurtain', () => {
8
- let onlog;
9
- beforeEach(() => {
10
- onlog = jest.fn();
11
- });
12
- it('should return null if serviceData length is not 5 or 6', async () => {
13
- const serviceData = Buffer.alloc(4); // Invalid length
14
- const manufacturerData = Buffer.alloc(13);
15
- const result = await WoCurtain.parseServiceData(serviceData, manufacturerData, onlog);
16
- expect(result).toBeNull();
17
- expect(onlog).toHaveBeenCalledWith('[parseServiceDataForWoCurtain] Buffer length 4 !== 5 or 6!');
18
- });
19
- it('should parse valid serviceData and manufacturerData correctly', async () => {
20
- const serviceData = Buffer.from([0x63, 0x40, 0x7F, 0x00, 0x00, 0x00]); // Example valid data
21
- const manufacturerData = Buffer.from([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x7F]);
22
- const result = await WoCurtain.parseServiceData(serviceData, manufacturerData, onlog);
23
- expect(result).toEqual({
24
- model: 'c',
25
- modelName: 'Curtain',
26
- modelFriendlyName: 'Curtain',
27
- calibration: true,
28
- battery: 127,
29
- inMotion: false,
30
- position: 0,
31
- lightLevel: 0,
32
- deviceChain: 0,
33
- });
34
- expect(onlog).not.toHaveBeenCalled();
35
- });
36
- describe('operateCurtain', () => {
37
- let wocurtain;
38
- beforeEach(() => {
39
- const peripheral = {}; // Replace with the actual peripheral object (e.g. from Noble)
40
- wocurtain = new WoCurtain(peripheral, {});
41
- jest.spyOn(wocurtain, 'command').mockResolvedValue(Buffer.from([0x01, 0x00, 0x00]));
42
- });
43
- it('open should call runToPos with correct arguments', async () => {
44
- const runToPosSpy = jest.spyOn(wocurtain, 'runToPos');
45
- await wocurtain.open();
46
- expect(runToPosSpy).toHaveBeenCalledWith(0, 0xFF);
47
- });
48
- it('close should call runToPos with correct arguments', async () => {
49
- const runToPosSpy = jest.spyOn(wocurtain, 'runToPos');
50
- await wocurtain.close();
51
- expect(runToPosSpy).toHaveBeenCalledWith(100, 0xFF);
52
- });
53
- it('pause should call operateCurtain with correct bytes', async () => {
54
- const operateCurtainSpy = jest.spyOn(wocurtain, 'operateCurtain');
55
- await wocurtain.pause();
56
- expect(operateCurtainSpy).toHaveBeenCalledWith([0x57, 0x0F, 0x45, 0x01, 0x00, 0xFF]);
57
- });
58
- it('runToPos should call operateCurtain with correct bytes', async () => {
59
- const operateCurtainSpy = jest.spyOn(wocurtain, 'operateCurtain');
60
- await wocurtain.runToPos(50);
61
- expect(operateCurtainSpy).toHaveBeenCalledWith([0x57, 0x0F, 0x45, 0x01, 0x05, 0xFF, 50]);
62
- });
63
- it('operateCurtain should handle successful response', async () => {
64
- await expect(wocurtain.operateCurtain([0x57, 0x0F, 0x45, 0x01, 0x05, 0xFF, 50])).resolves.toBeUndefined();
65
- });
66
- it('operateCurtain should handle error response', async () => {
67
- jest.spyOn(wocurtain, 'command').mockResolvedValue(Buffer.from([0x02, 0x00, 0x00]));
68
- await expect(wocurtain.operateCurtain([0x57, 0x0F, 0x45, 0x01, 0x05, 0xFF, 50])).rejects.toThrow('The device returned an error: 0x020000');
69
- });
70
- it('operateCurtain should handle command rejection', async () => {
71
- jest.spyOn(wocurtain, 'command').mockRejectedValue(new Error('Command failed'));
72
- await expect(wocurtain.operateCurtain([0x57, 0x0F, 0x45, 0x01, 0x05, 0xFF, 50])).rejects.toThrow('Command failed');
73
- });
74
- });
75
- });
1
+ export {};
76
2
  //# sourceMappingURL=wocurtain.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"wocurtain.test.js","sourceRoot":"","sources":["../../src/test/wocurtain.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wocurtain.test.js","sourceRoot":"","sources":["../../src/test/wocurtain.test.ts"],"names":[],"mappings":""}
@@ -1,76 +1,2 @@
1
- /* Copyright(C) 2024, donavanbecker (https://github.com/donavanbecker). All rights reserved.
2
- *
3
- * wohand.test.ts: Switchbot BLE API registration.
4
- */
5
- import { Buffer } from 'node:buffer';
6
- import { WoHand } from '../device/wohand.js';
7
- describe('woHand', () => {
8
- let onlog;
9
- beforeEach(() => {
10
- onlog = jest.fn();
11
- });
12
- it('should return null if serviceData length is not 3', async () => {
13
- const serviceData = Buffer.alloc(2); // Invalid length
14
- const result = await WoHand.parseServiceData(serviceData, onlog);
15
- expect(result).toBeNull();
16
- expect(onlog).toHaveBeenCalledWith('[parseServiceData] Buffer length 2 !== 3!');
17
- });
18
- it('should parse valid serviceData correctly', async () => {
19
- const serviceData = Buffer.from([0x00, 0x80, 0x7F]); // Example valid data
20
- const result = await WoHand.parseServiceData(serviceData, onlog);
21
- expect(result).toEqual({
22
- model: 'Bot',
23
- modelName: 'Bot',
24
- modelFriendlyName: 'Bot',
25
- mode: true,
26
- state: false,
27
- battery: 127,
28
- });
29
- expect(onlog).not.toHaveBeenCalled();
30
- });
31
- describe('operateBot', () => {
32
- let wohand;
33
- beforeEach(() => {
34
- const peripheral = {}; // Replace with the actual peripheral object (e.g. from Noble)
35
- wohand = new WoHand(peripheral, {});
36
- jest.spyOn(wohand, 'command').mockResolvedValue(Buffer.from([0x01, 0x00, 0x00]));
37
- });
38
- it('press should call operateBot with correct bytes', async () => {
39
- const operateBotSpy = jest.spyOn(wohand, 'operateBot');
40
- await wohand.press();
41
- expect(operateBotSpy).toHaveBeenCalledWith([0x57, 0x01, 0x00]);
42
- });
43
- it('turnOn should call operateBot with correct bytes', async () => {
44
- const operateBotSpy = jest.spyOn(wohand, 'operateBot');
45
- await wohand.turnOn();
46
- expect(operateBotSpy).toHaveBeenCalledWith([0x57, 0x01, 0x01]);
47
- });
48
- it('turnOff should call operateBot with correct bytes', async () => {
49
- const operateBotSpy = jest.spyOn(wohand, 'operateBot');
50
- await wohand.turnOff();
51
- expect(operateBotSpy).toHaveBeenCalledWith([0x57, 0x01, 0x02]);
52
- });
53
- it('down should call operateBot with correct bytes', async () => {
54
- const operateBotSpy = jest.spyOn(wohand, 'operateBot');
55
- await wohand.down();
56
- expect(operateBotSpy).toHaveBeenCalledWith([0x57, 0x01, 0x03]);
57
- });
58
- it('up should call operateBot with correct bytes', async () => {
59
- const operateBotSpy = jest.spyOn(wohand, 'operateBot');
60
- await wohand.up();
61
- expect(operateBotSpy).toHaveBeenCalledWith([0x57, 0x01, 0x04]);
62
- });
63
- it('operateBot should handle successful response', async () => {
64
- await expect(wohand.operateBot([0x57, 0x01, 0x00])).resolves.toBeUndefined();
65
- });
66
- it('operateBot should handle error response', async () => {
67
- jest.spyOn(wohand, 'command').mockResolvedValue(Buffer.from([0x02, 0x00, 0x00]));
68
- await expect(wohand.operateBot([0x57, 0x01, 0x00])).rejects.toThrow('The device returned an error: 0x020000');
69
- });
70
- it('operateBot should handle command rejection', async () => {
71
- jest.spyOn(wohand, 'command').mockRejectedValue(new Error('Command failed'));
72
- await expect(wohand.operateBot([0x57, 0x01, 0x00])).rejects.toThrow('Command failed');
73
- });
74
- });
75
- });
1
+ export {};
76
2
  //# sourceMappingURL=wohand.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"wohand.test.js","sourceRoot":"","sources":["../../src/test/wohand.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wohand.test.js","sourceRoot":"","sources":["../../src/test/wohand.test.ts"],"names":[],"mappings":""}
@@ -1,52 +1,2 @@
1
- /* Copyright(C) 2024, donavanbecker (https://github.com/donavanbecker). All rights reserved.
2
- *
3
- * wohub2.test.ts: Switchbot BLE API registration.
4
- */
5
- import { Buffer } from 'node:buffer';
6
- import { WoHub2 } from '../device/wohub2.js';
7
- describe('woHub2', () => {
8
- let onlog;
9
- beforeEach(() => {
10
- onlog = jest.fn();
11
- });
12
- it('should return null if manufacturerData length is not 16', async () => {
13
- const manufacturerData = Buffer.alloc(15); // Invalid length
14
- const result = await WoHub2.parseServiceData(manufacturerData, onlog);
15
- expect(result).toBeNull();
16
- expect(onlog).toHaveBeenCalledWith('[parseServiceDataForWoHub2] Buffer length 15 !== 16!');
17
- });
18
- it('should parse valid manufacturerData correctly', async () => {
19
- const manufacturerData = Buffer.from([
20
- 0x01,
21
- 0x82,
22
- 0x7F,
23
- 0x00,
24
- 0x00,
25
- 0x00,
26
- 0x00,
27
- 0x00,
28
- 0x00,
29
- 0x00,
30
- 0x00,
31
- 0x00,
32
- 0x1F,
33
- 0x00,
34
- 0x00,
35
- 0x00,
36
- ]); // Example valid data
37
- const result = await WoHub2.parseServiceData(manufacturerData, onlog);
38
- expect(result).toEqual({
39
- model: 'Hub2',
40
- modelName: 'Hub2',
41
- modelFriendlyName: 'Hub2',
42
- celsius: 2.1,
43
- fahrenheit: 35.8,
44
- fahrenheit_mode: true,
45
- humidity: 127,
46
- lightLevel: 31,
47
- });
48
- expect(onlog).not.toHaveBeenCalled();
49
- });
50
- // Add more test cases as needed
51
- });
1
+ export {};
52
2
  //# sourceMappingURL=wohub2.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"wohub2.test.js","sourceRoot":"","sources":["../../src/test/wohub2.test.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAE5C,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;IACtB,IAAI,KAAgB,CAAA;IAEpB,UAAU,CAAC,GAAG,EAAE;QACd,KAAK,GAAG,IAAI,CAAC,EAAE,EAAE,CAAA;IACnB,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;QACvE,MAAM,gBAAgB,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA,CAAC,iBAAiB;QAC3D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAA;QACrE,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAA;QACzB,MAAM,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAAC,sDAAsD,CAAC,CAAA;IAC5F,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC;YACnC,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,IAAI;SACL,CAAC,CAAA,CAAC,qBAAqB;QACxB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAA;QACrE,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACrB,KAAK,EAAE,MAAM;YACb,SAAS,EAAE,MAAM;YACjB,iBAAiB,EAAE,MAAM;YACzB,OAAO,EAAE,GAAG;YACZ,UAAU,EAAE,IAAI;YAChB,eAAe,EAAE,IAAI;YACrB,QAAQ,EAAE,GAAG;YACb,UAAU,EAAE,EAAE;SACf,CAAC,CAAA;QACF,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAA;IACtC,CAAC,CAAC,CAAA;IAEF,gCAAgC;AAClC,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"wohub2.test.js","sourceRoot":"","sources":["../../src/test/wohub2.test.ts"],"names":[],"mappings":""}