@contentful/field-editor-reference 5.9.0 → 5.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/__fixtures__/FakeSdk.js +183 -0
- package/dist/cjs/__fixtures__/asset/index.js +37 -0
- package/dist/cjs/__fixtures__/content-type/index.js +16 -0
- package/dist/cjs/__fixtures__/entry/index.js +33 -0
- package/dist/cjs/__fixtures__/fixtures.js +71 -0
- package/dist/cjs/__fixtures__/locale/index.js +40 -0
- package/dist/cjs/__fixtures__/space/index.js +16 -0
- package/dist/cjs/assets/MultipleMediaEditor.js +86 -0
- package/dist/cjs/assets/SingleMediaEditor.js +69 -0
- package/dist/cjs/assets/WrappedAssetCard/AssetCardActions.js +125 -0
- package/dist/cjs/assets/WrappedAssetCard/FetchingWrappedAssetCard.js +171 -0
- package/dist/cjs/assets/WrappedAssetCard/WrappedAssetCard.js +159 -0
- package/dist/cjs/assets/WrappedAssetCard/WrappedAssetLink.js +130 -0
- package/dist/cjs/assets/index.js +24 -0
- package/dist/cjs/common/EntityStore.js +420 -0
- package/dist/cjs/common/MultipleReferenceEditor.js +164 -0
- package/dist/cjs/common/ReferenceEditor.js +74 -0
- package/dist/cjs/common/SingleReferenceEditor.js +118 -0
- package/dist/cjs/common/SortableLinkList.js +95 -0
- package/dist/cjs/common/customCardTypes.js +44 -0
- package/dist/cjs/common/useAccessApi.js +19 -0
- package/dist/cjs/common/useContentTypePermissions.js +54 -0
- package/dist/cjs/common/useEditorPermissions.js +77 -0
- package/dist/cjs/common/useEditorPermissions.spec.js +205 -0
- package/dist/cjs/components/AssetThumbnail/AssetThumbnail.js +62 -0
- package/dist/cjs/components/CreateEntryLinkButton/CreateEntryLinkButton.js +102 -0
- package/dist/cjs/components/CreateEntryLinkButton/CreateEntryLinkButton.spec.js +254 -0
- package/dist/cjs/components/CreateEntryLinkButton/CreateEntryMenuTrigger.js +199 -0
- package/dist/cjs/components/CreateEntryLinkButton/CreateEntryMenuTrigger.spec.js +190 -0
- package/dist/cjs/components/CreateEntryLinkButton/useGlobalMouseUp.js +19 -0
- package/dist/cjs/components/LinkActions/CombinedLinkActions.js +167 -0
- package/dist/cjs/components/LinkActions/LinkActions.js +123 -0
- package/dist/cjs/components/LinkActions/LinkEntityActions.js +186 -0
- package/dist/cjs/components/LinkActions/NoLinkPermissionsInfo.js +54 -0
- package/dist/cjs/components/LinkActions/helpers.js +78 -0
- package/dist/cjs/components/LinkActions/redesignStyles.js +44 -0
- package/dist/cjs/components/LinkActions/styles.js +33 -0
- package/dist/cjs/components/MissingEntityCard/MissingEntityCard.js +75 -0
- package/dist/cjs/components/MissingEntityCard/styles.js +29 -0
- package/dist/cjs/components/ScheduledIconWithTooltip/ScheduleTooltip.js +75 -0
- package/dist/cjs/components/ScheduledIconWithTooltip/ScheduledIconWithTooltip.js +81 -0
- package/dist/cjs/components/ScheduledIconWithTooltip/formatDateAndTime.js +45 -0
- package/dist/cjs/components/SpaceName/SpaceName.js +91 -0
- package/dist/cjs/components/index.js +44 -0
- package/dist/cjs/entries/MultipleEntryReferenceEditor.js +86 -0
- package/dist/cjs/entries/SingleEntryReferenceEditor.js +74 -0
- package/dist/cjs/entries/WrappedEntryCard/FetchingWrappedEntryCard.js +189 -0
- package/dist/cjs/entries/WrappedEntryCard/WrappedEntryCard.js +181 -0
- package/dist/cjs/entries/index.js +24 -0
- package/dist/cjs/index.js +92 -0
- package/dist/cjs/resources/Cards/ContentfulEntryCard.js +87 -0
- package/dist/cjs/resources/Cards/ResourceCard.js +111 -0
- package/dist/cjs/resources/Cards/UnsupportedEntityCard.js +64 -0
- package/dist/cjs/resources/MultipleResourceReferenceEditor.js +157 -0
- package/dist/cjs/resources/MultipleResourceReferenceEditor.spec.js +297 -0
- package/dist/cjs/resources/SingleResourceReferenceEditor.js +87 -0
- package/dist/cjs/resources/SingleResourceReferenceEditor.spec.js +161 -0
- package/dist/cjs/resources/index.js +19 -0
- package/dist/cjs/resources/testHelpers/resourceEditorHelpers.js +121 -0
- package/dist/cjs/resources/useResourceLinkActions.js +88 -0
- package/dist/cjs/types.js +22 -0
- package/dist/cjs/utils/fromFieldValidations.js +54 -0
- package/dist/esm/__fixtures__/FakeSdk.js +173 -0
- package/dist/esm/__fixtures__/asset/index.js +6 -0
- package/dist/esm/__fixtures__/content-type/index.js +2 -0
- package/dist/esm/__fixtures__/entry/index.js +5 -0
- package/dist/esm/__fixtures__/fixtures.js +6 -0
- package/dist/esm/__fixtures__/locale/index.js +15 -0
- package/dist/esm/__fixtures__/space/index.js +2 -0
- package/dist/esm/assets/MultipleMediaEditor.js +37 -0
- package/dist/esm/assets/SingleMediaEditor.js +20 -0
- package/dist/esm/assets/WrappedAssetCard/AssetCardActions.js +63 -0
- package/dist/esm/assets/WrappedAssetCard/FetchingWrappedAssetCard.js +122 -0
- package/dist/esm/assets/WrappedAssetCard/WrappedAssetCard.js +105 -0
- package/dist/esm/assets/WrappedAssetCard/WrappedAssetLink.js +76 -0
- package/dist/esm/assets/index.js +3 -0
- package/dist/esm/common/EntityStore.js +347 -0
- package/dist/esm/common/MultipleReferenceEditor.js +111 -0
- package/dist/esm/common/ReferenceEditor.js +20 -0
- package/dist/esm/common/SingleReferenceEditor.js +70 -0
- package/dist/esm/common/SortableLinkList.js +41 -0
- package/dist/esm/common/customCardTypes.js +1 -0
- package/dist/esm/common/useAccessApi.js +9 -0
- package/dist/esm/common/useContentTypePermissions.js +44 -0
- package/dist/esm/common/useEditorPermissions.js +67 -0
- package/dist/esm/common/useEditorPermissions.spec.js +201 -0
- package/dist/esm/components/AssetThumbnail/AssetThumbnail.js +13 -0
- package/dist/esm/components/CreateEntryLinkButton/CreateEntryLinkButton.js +48 -0
- package/dist/esm/components/CreateEntryLinkButton/CreateEntryLinkButton.spec.js +206 -0
- package/dist/esm/components/CreateEntryLinkButton/CreateEntryMenuTrigger.js +145 -0
- package/dist/esm/components/CreateEntryLinkButton/CreateEntryMenuTrigger.spec.js +142 -0
- package/dist/esm/components/CreateEntryLinkButton/useGlobalMouseUp.js +9 -0
- package/dist/esm/components/LinkActions/CombinedLinkActions.js +118 -0
- package/dist/esm/components/LinkActions/LinkActions.js +66 -0
- package/dist/esm/components/LinkActions/LinkEntityActions.js +127 -0
- package/dist/esm/components/LinkActions/NoLinkPermissionsInfo.js +5 -0
- package/dist/esm/components/LinkActions/helpers.js +57 -0
- package/dist/esm/components/LinkActions/redesignStyles.js +18 -0
- package/dist/esm/components/LinkActions/styles.js +10 -0
- package/dist/esm/components/MissingEntityCard/MissingEntityCard.js +26 -0
- package/dist/esm/components/MissingEntityCard/styles.js +11 -0
- package/dist/esm/components/ScheduledIconWithTooltip/ScheduleTooltip.js +18 -0
- package/dist/esm/components/ScheduledIconWithTooltip/ScheduledIconWithTooltip.js +32 -0
- package/dist/esm/components/ScheduledIconWithTooltip/formatDateAndTime.js +19 -0
- package/dist/esm/components/SpaceName/SpaceName.js +37 -0
- package/dist/esm/components/index.js +8 -0
- package/dist/esm/entries/MultipleEntryReferenceEditor.js +37 -0
- package/dist/esm/entries/SingleEntryReferenceEditor.js +25 -0
- package/dist/esm/entries/WrappedEntryCard/FetchingWrappedEntryCard.js +135 -0
- package/dist/esm/entries/WrappedEntryCard/WrappedEntryCard.js +127 -0
- package/dist/esm/entries/index.js +3 -0
- package/dist/esm/index.js +7 -0
- package/dist/esm/resources/Cards/ContentfulEntryCard.js +38 -0
- package/dist/esm/resources/Cards/ResourceCard.js +62 -0
- package/dist/esm/resources/Cards/UnsupportedEntityCard.js +15 -0
- package/dist/esm/resources/MultipleResourceReferenceEditor.js +104 -0
- package/dist/esm/resources/MultipleResourceReferenceEditor.spec.js +254 -0
- package/dist/esm/resources/SingleResourceReferenceEditor.js +33 -0
- package/dist/esm/resources/SingleResourceReferenceEditor.spec.js +118 -0
- package/dist/esm/resources/index.js +2 -0
- package/dist/esm/resources/testHelpers/resourceEditorHelpers.js +103 -0
- package/dist/esm/resources/useResourceLinkActions.js +78 -0
- package/dist/esm/types.js +1 -0
- package/dist/esm/utils/fromFieldValidations.js +39 -0
- package/dist/{__fixtures__ → types/__fixtures__}/FakeSdk.d.ts +8 -8
- package/dist/{__fixtures__ → types/__fixtures__}/asset/index.d.ts +6 -6
- package/dist/{__fixtures__ → types/__fixtures__}/content-type/index.d.ts +2 -2
- package/dist/{__fixtures__ → types/__fixtures__}/entry/index.d.ts +5 -5
- package/dist/{__fixtures__ → types/__fixtures__}/fixtures.d.ts +6 -6
- package/dist/{__fixtures__ → types/__fixtures__}/locale/index.d.ts +42 -42
- package/dist/{__fixtures__ → types/__fixtures__}/space/index.d.ts +2 -2
- package/dist/{assets → types/assets}/MultipleMediaEditor.d.ts +10 -10
- package/dist/types/assets/SingleMediaEditor.d.ts +10 -0
- package/dist/{assets → types/assets}/WrappedAssetCard/AssetCardActions.d.ts +11 -11
- package/dist/{assets → types/assets}/WrappedAssetCard/FetchingWrappedAssetCard.d.ts +17 -17
- package/dist/{assets → types/assets}/WrappedAssetCard/WrappedAssetCard.d.ts +24 -24
- package/dist/{assets → types/assets}/WrappedAssetCard/WrappedAssetLink.d.ts +16 -16
- package/dist/{assets → types/assets}/index.d.ts +3 -3
- package/dist/{common → types/common}/EntityStore.d.ts +62 -62
- package/dist/{common → types/common}/MultipleReferenceEditor.d.ts +25 -25
- package/dist/{common → types/common}/ReferenceEditor.d.ts +46 -46
- package/dist/{common → types/common}/SingleReferenceEditor.d.ts +24 -24
- package/dist/{common → types/common}/SortableLinkList.d.ts +19 -19
- package/dist/{common → types/common}/customCardTypes.d.ts +29 -29
- package/dist/types/common/useAccessApi.d.ts +16 -0
- package/dist/{common → types/common}/useContentTypePermissions.d.ts +17 -17
- package/dist/{common → types/common}/useEditorPermissions.d.ts +17 -17
- package/dist/types/common/useEditorPermissions.spec.d.ts +1 -0
- package/dist/{components → types/components}/AssetThumbnail/AssetThumbnail.d.ts +7 -7
- package/dist/{components → types/components}/CreateEntryLinkButton/CreateEntryLinkButton.d.ts +19 -19
- package/dist/types/components/CreateEntryLinkButton/CreateEntryLinkButton.spec.d.ts +1 -0
- package/dist/{components → types/components}/CreateEntryLinkButton/CreateEntryMenuTrigger.d.ts +31 -31
- package/dist/types/components/CreateEntryLinkButton/CreateEntryMenuTrigger.spec.d.ts +1 -0
- package/dist/{components → types/components}/CreateEntryLinkButton/useGlobalMouseUp.d.ts +1 -1
- package/dist/{components → types/components}/LinkActions/CombinedLinkActions.d.ts +10 -10
- package/dist/{components → types/components}/LinkActions/LinkActions.d.ts +26 -26
- package/dist/{components → types/components}/LinkActions/LinkEntityActions.d.ts +24 -24
- package/dist/types/components/LinkActions/NoLinkPermissionsInfo.d.ts +2 -0
- package/dist/{components → types/components}/LinkActions/helpers.d.ts +26 -26
- package/dist/{components → types/components}/LinkActions/redesignStyles.d.ts +3 -3
- package/dist/{components → types/components}/LinkActions/styles.d.ts +2 -2
- package/dist/{components → types/components}/MissingEntityCard/MissingEntityCard.d.ts +8 -8
- package/dist/{components → types/components}/MissingEntityCard/styles.d.ts +2 -2
- package/dist/{components → types/components}/ScheduledIconWithTooltip/ScheduleTooltip.d.ts +11 -11
- package/dist/{components → types/components}/ScheduledIconWithTooltip/ScheduledIconWithTooltip.d.ts +10 -10
- package/dist/{components → types/components}/ScheduledIconWithTooltip/formatDateAndTime.d.ts +15 -15
- package/dist/types/components/SpaceName/SpaceName.d.ts +6 -0
- package/dist/{components → types/components}/index.d.ts +9 -9
- package/dist/{entries → types/entries}/MultipleEntryReferenceEditor.d.ts +3 -3
- package/dist/{entries → types/entries}/SingleEntryReferenceEditor.d.ts +8 -8
- package/dist/{entries → types/entries}/WrappedEntryCard/FetchingWrappedEntryCard.d.ts +18 -18
- package/dist/{entries → types/entries}/WrappedEntryCard/WrappedEntryCard.d.ts +35 -35
- package/dist/{entries → types/entries}/index.d.ts +3 -3
- package/dist/{index.d.ts → types/index.d.ts} +10 -8
- package/dist/{resources → types/resources}/Cards/ContentfulEntryCard.d.ts +21 -21
- package/dist/{resources → types/resources}/Cards/ResourceCard.d.ts +12 -12
- package/dist/{resources → types/resources}/Cards/UnsupportedEntityCard.d.ts +4 -4
- package/dist/{resources → types/resources}/MultipleResourceReferenceEditor.d.ts +7 -7
- package/dist/types/resources/MultipleResourceReferenceEditor.spec.d.ts +1 -0
- package/dist/{resources → types/resources}/SingleResourceReferenceEditor.d.ts +7 -7
- package/dist/types/resources/SingleResourceReferenceEditor.spec.d.ts +1 -0
- package/dist/{resources → types/resources}/index.d.ts +2 -2
- package/dist/{resources → types/resources}/testHelpers/resourceEditorHelpers.d.ts +50 -50
- package/dist/{resources → types/resources}/useResourceLinkActions.d.ts +7 -7
- package/dist/{types.d.ts → types/types.d.ts} +104 -104
- package/dist/{utils → types/utils}/fromFieldValidations.d.ts +21 -21
- package/package.json +25 -11
- package/CHANGELOG.md +0 -860
- package/dist/assets/SingleMediaEditor.d.ts +0 -10
- package/dist/common/useAccessApi.d.ts +0 -16
- package/dist/components/LinkActions/NoLinkPermissionsInfo.d.ts +0 -2
- package/dist/components/SpaceName/SpaceName.d.ts +0 -6
- package/dist/field-editor-reference.cjs.development.js +0 -2753
- package/dist/field-editor-reference.cjs.development.js.map +0 -1
- package/dist/field-editor-reference.cjs.production.min.js +0 -2
- package/dist/field-editor-reference.cjs.production.min.js.map +0 -1
- package/dist/field-editor-reference.esm.js +0 -2727
- package/dist/field-editor-reference.esm.js.map +0 -1
- package/dist/index.js +0 -8
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
const _react = _interop_require_wildcard(require("react"));
|
|
6
|
+
require("@testing-library/jest-dom/extend-expect");
|
|
7
|
+
const _react1 = require("@testing-library/react");
|
|
8
|
+
const _EntityStore = require("../common/EntityStore");
|
|
9
|
+
const _MultipleResourceReferenceEditor = require("./MultipleResourceReferenceEditor");
|
|
10
|
+
const _resourceEditorHelpers = require("./testHelpers/resourceEditorHelpers");
|
|
11
|
+
function _getRequireWildcardCache(nodeInterop) {
|
|
12
|
+
if (typeof WeakMap !== "function") return null;
|
|
13
|
+
var cacheBabelInterop = new WeakMap();
|
|
14
|
+
var cacheNodeInterop = new WeakMap();
|
|
15
|
+
return (_getRequireWildcardCache = function(nodeInterop) {
|
|
16
|
+
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
|
17
|
+
})(nodeInterop);
|
|
18
|
+
}
|
|
19
|
+
function _interop_require_wildcard(obj, nodeInterop) {
|
|
20
|
+
if (!nodeInterop && obj && obj.__esModule) {
|
|
21
|
+
return obj;
|
|
22
|
+
}
|
|
23
|
+
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
|
|
24
|
+
return {
|
|
25
|
+
default: obj
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
var cache = _getRequireWildcardCache(nodeInterop);
|
|
29
|
+
if (cache && cache.has(obj)) {
|
|
30
|
+
return cache.get(obj);
|
|
31
|
+
}
|
|
32
|
+
var newObj = {};
|
|
33
|
+
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
34
|
+
for(var key in obj){
|
|
35
|
+
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
36
|
+
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
|
|
37
|
+
if (desc && (desc.get || desc.set)) {
|
|
38
|
+
Object.defineProperty(newObj, key, desc);
|
|
39
|
+
} else {
|
|
40
|
+
newObj[key] = obj[key];
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
newObj.default = obj;
|
|
45
|
+
if (cache) {
|
|
46
|
+
cache.set(obj, newObj);
|
|
47
|
+
}
|
|
48
|
+
return newObj;
|
|
49
|
+
}
|
|
50
|
+
let mockedResources = {};
|
|
51
|
+
jest.mock('../common/EntityStore', ()=>{
|
|
52
|
+
const module = jest.requireActual('../common/EntityStore');
|
|
53
|
+
return {
|
|
54
|
+
...module,
|
|
55
|
+
useResource: jest.fn((linkType, urn, apiUrl)=>({
|
|
56
|
+
data: mockedResources[`${linkType}.${urn}`],
|
|
57
|
+
status: 'success',
|
|
58
|
+
apiUrl
|
|
59
|
+
}))
|
|
60
|
+
};
|
|
61
|
+
});
|
|
62
|
+
jest.mock('react-intersection-observer', ()=>{
|
|
63
|
+
const module = jest.requireActual('react-intersection-observer');
|
|
64
|
+
return {
|
|
65
|
+
...module,
|
|
66
|
+
useInView: ()=>({
|
|
67
|
+
inView: true
|
|
68
|
+
})
|
|
69
|
+
};
|
|
70
|
+
});
|
|
71
|
+
const fieldDefinition = {
|
|
72
|
+
type: 'Array',
|
|
73
|
+
items: {
|
|
74
|
+
type: 'ResourceLink'
|
|
75
|
+
},
|
|
76
|
+
id: 'foo',
|
|
77
|
+
name: 'Foo',
|
|
78
|
+
allowedResources: [
|
|
79
|
+
{
|
|
80
|
+
source: 'foo',
|
|
81
|
+
contentTypes: [
|
|
82
|
+
'bar'
|
|
83
|
+
]
|
|
84
|
+
}
|
|
85
|
+
],
|
|
86
|
+
required: true,
|
|
87
|
+
validations: []
|
|
88
|
+
};
|
|
89
|
+
describe('Multiple resource editor', ()=>{
|
|
90
|
+
it('renders the action button when no value is set', async ()=>{
|
|
91
|
+
const sdk = (0, _resourceEditorHelpers.mockSdkForField)(fieldDefinition);
|
|
92
|
+
(0, _react1.render)(_react.createElement(_MultipleResourceReferenceEditor.MultipleResourceReferenceEditor, {
|
|
93
|
+
isInitiallyDisabled: false,
|
|
94
|
+
sdk: sdk,
|
|
95
|
+
hasCardEditActions: true,
|
|
96
|
+
viewType: "card",
|
|
97
|
+
parameters: {}
|
|
98
|
+
}));
|
|
99
|
+
const button = await _react1.screen.findByText('Add existing content');
|
|
100
|
+
expect(button).toBeDefined();
|
|
101
|
+
_react1.fireEvent.click(button);
|
|
102
|
+
const dialogFn = sdk.dialogs.selectMultipleResourceEntries;
|
|
103
|
+
expect(dialogFn).toHaveBeenCalledTimes(1);
|
|
104
|
+
const options = dialogFn.mock.calls[0][0];
|
|
105
|
+
expect(options).toEqual({
|
|
106
|
+
allowedResources: fieldDefinition.allowedResources
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
it('renders custom actions when passed', async ()=>{
|
|
110
|
+
const sdk = (0, _resourceEditorHelpers.mockSdkForField)(fieldDefinition);
|
|
111
|
+
(0, _react1.render)(_react.createElement(_MultipleResourceReferenceEditor.MultipleResourceReferenceEditor, {
|
|
112
|
+
isInitiallyDisabled: false,
|
|
113
|
+
sdk: sdk,
|
|
114
|
+
hasCardEditActions: true,
|
|
115
|
+
viewType: "card",
|
|
116
|
+
parameters: {},
|
|
117
|
+
renderCustomActions: ()=>_react.createElement("div", {
|
|
118
|
+
"data-testid": "custom-actions"
|
|
119
|
+
})
|
|
120
|
+
}));
|
|
121
|
+
const customActions = await _react1.screen.findByTestId('custom-actions');
|
|
122
|
+
expect(customActions).toBeDefined();
|
|
123
|
+
});
|
|
124
|
+
describe('with value', ()=>{
|
|
125
|
+
it('renders the cards', async ()=>{
|
|
126
|
+
const { entryLinks , entryInfos } = generateMultipleTestResources();
|
|
127
|
+
mockedResources = {};
|
|
128
|
+
for (const [spaceId, link] of Object.entries(entryLinks)){
|
|
129
|
+
mockedResources[`${link.sys.linkType}.${link.sys.urn}`] = entryInfos[spaceId];
|
|
130
|
+
}
|
|
131
|
+
const sdk = (0, _resourceEditorHelpers.mockSdkForField)(fieldDefinition, Object.values(entryLinks));
|
|
132
|
+
(0, _react1.render)(_react.createElement(_MultipleResourceReferenceEditor.MultipleResourceReferenceEditor, {
|
|
133
|
+
isInitiallyDisabled: false,
|
|
134
|
+
sdk: sdk,
|
|
135
|
+
hasCardEditActions: true,
|
|
136
|
+
viewType: "card",
|
|
137
|
+
apiUrl: "test-contentful",
|
|
138
|
+
getEntryRouteHref: ()=>'',
|
|
139
|
+
parameters: {}
|
|
140
|
+
}));
|
|
141
|
+
expect(_EntityStore.useResource).toHaveBeenCalledTimes(Object.values(entryInfos).length);
|
|
142
|
+
const cards = [];
|
|
143
|
+
const entriesArray = Object.values(entryInfos);
|
|
144
|
+
for (const info of Array.from(entriesArray.values())){
|
|
145
|
+
const entryTitle = info.resource.fields.title[info.defaultLocaleCode];
|
|
146
|
+
const spaceName = info.space.name;
|
|
147
|
+
const card = await expectEntryCard(entryTitle, spaceName);
|
|
148
|
+
cards.push(card);
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
describe('card actions', ()=>{
|
|
152
|
+
it('should have a move to top button', async ()=>{
|
|
153
|
+
const { entryLinks , entryInfos } = generateMultipleTestResources();
|
|
154
|
+
mockedResources = {};
|
|
155
|
+
for (const [spaceId, link] of Object.entries(entryLinks)){
|
|
156
|
+
mockedResources[`${link.sys.linkType}.${link.sys.urn}`] = entryInfos[spaceId];
|
|
157
|
+
}
|
|
158
|
+
const sdk = (0, _resourceEditorHelpers.mockSdkForField)(fieldDefinition, Object.values(entryLinks));
|
|
159
|
+
(0, _react1.render)(_react.createElement(_MultipleResourceReferenceEditor.MultipleResourceReferenceEditor, {
|
|
160
|
+
isInitiallyDisabled: false,
|
|
161
|
+
sdk: sdk,
|
|
162
|
+
hasCardEditActions: true,
|
|
163
|
+
viewType: "card",
|
|
164
|
+
apiUrl: "test-contentful",
|
|
165
|
+
getEntryRouteHref: ()=>'',
|
|
166
|
+
parameters: {}
|
|
167
|
+
}));
|
|
168
|
+
const linkExistingBtn = _react1.screen.queryByText('Add existing content');
|
|
169
|
+
expect(linkExistingBtn).toBeInTheDocument();
|
|
170
|
+
const entriesArray = Object.values(entryInfos);
|
|
171
|
+
const firstItem = entriesArray[0];
|
|
172
|
+
await expectToNotHaveMoveButton(firstItem, 'Move to top');
|
|
173
|
+
const allButFirst = entriesArray.slice(1);
|
|
174
|
+
for (const info of allButFirst){
|
|
175
|
+
await expectToHaveMoveButton(info, 'Move to top');
|
|
176
|
+
}
|
|
177
|
+
});
|
|
178
|
+
it('should have a move to bottom button', async ()=>{
|
|
179
|
+
const { entryLinks , entryInfos } = generateMultipleTestResources();
|
|
180
|
+
mockedResources = {};
|
|
181
|
+
for (const [spaceId, link] of Object.entries(entryLinks)){
|
|
182
|
+
mockedResources[`${link.sys.linkType}.${link.sys.urn}`] = entryInfos[spaceId];
|
|
183
|
+
}
|
|
184
|
+
const sdk = (0, _resourceEditorHelpers.mockSdkForField)(fieldDefinition, Object.values(entryLinks));
|
|
185
|
+
(0, _react1.render)(_react.createElement(_MultipleResourceReferenceEditor.MultipleResourceReferenceEditor, {
|
|
186
|
+
isInitiallyDisabled: false,
|
|
187
|
+
sdk: sdk,
|
|
188
|
+
hasCardEditActions: true,
|
|
189
|
+
viewType: "card",
|
|
190
|
+
apiUrl: "test-contentful",
|
|
191
|
+
getEntryRouteHref: ()=>'',
|
|
192
|
+
parameters: {}
|
|
193
|
+
}));
|
|
194
|
+
const linkExistingBtn = _react1.screen.queryByText('Add existing content');
|
|
195
|
+
expect(linkExistingBtn).toBeInTheDocument();
|
|
196
|
+
const entriesArray = Object.values(entryInfos);
|
|
197
|
+
const lastItem = entriesArray[entriesArray.length - 1];
|
|
198
|
+
await expectToNotHaveMoveButton(lastItem, 'Move to bottom');
|
|
199
|
+
const allButLast = entriesArray.slice(0, -1);
|
|
200
|
+
for (const info of allButLast){
|
|
201
|
+
await expectToHaveMoveButton(info, 'Move to bottom');
|
|
202
|
+
}
|
|
203
|
+
});
|
|
204
|
+
it('works when using remove action', async ()=>{
|
|
205
|
+
const { entryLinks , entryInfos } = generateMultipleTestResources();
|
|
206
|
+
mockedResources = {};
|
|
207
|
+
for (const [spaceId, link] of Object.entries(entryLinks)){
|
|
208
|
+
mockedResources[`${link.sys.linkType}.${link.sys.urn}`] = entryInfos[spaceId];
|
|
209
|
+
}
|
|
210
|
+
const sdk = (0, _resourceEditorHelpers.mockSdkForField)(fieldDefinition, Object.values(entryLinks));
|
|
211
|
+
(0, _react1.render)(_react.createElement(_MultipleResourceReferenceEditor.MultipleResourceReferenceEditor, {
|
|
212
|
+
isInitiallyDisabled: false,
|
|
213
|
+
sdk: sdk,
|
|
214
|
+
hasCardEditActions: true,
|
|
215
|
+
viewType: "card",
|
|
216
|
+
apiUrl: "test-contentful",
|
|
217
|
+
getEntryRouteHref: ()=>'',
|
|
218
|
+
parameters: {}
|
|
219
|
+
}));
|
|
220
|
+
const linkExistingBtn = _react1.screen.queryByText('Add existing content');
|
|
221
|
+
expect(linkExistingBtn).toBeInTheDocument();
|
|
222
|
+
const entriesArray = Object.values(entryInfos);
|
|
223
|
+
for (const info of entriesArray){
|
|
224
|
+
await clickCardActionsButton(info);
|
|
225
|
+
const removeBtn = await _react1.screen.findByText('Remove', {
|
|
226
|
+
selector: '[role="menuitem"]'
|
|
227
|
+
});
|
|
228
|
+
_react1.fireEvent.click(removeBtn);
|
|
229
|
+
}
|
|
230
|
+
expect(sdk.field.setValue).toHaveBeenCalledTimes(3);
|
|
231
|
+
expect(sdk.field.setValue).toHaveBeenCalledWith([]);
|
|
232
|
+
});
|
|
233
|
+
});
|
|
234
|
+
});
|
|
235
|
+
});
|
|
236
|
+
async function expectToHaveMoveButton(info, buttonString) {
|
|
237
|
+
await clickCardActionsButton(info);
|
|
238
|
+
await _react1.screen.findByText(buttonString, {
|
|
239
|
+
selector: '[role="menuitem"]'
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
async function expectToNotHaveMoveButton(info, buttonString) {
|
|
243
|
+
await clickCardActionsButton(info);
|
|
244
|
+
expect(_react1.screen.queryByText(buttonString, {
|
|
245
|
+
selector: '[role="menuitem"]'
|
|
246
|
+
})).toBeNull();
|
|
247
|
+
}
|
|
248
|
+
async function clickCardActionsButton(info) {
|
|
249
|
+
_react1.fireEvent.click(document.body);
|
|
250
|
+
const entryTitle = info.resource.fields.title[info.defaultLocaleCode];
|
|
251
|
+
const spaceName = info.space.name;
|
|
252
|
+
const card = await expectEntryCard(entryTitle, spaceName);
|
|
253
|
+
const actionsBtn = card.querySelector('[data-test-id="cf-ui-card-actions"]');
|
|
254
|
+
expect(actionsBtn).toBeInTheDocument();
|
|
255
|
+
_react1.fireEvent.click(actionsBtn);
|
|
256
|
+
}
|
|
257
|
+
async function expectEntryCard(entryTitle, spaceName) {
|
|
258
|
+
const title = await _react1.screen.findByText(entryTitle);
|
|
259
|
+
await _react1.screen.findByText(spaceName);
|
|
260
|
+
const theCard = title.closest('[data-test-id="cf-ui-entry-card"]');
|
|
261
|
+
expect(theCard).toBeDefined();
|
|
262
|
+
const actionsBtn = theCard?.querySelector('[data-test-id="cf-ui-card-actions"]');
|
|
263
|
+
expect(actionsBtn).toBeDefined();
|
|
264
|
+
return theCard;
|
|
265
|
+
}
|
|
266
|
+
function generateMultipleTestResources() {
|
|
267
|
+
return [
|
|
268
|
+
'Space A',
|
|
269
|
+
'Space B',
|
|
270
|
+
'Space C'
|
|
271
|
+
].reduce((acc, spaceName)=>{
|
|
272
|
+
const spaceId = spaceName.toLowerCase().replace(' ', '-');
|
|
273
|
+
const entryInfo = {
|
|
274
|
+
title: `An entry in ${spaceName}`,
|
|
275
|
+
id: `linkedEntryId`
|
|
276
|
+
};
|
|
277
|
+
acc.entryLinks[spaceId] = {
|
|
278
|
+
sys: {
|
|
279
|
+
type: 'ResourceLink',
|
|
280
|
+
linkType: 'Contentful:Entry',
|
|
281
|
+
urn: `crn:test:::content:spaces/${spaceId}/entries/${entryInfo.id}`
|
|
282
|
+
}
|
|
283
|
+
};
|
|
284
|
+
acc.entryInfos[spaceId] = (0, _resourceEditorHelpers.createFakeEntryResource)({
|
|
285
|
+
title: entryInfo.title,
|
|
286
|
+
id: entryInfo.id,
|
|
287
|
+
space: {
|
|
288
|
+
id: spaceId,
|
|
289
|
+
name: spaceName
|
|
290
|
+
}
|
|
291
|
+
});
|
|
292
|
+
return acc;
|
|
293
|
+
}, {
|
|
294
|
+
entryLinks: {},
|
|
295
|
+
entryInfos: {}
|
|
296
|
+
});
|
|
297
|
+
}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "SingleResourceReferenceEditor", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return SingleResourceReferenceEditor;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _react = _interop_require_wildcard(require("react"));
|
|
12
|
+
const _fieldeditorshared = require("@contentful/field-editor-shared");
|
|
13
|
+
const _deepequal = _interop_require_default(require("deep-equal"));
|
|
14
|
+
const _EntityStore = require("../common/EntityStore");
|
|
15
|
+
const _LinkEntityActions = require("../components/LinkActions/LinkEntityActions");
|
|
16
|
+
const _ResourceCard = require("./Cards/ResourceCard");
|
|
17
|
+
const _useResourceLinkActions = require("./useResourceLinkActions");
|
|
18
|
+
function _interop_require_default(obj) {
|
|
19
|
+
return obj && obj.__esModule ? obj : {
|
|
20
|
+
default: obj
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
function _getRequireWildcardCache(nodeInterop) {
|
|
24
|
+
if (typeof WeakMap !== "function") return null;
|
|
25
|
+
var cacheBabelInterop = new WeakMap();
|
|
26
|
+
var cacheNodeInterop = new WeakMap();
|
|
27
|
+
return (_getRequireWildcardCache = function(nodeInterop) {
|
|
28
|
+
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
|
29
|
+
})(nodeInterop);
|
|
30
|
+
}
|
|
31
|
+
function _interop_require_wildcard(obj, nodeInterop) {
|
|
32
|
+
if (!nodeInterop && obj && obj.__esModule) {
|
|
33
|
+
return obj;
|
|
34
|
+
}
|
|
35
|
+
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
|
|
36
|
+
return {
|
|
37
|
+
default: obj
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
var cache = _getRequireWildcardCache(nodeInterop);
|
|
41
|
+
if (cache && cache.has(obj)) {
|
|
42
|
+
return cache.get(obj);
|
|
43
|
+
}
|
|
44
|
+
var newObj = {};
|
|
45
|
+
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
46
|
+
for(var key in obj){
|
|
47
|
+
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
48
|
+
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
|
|
49
|
+
if (desc && (desc.get || desc.set)) {
|
|
50
|
+
Object.defineProperty(newObj, key, desc);
|
|
51
|
+
} else {
|
|
52
|
+
newObj[key] = obj[key];
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
newObj.default = obj;
|
|
57
|
+
if (cache) {
|
|
58
|
+
cache.set(obj, newObj);
|
|
59
|
+
}
|
|
60
|
+
return newObj;
|
|
61
|
+
}
|
|
62
|
+
function SingleResourceReferenceEditor(props) {
|
|
63
|
+
const { dialogs , field } = props.sdk;
|
|
64
|
+
const linkActionsProps = (0, _useResourceLinkActions.useResourceLinkActions)({
|
|
65
|
+
dialogs,
|
|
66
|
+
field,
|
|
67
|
+
apiUrl: props.apiUrl
|
|
68
|
+
});
|
|
69
|
+
return _react.createElement(_EntityStore.EntityProvider, {
|
|
70
|
+
sdk: props.sdk
|
|
71
|
+
}, _react.createElement(_fieldeditorshared.FieldConnector, {
|
|
72
|
+
throttle: 0,
|
|
73
|
+
field: props.sdk.field,
|
|
74
|
+
isInitiallyDisabled: props.isInitiallyDisabled,
|
|
75
|
+
isEqualValues: _deepequal.default
|
|
76
|
+
}, ({ value , disabled })=>{
|
|
77
|
+
return value ? _react.createElement(_ResourceCard.ResourceCard, {
|
|
78
|
+
onRemove: ()=>props.sdk.field.removeValue(),
|
|
79
|
+
resourceLink: value,
|
|
80
|
+
isDisabled: disabled,
|
|
81
|
+
getEntryRouteHref: props.getEntryRouteHref
|
|
82
|
+
}) : _react.createElement(_LinkEntityActions.CombinedLinkEntityActions, {
|
|
83
|
+
...linkActionsProps,
|
|
84
|
+
renderCustomActions: props.renderCustomActions
|
|
85
|
+
});
|
|
86
|
+
}));
|
|
87
|
+
}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
const _react = _interop_require_wildcard(require("react"));
|
|
6
|
+
require("@testing-library/jest-dom/extend-expect");
|
|
7
|
+
const _react1 = require("@testing-library/react");
|
|
8
|
+
const _EntityStore = require("../common/EntityStore");
|
|
9
|
+
const _SingleResourceReferenceEditor = require("./SingleResourceReferenceEditor");
|
|
10
|
+
const _resourceEditorHelpers = require("./testHelpers/resourceEditorHelpers");
|
|
11
|
+
function _getRequireWildcardCache(nodeInterop) {
|
|
12
|
+
if (typeof WeakMap !== "function") return null;
|
|
13
|
+
var cacheBabelInterop = new WeakMap();
|
|
14
|
+
var cacheNodeInterop = new WeakMap();
|
|
15
|
+
return (_getRequireWildcardCache = function(nodeInterop) {
|
|
16
|
+
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
|
17
|
+
})(nodeInterop);
|
|
18
|
+
}
|
|
19
|
+
function _interop_require_wildcard(obj, nodeInterop) {
|
|
20
|
+
if (!nodeInterop && obj && obj.__esModule) {
|
|
21
|
+
return obj;
|
|
22
|
+
}
|
|
23
|
+
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
|
|
24
|
+
return {
|
|
25
|
+
default: obj
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
var cache = _getRequireWildcardCache(nodeInterop);
|
|
29
|
+
if (cache && cache.has(obj)) {
|
|
30
|
+
return cache.get(obj);
|
|
31
|
+
}
|
|
32
|
+
var newObj = {};
|
|
33
|
+
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
34
|
+
for(var key in obj){
|
|
35
|
+
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
36
|
+
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
|
|
37
|
+
if (desc && (desc.get || desc.set)) {
|
|
38
|
+
Object.defineProperty(newObj, key, desc);
|
|
39
|
+
} else {
|
|
40
|
+
newObj[key] = obj[key];
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
newObj.default = obj;
|
|
45
|
+
if (cache) {
|
|
46
|
+
cache.set(obj, newObj);
|
|
47
|
+
}
|
|
48
|
+
return newObj;
|
|
49
|
+
}
|
|
50
|
+
const mockedResources = {};
|
|
51
|
+
jest.mock('../common/EntityStore', ()=>{
|
|
52
|
+
const module = jest.requireActual('../common/EntityStore');
|
|
53
|
+
return {
|
|
54
|
+
...module,
|
|
55
|
+
useResource: jest.fn((linkType, urn)=>({
|
|
56
|
+
data: mockedResources[`${linkType}.${urn}`],
|
|
57
|
+
status: 'success'
|
|
58
|
+
}))
|
|
59
|
+
};
|
|
60
|
+
});
|
|
61
|
+
jest.mock('react-intersection-observer', ()=>{
|
|
62
|
+
const module = jest.requireActual('react-intersection-observer');
|
|
63
|
+
return {
|
|
64
|
+
...module,
|
|
65
|
+
useInView: ()=>({
|
|
66
|
+
inView: true
|
|
67
|
+
})
|
|
68
|
+
};
|
|
69
|
+
});
|
|
70
|
+
const fieldDefinition = {
|
|
71
|
+
type: 'ResourceLink',
|
|
72
|
+
id: 'foo',
|
|
73
|
+
name: 'Foo',
|
|
74
|
+
allowedResources: [
|
|
75
|
+
{
|
|
76
|
+
source: 'foo',
|
|
77
|
+
contentTypes: [
|
|
78
|
+
'bar'
|
|
79
|
+
]
|
|
80
|
+
}
|
|
81
|
+
],
|
|
82
|
+
required: true,
|
|
83
|
+
validations: []
|
|
84
|
+
};
|
|
85
|
+
describe('Single resource editor', ()=>{
|
|
86
|
+
it('renders the action button when no value is set', async ()=>{
|
|
87
|
+
const sdk = (0, _resourceEditorHelpers.mockSdkForField)(fieldDefinition);
|
|
88
|
+
(0, _react1.render)(_react.createElement(_SingleResourceReferenceEditor.SingleResourceReferenceEditor, {
|
|
89
|
+
isInitiallyDisabled: false,
|
|
90
|
+
sdk: sdk,
|
|
91
|
+
hasCardEditActions: true,
|
|
92
|
+
viewType: "card",
|
|
93
|
+
parameters: {}
|
|
94
|
+
}));
|
|
95
|
+
const button = await _react1.screen.findByText('Add existing content');
|
|
96
|
+
expect(button).toBeDefined();
|
|
97
|
+
_react1.fireEvent.click(button);
|
|
98
|
+
const dialogFn = sdk.dialogs.selectSingleResourceEntry;
|
|
99
|
+
expect(dialogFn).toHaveBeenCalledTimes(1);
|
|
100
|
+
const options = dialogFn.mock.calls[0][0];
|
|
101
|
+
expect(options).toEqual({
|
|
102
|
+
allowedResources: fieldDefinition.allowedResources
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
it('renders custom actions when passed', async ()=>{
|
|
106
|
+
const sdk = (0, _resourceEditorHelpers.mockSdkForField)(fieldDefinition);
|
|
107
|
+
(0, _react1.render)(_react.createElement(_SingleResourceReferenceEditor.SingleResourceReferenceEditor, {
|
|
108
|
+
isInitiallyDisabled: false,
|
|
109
|
+
sdk: sdk,
|
|
110
|
+
hasCardEditActions: true,
|
|
111
|
+
viewType: "card",
|
|
112
|
+
parameters: {},
|
|
113
|
+
renderCustomActions: ()=>_react.createElement("div", {
|
|
114
|
+
"data-testid": "custom-actions"
|
|
115
|
+
})
|
|
116
|
+
}));
|
|
117
|
+
const customActions = await _react1.screen.findByTestId('custom-actions');
|
|
118
|
+
expect(customActions).toBeDefined();
|
|
119
|
+
});
|
|
120
|
+
it('renders the card button when the value is set', async ()=>{
|
|
121
|
+
const sdk = (0, _resourceEditorHelpers.mockSdkForField)(fieldDefinition, {
|
|
122
|
+
sys: {
|
|
123
|
+
type: 'Link',
|
|
124
|
+
linkType: 'Contentful:Entry',
|
|
125
|
+
urn: 'crn:test:::content:spaces/x-space/entries/linkedEntryId'
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
const info = (0, _resourceEditorHelpers.createFakeEntryResource)({
|
|
129
|
+
title: 'Title of linked entry',
|
|
130
|
+
id: 'linkedEntryId',
|
|
131
|
+
space: {
|
|
132
|
+
id: 'x-space',
|
|
133
|
+
name: 'X Space'
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
mockedResources[`Contentful:Entry.crn:test:::content:spaces/x-space/entries/linkedEntryId`] = info;
|
|
137
|
+
(0, _react1.render)(_react.createElement(_SingleResourceReferenceEditor.SingleResourceReferenceEditor, {
|
|
138
|
+
isInitiallyDisabled: false,
|
|
139
|
+
sdk: sdk,
|
|
140
|
+
hasCardEditActions: true,
|
|
141
|
+
viewType: "card",
|
|
142
|
+
apiUrl: "test-contentful",
|
|
143
|
+
getEntryRouteHref: jest.fn(),
|
|
144
|
+
parameters: {}
|
|
145
|
+
}));
|
|
146
|
+
expect(_EntityStore.useResource).toHaveBeenCalled();
|
|
147
|
+
const title = await _react1.screen.findByText('Title of linked entry');
|
|
148
|
+
await _react1.screen.findByText('X Space');
|
|
149
|
+
const theCard = title.closest('[data-test-id="cf-ui-entry-card"]');
|
|
150
|
+
const actionsBtn = theCard?.querySelector('[data-test-id="cf-ui-card-actions"]');
|
|
151
|
+
expect(actionsBtn).toBeDefined();
|
|
152
|
+
_react1.fireEvent.click(actionsBtn);
|
|
153
|
+
const removeBtn = await _react1.screen.findByText('Remove', {
|
|
154
|
+
selector: '[role="menuitem"]'
|
|
155
|
+
});
|
|
156
|
+
_react1.fireEvent.click(removeBtn);
|
|
157
|
+
expect(sdk.field.removeValue).toHaveBeenCalledWith();
|
|
158
|
+
const linkExistingBtn = _react1.screen.queryByText('Add existing content');
|
|
159
|
+
expect(linkExistingBtn).not.toBeInTheDocument();
|
|
160
|
+
});
|
|
161
|
+
});
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
_export_star(require("./MultipleResourceReferenceEditor"), exports);
|
|
6
|
+
_export_star(require("./SingleResourceReferenceEditor"), exports);
|
|
7
|
+
function _export_star(from, to) {
|
|
8
|
+
Object.keys(from).forEach(function(k) {
|
|
9
|
+
if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) {
|
|
10
|
+
Object.defineProperty(to, k, {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
get: function() {
|
|
13
|
+
return from[k];
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
return from;
|
|
19
|
+
}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: all[name]
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
mockSdkForField: function() {
|
|
13
|
+
return mockSdkForField;
|
|
14
|
+
},
|
|
15
|
+
createFakeEntryResource: function() {
|
|
16
|
+
return createFakeEntryResource;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
function mockSdkForField(fieldDefinition, fieldValue) {
|
|
20
|
+
return {
|
|
21
|
+
field: {
|
|
22
|
+
getValue: jest.fn(()=>fieldValue),
|
|
23
|
+
setValue: jest.fn(()=>Promise.resolve(undefined)),
|
|
24
|
+
removeValue: jest.fn(),
|
|
25
|
+
onSchemaErrorsChanged: ()=>{},
|
|
26
|
+
onIsDisabledChanged: ()=>{},
|
|
27
|
+
onValueChanged: ()=>{},
|
|
28
|
+
...fieldDefinition,
|
|
29
|
+
locale: 'en'
|
|
30
|
+
},
|
|
31
|
+
dialogs: {
|
|
32
|
+
selectSingleResourceEntry: jest.fn().mockResolvedValue({
|
|
33
|
+
sys: {
|
|
34
|
+
type: 'Entry',
|
|
35
|
+
id: 'linkedEntryId',
|
|
36
|
+
space: {
|
|
37
|
+
sys: {
|
|
38
|
+
type: 'Link',
|
|
39
|
+
linkType: 'Space',
|
|
40
|
+
id: 'x-space'
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}),
|
|
45
|
+
selectMultipleResourceEntries: jest.fn().mockResolvedValue([
|
|
46
|
+
{
|
|
47
|
+
sys: {
|
|
48
|
+
type: 'Entry',
|
|
49
|
+
id: 'linkedEntryId',
|
|
50
|
+
space: {
|
|
51
|
+
sys: {
|
|
52
|
+
type: 'Link',
|
|
53
|
+
linkType: 'Space',
|
|
54
|
+
id: 'x-space'
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
])
|
|
60
|
+
},
|
|
61
|
+
ids: {
|
|
62
|
+
space: 'myTestSpace',
|
|
63
|
+
environment: 'master',
|
|
64
|
+
organization: 'acme',
|
|
65
|
+
user: 'norris_chuck',
|
|
66
|
+
field: fieldDefinition.id,
|
|
67
|
+
entry: 'testEntry',
|
|
68
|
+
contentType: 'testCT'
|
|
69
|
+
},
|
|
70
|
+
space: {
|
|
71
|
+
onEntityChanged: ()=>{}
|
|
72
|
+
},
|
|
73
|
+
navigator: {
|
|
74
|
+
onSlideInNavigation: ()=>()=>({})
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
const createFakeEntryResource = ({ title , id , space })=>{
|
|
79
|
+
const { id: spaceId , name: spaceName } = space;
|
|
80
|
+
return {
|
|
81
|
+
resource: {
|
|
82
|
+
sys: {
|
|
83
|
+
id,
|
|
84
|
+
type: 'Entry',
|
|
85
|
+
space: {
|
|
86
|
+
sys: {
|
|
87
|
+
id: spaceId
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
environment: {
|
|
91
|
+
sys: {
|
|
92
|
+
id: `${spaceId}-environment`
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
fields: {
|
|
97
|
+
title: {
|
|
98
|
+
en: title
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
},
|
|
102
|
+
contentType: {
|
|
103
|
+
sys: {
|
|
104
|
+
id: 'xTestCT'
|
|
105
|
+
},
|
|
106
|
+
displayField: 'title',
|
|
107
|
+
fields: [
|
|
108
|
+
{
|
|
109
|
+
type: 'Symbol',
|
|
110
|
+
id: 'title',
|
|
111
|
+
name: 'The title'
|
|
112
|
+
}
|
|
113
|
+
]
|
|
114
|
+
},
|
|
115
|
+
localeCode: 'en',
|
|
116
|
+
defaultLocaleCode: 'en',
|
|
117
|
+
space: {
|
|
118
|
+
name: spaceName
|
|
119
|
+
}
|
|
120
|
+
};
|
|
121
|
+
};
|