@digital-alchemy/hass 24.9.3 → 24.9.5

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 (276) hide show
  1. package/README.md +3 -0
  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 +3 -22
  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 +13 -5
  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 +62 -44
  192. package/scripts/mock-assistant.sh +5 -0
  193. package/scripts/run-e2e.sh +7 -0
  194. package/scripts/test.sh +2 -0
  195. package/src/dynamic.ts +4254 -0
  196. package/src/extensions/area.extension.ts +118 -0
  197. package/src/extensions/backup.extension.ts +63 -0
  198. package/src/extensions/call-proxy.extension.ts +113 -0
  199. package/src/extensions/config.extension.ts +119 -0
  200. package/src/extensions/conversation.extension.ts +46 -0
  201. package/src/extensions/device.extension.ts +56 -0
  202. package/src/extensions/entity.extension.ts +344 -0
  203. package/src/extensions/events.extension.ts +25 -0
  204. package/src/extensions/fetch-api.extension.ts +269 -0
  205. package/src/extensions/floor.extension.ts +76 -0
  206. package/src/extensions/id-by.extension.ts +157 -0
  207. package/src/extensions/index.ts +16 -0
  208. package/src/extensions/internal.extension.ts +145 -0
  209. package/src/extensions/label.extension.ts +83 -0
  210. package/src/extensions/reference.extension.ts +330 -0
  211. package/src/extensions/registry.extension.ts +44 -0
  212. package/src/extensions/websocket-api.extension.ts +554 -0
  213. package/src/extensions/zone.extension.ts +69 -0
  214. package/src/hass.module.ts +217 -0
  215. package/src/helpers/backup.helper.ts +11 -0
  216. package/src/helpers/constants.helper.ts +30 -0
  217. package/src/helpers/device.helper.ts +25 -0
  218. package/src/helpers/entity-state.helper.ts +171 -0
  219. package/src/helpers/features.helper.ts +580 -0
  220. package/src/helpers/fetch/calendar.ts +54 -0
  221. package/src/helpers/fetch/configuration.ts +75 -0
  222. package/src/helpers/fetch/index.ts +5 -0
  223. package/src/helpers/fetch/server-log.ts +28 -0
  224. package/src/helpers/fetch/service-list.ts +64 -0
  225. package/src/helpers/fetch/weather-forecasts.ts +86 -0
  226. package/src/helpers/fetch.helper.ts +328 -0
  227. package/src/helpers/id-by.helper.ts +53 -0
  228. package/src/helpers/index.ts +13 -0
  229. package/src/helpers/interfaces.helper.ts +340 -0
  230. package/src/helpers/manifest.helper.ts +0 -0
  231. package/src/helpers/notify.helper.ts +302 -0
  232. package/src/helpers/registry.ts +281 -0
  233. package/src/helpers/utility.helper.ts +147 -0
  234. package/src/helpers/websocket.helper.ts +117 -0
  235. package/src/index.ts +5 -0
  236. package/src/mock_assistant/extensions/area.extension.ts +62 -0
  237. package/src/mock_assistant/extensions/config.extension.ts +33 -0
  238. package/src/mock_assistant/extensions/device.extension.ts +44 -0
  239. package/src/mock_assistant/extensions/entity-registry.extension.ts +41 -0
  240. package/src/mock_assistant/extensions/entity.extension.ts +114 -0
  241. package/src/mock_assistant/extensions/events.extension.ts +37 -0
  242. package/src/mock_assistant/extensions/fetch.extension.ts +3 -0
  243. package/src/mock_assistant/extensions/fixtures.extension.ts +79 -0
  244. package/src/mock_assistant/extensions/floor.extension.ts +64 -0
  245. package/src/mock_assistant/extensions/index.ts +12 -0
  246. package/src/mock_assistant/extensions/label.extension.ts +64 -0
  247. package/src/mock_assistant/extensions/services.extension.ts +25 -0
  248. package/src/mock_assistant/extensions/websocket-api.extension.ts +84 -0
  249. package/src/mock_assistant/extensions/zone.extension.ts +65 -0
  250. package/src/mock_assistant/helpers/fixtures.ts +22 -0
  251. package/src/mock_assistant/helpers/index.ts +1 -0
  252. package/src/mock_assistant/index.ts +3 -0
  253. package/src/mock_assistant/main.ts +46 -0
  254. package/src/mock_assistant/mock-assistant.module.ts +90 -0
  255. package/src/quickboot.module.ts +23 -0
  256. package/src/testing/area.spec.ts +189 -0
  257. package/src/testing/backup.spec.ts +157 -0
  258. package/src/testing/config.spec.ts +188 -0
  259. package/src/testing/device.spec.ts +89 -0
  260. package/src/testing/entity.spec.ts +171 -0
  261. package/src/testing/events.spec.ts +78 -0
  262. package/src/testing/fetch-api.spec.ts +410 -0
  263. package/src/testing/fixtures.spec.ts +158 -0
  264. package/src/testing/floor.spec.ts +186 -0
  265. package/src/testing/id-by.spec.ts +140 -0
  266. package/src/testing/label.spec.ts +186 -0
  267. package/src/testing/ref-by.spec.ts +300 -0
  268. package/src/testing/websocket.spec.ts +63 -0
  269. package/src/testing/workflow.spec.ts +195 -0
  270. package/src/testing/zone.spec.ts +109 -0
  271. package/dist/helpers/metrics.helper.d.ts +0 -29
  272. package/dist/helpers/metrics.helper.js +0 -62
  273. package/dist/helpers/metrics.helper.js.map +0 -1
  274. package/dist/mock_assistant/helpers/utils.d.ts +0 -4
  275. package/dist/mock_assistant/helpers/utils.js +0 -57
  276. package/dist/mock_assistant/helpers/utils.js.map +0 -1
@@ -1,16 +1,169 @@
1
- import { Events, Fixtures } from "./extensions";
1
+ import { MockAreaExtension, MockConfig, MockDeviceExtension, MockEntityExtension, MockEntityRegistryExtension, MockEvents, MockFixtures, MockFloorExtension, MockLabelExtension, MockServices, MockWebsocketAPI, MockZoneExtension } from "./extensions";
2
2
  export declare const LIB_MOCK_ASSISTANT: import("@digital-alchemy/core").LibraryDefinition<{
3
- events: typeof Events;
4
- fixtures: typeof Fixtures;
3
+ area: typeof MockAreaExtension;
4
+ config: typeof MockConfig;
5
+ device: typeof MockDeviceExtension;
6
+ entity: typeof MockEntityExtension;
7
+ entity_registry: typeof MockEntityRegistryExtension;
8
+ events: typeof MockEvents;
9
+ fixtures: typeof MockFixtures;
10
+ floor: typeof MockFloorExtension;
11
+ label: typeof MockLabelExtension;
12
+ services: typeof MockServices;
13
+ socket: typeof MockWebsocketAPI;
14
+ zone: typeof MockZoneExtension;
5
15
  }, {
16
+ EMIT_SLEEP: {
17
+ default: number;
18
+ description: string;
19
+ type: "number";
20
+ };
6
21
  FIXTURES_FILE: {
7
22
  default: string;
8
23
  description: any[];
9
24
  type: "string";
10
25
  };
26
+ PASS_AUTH: {
27
+ default: true;
28
+ description: string;
29
+ type: "boolean";
30
+ };
11
31
  }>;
12
32
  declare module "@digital-alchemy/core" {
13
33
  interface LoadedModules {
14
34
  mock_assistant: typeof LIB_MOCK_ASSISTANT;
15
35
  }
16
36
  }
37
+ /**
38
+ * @internal
39
+ *
40
+ * Make your own
41
+ */
42
+ export declare const createTestRunner: () => import("@digital-alchemy/core").iTestRunner<{
43
+ area: typeof import("..").Area;
44
+ backup: typeof import("..").Backup;
45
+ call: typeof import("..").CallProxy;
46
+ configure: typeof import("..").Configure;
47
+ device: typeof import("..").Device;
48
+ entity: typeof import("..").EntityManager;
49
+ events: typeof import("..").Events;
50
+ fetch: typeof import("..").FetchAPI;
51
+ floor: typeof import("..").Floor;
52
+ idBy: typeof import("..").IDByExtension;
53
+ internals: typeof import("..").FetchInternals;
54
+ label: typeof import("..").Label;
55
+ refBy: typeof import("..").ReferenceExtension;
56
+ registry: typeof import("..").Registry;
57
+ socket: typeof import("..").WebsocketAPI;
58
+ zone: typeof import("..").Zone;
59
+ }, {
60
+ BASE_URL: {
61
+ default: string;
62
+ description: string;
63
+ type: "string";
64
+ };
65
+ EVENT_DEBOUNCE_MS: {
66
+ default: number;
67
+ description: string;
68
+ type: "number";
69
+ };
70
+ EXPECT_RESPONSE_AFTER: {
71
+ default: number;
72
+ description: string;
73
+ type: "number";
74
+ };
75
+ RETRY_INTERVAL: {
76
+ default: number;
77
+ description: string;
78
+ type: "number";
79
+ };
80
+ SOCKET_AVG_DURATION: {
81
+ default: number;
82
+ description: string;
83
+ type: "number";
84
+ };
85
+ SOCKET_CRASH_REQUESTS_PER_SEC: {
86
+ default: number;
87
+ description: string;
88
+ type: "number";
89
+ };
90
+ SOCKET_WARN_REQUESTS_PER_SEC: {
91
+ default: number;
92
+ description: string;
93
+ type: "number";
94
+ };
95
+ TOKEN: {
96
+ description: string;
97
+ required: true;
98
+ type: "string";
99
+ };
100
+ VALIDATE_CONFIGURATION: {
101
+ default: false;
102
+ description: string;
103
+ type: "boolean";
104
+ };
105
+ }>;
106
+ export declare const hassTestRunner: import("@digital-alchemy/core").iTestRunner<{
107
+ area: typeof import("..").Area;
108
+ backup: typeof import("..").Backup;
109
+ call: typeof import("..").CallProxy;
110
+ configure: typeof import("..").Configure;
111
+ device: typeof import("..").Device;
112
+ entity: typeof import("..").EntityManager;
113
+ events: typeof import("..").Events;
114
+ fetch: typeof import("..").FetchAPI;
115
+ floor: typeof import("..").Floor;
116
+ idBy: typeof import("..").IDByExtension;
117
+ internals: typeof import("..").FetchInternals;
118
+ label: typeof import("..").Label;
119
+ refBy: typeof import("..").ReferenceExtension;
120
+ registry: typeof import("..").Registry;
121
+ socket: typeof import("..").WebsocketAPI;
122
+ zone: typeof import("..").Zone;
123
+ }, {
124
+ BASE_URL: {
125
+ default: string;
126
+ description: string;
127
+ type: "string";
128
+ };
129
+ EVENT_DEBOUNCE_MS: {
130
+ default: number;
131
+ description: string;
132
+ type: "number";
133
+ };
134
+ EXPECT_RESPONSE_AFTER: {
135
+ default: number;
136
+ description: string;
137
+ type: "number";
138
+ };
139
+ RETRY_INTERVAL: {
140
+ default: number;
141
+ description: string;
142
+ type: "number";
143
+ };
144
+ SOCKET_AVG_DURATION: {
145
+ default: number;
146
+ description: string;
147
+ type: "number";
148
+ };
149
+ SOCKET_CRASH_REQUESTS_PER_SEC: {
150
+ default: number;
151
+ description: string;
152
+ type: "number";
153
+ };
154
+ SOCKET_WARN_REQUESTS_PER_SEC: {
155
+ default: number;
156
+ description: string;
157
+ type: "number";
158
+ };
159
+ TOKEN: {
160
+ description: string;
161
+ required: true;
162
+ type: "string";
163
+ };
164
+ VALIDATE_CONFIGURATION: {
165
+ default: false;
166
+ description: string;
167
+ type: "boolean";
168
+ };
169
+ }>;
@@ -1,22 +1,67 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.LIB_MOCK_ASSISTANT = void 0;
4
- const core_1 = require("@digital-alchemy/core");
5
- const path_1 = require("path");
6
- const process_1 = require("process");
7
- const extensions_1 = require("./extensions");
8
- exports.LIB_MOCK_ASSISTANT = (0, core_1.CreateLibrary)({
1
+ import { CreateLibrary, createModule, SINGLE } from "@digital-alchemy/core";
2
+ import { join } from "path";
3
+ import { cwd } from "process";
4
+ import { LIB_HASS } from "..";
5
+ import { MockAreaExtension, MockConfig, MockDeviceExtension, MockEntityExtension, MockEntityRegistryExtension, MockEvents, MockFixtures, MockFloorExtension, MockLabelExtension, MockServices, MockWebsocketAPI, MockZoneExtension, } from "./extensions";
6
+ export const LIB_MOCK_ASSISTANT = CreateLibrary({
9
7
  configuration: {
8
+ EMIT_SLEEP: {
9
+ default: SINGLE,
10
+ description: "Time in ms to wait after emitting entity update events",
11
+ type: "number",
12
+ },
10
13
  FIXTURES_FILE: {
11
- default: (0, path_1.join)((0, process_1.cwd)(), "fixtures.json"),
14
+ default: join(cwd(), "fixtures.json"),
12
15
  description: [],
13
16
  type: "string",
14
17
  },
18
+ PASS_AUTH: {
19
+ default: true,
20
+ description: "Auto pass for auth challenges",
21
+ type: "boolean",
22
+ },
15
23
  },
24
+ depends: [LIB_HASS],
16
25
  name: "mock_assistant",
26
+ priorityInit: [
27
+ "socket",
28
+ "floor",
29
+ "device",
30
+ "area",
31
+ "label",
32
+ "config",
33
+ "entity",
34
+ "entity_registry",
35
+ "services",
36
+ "fixtures",
37
+ ],
17
38
  services: {
18
- events: extensions_1.Events,
19
- fixtures: extensions_1.Fixtures,
39
+ area: MockAreaExtension,
40
+ config: MockConfig,
41
+ device: MockDeviceExtension,
42
+ entity: MockEntityExtension,
43
+ entity_registry: MockEntityRegistryExtension,
44
+ events: MockEvents,
45
+ fixtures: MockFixtures,
46
+ floor: MockFloorExtension,
47
+ label: MockLabelExtension,
48
+ services: MockServices,
49
+ socket: MockWebsocketAPI,
50
+ zone: MockZoneExtension,
20
51
  },
21
52
  });
53
+ /**
54
+ * @internal
55
+ *
56
+ * Make your own
57
+ */
58
+ export const createTestRunner = () => createModule
59
+ .fromLibrary(LIB_HASS)
60
+ .extend()
61
+ .toTest()
62
+ .configure({
63
+ boilerplate: { IS_TEST: true },
64
+ })
65
+ .appendLibrary(LIB_MOCK_ASSISTANT);
66
+ export const hassTestRunner = createTestRunner();
22
67
  //# sourceMappingURL=mock-assistant.module.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mock-assistant.module.js","sourceRoot":"","sources":["../../src/mock_assistant/mock-assistant.module.ts"],"names":[],"mappings":";;;AAAA,gDAAsD;AACtD,+BAA4B;AAC5B,qCAA8B;AAE9B,6CAAgD;AAEnC,QAAA,kBAAkB,GAAG,IAAA,oBAAa,EAAC;IAC9C,aAAa,EAAE;QACb,aAAa,EAAE;YACb,OAAO,EAAE,IAAA,WAAI,EAAC,IAAA,aAAG,GAAE,EAAE,eAAe,CAAC;YACrC,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,QAAQ;SACf;KACF;IACD,IAAI,EAAE,gBAAgB;IACtB,QAAQ,EAAE;QACR,MAAM,EAAE,mBAAM;QACd,QAAQ,EAAE,qBAAQ;KACnB;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"mock-assistant.module.js","sourceRoot":"","sources":["../../src/mock_assistant/mock-assistant.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC;AAE9B,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AAC9B,OAAO,EACL,iBAAiB,EACjB,UAAU,EACV,mBAAmB,EACnB,mBAAmB,EACnB,2BAA2B,EAC3B,UAAU,EACV,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,cAAc,CAAC;AAEtB,MAAM,CAAC,MAAM,kBAAkB,GAAG,aAAa,CAAC;IAC9C,aAAa,EAAE;QACb,UAAU,EAAE;YACV,OAAO,EAAE,MAAM;YACf,WAAW,EAAE,wDAAwD;YACrE,IAAI,EAAE,QAAQ;SACf;QACD,aAAa,EAAE;YACb,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,eAAe,CAAC;YACrC,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,QAAQ;SACf;QACD,SAAS,EAAE;YACT,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,+BAA+B;YAC5C,IAAI,EAAE,SAAS;SAChB;KACF;IACD,OAAO,EAAE,CAAC,QAAQ,CAAC;IACnB,IAAI,EAAE,gBAAgB;IACtB,YAAY,EAAE;QACZ,QAAQ;QACR,OAAO;QACP,QAAQ;QACR,MAAM;QACN,OAAO;QACP,QAAQ;QACR,QAAQ;QACR,iBAAiB;QACjB,UAAU;QACV,UAAU;KACX;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,iBAAiB;QACvB,MAAM,EAAE,UAAU;QAClB,MAAM,EAAE,mBAAmB;QAC3B,MAAM,EAAE,mBAAmB;QAC3B,eAAe,EAAE,2BAA2B;QAC5C,MAAM,EAAE,UAAU;QAClB,QAAQ,EAAE,YAAY;QACtB,KAAK,EAAE,kBAAkB;QACzB,KAAK,EAAE,kBAAkB;QACzB,QAAQ,EAAE,YAAY;QACtB,MAAM,EAAE,gBAAgB;QACxB,IAAI,EAAE,iBAAiB;KACxB;CACF,CAAC,CAAC;AAQH;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,EAAE,CACnC,YAAY;KACT,WAAW,CAAC,QAAQ,CAAC;KACrB,MAAM,EAAE;KACR,MAAM,EAAE;KACR,SAAS,CAAC;IACT,WAAW,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;CAC/B,CAAC;KACD,aAAa,CAAC,kBAAkB,CAAC,CAAC;AAEvC,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAgB,EAAE,CAAC"}
@@ -1,16 +1,13 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.QuickBoot = QuickBoot;
4
- const core_1 = require("@digital-alchemy/core");
5
- const _1 = require(".");
1
+ import { CreateApplication } from "@digital-alchemy/core";
2
+ import { LIB_HASS } from ".";
6
3
  /**
7
4
  * Use from the node command line to probe apis
8
5
  * Not for normal application usage
9
6
  */
10
- async function QuickBoot(name) {
7
+ export async function QuickBoot(name) {
11
8
  let out;
12
- const app = (0, core_1.CreateApplication)({
13
- libraries: [_1.LIB_HASS],
9
+ const app = CreateApplication({
10
+ libraries: [LIB_HASS],
14
11
  // @ts-expect-error fake app, name used for loading credentials
15
12
  name,
16
13
  services: {
@@ -1 +1 @@
1
- {"version":3,"file":"quickboot.module.js","sourceRoot":"","sources":["../src/quickboot.module.ts"],"names":[],"mappings":";;AAQA,8BAcC;AAtBD,gDAA0E;AAE1E,wBAA6B;AAE7B;;;GAGG;AACI,KAAK,UAAU,SAAS,CAAC,IAAY;IAC1C,IAAI,GAAmB,CAAC;IACxB,MAAM,GAAG,GAAG,IAAA,wBAAiB,EAAC;QAC5B,SAAS,EAAE,CAAC,WAAQ,CAAC;QACrB,+DAA+D;QAC/D,IAAI;QACJ,QAAQ,EAAE;YACR,MAAM,CAAC,MAAsB;gBAC3B,GAAG,GAAG,MAAM,CAAC;YACf,CAAC;SACF;KACF,CAAC,CAAC;IACH,MAAM,GAAG,CAAC,SAAS,EAAE,CAAC;IACtB,OAAO,GAAG,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"quickboot.module.js","sourceRoot":"","sources":["../src/quickboot.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAkB,MAAM,uBAAuB,CAAC;AAE1E,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,CAAC;AAE7B;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAY;IAC1C,IAAI,GAAmB,CAAC;IACxB,MAAM,GAAG,GAAG,iBAAiB,CAAC;QAC5B,SAAS,EAAE,CAAC,QAAQ,CAAC;QACrB,+DAA+D;QAC/D,IAAI;QACJ,QAAQ,EAAE;YACR,MAAM,CAAC,MAAsB;gBAC3B,GAAG,GAAG,MAAM,CAAC;YACf,CAAC;SACF;KACF,CAAC,CAAC;IACH,MAAM,GAAG,CAAC,SAAS,EAAE,CAAC;IACtB,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -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 mock_assistant_1 = require("../mock_assistant");
1
+ import { sleep } from "@digital-alchemy/core";
2
+ import { AREA_REGISTRY_UPDATED } from "../helpers";
3
+ import { hassTestRunner, INTERNAL_MESSAGE } from "../mock_assistant";
6
4
  describe("Area", () => {
7
- let application;
8
5
  const EXAMPLE_AREA = {
9
6
  area_id: "empty_area",
10
7
  floor_id: null,
@@ -14,241 +11,156 @@ describe("Area", () => {
14
11
  picture: null,
15
12
  };
16
13
  afterEach(async () => {
17
- if (application) {
18
- await application.teardown();
19
- application = undefined;
20
- }
14
+ await hassTestRunner.teardown();
21
15
  jest.restoreAllMocks();
22
16
  });
23
17
  describe("Lifecycle", () => {
24
18
  it("should force values to be available before ready", async () => {
25
19
  expect.assertions(1);
26
- application = (0, mock_assistant_1.CreateTestingApplication)({
27
- Test({ lifecycle, hass }) {
28
- const spy = jest
29
- .spyOn(hass.socket, "sendMessage")
30
- .mockImplementation(async () => [EXAMPLE_AREA]);
31
- lifecycle.onReady(async () => {
32
- await hass.area.list();
33
- expect(spy).toHaveBeenCalledWith(expect.objectContaining({ type: "config/area_registry/list" }));
34
- });
35
- },
20
+ const app = await hassTestRunner.run(({ mock_assistant, lifecycle, hass }) => {
21
+ const spy = jest.fn();
22
+ mock_assistant.socket.connection.on(INTERNAL_MESSAGE, spy);
23
+ lifecycle.onReady(async () => {
24
+ await hass.area.list();
25
+ expect(spy).toHaveBeenCalledWith(expect.objectContaining({ type: "config/area_registry/list" }));
26
+ }, -1);
36
27
  });
37
- await application.bootstrap((0, mock_assistant_1.SILENT_BOOT)({
38
- hass: {
39
- AUTO_CONNECT_SOCKET: false,
40
- AUTO_SCAN_CALL_PROXY: false,
41
- },
42
- }));
28
+ await app.teardown();
43
29
  });
44
30
  });
45
31
  describe("API", () => {
46
32
  describe("Formatting", () => {
47
33
  it("should call list properly", async () => {
48
34
  expect.assertions(1);
49
- application = (0, mock_assistant_1.CreateTestingApplication)({
50
- Test({ lifecycle, hass }) {
51
- const spy = jest
52
- .spyOn(hass.socket, "sendMessage")
53
- .mockImplementation(async () => []);
54
- lifecycle.onReady(async () => {
55
- await hass.area.list();
56
- expect(spy).toHaveBeenCalledWith(expect.objectContaining({ type: "config/area_registry/list" }));
57
- });
58
- },
35
+ await hassTestRunner.run(({ lifecycle, hass }) => {
36
+ const spy = jest.spyOn(hass.socket, "sendMessage").mockImplementation(async () => []);
37
+ lifecycle.onReady(async () => {
38
+ await hass.area.list();
39
+ expect(spy).toHaveBeenCalledWith(expect.objectContaining({ type: "config/area_registry/list" }));
40
+ });
59
41
  });
60
- await application.bootstrap((0, mock_assistant_1.SILENT_BOOT)({
61
- hass: {
62
- AUTO_CONNECT_SOCKET: false,
63
- AUTO_SCAN_CALL_PROXY: false,
64
- },
65
- }));
66
42
  });
67
43
  it("should call update properly", async () => {
68
44
  expect.assertions(1);
69
- application = (0, mock_assistant_1.CreateTestingApplication)({
70
- Test({ lifecycle, hass, event }) {
71
- const spy = jest
72
- .spyOn(hass.socket, "sendMessage")
73
- .mockImplementation(async () => undefined);
74
- lifecycle.onReady(async () => {
75
- setImmediate(() => event.emit(helpers_1.AREA_REGISTRY_UPDATED));
76
- await hass.area.update(EXAMPLE_AREA);
77
- expect(spy).toHaveBeenCalledWith({
78
- type: "config/area_registry/update",
79
- ...EXAMPLE_AREA,
80
- });
45
+ await hassTestRunner.run(({ lifecycle, hass, event }) => {
46
+ const spy = jest
47
+ .spyOn(hass.socket, "sendMessage")
48
+ .mockImplementation(async () => undefined);
49
+ lifecycle.onReady(async () => {
50
+ setImmediate(() => event.emit(AREA_REGISTRY_UPDATED));
51
+ await hass.area.update(EXAMPLE_AREA);
52
+ expect(spy).toHaveBeenCalledWith({
53
+ type: "config/area_registry/update",
54
+ ...EXAMPLE_AREA,
81
55
  });
82
- },
56
+ });
83
57
  });
84
- await application.bootstrap((0, mock_assistant_1.SILENT_BOOT)({
85
- hass: {
86
- AUTO_CONNECT_SOCKET: false,
87
- AUTO_SCAN_CALL_PROXY: false,
88
- },
89
- }));
90
58
  });
91
59
  it("should debounce updates properly", async () => {
92
60
  expect.assertions(1);
93
- application = (0, mock_assistant_1.CreateTestingApplication)({
94
- Test({ lifecycle, hass }) {
95
- jest
96
- .spyOn(hass.socket, "sendMessage")
97
- .mockImplementation(async () => undefined);
98
- let counter = 0;
99
- hass.events.onAreaRegistryUpdate(() => counter++);
100
- lifecycle.onReady(async () => {
101
- setImmediate(async () => {
102
- hass.socket.socketEvents.emit("area_registry_updated");
103
- await (0, core_1.sleep)(5);
104
- hass.socket.socketEvents.emit("area_registry_updated");
105
- await (0, core_1.sleep)(5);
106
- hass.socket.socketEvents.emit("area_registry_updated");
107
- await (0, core_1.sleep)(75);
108
- hass.socket.socketEvents.emit("area_registry_updated");
109
- });
110
- await (0, core_1.sleep)(200);
111
- expect(counter).toBe(2);
61
+ await hassTestRunner.run(({ lifecycle, hass }) => {
62
+ jest.spyOn(hass.socket, "sendMessage").mockImplementation(async () => undefined);
63
+ let counter = 0;
64
+ hass.events.onAreaRegistryUpdate(() => counter++);
65
+ lifecycle.onReady(async () => {
66
+ setImmediate(async () => {
67
+ hass.socket.socketEvents.emit("area_registry_updated");
68
+ await sleep(5);
69
+ hass.socket.socketEvents.emit("area_registry_updated");
70
+ await sleep(5);
71
+ hass.socket.socketEvents.emit("area_registry_updated");
72
+ await sleep(75);
73
+ hass.socket.socketEvents.emit("area_registry_updated");
112
74
  });
113
- },
75
+ await sleep(200);
76
+ expect(counter).toBe(2);
77
+ });
114
78
  });
115
- await application.bootstrap((0, mock_assistant_1.SILENT_BOOT)({
116
- hass: {
117
- AUTO_CONNECT_SOCKET: false,
118
- AUTO_SCAN_CALL_PROXY: false,
119
- },
120
- }));
121
79
  });
122
80
  it("should call delete properly", async () => {
123
81
  expect.assertions(1);
124
- application = (0, mock_assistant_1.CreateTestingApplication)({
125
- Test({ lifecycle, hass, event }) {
126
- const spy = jest
127
- .spyOn(hass.socket, "sendMessage")
128
- .mockImplementation(async () => undefined);
129
- lifecycle.onReady(async () => {
130
- setImmediate(() => event.emit(helpers_1.AREA_REGISTRY_UPDATED));
131
- await hass.area.delete(EXAMPLE_AREA.area_id);
132
- expect(spy).toHaveBeenCalledWith({
133
- area_id: "empty_area",
134
- type: "config/area_registry/delete",
135
- });
82
+ await hassTestRunner.run(({ lifecycle, hass, event }) => {
83
+ const spy = jest
84
+ .spyOn(hass.socket, "sendMessage")
85
+ .mockImplementation(async () => undefined);
86
+ lifecycle.onReady(async () => {
87
+ setImmediate(() => event.emit(AREA_REGISTRY_UPDATED));
88
+ await hass.area.delete(EXAMPLE_AREA.area_id);
89
+ expect(spy).toHaveBeenCalledWith({
90
+ area_id: "empty_area",
91
+ type: "config/area_registry/delete",
136
92
  });
137
- },
93
+ });
138
94
  });
139
- await application.bootstrap((0, mock_assistant_1.SILENT_BOOT)({
140
- hass: {
141
- AUTO_CONNECT_SOCKET: false,
142
- AUTO_SCAN_CALL_PROXY: false,
143
- },
144
- }));
145
95
  });
146
96
  it("should call create properly", async () => {
147
97
  expect.assertions(1);
148
- application = (0, mock_assistant_1.CreateTestingApplication)({
149
- Test({ lifecycle, hass, event }) {
150
- const spy = jest
151
- .spyOn(hass.socket, "sendMessage")
152
- .mockImplementation(async () => undefined);
153
- lifecycle.onReady(async () => {
154
- setImmediate(() => event.emit(helpers_1.AREA_REGISTRY_UPDATED));
155
- await hass.area.create(EXAMPLE_AREA);
156
- expect(spy).toHaveBeenCalledWith({
157
- type: "config/area_registry/create",
158
- ...EXAMPLE_AREA,
159
- });
98
+ await hassTestRunner.run(({ lifecycle, hass, event }) => {
99
+ const spy = jest
100
+ .spyOn(hass.socket, "sendMessage")
101
+ .mockImplementation(async () => undefined);
102
+ lifecycle.onReady(async () => {
103
+ setImmediate(() => event.emit(AREA_REGISTRY_UPDATED));
104
+ await hass.area.create(EXAMPLE_AREA);
105
+ expect(spy).toHaveBeenCalledWith({
106
+ type: "config/area_registry/create",
107
+ ...EXAMPLE_AREA,
160
108
  });
161
- },
109
+ });
162
110
  });
163
- await application.bootstrap((0, mock_assistant_1.SILENT_BOOT)({
164
- hass: {
165
- AUTO_CONNECT_SOCKET: false,
166
- AUTO_SCAN_CALL_PROXY: false,
167
- },
168
- }));
169
111
  });
170
112
  });
171
113
  describe("Order of operations", () => {
172
114
  it("should wait for an update before returning when updating", async () => {
173
115
  expect.assertions(1);
174
- application = (0, mock_assistant_1.CreateTestingApplication)({
175
- Test({ lifecycle, hass, event }) {
176
- jest
177
- .spyOn(hass.socket, "sendMessage")
178
- .mockImplementation(async () => undefined);
179
- lifecycle.onReady(async () => {
180
- const response = hass.area.update(EXAMPLE_AREA);
181
- let order = "";
182
- setTimeout(() => {
183
- order += "a";
184
- event.emit(helpers_1.AREA_REGISTRY_UPDATED);
185
- }, 5);
186
- await response;
187
- order += "b";
188
- expect(order).toEqual("ab");
189
- });
190
- },
116
+ await hassTestRunner.run(({ lifecycle, hass, event }) => {
117
+ jest.spyOn(hass.socket, "sendMessage").mockImplementation(async () => undefined);
118
+ lifecycle.onReady(async () => {
119
+ const response = hass.area.update(EXAMPLE_AREA);
120
+ let order = "";
121
+ setTimeout(() => {
122
+ order += "a";
123
+ event.emit(AREA_REGISTRY_UPDATED);
124
+ }, 5);
125
+ await response;
126
+ order += "b";
127
+ expect(order).toEqual("ab");
128
+ });
191
129
  });
192
- await application.bootstrap((0, mock_assistant_1.SILENT_BOOT)({
193
- hass: {
194
- AUTO_CONNECT_SOCKET: false,
195
- AUTO_SCAN_CALL_PROXY: false,
196
- },
197
- }));
198
130
  });
199
131
  it("should wait for an update before returning when deleting", async () => {
200
132
  expect.assertions(1);
201
- application = (0, mock_assistant_1.CreateTestingApplication)({
202
- Test({ lifecycle, hass, event }) {
203
- jest
204
- .spyOn(hass.socket, "sendMessage")
205
- .mockImplementation(async () => undefined);
206
- lifecycle.onReady(async () => {
207
- const response = hass.area.delete("example_area");
208
- let order = "";
209
- setTimeout(() => {
210
- order += "a";
211
- event.emit(helpers_1.AREA_REGISTRY_UPDATED);
212
- }, 5);
213
- await response;
214
- order += "b";
215
- expect(order).toEqual("ab");
216
- });
217
- },
133
+ await hassTestRunner.run(({ lifecycle, hass, event }) => {
134
+ jest.spyOn(hass.socket, "sendMessage").mockImplementation(async () => undefined);
135
+ lifecycle.onReady(async () => {
136
+ const response = hass.area.delete("example_area");
137
+ let order = "";
138
+ setTimeout(() => {
139
+ order += "a";
140
+ event.emit(AREA_REGISTRY_UPDATED);
141
+ }, 5);
142
+ await response;
143
+ order += "b";
144
+ expect(order).toEqual("ab");
145
+ });
218
146
  });
219
- await application.bootstrap((0, mock_assistant_1.SILENT_BOOT)({
220
- hass: {
221
- AUTO_CONNECT_SOCKET: false,
222
- AUTO_SCAN_CALL_PROXY: false,
223
- },
224
- }));
225
147
  });
226
148
  it("should wait for an update before returning when creating", async () => {
227
149
  expect.assertions(1);
228
- application = (0, mock_assistant_1.CreateTestingApplication)({
229
- Test({ lifecycle, hass, event }) {
230
- jest
231
- .spyOn(hass.socket, "sendMessage")
232
- .mockImplementation(async () => undefined);
233
- lifecycle.onReady(async () => {
234
- const response = hass.area.create(EXAMPLE_AREA);
235
- let order = "";
236
- setTimeout(() => {
237
- order += "a";
238
- event.emit(helpers_1.AREA_REGISTRY_UPDATED);
239
- }, 5);
240
- await response;
241
- order += "b";
242
- expect(order).toEqual("ab");
243
- });
244
- },
150
+ await hassTestRunner.run(({ lifecycle, hass, event }) => {
151
+ jest.spyOn(hass.socket, "sendMessage").mockImplementation(async () => undefined);
152
+ lifecycle.onReady(async () => {
153
+ const response = hass.area.create(EXAMPLE_AREA);
154
+ let order = "";
155
+ setTimeout(() => {
156
+ order += "a";
157
+ event.emit(AREA_REGISTRY_UPDATED);
158
+ }, 5);
159
+ await response;
160
+ order += "b";
161
+ expect(order).toEqual("ab");
162
+ });
245
163
  });
246
- await application.bootstrap((0, mock_assistant_1.SILENT_BOOT)({
247
- hass: {
248
- AUTO_CONNECT_SOCKET: false,
249
- AUTO_SCAN_CALL_PROXY: false,
250
- },
251
- }));
252
164
  });
253
165
  });
254
166
  });