@wix/patterns-cms 1.9.0 → 1.11.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/dist/cjs/adapter/__tests__/cmsFieldActions.spec.js +71 -1
- package/dist/cjs/adapter/__tests__/cmsFieldActions.spec.js.map +1 -1
- package/dist/cjs/adapter/__tests__/createCmsSchemaSource.spec.js +10 -11
- package/dist/cjs/adapter/__tests__/createCmsSchemaSource.spec.js.map +1 -1
- package/dist/cjs/adapter/createCmsFieldActions.js +51 -23
- package/dist/cjs/adapter/createCmsFieldActions.js.map +1 -1
- package/dist/cjs/adapter/createCmsSchemaSource.js +4 -12
- package/dist/cjs/adapter/createCmsSchemaSource.js.map +1 -1
- package/dist/cjs/adapter/index.js +3 -1
- package/dist/cjs/adapter/index.js.map +1 -1
- package/dist/cjs/adapter/listCmsCollections.js +15 -0
- package/dist/cjs/adapter/listCmsCollections.js.map +1 -0
- package/dist/cjs/testkit/cmsFetchMocks.js +165 -0
- package/dist/cjs/testkit/cmsFetchMocks.js.map +1 -0
- package/dist/cjs/testkit/index.js +10 -0
- package/dist/cjs/testkit/index.js.map +1 -0
- package/dist/esm/adapter/__tests__/cmsFieldActions.spec.js +53 -0
- package/dist/esm/adapter/__tests__/cmsFieldActions.spec.js.map +1 -1
- package/dist/esm/adapter/__tests__/createCmsSchemaSource.spec.js +6 -15
- package/dist/esm/adapter/__tests__/createCmsSchemaSource.spec.js.map +1 -1
- package/dist/esm/adapter/createCmsFieldActions.js +47 -22
- package/dist/esm/adapter/createCmsFieldActions.js.map +1 -1
- package/dist/esm/adapter/createCmsSchemaSource.js +4 -20
- package/dist/esm/adapter/createCmsSchemaSource.js.map +1 -1
- package/dist/esm/adapter/index.js +1 -0
- package/dist/esm/adapter/index.js.map +1 -1
- package/dist/esm/adapter/listCmsCollections.js +13 -0
- package/dist/esm/adapter/listCmsCollections.js.map +1 -0
- package/dist/esm/testkit/cmsFetchMocks.js +115 -0
- package/dist/esm/testkit/cmsFetchMocks.js.map +1 -0
- package/dist/esm/testkit/index.js +2 -0
- package/dist/esm/testkit/index.js.map +1 -0
- package/dist/types/adapter/createCmsFieldActions.d.ts.map +1 -1
- package/dist/types/adapter/createCmsSchemaSource.d.ts.map +1 -1
- package/dist/types/adapter/index.d.ts +1 -0
- package/dist/types/adapter/index.d.ts.map +1 -1
- package/dist/types/adapter/listCmsCollections.d.ts +7 -0
- package/dist/types/adapter/listCmsCollections.d.ts.map +1 -0
- package/dist/types/testkit/cmsFetchMocks.d.ts +47 -0
- package/dist/types/testkit/cmsFetchMocks.d.ts.map +1 -0
- package/dist/types/testkit/index.d.ts +2 -0
- package/dist/types/testkit/index.d.ts.map +1 -0
- package/package.json +20 -6
- package/testkit/package.json +6 -0
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { collections } from '@wix/data';
|
|
2
|
+
import { errorHandler } from '@wix/essentials';
|
|
3
|
+
/** Lists the site's CMS collections — for collection pickers. */
|
|
4
|
+
export async function listCmsCollections() {
|
|
5
|
+
const response = await errorHandler.withErrorHandler(async () => collections.listDataCollections(), {});
|
|
6
|
+
return (response.collections ?? [])
|
|
7
|
+
.map((collection) => ({
|
|
8
|
+
id: collection._id ?? '',
|
|
9
|
+
displayName: collection.displayName ?? collection._id ?? '',
|
|
10
|
+
}))
|
|
11
|
+
.filter((collection) => collection.id !== '');
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=listCmsCollections.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"listCmsCollections.js","sourceRoot":"","sources":["../../../src/adapter/listCmsCollections.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAO/C,iEAAiE;AACjE,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,gBAAgB,CAClD,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,mBAAmB,EAAE,EAC7C,EAAE,CACH,CAAC;IACF,OAAO,CAAC,QAAQ,CAAC,WAAW,IAAI,EAAE,CAAC;SAChC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QACpB,EAAE,EAAE,UAAU,CAAC,GAAG,IAAI,EAAE;QACxB,WAAW,EAAE,UAAU,CAAC,WAAW,IAAI,UAAU,CAAC,GAAG,IAAI,EAAE;KAC5D,CAAC,CAAC;SACF,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAClD,CAAC"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { when } from '@wix/sdk-testkit/fetch-mock';
|
|
2
|
+
import { collections as collectionsMeta } from '@wix/data/meta';
|
|
3
|
+
import { collections } from '@wix/data';
|
|
4
|
+
import { PatternsFieldTypeToCmsFieldType } from '../adapter/cmsFieldTypeMap';
|
|
5
|
+
// The query endpoint's request options aren't exposed on any public entry, so
|
|
6
|
+
// reach into the items SDK internals to derive its URL (no @wix/data/meta entry).
|
|
7
|
+
// eslint-disable-next-line no-restricted-imports
|
|
8
|
+
import * as itemsApi from '@wix/wix-data-items-sdk/build/cjs/src/data-items-api-client';
|
|
9
|
+
function toCmsFields(fields, idField) {
|
|
10
|
+
return Object.values(fields)
|
|
11
|
+
.filter((field) => field != null)
|
|
12
|
+
.map((field) => ({
|
|
13
|
+
key: field.id,
|
|
14
|
+
displayName: field.displayName,
|
|
15
|
+
type: PatternsFieldTypeToCmsFieldType[field.type] ?? collections.Type.TEXT,
|
|
16
|
+
...(field.id === idField ? { systemField: true } : {}),
|
|
17
|
+
}));
|
|
18
|
+
}
|
|
19
|
+
function collectionResponse(collectionId, fields, displayField) {
|
|
20
|
+
return {
|
|
21
|
+
referencedCollections: [],
|
|
22
|
+
collection: {
|
|
23
|
+
id: collectionId,
|
|
24
|
+
collectionType: collections.CollectionType.WIX_APP,
|
|
25
|
+
pagingModes: [collections.PagingMode.OFFSET],
|
|
26
|
+
plugins: [],
|
|
27
|
+
displayField,
|
|
28
|
+
fields,
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Routes the collection schema (`getDataCollection`) that `createCmsSchemaSource`
|
|
34
|
+
* loads. `@wix/data` issues real fetch calls; the caller's fetch-mock instance
|
|
35
|
+
* intercepts them by URL.
|
|
36
|
+
*/
|
|
37
|
+
export function mockCmsCollection(fetchMock, options) {
|
|
38
|
+
if ('source' in options) {
|
|
39
|
+
const { source } = options;
|
|
40
|
+
const [url] = when(collectionsMeta.getDataCollection())
|
|
41
|
+
.withParams({ dataCollectionId: source.collectionId })
|
|
42
|
+
.reply(undefined);
|
|
43
|
+
fetchMock.route(url, async () => {
|
|
44
|
+
const { schema } = await source.loadSchema();
|
|
45
|
+
return collectionResponse(source.collectionId, toCmsFields(schema.fields, schema.idField), schema.displayField);
|
|
46
|
+
});
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
const { collectionId, fields, displayField = 'name' } = options;
|
|
50
|
+
const [url, data] = when(collectionsMeta.getDataCollection())
|
|
51
|
+
.withParams({ dataCollectionId: collectionId })
|
|
52
|
+
.reply(collectionResponse(collectionId, fields, displayField));
|
|
53
|
+
fetchMock.route(url, data);
|
|
54
|
+
}
|
|
55
|
+
// The items-query endpoint has no `@wix/data/meta` entry, so derive its URL from
|
|
56
|
+
// the wix-data-items SDK request options.
|
|
57
|
+
function queryDataItemsMeta() {
|
|
58
|
+
return {
|
|
59
|
+
getUrl: (context) =>
|
|
60
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
61
|
+
itemsApi.reqOptions(itemsApi.queryDataItemsRequestOptions, {})(context).url,
|
|
62
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
63
|
+
httpMethod: itemsApi.queryDataItemsRequestOptions.method,
|
|
64
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
65
|
+
path: itemsApi.queryDataItemsRequestOptions.httpPath,
|
|
66
|
+
pathParams: {},
|
|
67
|
+
__requestType: null,
|
|
68
|
+
__originalRequestType: null,
|
|
69
|
+
__responseType: null,
|
|
70
|
+
__originalResponseType: null,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
function decodeOffsetQuery(opts) {
|
|
74
|
+
const raw = opts.queryParams.get('.r');
|
|
75
|
+
const query = raw ? JSON.parse(atob(raw))?.query : undefined;
|
|
76
|
+
return {
|
|
77
|
+
offset: query?.paging?.offset ?? 0,
|
|
78
|
+
limit: query?.paging?.limit ?? 100,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
function toResolver(items) {
|
|
82
|
+
if (typeof items === 'function') {
|
|
83
|
+
return items;
|
|
84
|
+
}
|
|
85
|
+
// Plain array: slice by the requested page, report the full count as total.
|
|
86
|
+
return (async (query) => {
|
|
87
|
+
const offset = query.offset ?? 0;
|
|
88
|
+
const limit = query.limit ?? items.length;
|
|
89
|
+
const page = items.slice(offset, offset + limit);
|
|
90
|
+
return {
|
|
91
|
+
items: page,
|
|
92
|
+
total: items.length,
|
|
93
|
+
hasNext: offset + page.length < items.length,
|
|
94
|
+
};
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Routes the collection's rows (`items.query(...).find()`). Pass plain rows, or a
|
|
99
|
+
* resolver `(query) => Promise<{ items, total }>` — the latter is a schema source's
|
|
100
|
+
* `collectionConfig.fetchData`, so an in-memory source drives paging per request.
|
|
101
|
+
*/
|
|
102
|
+
export function mockCmsItems(fetchMock, options) {
|
|
103
|
+
const resolve = 'source' in options
|
|
104
|
+
? options.source.collectionConfig.fetchData
|
|
105
|
+
: toResolver(options.items);
|
|
106
|
+
const [url] = when(queryDataItemsMeta()).reply(null);
|
|
107
|
+
fetchMock.route(url, async (opts) => {
|
|
108
|
+
const { items: page, total } = await resolve(decodeOffsetQuery(opts));
|
|
109
|
+
return {
|
|
110
|
+
dataItems: page.map((data) => ({ data })),
|
|
111
|
+
pagingMetadata: { total },
|
|
112
|
+
};
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=cmsFetchMocks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cmsFetchMocks.js","sourceRoot":"","sources":["../../../src/testkit/cmsFetchMocks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/testkit/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createCmsFieldActions.d.ts","sourceRoot":"","sources":["../../../src/adapter/createCmsFieldActions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAS,MAAM,WAAW,CAAC;AAC/C,OAAO,KAAK,EAAS,YAAY,EAAU,MAAM,eAAe,CAAC;AAqCjE;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,WAAW,CAAC,cAAc,GAAG,IAAI,GACrD,YAAY,
|
|
1
|
+
{"version":3,"file":"createCmsFieldActions.d.ts","sourceRoot":"","sources":["../../../src/adapter/createCmsFieldActions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAS,MAAM,WAAW,CAAC;AAC/C,OAAO,KAAK,EAAS,YAAY,EAAU,MAAM,eAAe,CAAC;AAqCjE;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,WAAW,CAAC,cAAc,GAAG,IAAI,GACrD,YAAY,CA0Md"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createCmsSchemaSource.d.ts","sourceRoot":"","sources":["../../../src/adapter/createCmsSchemaSource.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAsB,YAAY,EAAE,MAAM,eAAe,CAAC;AACtE,OAAO,EAEL,KAAK,yBAAyB,EAC/B,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"createCmsSchemaSource.d.ts","sourceRoot":"","sources":["../../../src/adapter/createCmsSchemaSource.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAsB,YAAY,EAAE,MAAM,eAAe,CAAC;AACtE,OAAO,EAEL,KAAK,yBAAyB,EAC/B,MAAM,iBAAiB,CAAC;AAWzB,MAAM,WAAW,yBAA0B,SAAQ,yBAAyB;IAC1E,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3D,IAAI,EAAE,yBAAyB,GAAG,YAAY,CAAC,CAAC,CAAC,CAQlD"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { createCmsSchemaLoader, fetchCmsCollection, type CreateCmsSchemaLoaderDeps, } from './loadCmsSchema';
|
|
2
2
|
export { createCmsSchemaSource, type CreateCmsSchemaSourceDeps, } from './createCmsSchemaSource';
|
|
3
|
+
export { listCmsCollections, type CmsCollectionSummary, } from './listCmsCollections';
|
|
3
4
|
export { transformCmsSchema, type TransformCmsSchemaOptions, } from './transformCmsSchema';
|
|
4
5
|
export { createCmsBackend } from './createCmsBackend';
|
|
5
6
|
export { createCmsFieldActions } from './createCmsFieldActions';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapter/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,KAAK,yBAAyB,GAC/B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,qBAAqB,EACrB,KAAK,yBAAyB,GAC/B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,kBAAkB,EAClB,KAAK,yBAAyB,GAC/B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EACL,qBAAqB,EACrB,KAAK,cAAc,EACnB,KAAK,oBAAoB,GAC1B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,+BAA+B,EAC/B,+BAA+B,EAC/B,cAAc,GACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapter/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,KAAK,yBAAyB,GAC/B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,qBAAqB,EACrB,KAAK,yBAAyB,GAC/B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,kBAAkB,EAClB,KAAK,oBAAoB,GAC1B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,kBAAkB,EAClB,KAAK,yBAAyB,GAC/B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EACL,qBAAqB,EACrB,KAAK,cAAc,EACnB,KAAK,oBAAoB,GAC1B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,+BAA+B,EAC/B,+BAA+B,EAC/B,cAAc,GACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export interface CmsCollectionSummary {
|
|
2
|
+
id: string;
|
|
3
|
+
displayName: string;
|
|
4
|
+
}
|
|
5
|
+
/** Lists the site's CMS collections — for collection pickers. */
|
|
6
|
+
export declare function listCmsCollections(): Promise<CmsCollectionSummary[]>;
|
|
7
|
+
//# sourceMappingURL=listCmsCollections.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"listCmsCollections.d.ts","sourceRoot":"","sources":["../../../src/adapter/listCmsCollections.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,iEAAiE;AACjE,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAW1E"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { collections } from '@wix/data';
|
|
2
|
+
import type { SchemaSource } from '@wix/bex-core';
|
|
3
|
+
import type { FetchMock } from 'fetch-mock';
|
|
4
|
+
export type WixDataFields = NonNullable<collections.GetDataCollectionResponse['collection']>['fields'];
|
|
5
|
+
/**
|
|
6
|
+
* Mock the collection schema (`getDataCollection`) either from explicit CMS fields
|
|
7
|
+
* or straight from a schema source — a `createInMemorySchemaSource` becomes the
|
|
8
|
+
* single source of truth for the schema, its contract fields converted back to CMS
|
|
9
|
+
* fields (types with no CMS mapping fall back to text — enough to render).
|
|
10
|
+
*/
|
|
11
|
+
export type MockCmsCollectionOptions<T extends Record<string, unknown> = Record<string, unknown>> = {
|
|
12
|
+
collectionId: string;
|
|
13
|
+
fields: WixDataFields;
|
|
14
|
+
displayField?: string;
|
|
15
|
+
} | {
|
|
16
|
+
source: SchemaSource<T>;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Routes the collection schema (`getDataCollection`) that `createCmsSchemaSource`
|
|
20
|
+
* loads. `@wix/data` issues real fetch calls; the caller's fetch-mock instance
|
|
21
|
+
* intercepts them by URL.
|
|
22
|
+
*/
|
|
23
|
+
export declare function mockCmsCollection<T extends Record<string, unknown> = Record<string, unknown>>(fetchMock: FetchMock, options: MockCmsCollectionOptions<T>): void;
|
|
24
|
+
type ItemsResolver<T> = SchemaSource<T>['collectionConfig']['fetchData'];
|
|
25
|
+
/**
|
|
26
|
+
* What `mockCmsItems` serves: either plain rows or a resolver that returns a page
|
|
27
|
+
* per query (a schema source's `collectionConfig.fetchData` is exactly a resolver).
|
|
28
|
+
*/
|
|
29
|
+
export type CmsItems<T extends Record<string, unknown>> = T[] | ItemsResolver<T>;
|
|
30
|
+
/**
|
|
31
|
+
* Mock the rows either from explicit items/resolver or straight from a schema
|
|
32
|
+
* source — pass `{ source }` and a `createInMemorySchemaSource` becomes the single
|
|
33
|
+
* source of truth for the rows too.
|
|
34
|
+
*/
|
|
35
|
+
export type MockCmsItemsOptions<T extends Record<string, unknown>> = {
|
|
36
|
+
items: CmsItems<T>;
|
|
37
|
+
} | {
|
|
38
|
+
source: SchemaSource<T>;
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Routes the collection's rows (`items.query(...).find()`). Pass plain rows, or a
|
|
42
|
+
* resolver `(query) => Promise<{ items, total }>` — the latter is a schema source's
|
|
43
|
+
* `collectionConfig.fetchData`, so an in-memory source drives paging per request.
|
|
44
|
+
*/
|
|
45
|
+
export declare function mockCmsItems<T extends Record<string, unknown>>(fetchMock: FetchMock, options: MockCmsItemsOptions<T>): void;
|
|
46
|
+
export {};
|
|
47
|
+
//# sourceMappingURL=cmsFetchMocks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cmsFetchMocks.d.ts","sourceRoot":"","sources":["../../../src/testkit/cmsFetchMocks.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,KAAK,EAAU,YAAY,EAAE,MAAM,eAAe,CAAC;AAM1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,MAAM,MAAM,aAAa,GAAG,WAAW,CACrC,WAAW,CAAC,yBAAyB,CAAC,YAAY,CAAC,CACpD,CAAC,QAAQ,CAAC,CAAC;AAEZ;;;;;GAKG;AACH,MAAM,MAAM,wBAAwB,CAClC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAEzD;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,aAAa,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,GACtE;IAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,CAAA;CAAE,CAAC;AAgChC;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3D,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,wBAAwB,CAAC,CAAC,CAAC,GAAG,IAAI,CAwBlE;AA2BD,KAAK,aAAa,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,WAAW,CAAC,CAAC;AAGzE;;;GAGG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAClD,CAAC,EAAE,GACH,aAAa,CAAC,CAAC,CAAC,CAAC;AAErB;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAC7D;IAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAA;CAAE,GACtB;IAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,CAAA;CAAE,CAAC;AAsChC;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5D,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC9B,IAAI,CAcN"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/testkit/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wix/patterns-cms",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.11.0",
|
|
4
4
|
"license": "UNLICENSED",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Cairo",
|
|
@@ -23,25 +23,39 @@
|
|
|
23
23
|
"files": [
|
|
24
24
|
"dist/cjs",
|
|
25
25
|
"dist/esm",
|
|
26
|
-
"dist/types"
|
|
26
|
+
"dist/types",
|
|
27
|
+
"testkit"
|
|
27
28
|
],
|
|
28
29
|
"dependencies": {
|
|
29
30
|
"@babel/runtime": "^7.0.0",
|
|
30
|
-
"@wix/bex-core": "2.
|
|
31
|
-
"@wix/bex-utils": "2.
|
|
31
|
+
"@wix/bex-core": "2.333.0",
|
|
32
|
+
"@wix/bex-utils": "2.120.0",
|
|
32
33
|
"@wix/data": "^1.0.323",
|
|
34
|
+
"@wix/wix-data-items-sdk": "^1.0.504",
|
|
33
35
|
"lodash": "^4.17.20",
|
|
34
36
|
"tslib": "^2.0.0"
|
|
35
37
|
},
|
|
36
38
|
"peerDependencies": {
|
|
37
|
-
"@wix/essentials": ">=0.1.26"
|
|
39
|
+
"@wix/essentials": ">=0.1.26",
|
|
40
|
+
"@wix/sdk-testkit": ">=0.1.6",
|
|
41
|
+
"fetch-mock": ">=12.5.2"
|
|
42
|
+
},
|
|
43
|
+
"peerDependenciesMeta": {
|
|
44
|
+
"@wix/sdk-testkit": {
|
|
45
|
+
"optional": true
|
|
46
|
+
},
|
|
47
|
+
"fetch-mock": {
|
|
48
|
+
"optional": true
|
|
49
|
+
}
|
|
38
50
|
},
|
|
39
51
|
"devDependencies": {
|
|
40
52
|
"@types/lodash": "^4.14.168",
|
|
41
53
|
"@wix/eslint-config-yoshi": "^6.74.0",
|
|
42
54
|
"@wix/essentials": "^0.1.26",
|
|
43
55
|
"@wix/jest-yoshi-preset-base": "^6.74.0",
|
|
56
|
+
"@wix/sdk-testkit": "^0.1.6",
|
|
44
57
|
"@wix/yoshi-flow-library": "^6.74.0",
|
|
58
|
+
"fetch-mock": "^12.5.2",
|
|
45
59
|
"ts-node": "^10.9.1",
|
|
46
60
|
"typescript": "~4.9.5"
|
|
47
61
|
},
|
|
@@ -119,5 +133,5 @@
|
|
|
119
133
|
"wallaby": {
|
|
120
134
|
"autoDetect": true
|
|
121
135
|
},
|
|
122
|
-
"falconPackageHash": "
|
|
136
|
+
"falconPackageHash": "b778bb61a618d44cd686bc11c5646a2fdc4f7b2ea33908335200bd2f"
|
|
123
137
|
}
|