Skip to content

Commit fd4a3ab

Browse files
author
Bryan Powell
authored
fix: recomposition failing for child components (#112)
1 parent 8a04524 commit fd4a3ab

File tree

2 files changed

+19
-24
lines changed

2 files changed

+19
-24
lines changed

src/metadata-registry/manifestGenerator.ts

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -51,16 +51,18 @@ export class ManifestGenerator {
5151
private createMetadataMap(components: MetadataComponent[]): Map<string, Set<string>> {
5252
const metadataMap: Map<string, Set<string>> = new Map<string, Set<string>>();
5353
for (const component of components) {
54-
const metadataType = this.registryAccess.getTypeFromName(component.type.name).name;
55-
const metadataName = component.fullName;
56-
if (metadataMap.has(metadataType)) {
57-
const metadataNames = metadataMap.get(metadataType);
58-
metadataNames.add(metadataName);
59-
metadataMap.set(metadataType, metadataNames);
54+
const {
55+
fullName,
56+
type: { name: typeName },
57+
} = component;
58+
if (metadataMap.has(typeName)) {
59+
const metadataNames = metadataMap.get(typeName);
60+
metadataNames.add(fullName);
61+
metadataMap.set(typeName, metadataNames);
6062
} else {
6163
const metadataNames: Set<string> = new Set<string>();
62-
metadataNames.add(metadataName);
63-
metadataMap.set(metadataType, metadataNames);
64+
metadataNames.add(fullName);
65+
metadataMap.set(typeName, metadataNames);
6466
}
6567
}
6668
return metadataMap;

test/metadata-registry/manifestGenerator.test.ts

Lines changed: 9 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -16,24 +16,28 @@ import { fail } from 'assert';
1616
describe('ManifestGenerator', () => {
1717
let sandboxStub: SinonSandbox;
1818
const manifestGenerator = new ManifestGenerator();
19+
1920
beforeEach(async () => {
2021
sandboxStub = createSandbox();
2122
});
23+
2224
afterEach(() => {
2325
sandboxStub.restore();
2426
});
27+
2528
it('should generate manifest for one type', () => {
2629
const component = {
2730
fullName: 'someName',
28-
type: { id: 'apexclass', name: 'ApexClass' },
31+
type: { id: 'foobar', name: 'FooBar' },
2932
};
3033
let expectedManifest = '<?xml version="1.0" encoding="UTF-8"?>\n';
3134
expectedManifest += '<Package xmlns="http://soap.sforce.com/2006/04/metadata">\n';
3235
expectedManifest +=
33-
' <types>\n <members>someName</members>\n <name>ApexClass</name>\n </types>\n';
36+
' <types>\n <members>someName</members>\n <name>FooBar</name>\n </types>\n';
3437
expectedManifest += ' <version>48.0</version>\n</Package>';
3538
expect(manifestGenerator.createManifest([component])).to.equal(expectedManifest);
3639
});
40+
3741
it('should generate manifest for multiple types', () => {
3842
const component1 = {
3943
fullName: 'apexClass1',
@@ -52,6 +56,7 @@ describe('ManifestGenerator', () => {
5256
expectedManifest += ' <version>48.0</version>\n</Package>';
5357
expect(manifestGenerator.createManifest([component1, component2])).to.equal(expectedManifest);
5458
});
59+
5560
it('should generate manifest for multiple components', () => {
5661
const component1 = {
5762
fullName: 'apexClass1',
@@ -76,6 +81,7 @@ describe('ManifestGenerator', () => {
7681
expectedManifest
7782
);
7883
});
84+
7985
it('should generate manifest for multiple components passed in different order', () => {
8086
const component1 = {
8187
fullName: 'apexClass1',
@@ -100,6 +106,7 @@ describe('ManifestGenerator', () => {
100106
expectedManifest
101107
);
102108
});
109+
103110
it('should generate manifest by overriding apiversion', () => {
104111
const component = {
105112
fullName: 'someName',
@@ -112,20 +119,6 @@ describe('ManifestGenerator', () => {
112119
expectedManifest += ' <version>45.0</version>\n</Package>';
113120
expect(manifestGenerator.createManifest([component], '45.0')).to.equal(expectedManifest);
114121
});
115-
it('should throw error for non valid type', () => {
116-
const component = {
117-
fullName: 'someName',
118-
type: { id: 'someveryunknowntype', name: 'someveryunknowntype' },
119-
};
120-
try {
121-
manifestGenerator.createManifest([component]);
122-
expect.fail('should have failed');
123-
} catch (e) {
124-
expect(e.message).to.equal(
125-
"Missing metadata type definition in registry for id 'someveryunknowntype'"
126-
);
127-
}
128-
});
129122

130123
const rootPath = path.join('file', 'path');
131124
const mdComponents = [

0 commit comments

Comments
 (0)