forked from exceljs/exceljs
-
Notifications
You must be signed in to change notification settings - Fork 11
Expand file tree
/
Copy pathdefined-name-xform.spec.js
More file actions
80 lines (77 loc) · 2.52 KB
/
Copy pathdefined-name-xform.spec.js
File metadata and controls
80 lines (77 loc) · 2.52 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
const testXformHelper = require('../test-xform-helper');
const DefinedNameXform = verquire('xlsx/xform/book/defined-name-xform');
const expectations = [
{
title: 'Defined Names',
create() {
return new DefinedNameXform();
},
preparedModel: {name: 'foo', ranges: ['bar!$A$1:$C$1']},
xml: '<definedName name="foo">bar!$A$1:$C$1</definedName>',
parsedModel: {name: 'foo', ranges: ['bar!$A$1:$C$1']},
tests: ['render', 'renderIn', 'parse'],
},
{
title: 'Print Area',
create() {
return new DefinedNameXform();
},
preparedModel: {
name: '_xlnm.Print_Area',
localSheetId: 0,
ranges: ['bar!$A$1:$C$10'],
},
xml:
'<definedName name="_xlnm.Print_Area" localSheetId="0">bar!$A$1:$C$10</definedName>',
parsedModel: {
name: '_xlnm.Print_Area',
localSheetId: 0,
ranges: ['bar!$A$1:$C$10'],
},
tests: ['render', 'renderIn', 'parse'],
},
{
title: 'String with something that looks like a range',
create() {
return new DefinedNameXform();
},
preparedModel: {name: 'foo', ranges: []},
xml: '<definedName name="foo">"OFFSET($A$10;0;0;0;1)"</definedName>',
parsedModel: {name: 'foo', ranges: [], formula: '"OFFSET($A$10;0;0;0;1)"'},
tests: ['parse'],
},
{
title: 'Range on sheet name containing parentheses',
create() {
return new DefinedNameXform();
},
// Sheet names with '(' must NOT be misclassified as formula expressions.
preparedModel: {name: 'Foo', ranges: ["'Data (2026)'!$A$1"]},
xml: "<definedName name=\"Foo\">'Data (2026)'!$A$1</definedName>",
parsedModel: {name: 'Foo', ranges: ["'Data (2026)'!$A$1"]},
tests: ['render', 'renderIn', 'parse'],
},
{
title: 'Named LAMBDA expression',
create() {
return new DefinedNameXform();
},
preparedModel: {name: 'MyDouble', ranges: [], formula: 'LAMBDA(x,x*2)'},
xml: '<definedName name="MyDouble">LAMBDA(x,x*2)</definedName>',
parsedModel: {name: 'MyDouble', ranges: [], formula: 'LAMBDA(x,x*2)'},
tests: ['render', 'renderIn', 'parse'],
},
{
title: 'Named LAMBDA with multiple parameters',
create() {
return new DefinedNameXform();
},
preparedModel: {name: 'MySum', ranges: [], formula: 'LAMBDA(x,y,x+y)'},
xml: '<definedName name="MySum">LAMBDA(x,y,x+y)</definedName>',
parsedModel: {name: 'MySum', ranges: [], formula: 'LAMBDA(x,y,x+y)'},
tests: ['render', 'renderIn', 'parse'],
},
];
describe('DefinedNameXform', () => {
testXformHelper(expectations);
});