@@ -660,6 +660,57 @@ describe('createExtension', () => {
|
||||
expect(true).toBe(true);
|
||||
});
|
||||
|
||||
it('should allow overriding the returned values from the parent factory', () => {
|
||||
const testExtension = createExtension({
|
||||
kind: 'thing',
|
||||
namespace: 'test',
|
||||
attachTo: { id: 'root', input: 'default' },
|
||||
output: [stringDataRef, numberDataRef],
|
||||
config: {
|
||||
schema: {
|
||||
foo: z => z.string().default('boom'),
|
||||
},
|
||||
},
|
||||
factory({ config }) {
|
||||
return [stringDataRef(config.foo), numberDataRef(42)];
|
||||
},
|
||||
});
|
||||
|
||||
const overridden = testExtension.override({
|
||||
output: [numberDataRef, stringDataRef],
|
||||
*factory(originalFactory) {
|
||||
const output = originalFactory();
|
||||
yield* output;
|
||||
|
||||
yield numberDataRef(output.get(numberDataRef) + 1);
|
||||
},
|
||||
});
|
||||
|
||||
const overridden = testExtension.override({
|
||||
output: [numberDataRef, stringDataRef],
|
||||
*factory(originalFactory) {
|
||||
const output = originalFactory();
|
||||
yield* output.omit(numberDataRef);
|
||||
|
||||
yield numberDataRef(output.get(numberDataRef) + 1);
|
||||
},
|
||||
});
|
||||
|
||||
const overridden = testExtension.override({
|
||||
output: [numberDataRef, stringDataRef],
|
||||
*factory(originalFactory) {
|
||||
const output = originalFactory();
|
||||
yield* output;
|
||||
|
||||
yield numberDataRef(output.get(numberDataRef) + 1);
|
||||
},
|
||||
});
|
||||
|
||||
const tester = createExtensionTester(overridden);
|
||||
|
||||
expect(tester.data(numberDataRef)).toBe(43);
|
||||
});
|
||||
|
||||
it('should work functionally with overrides', () => {
|
||||
const testExtension = createExtension({
|
||||
kind: 'thing',
|
||||
|
||||
Reference in New Issue
Block a user