@equinor/fusion-framework-module-services 5.1.1-msal-0b0dadf270ee512f019a325c2f1586f91f9150a4 → 5.1.2

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 (254) hide show
  1. package/CHANGELOG.md +114 -98
  2. package/dist/esm/bookmarks/api-version.js.map +1 -1
  3. package/dist/esm/bookmarks/client.js.map +1 -1
  4. package/dist/esm/bookmarks/endpoints/bookmark-apply.get.js.map +1 -1
  5. package/dist/esm/bookmarks/endpoints/bookmark.delete.js.map +1 -1
  6. package/dist/esm/bookmarks/endpoints/bookmark.get.js.map +1 -1
  7. package/dist/esm/bookmarks/endpoints/bookmark.patch.js.map +1 -1
  8. package/dist/esm/bookmarks/endpoints/bookmark.post.js.map +1 -1
  9. package/dist/esm/bookmarks/endpoints/user-bookmark-favourite.delete.js.map +1 -1
  10. package/dist/esm/bookmarks/endpoints/user-bookmark-favourite.head.js.map +1 -1
  11. package/dist/esm/bookmarks/endpoints/user-bookmark-favourite.post.js.map +1 -1
  12. package/dist/esm/bookmarks/endpoints/user-bookmarks.get.js.map +1 -1
  13. package/dist/esm/bookmarks/schemas.js +1 -3
  14. package/dist/esm/bookmarks/schemas.js.map +1 -1
  15. package/dist/esm/bookmarks/selectors.js.map +1 -1
  16. package/dist/esm/context/client.js +2 -2
  17. package/dist/esm/context/client.js.map +1 -1
  18. package/dist/esm/context/get/client.js.map +1 -1
  19. package/dist/esm/context/get/generate-endpoint.js +0 -1
  20. package/dist/esm/context/get/generate-endpoint.js.map +1 -1
  21. package/dist/esm/context/get/generate-parameters.js.map +1 -1
  22. package/dist/esm/context/get/types.js.map +1 -1
  23. package/dist/esm/context/index.js.map +1 -1
  24. package/dist/esm/context/query/client.js.map +1 -1
  25. package/dist/esm/context/query/generate-endpoint.js +58 -13
  26. package/dist/esm/context/query/generate-endpoint.js.map +1 -1
  27. package/dist/esm/context/query/generate-parameters.js.map +1 -1
  28. package/dist/esm/context/query/types.js.map +1 -1
  29. package/dist/esm/context/related/client.js.map +1 -1
  30. package/dist/esm/context/related/generate-endpoint.js +56 -13
  31. package/dist/esm/context/related/generate-endpoint.js.map +1 -1
  32. package/dist/esm/context/related/generate-parameters.js.map +1 -1
  33. package/dist/esm/context/related/types.js.map +1 -1
  34. package/dist/esm/context/static.js.map +1 -1
  35. package/dist/esm/errors.js.map +1 -1
  36. package/dist/esm/module.js.map +1 -1
  37. package/dist/esm/notification/client.js.map +1 -1
  38. package/dist/esm/notification/notification/delete/client.js.map +1 -1
  39. package/dist/esm/notification/notification/delete/generate-endpoint.js +0 -1
  40. package/dist/esm/notification/notification/delete/generate-endpoint.js.map +1 -1
  41. package/dist/esm/notification/notification/delete/generate-parameters.js.map +1 -1
  42. package/dist/esm/notification/notification/get/client.js.map +1 -1
  43. package/dist/esm/notification/notification/get/generate-endpoint.js +0 -1
  44. package/dist/esm/notification/notification/get/generate-endpoint.js.map +1 -1
  45. package/dist/esm/notification/notification/get/generate-parameters.js.map +1 -1
  46. package/dist/esm/notification/notification/getAll/client.js.map +1 -1
  47. package/dist/esm/notification/notification/getAll/generate-endpoint.js +0 -1
  48. package/dist/esm/notification/notification/getAll/generate-endpoint.js.map +1 -1
  49. package/dist/esm/notification/notification/getAll/generate-parameters.js.map +1 -1
  50. package/dist/esm/notification/notification/patch/client.js.map +1 -1
  51. package/dist/esm/notification/notification/patch/generate-endpoint.js +0 -1
  52. package/dist/esm/notification/notification/patch/generate-endpoint.js.map +1 -1
  53. package/dist/esm/notification/notification/patch/generate-parameters.js.map +1 -1
  54. package/dist/esm/notification/notification/post/client.js.map +1 -1
  55. package/dist/esm/notification/notification/post/generate-endpoint.js +0 -1
  56. package/dist/esm/notification/notification/post/generate-endpoint.js.map +1 -1
  57. package/dist/esm/notification/notification/post/generate-parameters.js.map +1 -1
  58. package/dist/esm/notification/settings/get/client.js.map +1 -1
  59. package/dist/esm/notification/settings/get/generate-endpoint.js +0 -1
  60. package/dist/esm/notification/settings/get/generate-endpoint.js.map +1 -1
  61. package/dist/esm/notification/settings/get/generate-parameters.js.map +1 -1
  62. package/dist/esm/notification/settings/put/client.js.map +1 -1
  63. package/dist/esm/notification/settings/put/generate-endpoint.js +0 -1
  64. package/dist/esm/notification/settings/put/generate-endpoint.js.map +1 -1
  65. package/dist/esm/notification/settings/put/generate-parameters.js.map +1 -1
  66. package/dist/esm/notification/static.js.map +1 -1
  67. package/dist/esm/people/client.js.map +1 -1
  68. package/dist/esm/people/person-details/client.js.map +1 -1
  69. package/dist/esm/people/person-details/generate-endpoint.js.map +1 -1
  70. package/dist/esm/people/person-details/generate-parameters.js.map +1 -1
  71. package/dist/esm/people/person-photo/client.js.map +1 -1
  72. package/dist/esm/people/person-photo/generate-endpoint.js.map +1 -1
  73. package/dist/esm/people/person-photo/generate-parameters.js.map +1 -1
  74. package/dist/esm/people/query/client.js.map +1 -1
  75. package/dist/esm/people/query/generate-endpoint.js.map +1 -1
  76. package/dist/esm/people/query/generate-parameters.js.map +1 -1
  77. package/dist/esm/people/static.js.map +1 -1
  78. package/dist/esm/people/utils.js.map +1 -1
  79. package/dist/esm/provider.js.map +1 -1
  80. package/dist/esm/utils.js.map +1 -1
  81. package/dist/esm/version.js +1 -1
  82. package/dist/tsconfig.tsbuildinfo +1 -1
  83. package/dist/types/bookmarks/api-version.d.ts +2 -2
  84. package/dist/types/bookmarks/client.d.ts +8 -8
  85. package/dist/types/bookmarks/endpoints/bookmark-apply.get.d.ts +1 -1
  86. package/dist/types/bookmarks/endpoints/bookmark.delete.d.ts +1 -1
  87. package/dist/types/bookmarks/endpoints/bookmark.get.d.ts +1 -1
  88. package/dist/types/bookmarks/endpoints/bookmark.patch.d.ts +1 -1
  89. package/dist/types/bookmarks/endpoints/bookmark.post.d.ts +1 -1
  90. package/dist/types/bookmarks/endpoints/user-bookmark-favourite.delete.d.ts +1 -1
  91. package/dist/types/bookmarks/endpoints/user-bookmark-favourite.head.d.ts +1 -1
  92. package/dist/types/bookmarks/endpoints/user-bookmark-favourite.post.d.ts +1 -1
  93. package/dist/types/bookmarks/endpoints/user-bookmarks.get.d.ts +1 -1
  94. package/dist/types/bookmarks/selectors.d.ts +1 -1
  95. package/dist/types/bookmarks/types.d.ts +1 -1
  96. package/dist/types/configurator.d.ts +1 -1
  97. package/dist/types/context/client.d.ts +4 -4
  98. package/dist/types/context/get/client.d.ts +3 -2
  99. package/dist/types/context/get/generate-endpoint.d.ts +2 -1
  100. package/dist/types/context/get/generate-parameters.d.ts +2 -1
  101. package/dist/types/context/get/types.d.ts +2 -2
  102. package/dist/types/context/index.d.ts +1 -0
  103. package/dist/types/context/query/client.d.ts +3 -2
  104. package/dist/types/context/query/generate-endpoint.d.ts +11 -1
  105. package/dist/types/context/query/generate-parameters.d.ts +3 -2
  106. package/dist/types/context/query/types.d.ts +2 -2
  107. package/dist/types/context/related/client.d.ts +3 -2
  108. package/dist/types/context/related/generate-endpoint.d.ts +11 -1
  109. package/dist/types/context/related/generate-parameters.d.ts +3 -2
  110. package/dist/types/context/related/types.d.ts +2 -2
  111. package/dist/types/context/static.d.ts +2 -2
  112. package/dist/types/module.d.ts +2 -2
  113. package/dist/types/notification/client.d.ts +9 -9
  114. package/dist/types/notification/notification/delete/client.d.ts +4 -3
  115. package/dist/types/notification/notification/delete/generate-endpoint.d.ts +2 -1
  116. package/dist/types/notification/notification/delete/generate-parameters.d.ts +4 -3
  117. package/dist/types/notification/notification/delete/types.d.ts +3 -3
  118. package/dist/types/notification/notification/get/client.d.ts +4 -3
  119. package/dist/types/notification/notification/get/generate-endpoint.d.ts +2 -1
  120. package/dist/types/notification/notification/get/generate-parameters.d.ts +4 -3
  121. package/dist/types/notification/notification/get/types.d.ts +3 -3
  122. package/dist/types/notification/notification/getAll/client.d.ts +4 -3
  123. package/dist/types/notification/notification/getAll/generate-endpoint.d.ts +2 -1
  124. package/dist/types/notification/notification/getAll/generate-parameters.d.ts +4 -3
  125. package/dist/types/notification/notification/getAll/types.d.ts +3 -3
  126. package/dist/types/notification/notification/patch/client.d.ts +4 -3
  127. package/dist/types/notification/notification/patch/generate-endpoint.d.ts +2 -1
  128. package/dist/types/notification/notification/patch/generate-parameters.d.ts +4 -3
  129. package/dist/types/notification/notification/patch/types.d.ts +3 -3
  130. package/dist/types/notification/notification/post/client.d.ts +4 -3
  131. package/dist/types/notification/notification/post/generate-endpoint.d.ts +2 -1
  132. package/dist/types/notification/notification/post/generate-parameters.d.ts +4 -3
  133. package/dist/types/notification/notification/post/types.d.ts +3 -3
  134. package/dist/types/notification/settings/get/client.d.ts +4 -3
  135. package/dist/types/notification/settings/get/generate-endpoint.d.ts +2 -1
  136. package/dist/types/notification/settings/get/generate-parameters.d.ts +4 -3
  137. package/dist/types/notification/settings/get/types.d.ts +3 -3
  138. package/dist/types/notification/settings/put/client.d.ts +4 -3
  139. package/dist/types/notification/settings/put/generate-endpoint.d.ts +2 -1
  140. package/dist/types/notification/settings/put/generate-parameters.d.ts +4 -3
  141. package/dist/types/notification/settings/put/types.d.ts +3 -3
  142. package/dist/types/notification/static.d.ts +2 -2
  143. package/dist/types/people/api-models.d.ts +2 -2
  144. package/dist/types/people/api-models.v2.d.ts +1 -1
  145. package/dist/types/people/api-models.v4.d.ts +1 -1
  146. package/dist/types/people/client.d.ts +4 -4
  147. package/dist/types/people/person-details/client.d.ts +2 -2
  148. package/dist/types/people/person-details/generate-parameters.d.ts +1 -1
  149. package/dist/types/people/person-details/types.d.ts +1 -1
  150. package/dist/types/people/person-photo/client.d.ts +2 -2
  151. package/dist/types/people/person-photo/generate-parameters.d.ts +1 -1
  152. package/dist/types/people/person-photo/types.d.ts +2 -2
  153. package/dist/types/people/query/client.d.ts +2 -2
  154. package/dist/types/people/query/generate-parameters.d.ts +1 -1
  155. package/dist/types/people/query/types.d.ts +2 -2
  156. package/dist/types/people/static.d.ts +2 -2
  157. package/dist/types/people/utils.d.ts +1 -1
  158. package/dist/types/provider.d.ts +3 -3
  159. package/dist/types/types.d.ts +1 -1
  160. package/dist/types/utils.d.ts +1 -1
  161. package/dist/types/version.d.ts +1 -1
  162. package/package.json +11 -7
  163. package/src/bookmarks/api-version.ts +2 -2
  164. package/src/bookmarks/client.ts +228 -231
  165. package/src/bookmarks/endpoints/bookmark-apply.get.ts +58 -58
  166. package/src/bookmarks/endpoints/bookmark.delete.ts +57 -57
  167. package/src/bookmarks/endpoints/bookmark.get.ts +62 -62
  168. package/src/bookmarks/endpoints/bookmark.patch.ts +78 -78
  169. package/src/bookmarks/endpoints/bookmark.post.ts +68 -68
  170. package/src/bookmarks/endpoints/user-bookmark-favourite.delete.ts +57 -57
  171. package/src/bookmarks/endpoints/user-bookmark-favourite.head.ts +57 -57
  172. package/src/bookmarks/endpoints/user-bookmark-favourite.post.ts +58 -58
  173. package/src/bookmarks/endpoints/user-bookmarks.get.ts +98 -98
  174. package/src/bookmarks/schemas.ts +54 -56
  175. package/src/bookmarks/selectors.ts +24 -24
  176. package/src/bookmarks/types.ts +6 -6
  177. package/src/configurator.ts +3 -3
  178. package/src/context/api-models.ts +19 -19
  179. package/src/context/client.ts +68 -58
  180. package/src/context/get/client.ts +18 -18
  181. package/src/context/get/generate-endpoint.ts +13 -14
  182. package/src/context/get/generate-parameters.ts +9 -9
  183. package/src/context/get/types.ts +20 -20
  184. package/src/context/index.ts +2 -0
  185. package/src/context/query/client.ts +22 -22
  186. package/src/context/query/generate-endpoint.ts +97 -49
  187. package/src/context/query/generate-parameters.ts +10 -10
  188. package/src/context/query/types.ts +25 -25
  189. package/src/context/related/client.ts +22 -22
  190. package/src/context/related/generate-endpoint.ts +92 -45
  191. package/src/context/related/generate-parameters.ts +10 -10
  192. package/src/context/related/types.ts +27 -27
  193. package/src/context/static.ts +3 -3
  194. package/src/errors.ts +6 -6
  195. package/src/module.ts +50 -52
  196. package/src/notification/api-models.ts +36 -36
  197. package/src/notification/client.ts +131 -151
  198. package/src/notification/notification/delete/client.ts +22 -22
  199. package/src/notification/notification/delete/generate-endpoint.ts +13 -14
  200. package/src/notification/notification/delete/generate-parameters.ts +18 -18
  201. package/src/notification/notification/delete/types.ts +21 -21
  202. package/src/notification/notification/get/client.ts +19 -19
  203. package/src/notification/notification/get/generate-endpoint.ts +13 -14
  204. package/src/notification/notification/get/generate-parameters.ts +11 -11
  205. package/src/notification/notification/get/types.ts +21 -21
  206. package/src/notification/notification/getAll/client.ts +22 -22
  207. package/src/notification/notification/getAll/generate-endpoint.ts +13 -14
  208. package/src/notification/notification/getAll/generate-parameters.ts +11 -11
  209. package/src/notification/notification/getAll/types.ts +21 -21
  210. package/src/notification/notification/patch/client.ts +22 -22
  211. package/src/notification/notification/patch/generate-endpoint.ts +13 -14
  212. package/src/notification/notification/patch/generate-parameters.ts +18 -18
  213. package/src/notification/notification/patch/types.ts +22 -22
  214. package/src/notification/notification/post/client.ts +22 -22
  215. package/src/notification/notification/post/generate-endpoint.ts +13 -14
  216. package/src/notification/notification/post/generate-parameters.ts +18 -18
  217. package/src/notification/notification/post/types.ts +31 -31
  218. package/src/notification/settings/get/client.ts +22 -22
  219. package/src/notification/settings/get/generate-endpoint.ts +13 -14
  220. package/src/notification/settings/get/generate-parameters.ts +11 -11
  221. package/src/notification/settings/get/types.ts +21 -21
  222. package/src/notification/settings/put/client.ts +22 -22
  223. package/src/notification/settings/put/generate-endpoint.ts +13 -14
  224. package/src/notification/settings/put/generate-parameters.ts +20 -20
  225. package/src/notification/settings/put/types.ts +20 -20
  226. package/src/notification/static.ts +3 -3
  227. package/src/people/api-models.ts +30 -30
  228. package/src/people/api-models.v2.ts +27 -27
  229. package/src/people/api-models.v4.ts +79 -79
  230. package/src/people/client.ts +73 -77
  231. package/src/people/person-details/client.ts +21 -18
  232. package/src/people/person-details/generate-endpoint.ts +16 -16
  233. package/src/people/person-details/generate-parameters.ts +8 -8
  234. package/src/people/person-details/types.ts +13 -13
  235. package/src/people/person-photo/client.ts +19 -22
  236. package/src/people/person-photo/generate-endpoint.ts +13 -13
  237. package/src/people/person-photo/generate-parameters.ts +8 -8
  238. package/src/people/person-photo/types.ts +8 -8
  239. package/src/people/query/client.ts +20 -18
  240. package/src/people/query/generate-endpoint.ts +14 -14
  241. package/src/people/query/generate-parameters.ts +8 -8
  242. package/src/people/query/types.ts +10 -10
  243. package/src/people/static.ts +2 -2
  244. package/src/people/utils.ts +20 -20
  245. package/src/provider.ts +85 -85
  246. package/src/types.ts +34 -34
  247. package/src/utils.ts +22 -26
  248. package/src/version.ts +1 -1
  249. package/tests/context.test.ts +109 -0
  250. package/tests/mocks/get-context-item.ts +60 -0
  251. package/tests/mocks/index.ts +1 -0
  252. package/tests/setup.ts +73 -0
  253. package/tsconfig.json +4 -3
  254. package/vitest.config.ts +11 -0
@@ -0,0 +1,109 @@
1
+ import { describe, expect, it, vi, beforeEach, afterEach, type MockInstance } from 'vitest';
2
+
3
+ import { BASE_URL } from './setup';
4
+
5
+ import { ContextApiClient, ApiVersion } from '../src/context';
6
+
7
+ import { HttpClient } from '@equinor/fusion-framework-module-http/client';
8
+ import { UnsupportedApiVersion } from '../src/errors';
9
+
10
+ import { mockContextItem } from './mocks';
11
+
12
+ describe('Context', () => {
13
+ let httpClient: HttpClient;
14
+ let httpClientWatcher: MockInstance;
15
+ let contextClient: ContextApiClient;
16
+
17
+ beforeEach(() => {
18
+ httpClient = new HttpClient(BASE_URL, {
19
+ /* options */
20
+ });
21
+ httpClientWatcher = vi.spyOn(httpClient, 'json');
22
+ contextClient = new ContextApiClient(httpClient, 'json');
23
+ });
24
+
25
+ afterEach(() => {
26
+ httpClientWatcher.mockRestore();
27
+ });
28
+
29
+ describe('get', () => {
30
+ it('should generate parameters for valid API version and arguments for V1', async () => {
31
+ const contextId = '123e4567-e89b-12d3-a456-426614174000';
32
+ const expected = mockContextItem(contextId);
33
+ const result = await contextClient.get('v1', { id: contextId });
34
+
35
+ expect(result).toMatchObject(expected);
36
+
37
+ expect(httpClientWatcher).toHaveBeenCalledWith(
38
+ `/contexts/${contextId}/?api-version=${ApiVersion.v1}`,
39
+ undefined,
40
+ );
41
+ });
42
+
43
+ it('should throw UnsupportedApiVersion for unsupported API version', async () => {
44
+ // Attempt to get context with an unsupported API version 'v2'
45
+ // This should throw an UnsupportedApiVersion error because 'v2' is not a valid API version
46
+ try {
47
+ await contextClient.get('v2', { id: '123e4567-e89b-12d3-a456-426614174000' });
48
+ expect(true).toBe(false); // This line should not be reached
49
+ } catch (error) {
50
+ // Verify that the error is of type UnsupportedApiVersion
51
+ expect(error).toBeInstanceOf(UnsupportedApiVersion);
52
+ }
53
+ });
54
+ });
55
+
56
+ describe('query', () => {
57
+ it('should generate parameters for valid API version and arguments for V1', async () => {
58
+ const result = await contextClient.query('v1', { query: { filter: { type: ['master'] } } });
59
+
60
+ expect(result).toHaveLength(10);
61
+
62
+ const searchParams = new URLSearchParams();
63
+ searchParams.append('$filter', "type in ('master')");
64
+ searchParams.append('api-version', ApiVersion.v1);
65
+
66
+ expect(httpClientWatcher).toHaveBeenCalledWith(`/contexts/?${searchParams}`, undefined);
67
+ });
68
+
69
+ it('should throw UnsupportedApiVersion for unsupported API version', async () => {
70
+ // Attempt to get context with an unsupported API version 'v2'
71
+ // This should throw an UnsupportedApiVersion error because 'v2' is not a valid API version
72
+ try {
73
+ await contextClient.query('v2', { query: { filter: { type: ['master'] } } });
74
+ expect(true).toBe(false); // This line should not be reached
75
+ } catch (error) {
76
+ // Verify that the error is of type UnsupportedApiVersion
77
+ expect(error).toBeInstanceOf(UnsupportedApiVersion);
78
+ }
79
+ });
80
+ });
81
+
82
+ describe('related', () => {
83
+ it('should generate parameters for valid API version and arguments for V1', async () => {
84
+ const contextId = '123e4567-e89b-12d3-a456-426614174000';
85
+
86
+ await contextClient.related('v1', { id: contextId, query: { filter: { type: ['master'] } } });
87
+
88
+ const searchParams = new URLSearchParams();
89
+ searchParams.append('$filter', "type in ('master')");
90
+ searchParams.append('api-version', ApiVersion.v1);
91
+
92
+ expect(httpClientWatcher).toHaveBeenCalledWith(
93
+ `/contexts/${contextId}/relations?${searchParams}`,
94
+ undefined,
95
+ );
96
+ });
97
+ it('should throw UnsupportedApiVersion for unsupported API version', async () => {
98
+ // Attempt to get context with an unsupported API version 'v2'
99
+ // This should throw an UnsupportedApiVersion error because 'v2' is not a valid API version
100
+ try {
101
+ await contextClient.related('v2', { id: '123e4567-e89b-12d3-a456-426614174000' });
102
+ expect(true).toBe(false); // This line should not be reached
103
+ } catch (error) {
104
+ // Verify that the error is of type UnsupportedApiVersion
105
+ expect(error).toBeInstanceOf(UnsupportedApiVersion);
106
+ }
107
+ });
108
+ });
109
+ });
@@ -0,0 +1,60 @@
1
+ import { Faker, da, en } from '@faker-js/faker';
2
+ import { type ApiContextEntity, ApiVersion } from '../../src/context';
3
+
4
+ import { createHash } from 'node:crypto';
5
+
6
+ /**
7
+ * Converts a string to a seed for the Faker.js library.
8
+ *
9
+ * @param uuid - The UUID string to convert.
10
+ * @returns A numeric seed derived from the UUID.
11
+ */
12
+ function stringToSeed(uuid: string): number {
13
+ const hash = createHash('sha256').update(uuid).digest('hex');
14
+ return Number.parseInt(hash.slice(0, 8), 16);
15
+ }
16
+
17
+ /**
18
+ * Since generation of dates might have a slight difference in milliseconds
19
+ * we normalize the date to the nearest minute, so we can compare them.
20
+ *
21
+ * @note
22
+ * This might fail at exactly midnight, but the odds for that are slim. Rerun the test if it fails.
23
+ *
24
+ * @param date date to normalize
25
+ * @returns string
26
+ */
27
+ function normalizeDateMock(date: Date): string {
28
+ date.setMinutes(0);
29
+ date.setSeconds(0);
30
+ date.setMilliseconds(0);
31
+ return date.toISOString();
32
+ }
33
+
34
+ export const mockContextItem = <V extends ApiVersion = ApiVersion.v1>(
35
+ id: string,
36
+ version: V = ApiVersion.v1 as V,
37
+ ): ApiContextEntity<V> => {
38
+ const seed = stringToSeed(id);
39
+ const faker = new Faker({ seed, locale: en });
40
+ switch (version) {
41
+ case ApiVersion.v1:
42
+ return {
43
+ id: String(id),
44
+ externalId: faker.string.uuid(),
45
+ created: normalizeDateMock(faker.date.recent()),
46
+ source: faker.string.uuid(),
47
+ type: {
48
+ id: faker.string.uuid(),
49
+ isChildType: false,
50
+ parentTypeIds: null,
51
+ },
52
+ value: null,
53
+ title: faker.lorem.sentence(),
54
+ isActive: true,
55
+ isDeleted: false,
56
+ updated: normalizeDateMock(faker.date.past()),
57
+ } satisfies ApiContextEntity<ApiVersion.v1> as ApiContextEntity<V>;
58
+ }
59
+ throw new Error('Not implemented');
60
+ };
@@ -0,0 +1 @@
1
+ export { mockContextItem } from './get-context-item';
package/tests/setup.ts ADDED
@@ -0,0 +1,73 @@
1
+ import { afterAll, afterEach, beforeAll } from 'vitest';
2
+
3
+ import { setupServer } from 'msw/node';
4
+ import { http, HttpResponse } from 'msw';
5
+
6
+ import { mockContextItem } from './mocks';
7
+
8
+ import type { ApiVersion } from '../src/context';
9
+
10
+ export const BASE_URL = 'https://localhost';
11
+
12
+ // Define mock handlers for fetch requests
13
+ const handlers = [
14
+ // Mock GET /contexts
15
+ http.get(new URL('contexts', BASE_URL).toString(), (req) => {
16
+ const url = new URL(req.request.url);
17
+ const apiVersion = url.searchParams.get('api-version');
18
+ if (!apiVersion) {
19
+ return HttpResponse.error();
20
+ }
21
+ return HttpResponse.json(
22
+ new Array(10)
23
+ .fill(null)
24
+ .map((_, index) => mockContextItem(`context-item-${index}`, apiVersion as ApiVersion.v1)),
25
+ );
26
+ }),
27
+
28
+ // Mock GET /contexts/:id
29
+ http.get(new URL('contexts/:id', BASE_URL).toString(), (req) => {
30
+ const { id } = req.params;
31
+ if (!id || typeof id !== 'string') {
32
+ return HttpResponse.error();
33
+ }
34
+ const url = new URL(req.request.url);
35
+ const apiVersion = url.searchParams.get('api-version');
36
+ if (!apiVersion) {
37
+ return HttpResponse.error();
38
+ }
39
+ return HttpResponse.json(mockContextItem(id, apiVersion as ApiVersion.v1));
40
+ }),
41
+
42
+ // Mock GET /contexts/:id/relations
43
+ http.get(new URL('contexts/:id/relations', BASE_URL).toString(), (req) => {
44
+ const { id } = req.params;
45
+ if (!id || typeof id !== 'string') {
46
+ return HttpResponse.error();
47
+ }
48
+ const url = new URL(req.request.url);
49
+ const apiVersion = url.searchParams.get('api-version');
50
+ if (!apiVersion) {
51
+ return HttpResponse.error();
52
+ }
53
+ return HttpResponse.json(
54
+ new Array(3)
55
+ .fill(null)
56
+ .map((_, index) =>
57
+ mockContextItem(`context--related-item-${index}`, apiVersion as ApiVersion.v1),
58
+ ),
59
+ );
60
+ }),
61
+ ];
62
+
63
+ // Initialize the server
64
+ export const server = setupServer(...handlers);
65
+
66
+ // Start server before all tests
67
+ beforeAll(() => server.listen({ onUnhandledRequest: 'warn' }));
68
+
69
+ // Reset handlers after each test
70
+ afterEach(() => server.resetHandlers());
71
+
72
+ // Stop server after all tests
73
+ afterAll(() => server.close());
package/tsconfig.json CHANGED
@@ -7,7 +7,7 @@
7
7
 
8
8
  "paths": {
9
9
  "@equinor/fusion-framework-module-services": [
10
- "."
10
+ "./"
11
11
  ],
12
12
  "@equinor/fusion-framework-module-services/*": [
13
13
  "./*"
@@ -29,10 +29,11 @@
29
29
  }
30
30
  ],
31
31
  "include": [
32
- "src/**/*",
32
+ "src/**/*", "tests/**/*",
33
33
  ],
34
34
  "exclude": [
35
35
  "node_modules",
36
- "lib"
36
+ "lib",
37
+ "tests"
37
38
  ]
38
39
  }
@@ -0,0 +1,11 @@
1
+ import { defineProject } from 'vitest/config';
2
+
3
+ import { name, version } from './package.json';
4
+
5
+ export default defineProject({
6
+ test: {
7
+ include: ['tests/**/*.test.ts'],
8
+ name: `${name}@${version}`,
9
+ setupFiles: ['tests/setup.ts'],
10
+ },
11
+ });