Add stub files for Instance Groups

Add stub files for Instance Groups. Routing system, and screens layout.

closes: https://github.com/ansible/awx/issues/7471
This commit is contained in:
nixocio 2020-07-01 17:20:16 -04:00
parent 6e651ce275
commit 24f86cd0d1
11 changed files with 128 additions and 27 deletions

View File

@ -0,0 +1,25 @@
import React from 'react';
import { Route, Switch, Redirect } from 'react-router-dom';
import InstanceGroupDetails from './InstanceGroupDetails';
import InstanceGroupEdit from './InstanceGroupEdit';
function InstanceGroup() {
return (
<Switch>
<Redirect
from="/instance_groups/:id"
to="/instance_groups/:id/details"
exact
/>
<Route path="/instance_groups/:id/edit">
<InstanceGroupEdit />
</Route>
<Route path="/instance_groups/:id/details">
<InstanceGroupDetails />
</Route>
</Switch>
);
}
export default InstanceGroup;

View File

@ -0,0 +1,14 @@
import React from 'react';
import { Card, PageSection } from '@patternfly/react-core';
function InstanceGroupAdd() {
return (
<PageSection>
<Card>
<div>Instance Group Add</div>
</Card>
</PageSection>
);
}
export default InstanceGroupAdd;

View File

@ -0,0 +1 @@
export { default } from './InstanceGroupAdd';

View File

@ -0,0 +1,14 @@
import React from 'react';
import { Card, PageSection } from '@patternfly/react-core';
function InstanceGroupDetails() {
return (
<PageSection>
<Card>
<div>Instance Group Details</div>
</Card>
</PageSection>
);
}
export default InstanceGroupDetails;

View File

@ -0,0 +1 @@
export { default } from './InstanceGroupDetails';

View File

@ -0,0 +1,14 @@
import React from 'react';
import { Card, PageSection } from '@patternfly/react-core';
function InstanceGroupEdit() {
return (
<PageSection>
<Card>
<div>Instance Group Edit</div>
</Card>
</PageSection>
);
}
export default InstanceGroupEdit;

View File

@ -0,0 +1 @@
export { default } from './InstanceGroupEdit';

View File

@ -0,0 +1,14 @@
import React from 'react';
import { Card, PageSection } from '@patternfly/react-core';
function InstanceGroupList() {
return (
<PageSection>
<Card>
<div>Instance Group List</div>
</Card>
</PageSection>
);
}
export default InstanceGroupList;

View File

@ -0,0 +1 @@
export { default } from './InstanceGroupList';

View File

@ -1,28 +1,48 @@
import React, { Component, Fragment } from 'react';
import React, { useState, useCallback } from 'react';
import { withI18n } from '@lingui/react';
import { t } from '@lingui/macro';
import {
PageSection,
PageSectionVariants,
Title,
} from '@patternfly/react-core';
import { Route, Switch } from 'react-router-dom';
class InstanceGroups extends Component {
render() {
const { i18n } = this.props;
const { light } = PageSectionVariants;
import InstanceGroupAdd from './InstanceGroupAdd';
import InstanceGroupList from './InstanceGroupList';
import InstanceGroup from './InstanceGroup';
import Breadcrumbs from '../../components/Breadcrumbs';
return (
<Fragment>
<PageSection variant={light} className="pf-m-condensed">
<Title size="2xl" headingLevel="h2">
{i18n._(t`Instance Groups`)}
</Title>
</PageSection>
<PageSection />
</Fragment>
);
}
function InstanceGroups({ i18n }) {
const [breadcrumbConfig, setBreadcrumbConfig] = useState({
'/instance_groups': i18n._(t`Instance Groups`),
'/instance_groups/add': i18n._(t`Create Instance Groups`),
});
const buildBreadcrumbConfig = useCallback(
instanceGroups => {
if (!instanceGroups) {
return;
}
setBreadcrumbConfig({
'/instance_groups': i18n._(t`Instance Groups`),
'/instance_groups/add': i18n._(t`Create Instance Groups`),
[`/instance_groups/${instanceGroups.id}`]: `${instanceGroups.name}`,
});
},
[i18n]
);
return (
<>
<Breadcrumbs breadcrumbConfig={breadcrumbConfig} />
<Switch>
<Route path="/instance_groups/add">
<InstanceGroupAdd />
</Route>
<Route path="/instance_groups/:id">
<InstanceGroup setBreadcrumb={buildBreadcrumbConfig} />
</Route>
<Route path="/instance_groups">
<InstanceGroupList />
</Route>
</Switch>
</>
);
}
export default withI18n()(InstanceGroups);

View File

@ -4,15 +4,13 @@ import { mountWithContexts } from '../../../testUtils/enzymeHelpers';
import InstanceGroups from './InstanceGroups';
describe('<InstanceGroups />', () => {
describe('<InstanceGroups/>', () => {
let pageWrapper;
let pageSections;
let title;
beforeEach(() => {
pageWrapper = mountWithContexts(<InstanceGroups />);
pageSections = pageWrapper.find('PageSection');
title = pageWrapper.find('Title');
});
afterEach(() => {
@ -21,9 +19,7 @@ describe('<InstanceGroups />', () => {
test('initially renders without crashing', () => {
expect(pageWrapper.length).toBe(1);
expect(pageSections.length).toBe(2);
expect(title.length).toBe(1);
expect(title.props().size).toBe('2xl');
expect(pageSections.length).toBe(1);
expect(pageSections.first().props().variant).toBe('light');
});
});