@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 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
- - Release 6.2.0 [Alin Voinea - [`d676d92`](https://github.com/eea/volto-slate-footnote/commit/d676d9229212cb61e2db9fb412f11646ba9272ca)]
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,circularity.eea.europa.eu,prod-www.eea.europa.eu,water.europa.eu-marine,demo-kitkat.dev2aws.eea.europa.eu,climate-adapt.eea.europa.eu,climate-advisory-board.devel4cph.eea.europa.eu,climate-advisory-board.europa.eu,www.eea.europa.eu-en"
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
  }
@@ -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>/src/addons/$1/src/$2',
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eeacms/volto-slate-footnote",
3
- "version": "6.1.0",
3
+ "version": "6.1.2",
4
4
  "description": "volto-slate-footnote: Volto add-on",
5
5
  "main": "src/index.js",
6
6
  "author": "European Environment Agency: IDM2 A-Team",
@@ -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 new Promise((resolve, reject) => {
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
  });
@@ -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
- ? data.extra
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
+ });