@sis-cc/dotstatsuite-components 15.0.21 → 16.1.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.
Files changed (165) hide show
  1. package/lib/rules/src/index.js +1 -145
  2. package/lib/rules/src/table/index.js +0 -42
  3. package/lib/rules2/src/constants.js +4 -1
  4. package/lib/rules2/src/enhanceObservations.js +98 -0
  5. package/lib/rules2/src/getAttributesSeries.js +33 -0
  6. package/lib/rules2/src/getCombinationDefinitions.js +48 -0
  7. package/lib/rules2/src/getHeaderCombinations.js +42 -0
  8. package/lib/rules2/src/getHeaderSubtitle.js +41 -0
  9. package/lib/rules2/src/getManyValuesDimensions.js +39 -0
  10. package/lib/rules2/src/getOneValueDimensions.js +46 -0
  11. package/lib/rules2/src/hasCellMetadata.js +1 -1
  12. package/lib/rules2/src/index.js +186 -18
  13. package/lib/rules2/src/parseAttributes.js +50 -0
  14. package/lib/rules2/src/parseCombinations.js +54 -0
  15. package/lib/rules2/src/parseMetadataSeries.js +4 -2
  16. package/lib/rules2/src/prepareData.js +74 -0
  17. package/lib/{rules/src/table/preparators/getAttributeValue.js → rules2/src/refineAttributes.js} +13 -11
  18. package/lib/rules2/src/table/getCells.js +74 -0
  19. package/lib/rules2/src/table/getCellsAttributesIds.js +63 -0
  20. package/lib/rules2/src/table/getCombinationDimensionsData.js +47 -0
  21. package/lib/rules2/src/table/getCuratedCells.js +28 -0
  22. package/lib/rules2/src/table/getFlagsAndNotes.js +28 -0
  23. package/lib/rules2/src/table/getIndexedCombinationsByDisplay.js +31 -0
  24. package/lib/rules2/src/table/getLayout.js +93 -0
  25. package/lib/rules2/src/table/getLayoutData.js +202 -0
  26. package/lib/{rules/src/table/factories → rules2/src/table}/getSortedLayoutIndexes.js +55 -40
  27. package/lib/rules2/src/table/getTableProps.js +64 -0
  28. package/lib/rules2/src/table/parseValueHierarchy.js +55 -0
  29. package/lib/{rules/src/table/factories → rules2/src/table}/refineLayoutSize.js +17 -8
  30. package/lib/rules2/src/{hasLayoutEntryMetadata.js → utils.js} +9 -6
  31. package/package.json +1 -1
  32. package/src/rules/src/index.js +1 -19
  33. package/src/rules/src/table/index.js +0 -4
  34. package/src/rules2/src/constants.js +3 -0
  35. package/src/rules2/src/enhanceObservations.js +88 -0
  36. package/src/rules2/src/getAttributesSeries.js +29 -0
  37. package/src/rules2/src/getCombinationDefinitions.js +29 -0
  38. package/src/rules2/src/getHeaderCombinations.js +39 -0
  39. package/src/rules2/src/getHeaderSubtitle.js +34 -0
  40. package/src/rules2/src/getManyValuesDimensions.js +34 -0
  41. package/src/rules2/src/getOneValueDimensions.js +33 -0
  42. package/src/rules2/src/hasCellMetadata.js +1 -1
  43. package/src/rules2/src/index.js +21 -6
  44. package/src/rules2/src/parseAttributes.js +36 -0
  45. package/src/rules2/src/parseCombinations.js +36 -0
  46. package/src/rules2/src/parseMetadataSeries.js +3 -2
  47. package/src/rules2/src/prepareData.js +50 -0
  48. package/src/rules2/src/refineAttributes.js +16 -0
  49. package/src/rules2/src/table/getCells.js +72 -0
  50. package/src/rules2/src/table/getCellsAttributesIds.js +38 -0
  51. package/src/rules2/src/table/getCombinationDimensionsData.js +38 -0
  52. package/src/rules2/src/table/getCuratedCells.js +33 -0
  53. package/src/rules2/src/table/getFlagsAndNotes.js +21 -0
  54. package/src/rules2/src/table/getIndexedCombinationsByDisplay.js +16 -0
  55. package/src/rules2/src/table/getLayout.js +80 -0
  56. package/src/rules2/src/table/getLayoutData.js +183 -0
  57. package/src/rules2/src/table/getSortedLayoutIndexes.js +119 -0
  58. package/src/rules2/src/table/getTableProps.js +36 -0
  59. package/src/rules2/src/table/parseValueHierarchy.js +27 -0
  60. package/src/{rules/src/table/factories → rules2/src/table}/refineLayoutSize.js +24 -8
  61. package/src/rules2/src/utils.js +12 -0
  62. package/test/enhanceObservations2.test.js +219 -0
  63. package/test/getAttributesSeries.test.js +58 -0
  64. package/test/getCells.test.js +6 -40
  65. package/test/getCombinationDimensionsData.test.js +48 -0
  66. package/test/getSortedLayoutIndexes.test.js +1025 -3
  67. package/test/mocks/OECD_SNA_TABLE1_1.0_-_AUS_V_metadata.json +2 -2
  68. package/test/parseAttributes.test.js +17 -62
  69. package/test/parseMetadataSeries.test.js +1 -1
  70. package/test/parseValueHierarchy.test.js +88 -0
  71. package/test/refineLayoutSize.test.js +2621 -1
  72. package/lib/rules/src/table/factories/getCells.js +0 -97
  73. package/lib/rules/src/table/factories/getConfirmedSeriesAttributesIds.js +0 -26
  74. package/lib/rules/src/table/factories/getCuratedCells.js +0 -45
  75. package/lib/rules/src/table/factories/getLayoutData.js +0 -168
  76. package/lib/rules/src/table/factories/getLayoutWithFlags.js +0 -133
  77. package/lib/rules/src/table/factories/getTableCells.js +0 -24
  78. package/lib/rules/src/table/factories/getTableData.js +0 -98
  79. package/lib/rules/src/table/preparators/getDimensionsAttributesRegisters.js +0 -43
  80. package/lib/rules/src/table/preparators/getManyValuesDimensions.js +0 -33
  81. package/lib/rules/src/table/preparators/getOneValueDimensions.js +0 -24
  82. package/lib/rules/src/table/preparators/getUniqValuesAttributes.js +0 -36
  83. package/lib/rules/src/table/preparators/parseAttributes.js +0 -84
  84. package/lib/rules/src/table/preparators/parseAttributesValuesFromObservations.js +0 -22
  85. package/lib/rules/src/table/preparators/parseDimensionsIds.js +0 -22
  86. package/lib/rules/src/table/preparators/prepareData.js +0 -191
  87. package/lib/rules/src/table/preparators/refineObservationsAttributesValues.js +0 -31
  88. package/lib/rules/src/table/preparators/refineSeriesAttributesValues.js +0 -23
  89. package/lib/rules/src/table/units/appendUnitsInLayoutData.js +0 -82
  90. package/lib/rules/src/table/units/appendUnitsInLayoutDataEntry.js +0 -45
  91. package/lib/rules/src/table/units/cleanUnitsInLayoutData.js +0 -66
  92. package/lib/rules/src/table/units/getAttachmentSeriesIndexes.js +0 -25
  93. package/lib/rules/src/table/units/getHeaderUnits.js +0 -35
  94. package/lib/rules/src/table/units/getUnitsArtefacts.js +0 -85
  95. package/lib/rules/src/table/units/getUnitsCodes.js +0 -23
  96. package/lib/rules/src/table/units/getUnitsDefinition.js +0 -33
  97. package/lib/rules/src/table/units/getUnitsDisplay.js +0 -33
  98. package/lib/rules/src/table/units/getUnitsSerieIndexes.js +0 -23
  99. package/lib/rules/src/table/units/getUnitsSeries.js +0 -49
  100. package/lib/rules/src/table/units/getUnitsinLayout.js +0 -74
  101. package/lib/rules/src/table/units/refineDimSeriesUnits.js +0 -44
  102. package/lib/rules2/src/getAdvancedAttributes.js +0 -124
  103. package/lib/rules2/src/invertTime.js +0 -33
  104. package/src/rules/src/table/factories/getCells.js +0 -102
  105. package/src/rules/src/table/factories/getConfirmedSeriesAttributesIds.js +0 -27
  106. package/src/rules/src/table/factories/getCuratedCells.js +0 -40
  107. package/src/rules/src/table/factories/getLayoutData.js +0 -171
  108. package/src/rules/src/table/factories/getLayoutWithFlags.js +0 -137
  109. package/src/rules/src/table/factories/getSortedLayoutIndexes.js +0 -108
  110. package/src/rules/src/table/factories/getTableCells.js +0 -16
  111. package/src/rules/src/table/factories/getTableData.js +0 -86
  112. package/src/rules/src/table/preparators/getAttributeValue.js +0 -17
  113. package/src/rules/src/table/preparators/getDimensionsAttributesRegisters.js +0 -51
  114. package/src/rules/src/table/preparators/getManyValuesDimensions.js +0 -19
  115. package/src/rules/src/table/preparators/getOneValueDimensions.js +0 -17
  116. package/src/rules/src/table/preparators/getUniqValuesAttributes.js +0 -24
  117. package/src/rules/src/table/preparators/parseAttributes.js +0 -113
  118. package/src/rules/src/table/preparators/parseAttributesValuesFromObservations.js +0 -16
  119. package/src/rules/src/table/preparators/parseDimensionsIds.js +0 -17
  120. package/src/rules/src/table/preparators/prepareData.js +0 -197
  121. package/src/rules/src/table/preparators/refineObservationsAttributesValues.js +0 -22
  122. package/src/rules/src/table/preparators/refineSeriesAttributesValues.js +0 -11
  123. package/src/rules/src/table/units/appendUnitsInLayoutData.js +0 -56
  124. package/src/rules/src/table/units/appendUnitsInLayoutDataEntry.js +0 -38
  125. package/src/rules/src/table/units/cleanUnitsInLayoutData.js +0 -65
  126. package/src/rules/src/table/units/getAttachmentSeriesIndexes.js +0 -27
  127. package/src/rules/src/table/units/getHeaderUnits.js +0 -32
  128. package/src/rules/src/table/units/getUnitsArtefacts.js +0 -90
  129. package/src/rules/src/table/units/getUnitsCodes.js +0 -22
  130. package/src/rules/src/table/units/getUnitsDefinition.js +0 -34
  131. package/src/rules/src/table/units/getUnitsDisplay.js +0 -19
  132. package/src/rules/src/table/units/getUnitsSerieIndexes.js +0 -12
  133. package/src/rules/src/table/units/getUnitsSeries.js +0 -41
  134. package/src/rules/src/table/units/getUnitsinLayout.js +0 -71
  135. package/src/rules/src/table/units/refineDimSeriesUnits.js +0 -26
  136. package/src/rules2/src/getAdvancedAttributes.js +0 -111
  137. package/src/rules2/src/hasLayoutEntryMetadata.js +0 -9
  138. package/src/rules2/src/invertTime.js +0 -22
  139. package/test/advanced-attributes-parsing-perf.test.js +0 -16
  140. package/test/appendUnitsInLayoutDataEntry.test.js +0 -65
  141. package/test/cleanUnitsInLayoutData.test.js +0 -85
  142. package/test/enhanceObservations.test.js +0 -340
  143. package/test/getAttachmentSeriesIndexes.test.js +0 -35
  144. package/test/getConfirmedSeriesAttributesIds.test.js +0 -27
  145. package/test/getDataflowAdvancedAttributes.test.js +0 -32
  146. package/test/getHeaderUnits.test.js +0 -51
  147. package/test/getLayoutData.test.js +0 -206
  148. package/test/getLayoutDataWithFlags.test.js +0 -142
  149. package/test/getOneValueDimensions.test.js +0 -26
  150. package/test/getSeriesAdvancedAttributes.test.js +0 -32
  151. package/test/getSubtitleFlags.test.js +0 -42
  152. package/test/getTableData.test.js +0 -1317
  153. package/test/getUnitsArtefacts.test.js +0 -117
  154. package/test/getUnitsDefinition.test.js +0 -37
  155. package/test/getUnitsInLayout.test.js +0 -77
  156. package/test/getUnitsSeries.test.js +0 -154
  157. package/test/invertTime.test.js +0 -77
  158. package/test/parseAttributesValuesFromObservations.test.js +0 -45
  159. package/test/parseDimensionsIds.test.js +0 -20
  160. package/test/prepareData.test.js +0 -29
  161. package/test/refineObservationsAttributesValues.test.js +0 -33
  162. package/test/table-invert-time-perf.test.js +0 -11
  163. package/test/table-layout-perf.test.js +0 -74
  164. package/test/table-prep-duplicate-perf.test.js +0 -15
  165. package/test/table-prep-perf.test.js +0 -61
@@ -20,8 +20,8 @@
20
20
  1
21
21
  ],
22
22
  "dimensionGroupAttributes": {
23
- "0:::": [null,null,null,0,0],
24
- "0::0:": [0,0,0]
23
+ "0:~:~:~": [null,null,null,0,0],
24
+ "0:~:0:~": [0,0,0]
25
25
  }
26
26
  }],
27
27
  "structures": [{
@@ -1,78 +1,33 @@
1
1
  import { expect } from 'chai';
2
- import { parseAttributes } from '../src/rules/src/table/preparators/parseAttributes';
2
+ import { parseAttributes } from '../src/rules2/src/';
3
3
 
4
4
  const attributes = [
5
- { id: 'a0', display: false, relationship: { primaryMeasure: 'OBS_VALUE' }, values: [{ id: 'a0v1' }] }, // no display
6
- { id: 'a1', relationship: { primaryMeasure: 'OBS_VALUE' } }, // no values
7
- { id: 'a2', relationship: { primaryMeasure: 'OBS_VALUE' }, values: [] }, // empty values
8
- { id: 'a3', values: [{ id: 'a3v1' }] }, // no relationship definition
9
- { id: 'a4', relationship: {}, values: [{ id: 'a4v1' }] }, // empty relationship
10
- { id: 'a5', relationship: { primaryMeasure: 'WRONG' }, values: [{ id: 'a5v1' }] }, // incorrect primaryMeasure relationship
11
5
  { id: 'a6', relationship: { primaryMeasure: 'OBS_VALUE' }, values: [{ id: 'a6v1' }] }, // correct observations attribute
12
- { id: 'a7', relationship: { dimensions: [] }, values: [{ id: 'a7v1' }] }, // empty dimensions relationship
13
6
  { id: 'a8', relationship: { dimensions: ['d1'] }, values: [{ id: 'a8v1' }] }, // single 'one value' dimension relationship
14
7
  { id: 'a9', relationship: { dimensions: ['d4'] }, values: [{ id: 'a9v1' }] }, // single 'many values' dimension relationship
15
8
  { id: 'a10', relationship: { dimensions: ['d1', 'd2'] }, values: [{ id: 'a10v1' }] }, // many 'single value' dimensions realtionship
16
9
  { id: 'a11', relationship: { dimensions: ['d1', 'd2', 'd4'] }, values: [{ id: 'a11v1' }] }, // one 'many values' and many 'single value' dimensions relationship
17
- { id: 'a12', relationship: { dimensions: ['d5', 'd6'] }, values: [{ id: 'a12v1' }] }, // many 'many values' dimensions relationship
18
- { id: 'a13', relationship: { dimensions: ['d4', 'd1', 'd6'] }, values: [{ id: 'a13v1' }] }, // many 'many values' and one 'single value' dimensions relationship
19
- { id: 'a14', relationship: { dimensions: ['d1'] }, values: [{ id: 'a14v1' }] }, // not recognised as footnote
20
- { id: 'a15', relationship: { dimensions: ['d3'] }, values: [{ id: 'a15v1' }] }, // recognised as prefscale
21
- { id: 'a16', relationship: { dimensions: ['d6'] }, values: [{ id: 'a16v1' }] }, // recognised as decimals
22
- { id: 'a17', display: false, relationship: { primaryMeasure: 'OBS_VALUE' }, values: [{ id: 'a17v1' }] }, // blacklisted
23
- { id: 'a18', relationship: { primaryMeasure: 'OBS_VALUE' }, values: [{ id: 'a18v1' }, { id: 'a18v2', display: false }] }, // blacklisted value
24
- { id: 'a19', relationship: { none: {} }, values: [{ id: 'a19v1' }] }, // dataset relationship
25
- { id: 'a20', relationship: { primaryMeasure: 'OBS_VALUE' }, values: [{ id: 'a20v1' }] }, // units attribute
26
- { id: 'a21', relationship: { dataflow: {} }, values: [{ id: 'a21v0' }] }, // alternative dataflow relationship
27
- { id: 'a22', relationship: { observation: {} }, values: [{ id: 'a22v0' }] }, // alternative observation relationship
28
- { id: 'REPORTING_YEAR_START_DAY', relationship: { observation: {} }, values: [{ id: 'a22v0' }]},
29
- { id: 'REPYEARSTART', relationship: { observation: {} }, values: [{ id: 'a22v0' }]},
30
- { id: 'a23', relationship: { observation: {} }, values: [{ id: 'a23v0' },{id : 'a23v1'}]},
31
10
  ];
32
11
 
33
- const customAttributes = {
34
- prefscale: 'a15',
35
- decimals: 'a16',
36
- units: ['d7', 'a20'],
37
- rejectedValueIds:['a23v0']
38
- };
12
+ const customAttributes = {};
39
13
 
40
- const parsedDimensionsIds = {
41
- oneValue: { 'd1': 1, 'd2': 2, 'd3': 3 },
42
- manyValues: { 'd4': 4, 'd5': 5, 'd6': 6 },
43
- };
14
+ const dimensions = [
15
+ { id: 'd1', values: [{ id: 'v0' }] },
16
+ { id: 'd2', values: [{ id: 'v0' }] },
17
+ { id: 'd3', values: [{ id: 'v0' }] },
18
+ { id: 'd4', values: [{ id: 'v0' }, { id: 'v1' }] },
19
+ { id: 'd5', values: [{ id: 'v0' }, { id: 'v1' }] },
20
+ { id: 'd6', values: [{ id: 'v0' }, { id: 'v1' }] },
21
+ ];
44
22
 
45
23
  describe('parseAttributes test', () => {
46
24
  it('complete case', () => {
47
- expect(parseAttributes({
48
- attributes, parsedDimensionsIds, customAttributes
49
- })).to.deep.equal({
50
- attributesIndexedByIds: {
51
- a6: { id: 'a6', index: 6, relationship: { primaryMeasure: 'OBS_VALUE' }, values: [{ id: 'a6v1' }] },
52
- a8: { id: 'a8', index: 8, relationship: { dimensions: ['d1'] }, values: [{ id: 'a8v1' }] },
53
- a9: { id: 'a9', index: 9, relationship: { dimensions: ['d4'] }, values: [{ id: 'a9v1' }], targetIndex: 4 },
54
- a10: { id: 'a10', index: 10, relationship: { dimensions: ['d1', 'd2'] }, values: [{ id: 'a10v1' }] },
55
- a11: { id: 'a11', index: 11, relationship: { dimensions: ['d1', 'd2', 'd4'] }, values: [{ id: 'a11v1' }], targetIndex: 4 },
56
- a12: { id: 'a12', index: 12, relationship: { dimensions: ['d5', 'd6'] }, values: [{ id: 'a12v1' }], targetIndexes: { '5': 5, '6': 6 } },
57
- a13: { id: 'a13', index: 13, relationship: { dimensions: ['d4', 'd1', 'd6'] }, values: [{ id: 'a13v1' }], targetIndexes: { '4': 4, '6': 6 } },
58
- a14: { id: 'a14', index: 14, relationship: { dimensions: ['d1'] }, values: [{ id: 'a14v1' }] },
59
- a15: { id: 'a15', index: 15, relationship: { dimensions: ['d3'] }, values: [{ id: 'a15v1' }] },
60
- a16: { id: 'a16', index: 16, relationship: { dimensions: ['d6'] }, values: [{ id: 'a16v1' }] },
61
- a18: { id: 'a18', index: 18, relationship: { primaryMeasure: 'OBS_VALUE' }, values: [{ id: 'a18v1' }, null] },
62
- a19: { id: 'a19', index: 19, relationship: { none: {} }, values: [{ id: 'a19v1' }] },
63
- a21: { id: 'a21', index: 21, relationship: { dataflow: {} }, values: [{ id: 'a21v0' }] },
64
- a22: { id: 'a22', index: 22, relationship: { observation: {} }, values: [{ id: 'a22v0' }] },
65
- a23: { id: 'a23', index: 25, relationship: { observation: {} }, values:[null,{id:'a23v1'}] }
66
- },
67
- attributesIdsIndexedByTargets: {
68
- observations: ['a6', 'a18', 'a22','a23'],
69
- oneValueDimensions: { d1: ['a8', 'a14'] },
70
- manyValuesDimensions: ['a9', 'a11'],
71
- dataflow: ['a10', 'a19', 'a21'],
72
- series: ['a12', 'a13'],
73
- prefscale: ['a15'],
74
- decimals: ['a16'],
75
- }
76
- });
25
+ expect(parseAttributes(attributes, dimensions, customAttributes)).to.deep.equal([
26
+ { id: 'a6', index: 0, relationship: [], series: true, values: [{ id: 'a6v1' }] },
27
+ { id: 'a8', index: 1, relationship: ['d1'], header: true,values: [{ id: 'a8v1' }] },
28
+ { id: 'a9', index: 2, relationship: ['d4'], series: true, values: [{ id: 'a9v1' }] },
29
+ { id: 'a10', index: 3, relationship: ['d1', 'd2'], header: true, values: [{ id: 'a10v1' }] },
30
+ { id: 'a11', index: 4, relationship: ['d4'], series: true, values: [{ id: 'a11v1' }] },
31
+ ]);
77
32
  });
78
33
  });
@@ -81,7 +81,7 @@ describe('parseMetadataSeries test', () => {
81
81
  data: {
82
82
  dataSets: [{
83
83
  dimensionGroupAttributes: {
84
- '::': [0, 0, null, 0, 0, 0, 0]
84
+ '~:~:~': [0, 0, null, 0, 0, 0, 0]
85
85
  }
86
86
  }],
87
87
  structures: [{
@@ -0,0 +1,88 @@
1
+ import { expect } from 'chai';
2
+ import { parseValueHierarchy } from '../src/rules2/src/table/parseValueHierarchy';
3
+
4
+ const indexedValues = {
5
+ OECD: { id: 'OECD' },
6
+ EU: { id: 'EU' },
7
+ FRA: { id: 'FRA' },
8
+ GER: { id: 'GER' },
9
+ IDF: { id: 'IDF' },
10
+ };
11
+
12
+ describe('parseValueHierarchy tests', () => {
13
+ it('no hierarchy in value', () => {
14
+ const value = { id: 'EU', parents: [] };
15
+ const previousValue = { id: 'IDF', parents: ['OECD', 'FRA'] };
16
+ expect(parseValueHierarchy(value, previousValue, indexedValues)).to.deep.equal(value);
17
+ });
18
+ it('previous is parent', () => {
19
+ const value = { id: 'IDF', parents: ['OECD', 'FRA'] };
20
+ const previousValue = { id: 'FRA', parents: [{ id: 'OECD' }], parentsIds: ['OECD'], missingParents: [] };
21
+ expect(parseValueHierarchy(value, previousValue, indexedValues)).to.deep.equal({
22
+ id: 'IDF',
23
+ parents: [{ id: 'OECD' }, { id: 'FRA' }],
24
+ parentsIds: ['OECD', 'FRA'],
25
+ missingParents: []
26
+ });
27
+ });
28
+ it('previous is parent with missing parent', () => {
29
+ const value = { id: 'IDF', parents: ['OECD', 'FRA'] };
30
+ const previousValue = { id: 'FRA', parents: [], parentsIds: ['OECD'], missingParents: [{ id: 'OECD' }] };
31
+ expect(parseValueHierarchy(value, previousValue, indexedValues)).to.deep.equal({
32
+ id: 'IDF',
33
+ parents: [{ id: 'FRA' }],
34
+ parentsIds: ['OECD', 'FRA'],
35
+ missingParents: []
36
+ });
37
+ });
38
+ it('missing parents', () => {
39
+ const value = { id: 'IDF', parents: ['OECD', 'FRA'] };
40
+ const previousValue = null;
41
+ expect(parseValueHierarchy(value, previousValue, indexedValues)).to.deep.equal({
42
+ id: 'IDF',
43
+ parents: [],
44
+ parentsIds: ['OECD', 'FRA'],
45
+ missingParents: [{ id: 'OECD' }, { id: 'FRA' }]
46
+ });
47
+ });
48
+ it('previous is bro', () => {
49
+ const value = { id: 'FRA', parents: ['OECD'] };
50
+ const previousValue = { id: 'FRA', parentsIds: ['OECD'], missingParents: [], parents: [{ id: 'OECD' }] };;
51
+ expect(parseValueHierarchy(value, previousValue, indexedValues)).to.deep.equal({
52
+ id: 'FRA',
53
+ parents: [{ id: 'OECD' }],
54
+ parentsIds: ['OECD'],
55
+ missingParents: []
56
+ });
57
+ });
58
+ it('previous is bro with missing parent', () => {
59
+ const value = { id: 'FRA', parents: ['OECD'] };
60
+ const previousValue = { id: 'FRA', parentsIds: ['OECD'], missingParents: [{ id: 'OECD' }], parents: [] };;
61
+ expect(parseValueHierarchy(value, previousValue, indexedValues)).to.deep.equal({
62
+ id: 'FRA',
63
+ parents: [],
64
+ parentsIds: ['OECD'],
65
+ missingParents: [{ id: 'OECD' }]
66
+ });
67
+ });
68
+ it('previous is parent but in different hierarchy', () => {
69
+ const value = { id: 'IDF', parents: ['OECD', 'FRA'] };
70
+ const previousValue = { id: 'FRA', parentsIds: ['EU'], missingParents: [], parents: [{ id: 'EU' }] };;
71
+ expect(parseValueHierarchy(value, previousValue, indexedValues)).to.deep.equal({
72
+ id: 'IDF',
73
+ parents: [],
74
+ parentsIds: ['OECD', 'FRA'],
75
+ missingParents: [{ id: 'OECD' }, { id: 'FRA' }]
76
+ });
77
+ });
78
+ it('previous is bro but in different hierarchy', () => {
79
+ const value = { id: 'IDF', parents: ['OECD', 'FRA'] };
80
+ const previousValue = { id: 'BRE', parentsIds: ['EU', 'FRA'], missingParents: [], parents: [{ id: 'EU' }, { id: 'FRA' }] };;
81
+ expect(parseValueHierarchy(value, previousValue, indexedValues)).to.deep.equal({
82
+ id: 'IDF',
83
+ parents: [],
84
+ parentsIds: ['OECD', 'FRA'],
85
+ missingParents: [{ id: 'OECD' }, { id: 'FRA' }]
86
+ });
87
+ });
88
+ });