{"record":{"id":"52436eb64d19a165","repo":"marmelab/react-admin","slug":"getone-is-not-implemented","errorCode":null,"errorMessage":"getOne is not implemented","messagePattern":"getOne is not implemented","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/ra-core/src/dataProvider/testDataProvider.ts","lineNumber":32,"sourceCode":"        throw new Error('create is not implemented');\n    },\n    delete: async () => {\n        throw new Error('delete not implemented');\n    },\n    deleteMany: async () => {\n        throw new Error('deleteMany is not implemented');\n    },\n    getList: async () => {\n        throw new Error('getList is not implemented');\n    },\n    getMany: async () => {\n        throw new Error('getMany is not implemented');\n    },\n    getManyReference: async () => {\n        throw new Error('getManyReference is not implemented');\n    },\n    getOne: async () => {\n        throw new Error('getOne is not implemented');\n    },\n    update: async () => {\n        throw new Error('update not implemented');\n    },\n    updateMany: async () => {\n        throw new Error('updateMany not implemented');\n    },\n};\nexport const testDataProvider = (\n    overrides?: Partial<DataProvider>\n): DataProvider => ({\n    ...defaultTestDataProvider,\n    ...overrides,\n});\n","sourceCodeStart":14,"sourceCodeEnd":47,"githubUrl":"https://github.com/marmelab/react-admin/blob/051f511bb0afb5ea565c2d3728bf4dab0a6fa5e0/packages/ra-core/src/dataProvider/testDataProvider.ts#L14-L47","documentation":"testDataProvider.ts defines a default DataProvider whose methods all throw 'not implemented' errors. This guards against tests accidentally relying on unimplemented data provider methods instead of mocking them via overrides.","triggerScenarios":"Calling getOne on the default testDataProvider (or the provider returned by testDataProvider()) without passing a getOne override in the overrides object.","commonSituations":"Unit tests rendering react-admin components that fetch a single record (e.g. Edit, Show, useGetOne) while using testDataProvider without overriding getOne.","solutions":["Pass a getOne override: testDataProvider({ getOne: async () => ({ data: { id: 1 } }) })","Avoid mounting components that call getOne, or mock the query so it never fires","Use a full mock data provider instead of the default testDataProvider"],"exampleFix":"// before\nconst dataProvider = testDataProvider();\n// after\nconst dataProvider = testDataProvider({\n  getOne: async () => ({ data: { id: 1, title: 'Hello' } }),\n});","handlingStrategy":"validation","validationCode":"const dp = testDataProvider();\nif (dp.getOne === defaultTestDataProvider.getOne) {\n  throw new Error('testDataProvider.getOne must be overridden for this test');\n}","typeGuard":"const hasGetOne = (dp: Partial<DataProvider>): dp is Partial<DataProvider> & Required<Pick<DataProvider, 'getOne'>> => typeof dp.getOne === 'function';","tryCatchPattern":"try {\n  await dataProvider.getOne('posts', { id: 1 });\n} catch (e) {\n  if (e.message.includes('not implemented')) {\n    // override missing in this test — fix the mock, not the test\n  }\n  throw e;\n}","preventionTips":["Always pass overrides for every dataProvider method your component calls","Render test components inside the minimal Resource context they need","Grep tests for testDataProvider() with no arguments"],"tags":["testing","data-provider","mock","react-admin"],"backgroundTag":"unimplemented-mock-method","analyzedSha":"051f511bb0afb5ea565c2d3728bf4dab0a6fa5e0","analyzedAt":"2026-08-30T02:28:14.926Z","schemaVersion":2},"datasetVersion":"2026-08-30T03:17:51.788Z"}