import React from 'react'; import assert from 'assert'; import { shallow } from 'enzyme'; import { render } from 'react-testing-library'; import { UnconnectedReferenceManyFieldController as ReferenceManyFieldController } from './ReferenceManyFieldController'; describe('', () => { it('should set loadedOnce to false when related records are not yet fetched', () => { const children = jest.fn(); const crudGetManyReference = jest.fn(); shallow( {children} , { disableLifecycleMethods: true } ); assert.equal(children.mock.calls[0][0].loadedOnce, false); }); it('should pass data and ids to children function', () => { const children = jest.fn(); const crudGetManyReference = jest.fn(); const data = { 1: { id: 1, title: 'hello' }, 2: { id: 2, title: 'world' }, }; shallow( {children} , { disableLifecycleMethods: true } ); assert.deepEqual(children.mock.calls[0][0].data, data); assert.deepEqual(children.mock.calls[0][0].ids, [1, 2]); }); it('should support record with string identifier', () => { const children = jest.fn(); const crudGetManyReference = jest.fn(); const data = { 'abc-1': { id: 'abc-1', title: 'hello' }, 'abc-2': { id: 'abc-2', title: 'world' }, }; shallow( {children} , { disableLifecycleMethods: true } ); assert.deepEqual(children.mock.calls[0][0].data, data); assert.deepEqual(children.mock.calls[0][0].ids, ['abc-1', 'abc-2']); }); it('should support record with number identifier', () => { const children = jest.fn(); const crudGetManyReference = jest.fn(); const data = { 1: { id: 1, title: 'hello' }, 2: { id: 2, title: 'world' }, }; shallow( {children} , { disableLifecycleMethods: true } ); assert.deepEqual(children.mock.calls[0][0].data, data); assert.deepEqual(children.mock.calls[0][0].ids, [1, 2]); }); it('should support custom source', () => { const children = jest.fn(); const crudGetManyReference = jest.fn(); shallow( {children} ); assert.equal(crudGetManyReference.mock.calls[0][2], 1); }); it('should call crudGetManyReference when its props changes', () => { const crudGetManyReference = jest.fn(); const ControllerWrapper = props => ( {() => null} ); const { rerender } = render(); rerender(); assert.deepEqual(crudGetManyReference.mock.calls[1], [ 'bar', 'foo_id', 1, 'foo_bar@foo_id_1', { page: 1, perPage: 25 }, { field: 'id', order: 'ASC' }, {}, 'id', ]); }); });