Skip to content

Commit 435ef22

Browse files
authored
Braze: Disable resource link fields (#10047)
1 parent dedb123 commit 435ef22

File tree

4 files changed

+76
-9
lines changed

4 files changed

+76
-9
lines changed
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
import { Field } from './Field';
2+
import { FieldRegistry } from './fieldRegistry';
3+
4+
export class ExternalResourceField extends Field {
5+
constructor(id: string, name: string, entryContentTypeId: string, localized: boolean) {
6+
super(id, name, entryContentTypeId, localized);
7+
}
8+
9+
get type(): string {
10+
return 'ExternalResourceField';
11+
}
12+
13+
public override set selected(value: boolean) {
14+
return;
15+
}
16+
17+
static fromSerialized(serializedField: any): ExternalResourceField {
18+
const field = new ExternalResourceField(
19+
serializedField.id,
20+
serializedField.name,
21+
serializedField.entryContentTypeId,
22+
serializedField.localized
23+
);
24+
return field;
25+
}
26+
27+
generateQuery(): string {
28+
throw new Error('External resource not supported');
29+
}
30+
31+
generateLiquidTagForType(template: string): string[] {
32+
throw new Error('External resource not supported');
33+
}
34+
35+
isEnabledForGenerate(): boolean {
36+
return false;
37+
}
38+
39+
isEnabledForCreate(): boolean {
40+
return false;
41+
}
42+
}
43+
44+
FieldRegistry.registerFieldType('ExternalResourceField', ExternalResourceField.fromSerialized);

apps/braze/src/fields/FieldsFactory.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import { ReferenceItem } from './ReferenceItem';
1515
import { RichTextField } from './RichTextField';
1616
import { TextArrayField } from './TextArrayField';
1717
import resolveResponse from 'contentful-resolve-response';
18+
import { ExternalResourceField } from './ExternalResourceField';
1819

1920
export class FieldsFactory {
2021
private contentTypes: { [key: string]: ContentTypeProps };
@@ -134,6 +135,8 @@ export class FieldsFactory {
134135
fieldClass = RichTextField;
135136
} else if (fieldInfo.type === 'Location') {
136137
fieldClass = LocationField;
138+
} else if (fieldInfo.type === 'ResourceLink') {
139+
fieldClass = ExternalResourceField;
137140
} else {
138141
fieldClass = BasicField;
139142
}

apps/braze/src/fields/RichTextField.ts

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ export class RichTextField extends Field {
2222
serializedField.entryContentTypeId,
2323
serializedField.localized
2424
);
25-
field.selected = serializedField.selected;
2625
return field;
2726
}
2827

@@ -37,14 +36,6 @@ export class RichTextField extends Field {
3736
isEnabledForGenerate(): boolean {
3837
return false;
3938
}
40-
41-
displayNameForGenerate(): string {
42-
return `${this.name} (Support for rich text fields coming soon)`;
43-
}
44-
45-
displayNameForCreate(): string {
46-
return this.name;
47-
}
4839
}
4940

5041
FieldRegistry.registerFieldType('RichTextField', RichTextField.fromSerialized);

apps/braze/test/fields/FieldsFactory.spec.ts

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ vi.mock('contentful-resolve-response', () => {
1717

1818
// Import the mocked function for use in tests
1919
import resolveResponse from 'contentful-resolve-response';
20+
import { ExternalResourceField } from '../../src/fields/ExternalResourceField';
2021

2122
describe('FieldsFactory', () => {
2223
const mockCma = {
@@ -475,6 +476,34 @@ describe('FieldsFactory', () => {
475476
'English Title'
476477
);
477478
});
479+
480+
it('should create an ExternalResourceField instance with correct properties', async () => {
481+
const mockEntry = [
482+
{
483+
fields: {
484+
externalReference: {
485+
sys: { type: 'ResourceLink', linkType: 'Contentful:Entry', urn: 'an-id' },
486+
},
487+
},
488+
},
489+
];
490+
(resolveResponse as any).mockReturnValue(mockEntry);
491+
492+
mockCma.contentType.get.mockResolvedValue({
493+
fields: [{ id: 'externalReference', type: 'ResourceLink', localized: false }],
494+
sys: {
495+
id: 'externalArticle',
496+
},
497+
});
498+
499+
const result = await createFields(entryId, entryContentTypeId, mockCma);
500+
expect(result).toHaveLength(1);
501+
expect(result[0]).toBeInstanceOf(ExternalResourceField);
502+
const fieldInstance = result[0] as ExternalResourceField;
503+
expect(fieldInstance.id).toBe('externalReference');
504+
expect(fieldInstance.entryContentTypeId).toBe('externalArticle');
505+
expect(fieldInstance.localized).toBe(false);
506+
});
478507
});
479508
});
480509

0 commit comments

Comments
 (0)