diff --git a/packages/ra-core/src/dataProvider/useCreate.spec.tsx b/packages/ra-core/src/dataProvider/useCreate.spec.tsx
index 98c479fc2c6..38a7af34f38 100644
--- a/packages/ra-core/src/dataProvider/useCreate.spec.tsx
+++ b/packages/ra-core/src/dataProvider/useCreate.spec.tsx
@@ -36,7 +36,7 @@ import {
describe('useCreate', () => {
it('returns a callback that can be used with create arguments', async () => {
const dataProvider = testDataProvider({
- create: jest.fn(() => Promise.resolve({ data: { id: 1 } } as any)),
+ create: jest.fn(() => Promise.resolve({ data: { id: 0 } } as any)),
});
let localCreate;
const Dummy = () => {
@@ -60,7 +60,7 @@ describe('useCreate', () => {
it('returns a callback that can be used with no arguments', async () => {
const dataProvider = testDataProvider({
- create: jest.fn(() => Promise.resolve({ data: { id: 1 } } as any)),
+ create: jest.fn(() => Promise.resolve({ data: { id: 0 } } as any)),
});
let localCreate;
const Dummy = () => {
@@ -84,7 +84,7 @@ describe('useCreate', () => {
it('uses a custom mutationFn with mutation middlewares', async () => {
const dataProvider = testDataProvider({
- create: jest.fn(() => Promise.resolve({ data: { id: 1 } } as any)),
+ create: jest.fn(() => Promise.resolve({ data: { id: 0 } } as any)),
});
const customMutationFn = jest.fn(async params => ({
id: 1,
@@ -179,7 +179,7 @@ describe('useCreate', () => {
it('uses call time params over hook time params', async () => {
const dataProvider = testDataProvider({
- create: jest.fn(() => Promise.resolve({ data: { id: 1 } } as any)),
+ create: jest.fn(() => Promise.resolve({ data: { id: 0 } } as any)),
});
let localCreate;
const Dummy = () => {
@@ -203,7 +203,7 @@ describe('useCreate', () => {
it('calls onSettled when provided in hook time options', async () => {
const dataProvider = testDataProvider({
- create: jest.fn(() => Promise.resolve({ data: { id: 1 } } as any)),
+ create: jest.fn(() => Promise.resolve({ data: { id: 0 } } as any)),
});
let localCreate;
const onSettled = jest.fn();
@@ -230,7 +230,7 @@ describe('useCreate', () => {
it('accepts a meta parameter', async () => {
const dataProvider = testDataProvider({
- create: jest.fn(() => Promise.resolve({ data: { id: 1 } } as any)),
+ create: jest.fn(() => Promise.resolve({ data: { id: 0 } } as any)),
});
let localCreate;
const Dummy = () => {
@@ -260,7 +260,7 @@ describe('useCreate', () => {
});
const dataProvider = testDataProvider({
- create: jest.fn(() => Promise.resolve({ data: { id: 1 } } as any)),
+ create: jest.fn(() => Promise.resolve({ data: { id: 0 } } as any)),
});
let localCreate;
const Dummy = () => {
@@ -300,7 +300,7 @@ describe('useCreate', () => {
}
const dataProvider = testDataProvider({
create: jest.fn(() =>
- Promise.resolve({ data: { id: 1, sku: 'abc' } } as any)
+ Promise.resolve({ data: { id: 0, sku: 'abc' } } as any)
),
});
let localCreate;
diff --git a/packages/ra-core/src/dataProvider/useCreate.stories.tsx b/packages/ra-core/src/dataProvider/useCreate.stories.tsx
index 0cdd400be56..b87aeaa5487 100644
--- a/packages/ra-core/src/dataProvider/useCreate.stories.tsx
+++ b/packages/ra-core/src/dataProvider/useCreate.stories.tsx
@@ -451,3 +451,67 @@ InvalidateList.argTypes = {
options: ['pessimistic', 'optimistic', 'undoable'],
},
};
+
+export const CreateIdZero = ({
+ mutationMode,
+}: {
+ mutationMode: MutationModeType;
+}) => {
+ const dataProvider = fakeRestDataProvider(
+ {
+ posts: [],
+ },
+ process.env.NODE_ENV !== 'test',
+ process.env.NODE_ENV === 'test' ? 10 : 1000
+ );
+
+ return (
+