@digital-alchemy/hass 24.9.2 → 24.9.4

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 (197) hide show
  1. package/README.md +4 -1
  2. package/dist/dynamic.d.ts +1 -1
  3. package/dist/dynamic.js +7 -2
  4. package/dist/dynamic.js.map +1 -1
  5. package/dist/extensions/area.extension.d.ts +2 -12
  6. package/dist/extensions/area.extension.js +20 -26
  7. package/dist/extensions/area.extension.js.map +1 -1
  8. package/dist/extensions/backup.extension.d.ts +2 -7
  9. package/dist/extensions/backup.extension.js +5 -8
  10. package/dist/extensions/backup.extension.js.map +1 -1
  11. package/dist/extensions/call-proxy.extension.d.ts +1 -1
  12. package/dist/extensions/call-proxy.extension.js +11 -29
  13. package/dist/extensions/call-proxy.extension.js.map +1 -1
  14. package/dist/extensions/config.extension.d.ts +2 -6
  15. package/dist/extensions/config.extension.js +21 -25
  16. package/dist/extensions/config.extension.js.map +1 -1
  17. package/dist/extensions/conversation.extension.d.ts +2 -6
  18. package/dist/extensions/conversation.extension.js +5 -8
  19. package/dist/extensions/conversation.extension.js.map +1 -1
  20. package/dist/extensions/device.extension.d.ts +2 -5
  21. package/dist/extensions/device.extension.js +16 -22
  22. package/dist/extensions/device.extension.js.map +1 -1
  23. package/dist/extensions/entity.extension.d.ts +2 -61
  24. package/dist/extensions/entity.extension.js +42 -83
  25. package/dist/extensions/entity.extension.js.map +1 -1
  26. package/dist/extensions/events.extension.d.ts +3 -11
  27. package/dist/extensions/events.extension.js +8 -11
  28. package/dist/extensions/events.extension.js.map +1 -1
  29. package/dist/extensions/fetch-api.extension.d.ts +12 -4
  30. package/dist/extensions/fetch-api.extension.js +23 -35
  31. package/dist/extensions/fetch-api.extension.js.map +1 -1
  32. package/dist/extensions/floor.extension.d.ts +2 -9
  33. package/dist/extensions/floor.extension.js +17 -23
  34. package/dist/extensions/floor.extension.js.map +1 -1
  35. package/dist/extensions/id-by.extension.js +15 -20
  36. package/dist/extensions/id-by.extension.js.map +1 -1
  37. package/dist/extensions/index.d.ts +1 -0
  38. package/dist/extensions/index.js +16 -18
  39. package/dist/extensions/index.js.map +1 -1
  40. package/dist/extensions/internal.extension.d.ts +18 -0
  41. package/dist/extensions/internal.extension.js +102 -0
  42. package/dist/extensions/internal.extension.js.map +1 -0
  43. package/dist/extensions/label.extension.d.ts +2 -9
  44. package/dist/extensions/label.extension.js +17 -23
  45. package/dist/extensions/label.extension.js.map +1 -1
  46. package/dist/extensions/reference.extension.d.ts +2 -12
  47. package/dist/extensions/reference.extension.js +19 -25
  48. package/dist/extensions/reference.extension.js.map +1 -1
  49. package/dist/extensions/registry.extension.d.ts +2 -7
  50. package/dist/extensions/registry.extension.js +1 -4
  51. package/dist/extensions/registry.extension.js.map +1 -1
  52. package/dist/extensions/websocket-api.extension.d.ts +3 -78
  53. package/dist/extensions/websocket-api.extension.js +82 -165
  54. package/dist/extensions/websocket-api.extension.js.map +1 -1
  55. package/dist/extensions/zone.extension.d.ts +2 -7
  56. package/dist/extensions/zone.extension.js +15 -21
  57. package/dist/extensions/zone.extension.js.map +1 -1
  58. package/dist/hass.module.d.ts +47 -36
  59. package/dist/hass.module.js +70 -70
  60. package/dist/hass.module.js.map +1 -1
  61. package/dist/helpers/backup.helper.js +1 -2
  62. package/dist/helpers/constants.helper.js +15 -18
  63. package/dist/helpers/constants.helper.js.map +1 -1
  64. package/dist/helpers/device.helper.js +2 -5
  65. package/dist/helpers/device.helper.js.map +1 -1
  66. package/dist/helpers/entity-state.helper.d.ts +3 -8
  67. package/dist/helpers/entity-state.helper.js +1 -8
  68. package/dist/helpers/entity-state.helper.js.map +1 -1
  69. package/dist/helpers/features.helper.js +79 -85
  70. package/dist/helpers/features.helper.js.map +1 -1
  71. package/dist/helpers/fetch/calendar.js +1 -2
  72. package/dist/helpers/fetch/configuration.js +2 -5
  73. package/dist/helpers/fetch/configuration.js.map +1 -1
  74. package/dist/helpers/fetch/index.js +5 -8
  75. package/dist/helpers/fetch/index.js.map +1 -1
  76. package/dist/helpers/fetch/server-log.js +1 -2
  77. package/dist/helpers/fetch/server-log.js.map +1 -1
  78. package/dist/helpers/fetch/service-list.js +1 -2
  79. package/dist/helpers/fetch/weather-forecasts.js +1 -2
  80. package/dist/helpers/fetch/weather-forecasts.js.map +1 -1
  81. package/dist/helpers/fetch.helper.d.ts +162 -0
  82. package/dist/helpers/fetch.helper.js +161 -0
  83. package/dist/helpers/fetch.helper.js.map +1 -0
  84. package/dist/helpers/id-by.helper.js +1 -2
  85. package/dist/helpers/index.d.ts +2 -1
  86. package/dist/helpers/index.js +13 -15
  87. package/dist/helpers/index.js.map +1 -1
  88. package/dist/helpers/interfaces.helper.d.ts +228 -0
  89. package/dist/helpers/interfaces.helper.js +10 -0
  90. package/dist/helpers/interfaces.helper.js.map +1 -0
  91. package/dist/helpers/manifest.helper.d.ts +0 -1
  92. package/dist/helpers/manifest.helper.js +0 -1
  93. package/dist/helpers/notify.helper.d.ts +11 -3
  94. package/dist/helpers/notify.helper.js +1 -2
  95. package/dist/helpers/registry.js +7 -10
  96. package/dist/helpers/registry.js.map +1 -1
  97. package/dist/helpers/utility.helper.d.ts +6 -1
  98. package/dist/helpers/utility.helper.js +9 -13
  99. package/dist/helpers/utility.helper.js.map +1 -1
  100. package/dist/helpers/websocket.helper.d.ts +1 -2
  101. package/dist/helpers/websocket.helper.js +1 -2
  102. package/dist/index.js +5 -8
  103. package/dist/index.js.map +1 -1
  104. package/dist/mock_assistant/extensions/area.extension.d.ts +8 -0
  105. package/dist/mock_assistant/extensions/area.extension.js +51 -0
  106. package/dist/mock_assistant/extensions/area.extension.js.map +1 -0
  107. package/dist/mock_assistant/extensions/config.extension.d.ts +14 -0
  108. package/dist/mock_assistant/extensions/config.extension.js +29 -0
  109. package/dist/mock_assistant/extensions/config.extension.js.map +1 -0
  110. package/dist/mock_assistant/extensions/device.extension.d.ts +8 -0
  111. package/dist/mock_assistant/extensions/device.extension.js +33 -0
  112. package/dist/mock_assistant/extensions/device.extension.js.map +1 -0
  113. package/dist/mock_assistant/extensions/entity-registry.extension.d.ts +13 -0
  114. package/dist/mock_assistant/extensions/entity-registry.extension.js +28 -0
  115. package/dist/mock_assistant/extensions/entity-registry.extension.js.map +1 -0
  116. package/dist/mock_assistant/extensions/entity.extension.d.ts +30 -0
  117. package/dist/mock_assistant/extensions/entity.extension.js +77 -0
  118. package/dist/mock_assistant/extensions/entity.extension.js.map +1 -0
  119. package/dist/mock_assistant/extensions/events.extension.d.ts +1 -1
  120. package/dist/mock_assistant/extensions/events.extension.js +3 -6
  121. package/dist/mock_assistant/extensions/events.extension.js.map +1 -1
  122. package/dist/mock_assistant/extensions/fetch.extension.d.ts +1 -0
  123. package/dist/mock_assistant/extensions/fetch.extension.js +4 -0
  124. package/dist/mock_assistant/extensions/fetch.extension.js.map +1 -0
  125. package/dist/mock_assistant/extensions/fixtures.extension.d.ts +1 -1
  126. package/dist/mock_assistant/extensions/fixtures.extension.js +29 -33
  127. package/dist/mock_assistant/extensions/fixtures.extension.js.map +1 -1
  128. package/dist/mock_assistant/extensions/floor.extension.d.ts +8 -0
  129. package/dist/mock_assistant/extensions/floor.extension.js +51 -0
  130. package/dist/mock_assistant/extensions/floor.extension.js.map +1 -0
  131. package/dist/mock_assistant/extensions/index.d.ts +10 -0
  132. package/dist/mock_assistant/extensions/index.js +12 -5
  133. package/dist/mock_assistant/extensions/index.js.map +1 -1
  134. package/dist/mock_assistant/extensions/label.extension.d.ts +8 -0
  135. package/dist/mock_assistant/extensions/label.extension.js +51 -0
  136. package/dist/mock_assistant/extensions/label.extension.js.map +1 -0
  137. package/dist/mock_assistant/extensions/services.extension.d.ts +12 -0
  138. package/dist/mock_assistant/extensions/services.extension.js +20 -0
  139. package/dist/mock_assistant/extensions/services.extension.js.map +1 -0
  140. package/dist/mock_assistant/extensions/websocket-api.extension.d.ts +15 -0
  141. package/dist/mock_assistant/extensions/websocket-api.extension.js +68 -0
  142. package/dist/mock_assistant/extensions/websocket-api.extension.js.map +1 -0
  143. package/dist/mock_assistant/extensions/zone.extension.d.ts +8 -0
  144. package/dist/mock_assistant/extensions/zone.extension.js +51 -0
  145. package/dist/mock_assistant/extensions/zone.extension.js.map +1 -0
  146. package/dist/mock_assistant/helpers/fixtures.js +1 -2
  147. package/dist/mock_assistant/helpers/index.d.ts +0 -1
  148. package/dist/mock_assistant/helpers/index.js +1 -5
  149. package/dist/mock_assistant/helpers/index.js.map +1 -1
  150. package/dist/mock_assistant/index.js +3 -6
  151. package/dist/mock_assistant/index.js.map +1 -1
  152. package/dist/mock_assistant/main.js +11 -15
  153. package/dist/mock_assistant/main.js.map +1 -1
  154. package/dist/mock_assistant/mock-assistant.module.d.ts +156 -3
  155. package/dist/mock_assistant/mock-assistant.module.js +56 -11
  156. package/dist/mock_assistant/mock-assistant.module.js.map +1 -1
  157. package/dist/quickboot.module.js +5 -8
  158. package/dist/quickboot.module.js.map +1 -1
  159. package/dist/testing/area.spec.js +106 -194
  160. package/dist/testing/area.spec.js.map +1 -1
  161. package/dist/testing/backup.spec.js +97 -139
  162. package/dist/testing/backup.spec.js.map +1 -1
  163. package/dist/testing/config.spec.js +79 -153
  164. package/dist/testing/config.spec.js.map +1 -1
  165. package/dist/testing/device.spec.js +35 -69
  166. package/dist/testing/device.spec.js.map +1 -1
  167. package/dist/testing/entity.spec.js +94 -149
  168. package/dist/testing/entity.spec.js.map +1 -1
  169. package/dist/testing/events.spec.js +33 -57
  170. package/dist/testing/events.spec.js.map +1 -1
  171. package/dist/testing/fetch-api.spec.js +242 -427
  172. package/dist/testing/fetch-api.spec.js.map +1 -1
  173. package/dist/testing/fixtures.spec.d.ts +1 -0
  174. package/dist/testing/fixtures.spec.js +150 -0
  175. package/dist/testing/fixtures.spec.js.map +1 -0
  176. package/dist/testing/floor.spec.js +106 -194
  177. package/dist/testing/floor.spec.js.map +1 -1
  178. package/dist/testing/id-by.spec.js +68 -107
  179. package/dist/testing/id-by.spec.js.map +1 -1
  180. package/dist/testing/label.spec.js +106 -194
  181. package/dist/testing/label.spec.js.map +1 -1
  182. package/dist/testing/ref-by.spec.js +155 -219
  183. package/dist/testing/ref-by.spec.js.map +1 -1
  184. package/dist/testing/websocket.spec.d.ts +1 -8
  185. package/dist/testing/websocket.spec.js +35 -50
  186. package/dist/testing/websocket.spec.js.map +1 -1
  187. package/dist/testing/workflow.spec.js +82 -81
  188. package/dist/testing/workflow.spec.js.map +1 -1
  189. package/dist/testing/zone.spec.js +61 -113
  190. package/dist/testing/zone.spec.js.map +1 -1
  191. package/package.json +57 -41
  192. package/dist/helpers/metrics.helper.d.ts +0 -29
  193. package/dist/helpers/metrics.helper.js +0 -62
  194. package/dist/helpers/metrics.helper.js.map +0 -1
  195. package/dist/mock_assistant/helpers/utils.d.ts +0 -4
  196. package/dist/mock_assistant/helpers/utils.js +0 -57
  197. package/dist/mock_assistant/helpers/utils.js.map +0 -1
@@ -1,10 +1,7 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const core_1 = require("@digital-alchemy/core");
4
- const helpers_1 = require("../helpers");
5
- const utils_1 = require("../mock_assistant/helpers/utils");
1
+ import { sleep } from "@digital-alchemy/core";
2
+ import { LABEL_REGISTRY_UPDATED } from "../helpers";
3
+ import { hassTestRunner } from "../mock_assistant";
6
4
  describe("Label", () => {
7
- let application;
8
5
  const EXAMPLE_LABEL = {
9
6
  color: "accent",
10
7
  description: "test",
@@ -13,241 +10,156 @@ describe("Label", () => {
13
10
  name: "synapse",
14
11
  };
15
12
  afterEach(async () => {
16
- if (application) {
17
- await application.teardown();
18
- application = undefined;
19
- }
13
+ await hassTestRunner.teardown();
20
14
  jest.restoreAllMocks();
21
15
  });
22
16
  describe("Lifecycle", () => {
23
17
  it("should force values to be available before ready", async () => {
24
18
  expect.assertions(1);
25
- application = (0, utils_1.CreateTestingApplication)({
26
- Test({ lifecycle, hass }) {
27
- const spy = jest
28
- .spyOn(hass.socket, "sendMessage")
29
- .mockImplementation(async () => [EXAMPLE_LABEL]);
30
- lifecycle.onReady(async () => {
31
- await hass.label.list();
32
- expect(spy).toHaveBeenCalledWith(expect.objectContaining({ type: "config/label_registry/list" }));
33
- });
34
- },
19
+ await hassTestRunner.run(({ lifecycle, hass }) => {
20
+ const spy = jest
21
+ .spyOn(hass.socket, "sendMessage")
22
+ .mockImplementation(async () => [EXAMPLE_LABEL]);
23
+ lifecycle.onReady(async () => {
24
+ await hass.label.list();
25
+ expect(spy).toHaveBeenCalledWith(expect.objectContaining({ type: "config/label_registry/list" }));
26
+ });
35
27
  });
36
- await application.bootstrap((0, utils_1.SILENT_BOOT)({
37
- hass: {
38
- AUTO_CONNECT_SOCKET: false,
39
- AUTO_SCAN_CALL_PROXY: false,
40
- },
41
- }));
42
28
  });
43
29
  });
44
30
  describe("API", () => {
45
31
  describe("Formatting", () => {
46
32
  it("should call list properly", async () => {
47
33
  expect.assertions(1);
48
- application = (0, utils_1.CreateTestingApplication)({
49
- Test({ lifecycle, hass }) {
50
- const spy = jest
51
- .spyOn(hass.socket, "sendMessage")
52
- .mockImplementation(async () => []);
53
- lifecycle.onReady(async () => {
54
- await hass.label.list();
55
- expect(spy).toHaveBeenCalledWith(expect.objectContaining({ type: "config/label_registry/list" }));
56
- });
57
- },
34
+ await hassTestRunner.run(({ lifecycle, hass }) => {
35
+ const spy = jest.spyOn(hass.socket, "sendMessage").mockImplementation(async () => []);
36
+ lifecycle.onReady(async () => {
37
+ await hass.label.list();
38
+ expect(spy).toHaveBeenCalledWith(expect.objectContaining({ type: "config/label_registry/list" }));
39
+ });
58
40
  });
59
- await application.bootstrap((0, utils_1.SILENT_BOOT)({
60
- hass: {
61
- AUTO_CONNECT_SOCKET: false,
62
- AUTO_SCAN_CALL_PROXY: false,
63
- },
64
- }));
65
41
  });
66
42
  it("should call update properly", async () => {
67
43
  expect.assertions(1);
68
- application = (0, utils_1.CreateTestingApplication)({
69
- Test({ lifecycle, hass, event }) {
70
- const spy = jest
71
- .spyOn(hass.socket, "sendMessage")
72
- .mockImplementation(async () => undefined);
73
- lifecycle.onReady(async () => {
74
- setImmediate(() => event.emit(helpers_1.LABEL_REGISTRY_UPDATED));
75
- await hass.label.update(EXAMPLE_LABEL);
76
- expect(spy).toHaveBeenCalledWith({
77
- type: "config/label_registry/update",
78
- ...EXAMPLE_LABEL,
79
- });
44
+ await hassTestRunner.run(({ lifecycle, hass, event }) => {
45
+ const spy = jest
46
+ .spyOn(hass.socket, "sendMessage")
47
+ .mockImplementation(async () => undefined);
48
+ lifecycle.onReady(async () => {
49
+ setImmediate(() => event.emit(LABEL_REGISTRY_UPDATED));
50
+ await hass.label.update(EXAMPLE_LABEL);
51
+ expect(spy).toHaveBeenCalledWith({
52
+ type: "config/label_registry/update",
53
+ ...EXAMPLE_LABEL,
80
54
  });
81
- },
55
+ });
82
56
  });
83
- await application.bootstrap((0, utils_1.SILENT_BOOT)({
84
- hass: {
85
- AUTO_CONNECT_SOCKET: false,
86
- AUTO_SCAN_CALL_PROXY: false,
87
- },
88
- }));
89
57
  });
90
58
  it("should call delete properly", async () => {
91
59
  expect.assertions(1);
92
- application = (0, utils_1.CreateTestingApplication)({
93
- Test({ lifecycle, hass, event }) {
94
- const spy = jest
95
- .spyOn(hass.socket, "sendMessage")
96
- .mockImplementation(async () => undefined);
97
- lifecycle.onReady(async () => {
98
- setImmediate(() => event.emit(helpers_1.LABEL_REGISTRY_UPDATED));
99
- await hass.label.delete(EXAMPLE_LABEL.label_id);
100
- expect(spy).toHaveBeenCalledWith({
101
- label_id: "synapse",
102
- type: "config/label_registry/delete",
103
- });
60
+ await hassTestRunner.run(({ lifecycle, hass, event }) => {
61
+ const spy = jest
62
+ .spyOn(hass.socket, "sendMessage")
63
+ .mockImplementation(async () => undefined);
64
+ lifecycle.onReady(async () => {
65
+ setImmediate(() => event.emit(LABEL_REGISTRY_UPDATED));
66
+ await hass.label.delete(EXAMPLE_LABEL.label_id);
67
+ expect(spy).toHaveBeenCalledWith({
68
+ label_id: "synapse",
69
+ type: "config/label_registry/delete",
104
70
  });
105
- },
71
+ });
106
72
  });
107
- await application.bootstrap((0, utils_1.SILENT_BOOT)({
108
- hass: {
109
- AUTO_CONNECT_SOCKET: false,
110
- AUTO_SCAN_CALL_PROXY: false,
111
- },
112
- }));
113
73
  });
114
74
  it("should call create properly", async () => {
115
75
  expect.assertions(1);
116
- application = (0, utils_1.CreateTestingApplication)({
117
- Test({ lifecycle, hass, event }) {
118
- const spy = jest
119
- .spyOn(hass.socket, "sendMessage")
120
- .mockImplementation(async () => undefined);
121
- lifecycle.onReady(async () => {
122
- setImmediate(() => event.emit(helpers_1.LABEL_REGISTRY_UPDATED));
123
- await hass.label.create(EXAMPLE_LABEL);
124
- expect(spy).toHaveBeenCalledWith({
125
- type: "config/label_registry/create",
126
- ...EXAMPLE_LABEL,
127
- });
76
+ await hassTestRunner.run(({ lifecycle, hass, event }) => {
77
+ const spy = jest
78
+ .spyOn(hass.socket, "sendMessage")
79
+ .mockImplementation(async () => undefined);
80
+ lifecycle.onReady(async () => {
81
+ setImmediate(() => event.emit(LABEL_REGISTRY_UPDATED));
82
+ await hass.label.create(EXAMPLE_LABEL);
83
+ expect(spy).toHaveBeenCalledWith({
84
+ type: "config/label_registry/create",
85
+ ...EXAMPLE_LABEL,
128
86
  });
129
- },
87
+ });
130
88
  });
131
- await application.bootstrap((0, utils_1.SILENT_BOOT)({
132
- hass: {
133
- AUTO_CONNECT_SOCKET: false,
134
- AUTO_SCAN_CALL_PROXY: false,
135
- },
136
- }));
137
89
  });
138
90
  });
139
91
  describe("Order of operations", () => {
140
92
  it("should wait for an update before returning when updating", async () => {
141
93
  expect.assertions(1);
142
- application = (0, utils_1.CreateTestingApplication)({
143
- Test({ lifecycle, hass, event }) {
144
- jest
145
- .spyOn(hass.socket, "sendMessage")
146
- .mockImplementation(async () => undefined);
147
- lifecycle.onReady(async () => {
148
- const response = hass.label.update(EXAMPLE_LABEL);
149
- let order = "";
150
- setTimeout(() => {
151
- order += "a";
152
- event.emit(helpers_1.LABEL_REGISTRY_UPDATED);
153
- }, 5);
154
- await response;
155
- order += "b";
156
- expect(order).toEqual("ab");
157
- });
158
- },
94
+ await hassTestRunner.run(({ lifecycle, hass, event }) => {
95
+ jest.spyOn(hass.socket, "sendMessage").mockImplementation(async () => undefined);
96
+ lifecycle.onReady(async () => {
97
+ const response = hass.label.update(EXAMPLE_LABEL);
98
+ let order = "";
99
+ setTimeout(() => {
100
+ order += "a";
101
+ event.emit(LABEL_REGISTRY_UPDATED);
102
+ }, 5);
103
+ await response;
104
+ order += "b";
105
+ expect(order).toEqual("ab");
106
+ });
159
107
  });
160
- await application.bootstrap((0, utils_1.SILENT_BOOT)({
161
- hass: {
162
- AUTO_CONNECT_SOCKET: false,
163
- AUTO_SCAN_CALL_PROXY: false,
164
- },
165
- }));
166
108
  });
167
109
  it("should debounce updates properly", async () => {
168
110
  expect.assertions(1);
169
- application = (0, utils_1.CreateTestingApplication)({
170
- Test({ lifecycle, hass }) {
171
- jest
172
- .spyOn(hass.socket, "sendMessage")
173
- .mockImplementation(async () => undefined);
174
- let counter = 0;
175
- hass.events.onLabelRegistryUpdate(() => counter++);
176
- lifecycle.onReady(async () => {
177
- setImmediate(async () => {
178
- hass.socket.socketEvents.emit("label_registry_updated");
179
- await (0, core_1.sleep)(5);
180
- hass.socket.socketEvents.emit("label_registry_updated");
181
- await (0, core_1.sleep)(5);
182
- hass.socket.socketEvents.emit("label_registry_updated");
183
- await (0, core_1.sleep)(75);
184
- hass.socket.socketEvents.emit("label_registry_updated");
185
- });
186
- await (0, core_1.sleep)(200);
187
- expect(counter).toBe(2);
111
+ await hassTestRunner.run(({ lifecycle, hass }) => {
112
+ jest.spyOn(hass.socket, "sendMessage").mockImplementation(async () => undefined);
113
+ let counter = 0;
114
+ hass.events.onLabelRegistryUpdate(() => counter++);
115
+ lifecycle.onReady(async () => {
116
+ setImmediate(async () => {
117
+ hass.socket.socketEvents.emit("label_registry_updated");
118
+ await sleep(5);
119
+ hass.socket.socketEvents.emit("label_registry_updated");
120
+ await sleep(5);
121
+ hass.socket.socketEvents.emit("label_registry_updated");
122
+ await sleep(75);
123
+ hass.socket.socketEvents.emit("label_registry_updated");
188
124
  });
189
- },
125
+ await sleep(200);
126
+ expect(counter).toBe(2);
127
+ });
190
128
  });
191
- await application.bootstrap((0, utils_1.SILENT_BOOT)({
192
- hass: {
193
- AUTO_CONNECT_SOCKET: false,
194
- AUTO_SCAN_CALL_PROXY: false,
195
- },
196
- }));
197
129
  });
198
130
  it("should wait for an update before returning when deleting", async () => {
199
131
  expect.assertions(1);
200
- application = (0, utils_1.CreateTestingApplication)({
201
- Test({ lifecycle, hass, event }) {
202
- jest
203
- .spyOn(hass.socket, "sendMessage")
204
- .mockImplementation(async () => undefined);
205
- lifecycle.onReady(async () => {
206
- const response = hass.label.delete("example_label");
207
- let order = "";
208
- setTimeout(() => {
209
- order += "a";
210
- event.emit(helpers_1.LABEL_REGISTRY_UPDATED);
211
- }, 5);
212
- await response;
213
- order += "b";
214
- expect(order).toEqual("ab");
215
- });
216
- },
132
+ await hassTestRunner.run(({ lifecycle, hass, event }) => {
133
+ jest.spyOn(hass.socket, "sendMessage").mockImplementation(async () => undefined);
134
+ lifecycle.onReady(async () => {
135
+ const response = hass.label.delete("example_label");
136
+ let order = "";
137
+ setTimeout(() => {
138
+ order += "a";
139
+ event.emit(LABEL_REGISTRY_UPDATED);
140
+ }, 5);
141
+ await response;
142
+ order += "b";
143
+ expect(order).toEqual("ab");
144
+ });
217
145
  });
218
- await application.bootstrap((0, utils_1.SILENT_BOOT)({
219
- hass: {
220
- AUTO_CONNECT_SOCKET: false,
221
- AUTO_SCAN_CALL_PROXY: false,
222
- },
223
- }));
224
146
  });
225
147
  it("should wait for an update before returning when creating", async () => {
226
148
  expect.assertions(1);
227
- application = (0, utils_1.CreateTestingApplication)({
228
- Test({ lifecycle, hass, event }) {
229
- jest
230
- .spyOn(hass.socket, "sendMessage")
231
- .mockImplementation(async () => undefined);
232
- lifecycle.onReady(async () => {
233
- const response = hass.label.create(EXAMPLE_LABEL);
234
- let order = "";
235
- setTimeout(() => {
236
- order += "a";
237
- event.emit(helpers_1.LABEL_REGISTRY_UPDATED);
238
- }, 5);
239
- await response;
240
- order += "b";
241
- expect(order).toEqual("ab");
242
- });
243
- },
149
+ await hassTestRunner.run(({ lifecycle, hass, event }) => {
150
+ jest.spyOn(hass.socket, "sendMessage").mockImplementation(async () => undefined);
151
+ lifecycle.onReady(async () => {
152
+ const response = hass.label.create(EXAMPLE_LABEL);
153
+ let order = "";
154
+ setTimeout(() => {
155
+ order += "a";
156
+ event.emit(LABEL_REGISTRY_UPDATED);
157
+ }, 5);
158
+ await response;
159
+ order += "b";
160
+ expect(order).toEqual("ab");
161
+ });
244
162
  });
245
- await application.bootstrap((0, utils_1.SILENT_BOOT)({
246
- hass: {
247
- AUTO_CONNECT_SOCKET: false,
248
- AUTO_SCAN_CALL_PROXY: false,
249
- },
250
- }));
251
163
  });
252
164
  });
253
165
  });
@@ -1 +1 @@
1
- {"version":3,"file":"label.spec.js","sourceRoot":"","sources":["../../src/testing/label.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"label.spec.js","sourceRoot":"","sources":["../../src/testing/label.spec.ts"],"names":[],"mappings":"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"}