import React from 'react';
import { shallow } from 'enzyme';
import { UnconnectedCreateController as CreateController } from './CreateController';
describe('CreateController', () => {
describe('Presetting the record from the location', () => {
const defaultProps = {
basePath: '',
crudCreate: jest.fn(),
hasCreate: true,
hasEdit: true,
hasList: true,
hasShow: true,
isLoading: false,
location: {
pathname: '/foo',
search: undefined,
state: undefined,
hash: undefined,
},
match: { isExact: true, path: '/foo', params: undefined, url: '' },
resource: 'foo',
title: 'Foo',
translate: x => x,
};
it('should return an empty record by default', () => {
const childrenMock = jest.fn();
const props = {
...defaultProps,
children: childrenMock,
};
shallow();
expect(childrenMock).toHaveBeenCalledWith(
expect.objectContaining({ record: {} })
);
});
it('should return location state record when set', () => {
const childrenMock = jest.fn();
const props = {
...defaultProps,
children: childrenMock,
location: {
...defaultProps.location,
state: { record: { foo: 'bar' } },
},
};
shallow();
expect(childrenMock).toHaveBeenCalledWith(
expect.objectContaining({ record: { foo: 'bar' } })
);
});
it('should return location search when set', () => {
const childrenMock = jest.fn();
const props = {
...defaultProps,
children: childrenMock,
location: {
...defaultProps.location,
search: '?foo=baz&array[]=1&array[]=2',
},
};
shallow();
expect(childrenMock).toHaveBeenCalledWith(
expect.objectContaining({
record: { foo: 'baz', array: ['1', '2'] },
})
);
});
it('should return location state record when both state and search are set', () => {
const childrenMock = jest.fn();
const props = {
...defaultProps,
children: childrenMock,
location: {
...defaultProps.location,
state: { record: { foo: 'bar' } },
search: '?foo=baz',
},
};
shallow();
expect(childrenMock).toHaveBeenCalledWith(
expect.objectContaining({ record: { foo: 'bar' } })
);
});
});
});