Skip to content

Commit 4499c44

Browse files
phateddanez
authored andcommitted
Add importer tests for getPropertyName
1 parent 96db52f commit 4499c44

File tree

1 file changed

+48
-10
lines changed

1 file changed

+48
-10
lines changed

src/utils/__tests__/getPropertyName-test.js

Lines changed: 48 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,13 @@
88
*
99
*/
1010

11-
import { parse, expression } from '../../../tests/utils';
11+
import {
12+
parse,
13+
statement,
14+
expression,
15+
noopImporter,
16+
makeMockImporter,
17+
} from '../../../tests/utils';
1218
import getPropertyName from '../getPropertyName';
1319

1420
describe('getPropertyName', () => {
@@ -17,53 +23,63 @@ describe('getPropertyName', () => {
1723
return root.get('body', root.node.body.length - 1, 'expression');
1824
}
1925

26+
const mockImporter = makeMockImporter({
27+
foo: statement(`
28+
export default "name";
29+
`).get('declaration'),
30+
31+
bar: statement(`
32+
export default { baz: "name" };
33+
`).get('declaration'),
34+
});
35+
2036
it('returns the name for a normal property', () => {
2137
const def = expression('{ foo: 1 }');
2238
const param = def.get('properties', 0);
2339

24-
expect(getPropertyName(param)).toBe('foo');
40+
expect(getPropertyName(param, noopImporter)).toBe('foo');
2541
});
2642

2743
it('returns the name of a object type spread property', () => {
2844
const def = expression('(a: { ...foo })');
2945
const param = def.get('typeAnnotation', 'typeAnnotation', 'properties', 0);
3046

31-
expect(getPropertyName(param)).toBe('foo');
47+
expect(getPropertyName(param, noopImporter)).toBe('foo');
3248
});
3349

3450
it('creates name for computed properties', () => {
3551
const def = expression('{ [foo]: 21 }');
3652
const param = def.get('properties', 0);
3753

38-
expect(getPropertyName(param)).toBe('@computed#foo');
54+
expect(getPropertyName(param, noopImporter)).toBe('@computed#foo');
3955
});
4056

4157
it('creates name for computed properties from string', () => {
4258
const def = expression('{ ["foo"]: 21 }');
4359
const param = def.get('properties', 0);
4460

45-
expect(getPropertyName(param)).toBe('foo');
61+
expect(getPropertyName(param, noopImporter)).toBe('foo');
4662
});
4763

4864
it('creates name for computed properties from int', () => {
4965
const def = expression('{ [31]: 21 }');
5066
const param = def.get('properties', 0);
5167

52-
expect(getPropertyName(param)).toBe('31');
68+
expect(getPropertyName(param, noopImporter)).toBe('31');
5369
});
5470

5571
it('returns null for computed properties from regex', () => {
5672
const def = expression('{ [/31/]: 21 }');
5773
const param = def.get('properties', 0);
5874

59-
expect(getPropertyName(param)).toBe(null);
75+
expect(getPropertyName(param, noopImporter)).toBe(null);
6076
});
6177

6278
it('returns null for to complex computed properties', () => {
6379
const def = expression('{ [() => {}]: 21 }');
6480
const param = def.get('properties', 0);
6581

66-
expect(getPropertyName(param)).toBe(null);
82+
expect(getPropertyName(param, noopImporter)).toBe(null);
6783
});
6884

6985
it('resolves simple variables', () => {
@@ -74,7 +90,18 @@ describe('getPropertyName', () => {
7490
`);
7591
const param = def.get('properties', 0);
7692

77-
expect(getPropertyName(param)).toBe('name');
93+
expect(getPropertyName(param, noopImporter)).toBe('name');
94+
});
95+
96+
it('resolves imported variables', () => {
97+
const def = parsePath(`
98+
import foo from 'foo';
99+
100+
({ [foo]: 21 });
101+
`);
102+
const param = def.get('properties', 0);
103+
104+
expect(getPropertyName(param, mockImporter)).toBe('name');
78105
});
79106

80107
it('resolves simple member expressions', () => {
@@ -85,6 +112,17 @@ describe('getPropertyName', () => {
85112
`);
86113
const param = def.get('properties', 0);
87114

88-
expect(getPropertyName(param)).toBe('name');
115+
expect(getPropertyName(param, noopImporter)).toBe('name');
116+
});
117+
118+
it('resolves imported member expressions', () => {
119+
const def = parsePath(`
120+
import bar from 'bar';
121+
122+
({ [bar.baz]: 21 });
123+
`);
124+
const param = def.get('properties', 0);
125+
126+
expect(getPropertyName(param, mockImporter)).toBe('name');
89127
});
90128
});

0 commit comments

Comments
 (0)