Skip to content

Commit a833a36

Browse files
committed
[TypeScript] Fix withLifecycleCallback return type for augmented data providers
1 parent 32495d0 commit a833a36

2 files changed

Lines changed: 18 additions & 3 deletions

File tree

packages/ra-core/src/dataProvider/withLifecycleCallbacks.spec.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,21 @@ describe('withLifecycleCallbacks', () => {
5252
dataProvider.getMany('posts', { ids: [1, 2] });
5353
expect(resourceCallback.beforeGetMany).toHaveBeenCalled();
5454
});
55+
it('should return the right type for augmented Data Providers', async () => {
56+
const dataProvider = withLifecycleCallbacks(
57+
{
58+
...testDataProvider(),
59+
getFoo: async () => 'foo',
60+
},
61+
[
62+
{
63+
resource: 'posts',
64+
beforeGetOne: jest.fn(params => Promise.resolve(params)),
65+
},
66+
]
67+
);
68+
expect(dataProvider.getFoo).toBeDefined();
69+
});
5570

5671
describe('beforeGetList', () => {
5772
it('should update the getList parameters', async () => {

packages/ra-core/src/dataProvider/withLifecycleCallbacks.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -119,10 +119,10 @@ import {
119119
* ]
120120
* );
121121
*/
122-
export const withLifecycleCallbacks = (
123-
dataProvider: DataProvider,
122+
export const withLifecycleCallbacks = <T extends DataProvider = DataProvider>(
123+
dataProvider: T,
124124
handlers: ResourceCallbacks[]
125-
): DataProvider => {
125+
): T => {
126126
return {
127127
...dataProvider,
128128

0 commit comments

Comments
 (0)