diff options
Diffstat (limited to 'spec/frontend/token_access/token_projects_table_spec.js')
-rw-r--r-- | spec/frontend/token_access/token_projects_table_spec.js | 38 |
1 files changed, 32 insertions, 6 deletions
diff --git a/spec/frontend/token_access/token_projects_table_spec.js b/spec/frontend/token_access/token_projects_table_spec.js index b51d8b3ccea..7654aa09b0a 100644 --- a/spec/frontend/token_access/token_projects_table_spec.js +++ b/spec/frontend/token_access/token_projects_table_spec.js @@ -6,14 +6,19 @@ import { mockProjects, mockFields } from './mock_data'; describe('Token projects table', () => { let wrapper; - const createComponent = () => { + const defaultProps = { + tableFields: mockFields, + projects: mockProjects, + }; + + const createComponent = (props) => { wrapper = mountExtended(TokenProjectsTable, { provide: { fullPath: 'root/ci-project', }, propsData: { - tableFields: mockFields, - projects: mockProjects, + ...defaultProps, + ...props, }, }); }; @@ -25,31 +30,52 @@ describe('Token projects table', () => { const findProjectNameCell = () => wrapper.findByTestId('token-access-project-name'); const findProjectNamespaceCell = () => wrapper.findByTestId('token-access-project-namespace'); - beforeEach(() => { + it('displays a table', () => { createComponent(); - }); - it('displays a table', () => { expect(findTable().exists()).toBe(true); }); it('displays the correct amount of table rows', () => { + createComponent(); + expect(findAllTableRows()).toHaveLength(mockProjects.length); }); it('delete project button emits event with correct project to delete', async () => { + createComponent(); + await findDeleteProjectBtn().trigger('click'); expect(wrapper.emitted('removeProject')).toEqual([[mockProjects[0].fullPath]]); }); it('does not show the remove icon if the project is locked', () => { + createComponent(); + // currently two mock projects with one being a locked project expect(findAllDeleteProjectBtn()).toHaveLength(1); }); it('displays project and namespace cells', () => { + createComponent(); + expect(findProjectNameCell().text()).toBe('merge-train-stuff'); expect(findProjectNamespaceCell().text()).toBe('root'); }); + + it('displays empty string for namespace when namespace is null', () => { + const nullNamespace = { + id: '1', + name: 'merge-train-stuff', + namespace: null, + fullPath: 'root/merge-train-stuff', + isLocked: false, + __typename: 'Project', + }; + + createComponent({ projects: [nullNamespace] }); + + expect(findProjectNamespaceCell().text()).toBe(''); + }); }); |