@eeacms/volto-slate-footnote 6.1.0 → 6.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.
- package/CHANGELOG.md +33 -1
- package/Jenkinsfile +2 -1
- package/jest-addon.config.js +2 -2
- package/package.json +1 -1
- package/src/editor/MultiSelectSearchWidget.jsx +1 -4
- package/src/editor/render.jsx +16 -14
- package/src/editor/utils.test.js +213 -0
package/CHANGELOG.md
CHANGED
|
@@ -4,12 +4,31 @@ All notable changes to this project will be documented in this file. Dates are d
|
|
|
4
4
|
|
|
5
5
|
Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
|
|
6
6
|
|
|
7
|
+
### [6.1.2](https://github.com/eea/volto-slate-footnote/compare/6.1.1...6.1.2) - 24 July 2023
|
|
8
|
+
|
|
9
|
+
### [6.1.1](https://github.com/eea/volto-slate-footnote/compare/6.1.0...6.1.1) - 12 June 2023
|
|
10
|
+
|
|
11
|
+
#### :house: Internal changes
|
|
12
|
+
|
|
13
|
+
- chore: [JENKINS] Deprecate circularity website [valentinab25 - [`ded882a`](https://github.com/eea/volto-slate-footnote/commit/ded882a1ca1183c2ba74ff4246111123ee36e6cb)]
|
|
14
|
+
|
|
15
|
+
#### :hammer_and_wrench: Others
|
|
16
|
+
|
|
17
|
+
- test: jest should look for addons in node_modules Refs #253277 [valentinab25 - [`3e0749c`](https://github.com/eea/volto-slate-footnote/commit/3e0749cc5bd7f5810ac6fd7a3feee4df0435ee0a)]
|
|
18
|
+
- test: Add unit tests for utils - refs #253277 [ana-oprea - [`a709895`](https://github.com/eea/volto-slate-footnote/commit/a709895d9953742ef6d39f8d9673c06b2efe6a64)]
|
|
19
|
+
- test: Fix test config, coverage Refs #253277 [valentinab25 - [`dc4d6dc`](https://github.com/eea/volto-slate-footnote/commit/dc4d6dc9b39bfe2c892156f32c764153d1366486)]
|
|
20
|
+
- Add Sonarqube tag using eea-website-frontend addons list [EEA Jenkins - [`4f0ecee`](https://github.com/eea/volto-slate-footnote/commit/4f0ecee224d5d6604dfbb562556e45437edbb8ec)]
|
|
7
21
|
### [6.1.0](https://github.com/eea/volto-slate-footnote/compare/6.0.2...6.1.0) - 27 March 2023
|
|
8
22
|
|
|
9
23
|
#### :hammer_and_wrench: Others
|
|
10
24
|
|
|
11
|
-
-
|
|
25
|
+
- Add Sonarqube tag using eea-website-frontend addons list [EEA Jenkins - [`23959ee`](https://github.com/eea/volto-slate-footnote/commit/23959ee43d45ec5eaa483590415a75fc58faae03)]
|
|
26
|
+
- Add Sonarqube tag using advisory-board-frontend addons list [EEA Jenkins - [`7aa6f34`](https://github.com/eea/volto-slate-footnote/commit/7aa6f3439953cc3d8f28875eff9fbcc24084cbc7)]
|
|
27
|
+
- Add Sonarqube tag using advisory-board-frontend addons list [EEA Jenkins - [`b117d15`](https://github.com/eea/volto-slate-footnote/commit/b117d15e51b3cf10717b9dd9dfef8304d46ad556)]
|
|
12
28
|
- test(Jenkins): Run tests and cypress with latest canary @plone/volto [Alin Voinea - [`97ed8fb`](https://github.com/eea/volto-slate-footnote/commit/97ed8fbd92f76c2b3128b62cdc1a77611e79410a)]
|
|
29
|
+
- Add Sonarqube tag using cca-frontend addons list [EEA Jenkins - [`cb22f5e`](https://github.com/eea/volto-slate-footnote/commit/cb22f5e8e9d3aed0a3b4374b6d4d80c8c2bb66e1)]
|
|
30
|
+
- yarn 3 [Alin Voinea - [`f5bb904`](https://github.com/eea/volto-slate-footnote/commit/f5bb904eecf740ffd57dbccf9a597c99ea2dfc0c)]
|
|
31
|
+
- Add Sonarqube tag using demo-kitkat-frontend addons list [EEA Jenkins - [`59cf6d3`](https://github.com/eea/volto-slate-footnote/commit/59cf6d334a460e373dda3e2e28754fcdd9fb0281)]
|
|
13
32
|
### [6.0.2](https://github.com/eea/volto-slate-footnote/compare/6.0.1...6.0.2) - 16 November 2022
|
|
14
33
|
|
|
15
34
|
#### :hammer_and_wrench: Others
|
|
@@ -25,27 +44,37 @@ Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
|
|
|
25
44
|
|
|
26
45
|
#### :hammer_and_wrench: Others
|
|
27
46
|
|
|
47
|
+
- Add Sonarqube tag using marine-frontend addons list [EEA Jenkins - [`dc3c7de`](https://github.com/eea/volto-slate-footnote/commit/dc3c7deaa8c692689ea0cec66cf019f05f9c4e22)]
|
|
48
|
+
- Add Sonarqube tag using eea-website-frontend addons list [EEA Jenkins - [`133969a`](https://github.com/eea/volto-slate-footnote/commit/133969a37a6153a19af121d2f6031a70bc67cc9d)]
|
|
28
49
|
### [5.0.1](https://github.com/eea/volto-slate-footnote/compare/5.0.0...5.0.1) - 30 June 2022
|
|
29
50
|
|
|
30
51
|
#### :hammer_and_wrench: Others
|
|
31
52
|
|
|
53
|
+
- Add Sonarqube tag using circularity-frontend addons list [EEA Jenkins - [`4d5af13`](https://github.com/eea/volto-slate-footnote/commit/4d5af1345aad9071c031f7f00efd6bc5da04541f)]
|
|
32
54
|
## [5.0.0](https://github.com/eea/volto-slate-footnote/compare/4.0.5...5.0.0) - 19 May 2022
|
|
33
55
|
|
|
34
56
|
### [4.0.5](https://github.com/eea/volto-slate-footnote/compare/4.0.4...4.0.5) - 17 May 2022
|
|
35
57
|
|
|
36
58
|
#### :hammer_and_wrench: Others
|
|
37
59
|
|
|
60
|
+
- Add Sonarqube tag using clms-frontend addons list [EEA Jenkins - [`85a16ee`](https://github.com/eea/volto-slate-footnote/commit/85a16ee73d21d696282dc24933169d3c31383027)]
|
|
61
|
+
- Add Sonarqube tag using eea-website-frontend addons list [EEA Jenkins - [`418349c`](https://github.com/eea/volto-slate-footnote/commit/418349ce22d98bf5dee58130d6f1cb9f45bbaa46)]
|
|
38
62
|
### [4.0.4](https://github.com/eea/volto-slate-footnote/compare/4.0.3...4.0.4) - 3 January 2022
|
|
39
63
|
|
|
40
64
|
### [4.0.3](https://github.com/eea/volto-slate-footnote/compare/4.0.2...4.0.3) - 18 December 2021
|
|
41
65
|
|
|
42
66
|
#### :hammer_and_wrench: Others
|
|
43
67
|
|
|
68
|
+
- Add Sonarqube tag using freshwater-frontend addons list [EEA Jenkins - [`ad06940`](https://github.com/eea/volto-slate-footnote/commit/ad0694074a06eb56ec1891256b262e9854c0303d)]
|
|
44
69
|
- Refs #142010 - Optimize Volto-addons gitflow pipelines [valentinab25 - [`1081079`](https://github.com/eea/volto-slate-footnote/commit/1081079444f5ac806e9d56765c4ccf0b9e415a73)]
|
|
70
|
+
- Add Sonarqube tag using industry-frontend addons list [EEA Jenkins - [`307687b`](https://github.com/eea/volto-slate-footnote/commit/307687b93d966e0df5c4a3f813dbb19442d2e169)]
|
|
71
|
+
- Add Sonarqube tag using clms-frontend addons list [EEA Jenkins - [`0460e2a`](https://github.com/eea/volto-slate-footnote/commit/0460e2a73a4c8ede00b0c1fc3f05624eaa345a33)]
|
|
72
|
+
- Add Sonarqube tag using forests-frontend addons list [EEA Jenkins - [`8aecee9`](https://github.com/eea/volto-slate-footnote/commit/8aecee99f11387e4ce31825209798772d7fee060)]
|
|
45
73
|
### [4.0.2](https://github.com/eea/volto-slate-footnote/compare/4.0.1...4.0.2) - 30 September 2021
|
|
46
74
|
|
|
47
75
|
#### :hammer_and_wrench: Others
|
|
48
76
|
|
|
77
|
+
- Add Sonarqube tag using sustainability-frontend addons list [EEA Jenkins - [`cf33efe`](https://github.com/eea/volto-slate-footnote/commit/cf33efec91b4b8d13562b8c8f660e7a78191d9e0)]
|
|
49
78
|
- Remove :asDefault dependency from volto-slate [Alin Voinea - [`13dad5e`](https://github.com/eea/volto-slate-footnote/commit/13dad5ed23043fa7a24682e1ac6addc86632bfe0)]
|
|
50
79
|
### [4.0.1](https://github.com/eea/volto-slate-footnote/compare/4.0.0...4.0.1) - 29 September 2021
|
|
51
80
|
|
|
@@ -53,6 +82,7 @@ Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
|
|
|
53
82
|
|
|
54
83
|
#### :hammer_and_wrench: Others
|
|
55
84
|
|
|
85
|
+
- Add Sonarqube tag using climate-energy-frontend addons list [EEA Jenkins - [`80a159b`](https://github.com/eea/volto-slate-footnote/commit/80a159bb67698cddedadc494e7ae2da32a96faea)]
|
|
56
86
|
### [3.2.0](https://github.com/eea/volto-slate-footnote/compare/3.1.1...3.2.0) - 13 September 2021
|
|
57
87
|
|
|
58
88
|
#### :hammer_and_wrench: Others
|
|
@@ -65,6 +95,7 @@ Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
|
|
|
65
95
|
- Remove console.log [Alin Voinea - [`b5d83e7`](https://github.com/eea/volto-slate-footnote/commit/b5d83e7c13240151f602d122ecf09ba9b8e335f3)]
|
|
66
96
|
- Fix slate json field default value in DX layout [Alin Voinea - [`f2805bb`](https://github.com/eea/volto-slate-footnote/commit/f2805bbc15c51ebd914ee5f4eb9dd34ef32e095b)]
|
|
67
97
|
- Fix cypress api_url [Alin Voinea - [`6a4966a`](https://github.com/eea/volto-slate-footnote/commit/6a4966a2f92e932e1d0df35351989cda535f15c8)]
|
|
98
|
+
- Add Sonarqube tag using ims-frontend addons list [EEA Jenkins - [`aed3984`](https://github.com/eea/volto-slate-footnote/commit/aed39840ecd467689eaf0adb352bd00ce95bdbbe)]
|
|
68
99
|
### [3.1.0](https://github.com/eea/volto-slate-footnote/compare/3.0.0...3.1.0) - 9 September 2021
|
|
69
100
|
|
|
70
101
|
#### :hammer_and_wrench: Others
|
|
@@ -85,6 +116,7 @@ Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
|
|
|
85
116
|
- Bump version to 2.4.0 [Alin Voinea - [`bef0d34`](https://github.com/eea/volto-slate-footnote/commit/bef0d34c2b9c20915578ffaefb4fd30cbf42f0a1)]
|
|
86
117
|
- Fix Slate point from DOM crash [Alin Voinea - [`c852f79`](https://github.com/eea/volto-slate-footnote/commit/c852f7987ffe8db433235b70792002d40ade690f)]
|
|
87
118
|
- Fix crash on copy&paste beforeInsert condition [Alin Voinea - [`85172cf`](https://github.com/eea/volto-slate-footnote/commit/85172cff3e2ea95a86d4b4fb452f3c0287b80e8f)]
|
|
119
|
+
- Add Sonarqube tag using frontend addons list [EEA Jenkins - [`b471c41`](https://github.com/eea/volto-slate-footnote/commit/b471c418d198b1bde95acfe0b256f642bacc6865)]
|
|
88
120
|
### [2.3.1](https://github.com/eea/volto-slate-footnote/compare/2.3.0...2.3.1) - 25 June 2021
|
|
89
121
|
|
|
90
122
|
### [2.3.0](https://github.com/eea/volto-slate-footnote/compare/2.2.2...2.3.0) - 12 June 2021
|
package/Jenkinsfile
CHANGED
|
@@ -4,7 +4,7 @@ pipeline {
|
|
|
4
4
|
environment {
|
|
5
5
|
GIT_NAME = "volto-slate-footnote"
|
|
6
6
|
NAMESPACE = "@eeacms"
|
|
7
|
-
SONARQUBE_TAGS = "volto.eea.europa.eu,biodiversity.europa.eu,www.eea.europa.eu-ims,climate-energy.eea.europa.eu,sustainability.eionet.europa.eu,forest.eea.europa.eu,clms.land.copernicus.eu,industry.eea.europa.eu,water.europa.eu-freshwater,demo-www.eea.europa.eu,clmsdemo.devel6cph.eea.europa.eu,
|
|
7
|
+
SONARQUBE_TAGS = "volto.eea.europa.eu,biodiversity.europa.eu,www.eea.europa.eu-ims,climate-energy.eea.europa.eu,sustainability.eionet.europa.eu,forest.eea.europa.eu,clms.land.copernicus.eu,industry.eea.europa.eu,water.europa.eu-freshwater,demo-www.eea.europa.eu,clmsdemo.devel6cph.eea.europa.eu,water.europa.eu-marine,climate-adapt.eea.europa.eu,climate-advisory-board.devel4cph.eea.europa.eu,climate-advisory-board.europa.eu,www.eea.europa.eu-en"
|
|
8
8
|
DEPENDENCIES = ""
|
|
9
9
|
VOLTO = ""
|
|
10
10
|
}
|
|
@@ -188,6 +188,7 @@ pipeline {
|
|
|
188
188
|
def nodeJS = tool 'NodeJS';
|
|
189
189
|
withSonarQubeEnv('Sonarqube') {
|
|
190
190
|
sh '''sed -i "s#/opt/frontend/my-volto-project/src/addons/${GIT_NAME}/##g" xunit-reports/coverage/lcov.info'''
|
|
191
|
+
sh '''sed -i "s#src/addons/${GIT_NAME}/##g" xunit-reports/coverage/lcov.info'''
|
|
191
192
|
sh "export PATH=${scannerHome}/bin:${nodeJS}/bin:$PATH; sonar-scanner -Dsonar.javascript.lcov.reportPaths=./xunit-reports/coverage/lcov.info,./cypress-coverage/coverage/lcov.info -Dsonar.sources=./src -Dsonar.projectKey=$GIT_NAME-$BRANCH_NAME -Dsonar.projectVersion=$BRANCH_NAME-$BUILD_NUMBER"
|
|
192
193
|
sh '''try=2; while [ \$try -gt 0 ]; do curl -s -XPOST -u "${SONAR_AUTH_TOKEN}:" "${SONAR_HOST_URL}api/project_tags/set?project=${GIT_NAME}-${BRANCH_NAME}&tags=${SONARQUBE_TAGS},${BRANCH_NAME}" > set_tags_result; if [ \$(grep -ic error set_tags_result ) -eq 0 ]; then try=0; else cat set_tags_result; echo "... Will retry"; sleep 60; try=\$(( \$try - 1 )); fi; done'''
|
|
193
194
|
}
|
package/jest-addon.config.js
CHANGED
|
@@ -5,19 +5,19 @@ module.exports = {
|
|
|
5
5
|
'!src/**/*.d.ts',
|
|
6
6
|
],
|
|
7
7
|
moduleNameMapper: {
|
|
8
|
+
'\\.(css|less|scss|sass)$': 'identity-obj-proxy',
|
|
8
9
|
'@plone/volto/cypress': '<rootDir>/node_modules/@plone/volto/cypress',
|
|
9
10
|
'@plone/volto/babel': '<rootDir>/node_modules/@plone/volto/babel',
|
|
10
11
|
'@plone/volto/(.*)$': '<rootDir>/node_modules/@plone/volto/src/$1',
|
|
11
12
|
'@package/(.*)$': '<rootDir>/src/$1',
|
|
12
13
|
'@root/(.*)$': '<rootDir>/src/$1',
|
|
13
14
|
'@plone/volto-quanta/(.*)$': '<rootDir>/src/addons/volto-quanta/src/$1',
|
|
14
|
-
'@eeacms/(.*?)/(.*)$': '<rootDir>/
|
|
15
|
+
'@eeacms/(.*?)/(.*)$': '<rootDir>/node_modules/@eeacms/$1/src/$2',
|
|
15
16
|
'@plone/volto-slate':
|
|
16
17
|
'<rootDir>/node_modules/@plone/volto/packages/volto-slate/src',
|
|
17
18
|
'~/(.*)$': '<rootDir>/src/$1',
|
|
18
19
|
'load-volto-addons':
|
|
19
20
|
'<rootDir>/node_modules/@plone/volto/jest-addons-loader.js',
|
|
20
|
-
'\\.(css|less|scss|sass)$': 'identity-obj-proxy',
|
|
21
21
|
},
|
|
22
22
|
transform: {
|
|
23
23
|
'^.+\\.js(x)?$': 'babel-jest',
|
package/package.json
CHANGED
|
@@ -68,9 +68,7 @@ const MultiSelectSearchWidget = injectLazyLibs('reactSelectAsyncCreateable')(
|
|
|
68
68
|
const isMatch = (result) => re.test(result.value);
|
|
69
69
|
const resultsFiltered = filter(props.choices, isMatch);
|
|
70
70
|
|
|
71
|
-
return
|
|
72
|
-
resolve(resultsFiltered);
|
|
73
|
-
});
|
|
71
|
+
return Promise.resolve(resultsFiltered);
|
|
74
72
|
};
|
|
75
73
|
|
|
76
74
|
/**
|
|
@@ -110,7 +108,6 @@ const MultiSelectSearchWidget = injectLazyLibs('reactSelectAsyncCreateable')(
|
|
|
110
108
|
...item,
|
|
111
109
|
footnote: item.value,
|
|
112
110
|
};
|
|
113
|
-
|
|
114
111
|
const { __isNew__: remove, extra, ...rest } = obj;
|
|
115
112
|
return rest;
|
|
116
113
|
});
|
package/src/editor/render.jsx
CHANGED
|
@@ -41,21 +41,23 @@ export const FootnoteElement = (props) => {
|
|
|
41
41
|
|
|
42
42
|
// will cosider zotero citations and footnote
|
|
43
43
|
// notesObjResult contains all zotero/footnote as unique, and contain refs for other zotero/footnote
|
|
44
|
+
const indiceIfZoteroId = data.extra
|
|
45
|
+
? [
|
|
46
|
+
`[${Object.keys(notesObjResult).indexOf(zoteroId) + 1}]`, // parent footnote
|
|
47
|
+
...data.extra.map(
|
|
48
|
+
// citations from extra
|
|
49
|
+
(zoteroObj, _index) =>
|
|
50
|
+
// all zotero citation are indexed by zoteroId in notesObjResult
|
|
51
|
+
`[${
|
|
52
|
+
Object.keys(notesObjResult).indexOf(zoteroObj.zoteroId) + 1
|
|
53
|
+
}]`,
|
|
54
|
+
),
|
|
55
|
+
].join('')
|
|
56
|
+
: // no extra citations (no multiples)
|
|
57
|
+
`[${Object.keys(notesObjResult).indexOf(zoteroId) + 1}]`;
|
|
58
|
+
|
|
44
59
|
const indice = zoteroId // ZOTERO
|
|
45
|
-
?
|
|
46
|
-
? [
|
|
47
|
-
`[${Object.keys(notesObjResult).indexOf(zoteroId) + 1}]`, // parent footnote
|
|
48
|
-
...data.extra.map(
|
|
49
|
-
// citations from extra
|
|
50
|
-
(zoteroObj, _index) =>
|
|
51
|
-
// all zotero citation are indexed by zoteroId in notesObjResult
|
|
52
|
-
`[${
|
|
53
|
-
Object.keys(notesObjResult).indexOf(zoteroObj.zoteroId) + 1
|
|
54
|
-
}]`,
|
|
55
|
-
),
|
|
56
|
-
].join('')
|
|
57
|
-
: // no extra citations (no multiples)
|
|
58
|
-
`[${Object.keys(notesObjResult).indexOf(zoteroId) + 1}]`
|
|
60
|
+
? indiceIfZoteroId
|
|
59
61
|
: // FOOTNOTES
|
|
60
62
|
// parent footnote
|
|
61
63
|
[data, ...(data.extra || [])]
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
import {
|
|
2
|
+
makeFootnote,
|
|
3
|
+
openAccordionIfContainsFootnoteReference,
|
|
4
|
+
getAllBlocksAndSlateFields,
|
|
5
|
+
} from './utils';
|
|
6
|
+
import { getAllBlocks } from '@plone/volto-slate/utils';
|
|
7
|
+
|
|
8
|
+
jest.mock('@plone/volto-slate/utils', () => ({
|
|
9
|
+
getAllBlocks: jest.fn(),
|
|
10
|
+
}));
|
|
11
|
+
|
|
12
|
+
describe('makeFootnote', () => {
|
|
13
|
+
it('should remove xml version string from footnote', () => {
|
|
14
|
+
const xmlString = '<?xml version="1.0"?>Test text';
|
|
15
|
+
const expectedResult = 'Test text';
|
|
16
|
+
expect(makeFootnote(xmlString)).toEqual(expectedResult);
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
it('should return empty string when footnote is null or undefined', () => {
|
|
20
|
+
expect(makeFootnote(null)).toEqual('');
|
|
21
|
+
expect(makeFootnote(undefined)).toEqual('');
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
describe('openAccordionIfContainsFootnoteReference', () => {
|
|
26
|
+
it('should open accordion if it contains footnote reference', () => {
|
|
27
|
+
document.body.innerHTML = `
|
|
28
|
+
<div class="accordion">
|
|
29
|
+
<div class="title">Accordion</div>
|
|
30
|
+
<div id="footnote">Footnote</div>
|
|
31
|
+
</div>
|
|
32
|
+
`;
|
|
33
|
+
|
|
34
|
+
const title = document.querySelector('.title');
|
|
35
|
+
title.click = jest.fn();
|
|
36
|
+
|
|
37
|
+
openAccordionIfContainsFootnoteReference('#footnote');
|
|
38
|
+
|
|
39
|
+
expect(title.click).toHaveBeenCalled();
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
it('should not do anything if accordion does not contain footnote reference', () => {
|
|
43
|
+
document.body.innerHTML = `
|
|
44
|
+
<div class="accordion">
|
|
45
|
+
<div class="title">Accordion</div>
|
|
46
|
+
</div>
|
|
47
|
+
`;
|
|
48
|
+
|
|
49
|
+
const title = document.querySelector('.title');
|
|
50
|
+
title.click = jest.fn();
|
|
51
|
+
|
|
52
|
+
openAccordionIfContainsFootnoteReference('#footnote');
|
|
53
|
+
|
|
54
|
+
expect(title.click).not.toHaveBeenCalled();
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
describe('getAllBlocksAndSlateFields', () => {
|
|
59
|
+
afterEach(() => {
|
|
60
|
+
jest.clearAllMocks();
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
it('handles metadataSection correctly', () => {
|
|
64
|
+
const properties = { '1': ['test'] };
|
|
65
|
+
const blocks = [
|
|
66
|
+
{
|
|
67
|
+
'@type': 'metadataSection',
|
|
68
|
+
fields: [
|
|
69
|
+
{ field: { widget: 'slate', id: '1' } },
|
|
70
|
+
{ field: { widget: 'other', id: '2' } },
|
|
71
|
+
],
|
|
72
|
+
},
|
|
73
|
+
];
|
|
74
|
+
getAllBlocks.mockReturnValue(blocks);
|
|
75
|
+
|
|
76
|
+
const expected = [{ '@type': 'slate', id: '1', value: ['test'] }];
|
|
77
|
+
const result = getAllBlocksAndSlateFields(properties);
|
|
78
|
+
|
|
79
|
+
expect(result).toEqual(expected);
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
it('handles metadataSection correctly with no properties', () => {
|
|
83
|
+
const properties = {};
|
|
84
|
+
const blocks = [
|
|
85
|
+
{
|
|
86
|
+
'@type': 'metadataSection',
|
|
87
|
+
fields: [
|
|
88
|
+
{ field: { widget: 'slate', id: '1' } },
|
|
89
|
+
{ field: { widget: 'other', id: '2' } },
|
|
90
|
+
],
|
|
91
|
+
},
|
|
92
|
+
];
|
|
93
|
+
getAllBlocks.mockReturnValue(blocks);
|
|
94
|
+
|
|
95
|
+
const result = getAllBlocksAndSlateFields(properties);
|
|
96
|
+
|
|
97
|
+
expect(result).toEqual([]);
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
it('handles metadata correctly', () => {
|
|
101
|
+
const properties = { '1': ['metadata test'] };
|
|
102
|
+
const blocks = [
|
|
103
|
+
{
|
|
104
|
+
'@type': 'metadata',
|
|
105
|
+
data: { id: '1', widget: 'slate' },
|
|
106
|
+
},
|
|
107
|
+
];
|
|
108
|
+
getAllBlocks.mockReturnValue(blocks);
|
|
109
|
+
|
|
110
|
+
const expected = [{ '@type': 'slate', id: '1', value: ['metadata test'] }];
|
|
111
|
+
const result = getAllBlocksAndSlateFields(properties);
|
|
112
|
+
|
|
113
|
+
expect(result).toEqual(expected);
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
it('handles metadata correctly with no properties', () => {
|
|
117
|
+
const properties = {};
|
|
118
|
+
const blocks = [
|
|
119
|
+
{
|
|
120
|
+
'@type': 'metadata',
|
|
121
|
+
data: { id: '1', widget: 'slate' },
|
|
122
|
+
},
|
|
123
|
+
];
|
|
124
|
+
getAllBlocks.mockReturnValue(blocks);
|
|
125
|
+
|
|
126
|
+
const expected = [{ '@type': 'slate', id: '1', value: null }];
|
|
127
|
+
const result = getAllBlocksAndSlateFields(properties);
|
|
128
|
+
|
|
129
|
+
expect(result).toEqual(expected);
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
it('handles metadata correctly with no slate widgets', () => {
|
|
133
|
+
const properties = {};
|
|
134
|
+
const blocks = [
|
|
135
|
+
{
|
|
136
|
+
'@type': 'metadata',
|
|
137
|
+
data: { id: '1', widget: 'test' },
|
|
138
|
+
},
|
|
139
|
+
];
|
|
140
|
+
getAllBlocks.mockReturnValue(blocks);
|
|
141
|
+
|
|
142
|
+
const expected = [];
|
|
143
|
+
const result = getAllBlocksAndSlateFields(properties);
|
|
144
|
+
|
|
145
|
+
expect(result).toEqual(expected);
|
|
146
|
+
});
|
|
147
|
+
|
|
148
|
+
it('handles slateTable correctly', () => {
|
|
149
|
+
const properties = {};
|
|
150
|
+
const blocks = [
|
|
151
|
+
{
|
|
152
|
+
'@type': 'slateTable',
|
|
153
|
+
table: {
|
|
154
|
+
rows: [{ cells: [{ cell1: '1' }, { cell2: '2' }] }],
|
|
155
|
+
},
|
|
156
|
+
},
|
|
157
|
+
];
|
|
158
|
+
getAllBlocks.mockReturnValue(blocks);
|
|
159
|
+
|
|
160
|
+
const expected = [
|
|
161
|
+
{ '@type': 'slate', cell1: '1' },
|
|
162
|
+
{ '@type': 'slate', cell2: '2' },
|
|
163
|
+
];
|
|
164
|
+
const result = getAllBlocksAndSlateFields(properties);
|
|
165
|
+
|
|
166
|
+
expect(result).toEqual(expected);
|
|
167
|
+
});
|
|
168
|
+
|
|
169
|
+
it('handles slateTable correctly with no rows', () => {
|
|
170
|
+
const properties = {};
|
|
171
|
+
const blocks = [
|
|
172
|
+
{
|
|
173
|
+
'@type': 'slateTable',
|
|
174
|
+
table: {},
|
|
175
|
+
},
|
|
176
|
+
];
|
|
177
|
+
getAllBlocks.mockReturnValue(blocks);
|
|
178
|
+
|
|
179
|
+
const expected = [];
|
|
180
|
+
const result = getAllBlocksAndSlateFields(properties);
|
|
181
|
+
|
|
182
|
+
expect(result).toEqual(expected);
|
|
183
|
+
});
|
|
184
|
+
|
|
185
|
+
it('handles slateTable correctly with no cells', () => {
|
|
186
|
+
const properties = {};
|
|
187
|
+
const blocks = [
|
|
188
|
+
{
|
|
189
|
+
'@type': 'slateTable',
|
|
190
|
+
table: {
|
|
191
|
+
rows: [{ cells: undefined }],
|
|
192
|
+
},
|
|
193
|
+
},
|
|
194
|
+
];
|
|
195
|
+
getAllBlocks.mockReturnValue(blocks);
|
|
196
|
+
|
|
197
|
+
const expected = [];
|
|
198
|
+
const result = getAllBlocksAndSlateFields(properties);
|
|
199
|
+
|
|
200
|
+
expect(result).toEqual(expected);
|
|
201
|
+
});
|
|
202
|
+
|
|
203
|
+
it('handles defaultOperation correctly', () => {
|
|
204
|
+
const properties = {};
|
|
205
|
+
const blocks = [{ block: '1', '@type': 'testType' }];
|
|
206
|
+
getAllBlocks.mockReturnValue(blocks);
|
|
207
|
+
|
|
208
|
+
const expected = [blocks[0]];
|
|
209
|
+
const result = getAllBlocksAndSlateFields(properties);
|
|
210
|
+
|
|
211
|
+
expect(result).toEqual(expected);
|
|
212
|
+
});
|
|
213
|
+
});
|