@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
|
-
|
|
256
|
+
HttpResponse.json({ foo: 'bar' });
|
|
257
257
|
} else {
|
|
258
|
-
|
|
258
|
+
HttpResponse.json({ foo: 'baz' });
|
|
259
259
|
}
|
|
260
260
|
});
|
|
261
261
|
```
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
export type RestMethod = keyof typeof
|
|
4
|
-
export default function createMockApiUtils(server:
|
|
5
|
-
mockEndpointData:
|
|
6
|
-
mockEndpoint:
|
|
7
|
-
mockGetData:
|
|
8
|
-
mockPostData:
|
|
9
|
-
mockPutData:
|
|
10
|
-
mockDeleteData:
|
|
11
|
-
mockPatchData:
|
|
12
|
-
mockGetEndpoint:
|
|
13
|
-
mockPostEndpoint:
|
|
14
|
-
mockPutEndpoint:
|
|
15
|
-
mockDeleteEndpoint:
|
|
16
|
-
mockPatchEndpoint:
|
|
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 {
|
|
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 = (
|
|
7
|
-
server.use(
|
|
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,
|
|
15
|
-
server.use(
|
|
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) => (
|
|
22
|
-
return mockEndpointData(
|
|
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) => (
|
|
29
|
-
return mockEndpoint(
|
|
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,
|
|
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,
|
|
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
|
+
"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.
|
|
46
|
+
"msw": "^2.0.8"
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|
|
49
49
|
"@vitest/coverage-v8": "^0.34.5",
|