import React from 'react'; import { mount } from 'enzyme'; import { MemoryRouter } from 'react-router-dom'; import { I18nProvider } from '@lingui/react'; import AccessList from '../../src/components/AccessList'; const mockResults = [ { id: 1, username: 'boo', url: '/foo/bar/', first_name: 'john', last_name: 'smith', summary_fields: { foo: [ { role: { name: 'foo', } } ] } } ]; const mockUserRoles = [ { id: 2, name: 'bar', } ]; const mockUserTeams = [ { id: 3, } ]; const mockTeamRoles = [ { id: 4, name: 'baz', } ]; describe('', () => { test('initially renders succesfully', () => { mount( {}} getUserRoles={() => {}} getUserTeams={() => {}} getTeamRoles={() => {}} /> ); }); test('api response data passed to component gets set to state properly', (done) => { const wrapper = mount( ({ data: { count: 1, results: mockResults } })} getUserRoles={() => ({ data: { results: mockUserRoles } })} getUserTeams={() => ({ data: { results: mockUserTeams } })} getTeamRoles={() => ({ data: { results: mockTeamRoles } })} /> ).find('AccessList'); setImmediate(() => { expect(wrapper.state().results).toEqual(mockResults); done(); }); }); test('onExpand and onCompact methods called when user clicks on Expand and Compact icons respectively', async (done) => { const onExpand = jest.spyOn(AccessList.prototype, 'onExpand'); const onCompact = jest.spyOn(AccessList.prototype, 'onCompact'); const wrapper = mount( ({ data: { count: 1, results: mockResults } })} getUserRoles={() => ({ data: { results: mockUserRoles } })} getUserTeams={() => ({ data: { results: mockUserTeams } })} getTeamRoles={() => ({ data: { results: mockTeamRoles } })} /> ).find('AccessList'); expect(onExpand).not.toHaveBeenCalled(); expect(onCompact).not.toHaveBeenCalled(); setImmediate(() => { const rendered = wrapper.update(); rendered.find('button[aria-label="Expand"]').simulate('click'); rendered.find('button[aria-label="Collapse"]').simulate('click'); expect(onExpand).toHaveBeenCalled(); expect(onCompact).toHaveBeenCalled(); done(); }); }); test('onSort being passed properly to DataListToolbar component', async (done) => { const onSort = jest.spyOn(AccessList.prototype, 'onSort'); const wrapper = mount( ({ data: { count: 1, results: mockResults } })} getUserRoles={() => ({ data: { results: mockUserRoles } })} getUserTeams={() => ({ data: { results: mockUserTeams } })} getTeamRoles={() => ({ data: { results: mockTeamRoles } })} /> ).find('AccessList'); expect(onSort).not.toHaveBeenCalled(); setImmediate(() => { const rendered = wrapper.update(); rendered.find('button[aria-label="Sort"]').simulate('click'); expect(onSort).toHaveBeenCalled(); done(); }); }); });