import { Tree, TreeList, TreeState, TreeStore } from '@stoplight/tree-list'; import { shallow } from 'enzyme'; import 'jest-enzyme'; import { JSONSchema4 } from 'json-schema'; import * as React from 'react'; import { useMetadata } from '../../hooks/useMetadata'; import { SchemaTree } from '../index'; jest.mock('mobx-react-lite', () => ({ observer: (children: any) => children, })); jest.mock('../../hooks/useMetadata'); const schema: JSONSchema4 = { type: 'object', properties: { data: { items: { $ref: '#/definitions/Gif', }, type: 'array', }, meta: { $ref: '#/definitions/Meta', }, pagination: { $ref: '#/definitions/Pagination', }, }, }; describe('SchemaTree component', () => { let useCallbackSpy: jest.SpyInstance; let useStateSpy: jest.SpyInstance; let setStateActionSpy: jest.Mock; let store: TreeStore; beforeEach(() => { setStateActionSpy = jest.fn(); useStateSpy = jest.spyOn(React, 'useState').mockImplementation(() => [{}, setStateActionSpy]); useCallbackSpy = jest.spyOn(React, 'useCallback'); (useMetadata as jest.Mock).mockReturnValue({}); store = new TreeStore(new Tree(), new TreeState()); }); afterEach(() => { (useMetadata as jest.Mock).mockReset(); useStateSpy.mockRestore(); useCallbackSpy.mockRestore(); }); describe('tree-list', () => { test('should be rendered', () => { const wrapper = shallow(); expect(wrapper.find(TreeList)).toExist(); expect(wrapper.find(TreeList)).toHaveProp({ store, }); }); test('should be not draggable', () => { const treeList = shallow().find(TreeList); expect(treeList.prop('canDrag')).toHaveLength(0); expect(treeList.prop('canDrag')!({} as any)).toBe(false); }); }); });