update organizations structure and add unstyled sub routes and breadcrumbs

This commit is contained in:
John Mitchell
2018-11-29 14:12:33 -05:00
parent 1e7ab9deed
commit 12c8267b12
14 changed files with 594 additions and 53 deletions

View File

@@ -0,0 +1,24 @@
import React from 'react';
import { mount } from 'enzyme';
import { API_ORGANIZATIONS } from '../../../src/endpoints';
import OrganizationAdd from '../../../src/pages/Organizations/Organization.add';
describe('<OrganizationAdd />', () => {
let pageWrapper;
beforeEach(() => {
pageWrapper = mount(<OrganizationAdd />);
});
afterEach(() => {
pageWrapper.unmount();
});
test('initially renders without crashing', () => {
expect(pageWrapper.length).toBe(1);
});
test('API Organization endpoint is valid', () => {
expect(API_ORGANIZATIONS).toBeDefined();
});
});

View File

@@ -0,0 +1,32 @@
import React from 'react';
import { MemoryRouter } from 'react-router-dom';
import { mount } from 'enzyme';
import { API_ORGANIZATIONS } from '../../../src/endpoints';
import OrganizationView from '../../../src/pages/Organizations/Organization.view';
describe('<OrganizationView />', () => {
let pageWrapper;
beforeEach(() => {
pageWrapper = mount(
<MemoryRouter initialEntries={['/organizations/1']}>
<OrganizationView
match={{ path: '/organizations/:id', route: 'organizations/1', link: 'organizations', params: { id: '1' } }}
location={{ search: '', pathname: '' }}
/>
</MemoryRouter>
);
});
afterEach(() => {
pageWrapper.unmount();
});
test('initially renders without crashing', () => {
expect(pageWrapper.length).toBe(1);
});
test('API Organization endpoint is valid', () => {
expect(API_ORGANIZATIONS).toBeDefined();
});
});

View File

@@ -0,0 +1,90 @@
import React from 'react';
import { HashRouter } from 'react-router-dom';
import { mount } from 'enzyme';
import api from '../../../src/api';
import { API_ORGANIZATIONS } from '../../../src/endpoints';
import Organizations from '../../../src/pages/Organizations';
describe('<Organizations />', () => {
let pageWrapper;
const results = [
{
id: 1,
name: 'org 1',
summary_fields: {
related_field_counts: {
users: 1,
teams: 1,
admins: 1
}
}
},
{
id: 2,
name: 'org 2',
summary_fields: {
related_field_counts: {
users: 1,
teams: 1,
admins: 1
}
}
},
{
id: 3,
name: 'org 3',
summary_fields: {
related_field_counts: {
users: 1,
teams: 1,
admins: 1
}
}
},
];
const count = results.length;
const response = { data: { count, results } };
beforeEach(() => {
api.get = jest.fn().mockImplementation(() => Promise.resolve(response));
pageWrapper = mount(<HashRouter><Organizations /></HashRouter>);
});
afterEach(() => {
pageWrapper.unmount();
});
test('it renders expected content', () => {
const pageSections = pageWrapper.find('PageSection');
const title = pageWrapper.find('Title');
expect(pageWrapper.length).toBe(1);
expect(pageSections.length).toBe(2);
expect(title.length).toBe(1);
expect(title.props().size).toBe('2xl');
pageSections.forEach(section => {
expect(section.props().variant).toBeDefined();
});
expect(pageWrapper.find('ul').length).toBe(1);
expect(pageWrapper.find('ul li').length).toBe(0);
// will render all list items on update
pageWrapper.update();
expect(pageWrapper.find('ul li').length).toBe(count);
});
test('API Organization endpoint is valid', () => {
expect(API_ORGANIZATIONS).toBeDefined();
});
test('it displays a tooltip on delete hover', () => {
const tooltip = '.pf-c-tooltip__content';
const deleteButton = 'button[aria-label="Delete"]';
expect(pageWrapper.find(tooltip).length).toBe(0);
pageWrapper.find(deleteButton).simulate('mouseover');
expect(pageWrapper.find(tooltip).length).toBe(1);
});
});