@leaflink/dom-testing-utils 3.0.0 → 4.0.0

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.
package/README.md CHANGED
@@ -102,8 +102,8 @@ Utility that waits for all loading elements to be removed from the DOM. The `dat
102
102
  | **Parameters** | **Type** | **Default** | **Summary** |
103
103
  | ----------- | ----------- | ----------- |----------- |
104
104
  | testId | `string` | `ll-loading` && `loading-spinner` |The data test ID to target. |
105
- | timeout | number | 2000 | How long to wait for loading elements to be removed
106
- | failIfNull | boolean | false | Throws an error if no loading elements are found
105
+ | timeout | number | 2000 | How long to wait for loading elements to be removed |
106
+ | failIfNull | boolean | false | Throws an error if no loading elements are found |
107
107
 
108
108
  **Returns**: `Promise<void>`
109
109
 
@@ -253,9 +253,9 @@ or you can customize the response
253
253
  ```ts
254
254
  mockGetEndpoint('/relative-url', (req, res, ctx) => {
255
255
  if (someConditional()) {
256
- res(ctx.json(true));
256
+ HttpResponse.json({ foo: 'bar' });
257
257
  } else {
258
- res(ctx.json(false));
258
+ HttpResponse.json({ foo: 'baz' });
259
259
  }
260
260
  });
261
261
  ```
@@ -1,17 +1,17 @@
1
- import { DefaultRequestBody, RequestParams, ResponseResolver, rest, RestContext, RestRequest } from 'msw';
2
- import { SetupServerApi } from 'msw/node';
3
- export type RestMethod = keyof typeof rest;
4
- export default function createMockApiUtils(server: SetupServerApi): {
5
- mockEndpointData: <ResponseBody extends DefaultRequestBody = any>(relativeUrl: string, responseData: ResponseBody, method: RestMethod) => void;
6
- mockEndpoint: <RequestBodyType extends DefaultRequestBody = DefaultRequestBody, ResponseBody_1 extends DefaultRequestBody = any, Params extends RequestParams = RequestParams>(relativeUrl: string, responseCallback: ResponseResolver<RestRequest<RequestBodyType, Params>, RestContext, ResponseBody_1>, method: RestMethod) => void;
7
- mockGetData: <ResponseBody_2 extends DefaultRequestBody = any>(relativeUrl: string, responseData: ResponseBody_2) => void;
8
- mockPostData: <ResponseBody_2 extends DefaultRequestBody = any>(relativeUrl: string, responseData: ResponseBody_2) => void;
9
- mockPutData: <ResponseBody_2 extends DefaultRequestBody = any>(relativeUrl: string, responseData: ResponseBody_2) => void;
10
- mockDeleteData: <ResponseBody_2 extends DefaultRequestBody = any>(relativeUrl: string, responseData: ResponseBody_2) => void;
11
- mockPatchData: <ResponseBody_2 extends DefaultRequestBody = any>(relativeUrl: string, responseData: ResponseBody_2) => void;
12
- mockGetEndpoint: <RequestBodyType_1 extends DefaultRequestBody = DefaultRequestBody, ResponseBody_3 extends DefaultRequestBody = any, Params_1 extends RequestParams = RequestParams>(relativeUrl: string, responseCallback: ResponseResolver<RestRequest<RequestBodyType_1, Params_1>, RestContext, ResponseBody_3>) => void;
13
- mockPostEndpoint: <RequestBodyType_1 extends DefaultRequestBody = DefaultRequestBody, ResponseBody_3 extends DefaultRequestBody = any, Params_1 extends RequestParams = RequestParams>(relativeUrl: string, responseCallback: ResponseResolver<RestRequest<RequestBodyType_1, Params_1>, RestContext, ResponseBody_3>) => void;
14
- mockPutEndpoint: <RequestBodyType_1 extends DefaultRequestBody = DefaultRequestBody, ResponseBody_3 extends DefaultRequestBody = any, Params_1 extends RequestParams = RequestParams>(relativeUrl: string, responseCallback: ResponseResolver<RestRequest<RequestBodyType_1, Params_1>, RestContext, ResponseBody_3>) => void;
15
- mockDeleteEndpoint: <RequestBodyType_1 extends DefaultRequestBody = DefaultRequestBody, ResponseBody_3 extends DefaultRequestBody = any, Params_1 extends RequestParams = RequestParams>(relativeUrl: string, responseCallback: ResponseResolver<RestRequest<RequestBodyType_1, Params_1>, RestContext, ResponseBody_3>) => void;
16
- mockPatchEndpoint: <RequestBodyType_1 extends DefaultRequestBody = DefaultRequestBody, ResponseBody_3 extends DefaultRequestBody = any, Params_1 extends RequestParams = RequestParams>(relativeUrl: string, responseCallback: ResponseResolver<RestRequest<RequestBodyType_1, Params_1>, RestContext, ResponseBody_3>) => void;
1
+ import { http, RequestHandlerOptions, ResponseResolver } from 'msw';
2
+ import { SetupServer } from 'msw/node';
3
+ export type RestMethod = keyof typeof http;
4
+ export default function createMockApiUtils(server: SetupServer): {
5
+ mockEndpointData: (url: string, responseData: any, method: RestMethod, options?: RequestHandlerOptions) => void;
6
+ mockEndpoint: (relativeUrl: string, resolver: ResponseResolver, method: RestMethod, options?: RequestHandlerOptions) => void;
7
+ mockGetData: (url: string, responseData: any, options?: RequestHandlerOptions) => void;
8
+ mockPostData: (url: string, responseData: any, options?: RequestHandlerOptions) => void;
9
+ mockPutData: (url: string, responseData: any, options?: RequestHandlerOptions) => void;
10
+ mockDeleteData: (url: string, responseData: any, options?: RequestHandlerOptions) => void;
11
+ mockPatchData: (url: string, responseData: any, options?: RequestHandlerOptions) => void;
12
+ mockGetEndpoint: (url: string, resolver: ResponseResolver, options?: RequestHandlerOptions) => void;
13
+ mockPostEndpoint: (url: string, resolver: ResponseResolver, options?: RequestHandlerOptions) => void;
14
+ mockPutEndpoint: (url: string, resolver: ResponseResolver, options?: RequestHandlerOptions) => void;
15
+ mockDeleteEndpoint: (url: string, resolver: ResponseResolver, options?: RequestHandlerOptions) => void;
16
+ mockPatchEndpoint: (url: string, resolver: ResponseResolver, options?: RequestHandlerOptions) => void;
17
17
  };
@@ -1,58 +1,44 @@
1
- import { rest } from 'msw';
1
+ import { http, HttpResponse } from 'msw';
2
2
  export default function createMockApiUtils(server) {
3
3
  /**
4
4
  * Mock endpoint with data
5
5
  */
6
- const mockEndpointData = (relativeUrl, responseData, method) => {
7
- server.use(rest[method](relativeUrl, (_req, res, ctx) => {
8
- return res(ctx.json(responseData));
9
- }));
6
+ const mockEndpointData = (url, responseData, method, options) => {
7
+ server.use(http[method](url, () => HttpResponse.json(responseData), options));
10
8
  };
11
9
  /**
12
10
  * Mock endpoint with a callback function
13
11
  */
14
- const mockEndpoint = (relativeUrl, responseCallback, method) => {
15
- server.use(rest[method](relativeUrl, responseCallback));
12
+ const mockEndpoint = (relativeUrl, resolver, method, options) => {
13
+ server.use(http[method](relativeUrl, resolver, options));
16
14
  };
17
15
  /**
18
16
  * Creates a function to mock an endpoint with data for a particular HTTP verb
19
17
  * @param method - the verb to target this endpoint for
20
18
  */
21
- const createDataHelper = (method) => (relativeUrl, responseData) => {
22
- return mockEndpointData(relativeUrl, responseData, method);
19
+ const createDataHelper = (method) => (url, responseData, options) => {
20
+ return mockEndpointData(url, responseData, method, options);
23
21
  };
24
22
  /**
25
23
  * Creates a function to mock an endpoint with a callback function for a particular HTTP verb
26
24
  * @param method - the verb to target this endpoint for
27
25
  */
28
- const createEndpointHelper = (method) => (relativeUrl, responseCallback) => {
29
- return mockEndpoint(relativeUrl, responseCallback, method);
26
+ const createEndpointHelper = (method) => (url, resolver, options) => {
27
+ return mockEndpoint(url, resolver, method, options);
30
28
  };
31
- // #region Shortcut Functions
32
- const mockGetData = createDataHelper('get');
33
- const mockPostData = createDataHelper('post');
34
- const mockPutData = createDataHelper('put');
35
- const mockDeleteData = createDataHelper('delete');
36
- const mockPatchData = createDataHelper('patch');
37
- const mockGetEndpoint = createEndpointHelper('get');
38
- const mockPostEndpoint = createEndpointHelper('post');
39
- const mockPutEndpoint = createEndpointHelper('put');
40
- const mockDeleteEndpoint = createEndpointHelper('delete');
41
- const mockPatchEndpoint = createEndpointHelper('patch');
42
- // #endregion
43
29
  return {
44
30
  mockEndpointData,
45
31
  mockEndpoint,
46
- mockGetData,
47
- mockPostData,
48
- mockPutData,
49
- mockDeleteData,
50
- mockPatchData,
51
- mockGetEndpoint,
52
- mockPostEndpoint,
53
- mockPutEndpoint,
54
- mockDeleteEndpoint,
55
- mockPatchEndpoint,
32
+ mockGetData: createDataHelper('get'),
33
+ mockPostData: createDataHelper('post'),
34
+ mockPutData: createDataHelper('put'),
35
+ mockDeleteData: createDataHelper('delete'),
36
+ mockPatchData: createDataHelper('patch'),
37
+ mockGetEndpoint: createEndpointHelper('get'),
38
+ mockPostEndpoint: createEndpointHelper('post'),
39
+ mockPutEndpoint: createEndpointHelper('put'),
40
+ mockDeleteEndpoint: createEndpointHelper('delete'),
41
+ mockPatchEndpoint: createEndpointHelper('patch'),
56
42
  };
57
43
  }
58
44
  //# sourceMappingURL=mockEndpoints.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mockEndpoints.js","sourceRoot":"src/","sources":["utils/mockEndpoints.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuD,IAAI,EAA4B,MAAM,KAAK,CAAC;AAK1G,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,MAAsB;IAC/D;;OAEG;IACH,MAAM,gBAAgB,GAAG,CACvB,WAAmB,EACnB,YAA0B,EAC1B,MAAkB,EAClB,EAAE;QACF,MAAM,CAAC,GAAG,CACR,IAAI,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;YAC3C,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;QACrC,CAAC,CAAC,CACH,CAAC;IACJ,CAAC,CAAC;IAEF;;OAEG;IACH,MAAM,YAAY,GAAG,CAKnB,WAAmB,EACnB,gBAAmG,EACnG,MAAkB,EAClB,EAAE;QACF,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAC1D,CAAC,CAAC;IAEF;;;OAGG;IACH,MAAM,gBAAgB,GACpB,CAAC,MAAkB,EAAE,EAAE,CACvB,CAAgD,WAAmB,EAAE,YAA0B,EAAE,EAAE;QACjG,OAAO,gBAAgB,CAAC,WAAW,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;IAC7D,CAAC,CAAC;IAEJ;;;OAGG;IACH,MAAM,oBAAoB,GACxB,CAAC,MAAkB,EAAE,EAAE,CACvB,CAKE,WAAmB,EACnB,gBAAmG,EACnG,EAAE;QACF,OAAO,YAAY,CAAC,WAAW,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;IAC7D,CAAC,CAAC;IAEJ,6BAA6B;IAC7B,MAAM,WAAW,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,YAAY,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC9C,MAAM,WAAW,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,cAAc,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAClD,MAAM,aAAa,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAEhD,MAAM,eAAe,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;IACpD,MAAM,gBAAgB,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;IACtD,MAAM,eAAe,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;IACpD,MAAM,kBAAkB,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAC1D,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACxD,aAAa;IAEb,OAAO;QACL,gBAAgB;QAChB,YAAY;QACZ,WAAW;QACX,YAAY;QACZ,WAAW;QACX,cAAc;QACd,aAAa;QACb,eAAe;QACf,gBAAgB;QAChB,eAAe;QACf,kBAAkB;QAClB,iBAAiB;KAClB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"mockEndpoints.js","sourceRoot":"src/","sources":["utils/mockEndpoints.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,YAAY,EAA2C,MAAM,KAAK,CAAC;AAKlF,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,MAAmB;IAC5D;;OAEG;IACH,MAAM,gBAAgB,GAAG,CAAC,GAAW,EAAE,YAAY,EAAE,MAAkB,EAAE,OAA+B,EAAE,EAAE;QAC1G,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IAChF,CAAC,CAAC;IAEF;;OAEG;IACH,MAAM,YAAY,GAAG,CACnB,WAAmB,EACnB,QAA0B,EAC1B,MAAkB,EAClB,OAA+B,EAC/B,EAAE;QACF,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;IAC3D,CAAC,CAAC;IAEF;;;OAGG;IACH,MAAM,gBAAgB,GAAG,CAAC,MAAkB,EAAE,EAAE,CAAC,CAAC,GAAW,EAAE,YAAY,EAAE,OAA+B,EAAE,EAAE;QAC9G,OAAO,gBAAgB,CAAC,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC,CAAC;IAEF;;;OAGG;IACH,MAAM,oBAAoB,GACxB,CAAC,MAAkB,EAAE,EAAE,CAAC,CAAC,GAAW,EAAE,QAA0B,EAAE,OAA+B,EAAE,EAAE;QACnG,OAAO,YAAY,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC,CAAC;IAEJ,OAAO;QACL,gBAAgB;QAChB,YAAY;QACZ,WAAW,EAAE,gBAAgB,CAAC,KAAK,CAAC;QACpC,YAAY,EAAE,gBAAgB,CAAC,MAAM,CAAC;QACtC,WAAW,EAAE,gBAAgB,CAAC,KAAK,CAAC;QACpC,cAAc,EAAE,gBAAgB,CAAC,QAAQ,CAAC;QAC1C,aAAa,EAAE,gBAAgB,CAAC,OAAO,CAAC;QACxC,eAAe,EAAE,oBAAoB,CAAC,KAAK,CAAC;QAC5C,gBAAgB,EAAE,oBAAoB,CAAC,MAAM,CAAC;QAC9C,eAAe,EAAE,oBAAoB,CAAC,KAAK,CAAC;QAC5C,kBAAkB,EAAE,oBAAoB,CAAC,QAAQ,CAAC;QAClD,iBAAiB,EAAE,oBAAoB,CAAC,OAAO,CAAC;KACjD,CAAC;AACJ,CAAC"}
@@ -3,7 +3,7 @@ import { nextTick } from 'vue';
3
3
  /**
4
4
  * Utility to wait for one or more loading elements to be removed from the DOM.
5
5
  */
6
- async function waitForLoading({ testId = /ll-loading|loading-spinner/, timeout = 2000, failIfNull = false, } = {}) {
6
+ async function waitForLoading({ testId = /stash-loading|ll-loading|loading-spinner/, timeout = 2000, failIfNull = false, } = {}) {
7
7
  await nextTick(); // wait for loading spinner(s) to be rendered
8
8
  if (!failIfNull && screen.queryAllByTestId(testId).length > 0) {
9
9
  return waitForElementToBeRemoved(() => [...screen.queryAllByTestId(testId)], { timeout });
@@ -1 +1 @@
1
- {"version":3,"file":"waitForLoading.js","sourceRoot":"src/","sources":["utils/waitForLoading.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAgB/B;;GAEG;AACH,KAAK,UAAU,cAAc,CAAC,EAC5B,MAAM,GAAG,4BAA4B,EACrC,OAAO,GAAG,IAAI,EACd,UAAU,GAAG,KAAK,MACI,EAAE;IACxB,MAAM,QAAQ,EAAE,CAAC,CAAC,6CAA6C;IAE/D,IAAI,CAAC,UAAU,IAAI,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;QAC7D,OAAO,yBAAyB,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;KAC3F;IAED,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AAC3B,CAAC;AAED,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"waitForLoading.js","sourceRoot":"src/","sources":["utils/waitForLoading.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAgB/B;;GAEG;AACH,KAAK,UAAU,cAAc,CAAC,EAC5B,MAAM,GAAG,0CAA0C,EACnD,OAAO,GAAG,IAAI,EACd,UAAU,GAAG,KAAK,MACI,EAAE;IACxB,MAAM,QAAQ,EAAE,CAAC,CAAC,6CAA6C;IAE/D,IAAI,CAAC,UAAU,IAAI,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;QAC7D,OAAO,yBAAyB,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;KAC3F;IAED,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AAC3B,CAAC;AAED,eAAe,cAAc,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leaflink/dom-testing-utils",
3
- "version": "3.0.0",
3
+ "version": "4.0.0",
4
4
  "description": "Frontend DOM testing utilities",
5
5
  "engines": {
6
6
  "node": ">=16",
@@ -43,7 +43,7 @@
43
43
  "@testing-library/jest-dom": "^6.1.3",
44
44
  "@testing-library/user-event": "^14.5.1",
45
45
  "@testing-library/vue": "^7.0.0",
46
- "msw": "^0.27.2"
46
+ "msw": "^2.0.8"
47
47
  },
48
48
  "devDependencies": {
49
49
  "@vitest/coverage-v8": "^0.34.5",