fix unit tests for network handling

This commit is contained in:
John Mitchell
2019-04-10 11:16:20 -04:00
parent ad0e409448
commit 344713f938
26 changed files with 499 additions and 344 deletions

View File

@@ -14,6 +14,7 @@ import { t } from '@lingui/macro';
import { RootDialog } from './contexts/RootDialog';
import { withNetwork } from './contexts/Network';
import { Config } from './contexts/Config';
import AlertModal from './components/AlertModal';
import About from './components/About';
@@ -64,10 +65,8 @@ class App extends Component {
render () {
const {
ansible_version,
isAboutModalOpen,
isNavOpen,
version
isNavOpen
} = this.state;
const {
@@ -77,75 +76,80 @@ class App extends Component {
} = this.props;
return (
<I18n>
{({ i18n }) => (
<RootDialog>
{({ title, bodyText, variant = 'info', clearRootDialogMessage }) => (
<Fragment>
{(title || bodyText) && (
<AlertModal
variant={variant}
isOpen={!!(title || bodyText)}
onClose={clearRootDialogMessage}
title={title}
actions={[
<Button key="close" variant="secondary" onClick={clearRootDialogMessage}>{i18n._(t`Close`)}</Button>
]}
>
{bodyText}
</AlertModal>
)}
<Page
usecondensed="True"
header={(
<PageHeader
showNavToggle
onNavToggle={this.onNavToggle}
logo={<TowerLogo linkTo="/" />}
toolbar={(
<PageHeaderToolbar
isAboutDisabled={!version}
onAboutClick={this.onAboutModalOpen}
onLogoutClick={this.onLogout}
<Config>
{({ ansible_version, version }) => (
<I18n>
{({ i18n }) => (
<RootDialog>
{({ title, bodyText, variant = 'info', clearRootDialogMessage }) => (
<Fragment>
{(title || bodyText) && (
<AlertModal
variant={variant}
isOpen={!!(title || bodyText)}
onClose={clearRootDialogMessage}
title={title}
actions={[
<Button key="close" variant="secondary" onClick={clearRootDialogMessage}>{i18n._(t`Close`)}</Button>
]}
>
{bodyText}
</AlertModal>
)}
<Page
usecondensed="True"
header={(
<PageHeader
showNavToggle
onNavToggle={this.onNavToggle}
logo={<TowerLogo linkTo="/" />}
toolbar={(
<PageHeaderToolbar
isAboutDisabled={!version}
onAboutClick={this.onAboutModalOpen}
onLogoutClick={this.onLogout}
/>
)}
/>
)}
/>
)}
sidebar={(
<PageSidebar
isNavOpen={isNavOpen}
nav={(
<Nav aria-label={navLabel}>
<NavList>
{routeGroups.map(({ groupId, groupTitle, routes }) => (
<NavExpandableGroup
key={groupId}
groupId={groupId}
groupTitle={groupTitle}
routes={routes}
/>
))}
</NavList>
</Nav>
sidebar={(
<PageSidebar
isNavOpen={isNavOpen}
nav={(
<Nav aria-label={navLabel}>
<NavList>
{routeGroups.map(({ groupId, groupTitle, routes }) => (
<NavExpandableGroup
key={groupId}
groupId={groupId}
groupTitle={groupTitle}
routes={routes}
/>
))}
</NavList>
</Nav>
)}
/>
)}
>
{render && render({ routeGroups })}
</Page>
<About
ansible_version={ansible_version}
version={version}
isOpen={isAboutModalOpen}
onClose={this.onAboutModalClose}
/>
)}
>
{render && render({ routeGroups })}
</Page>
<About
ansible_version={ansible_version}
version={version}
isOpen={isAboutModalOpen}
onClose={this.onAboutModalClose}
/>
</Fragment>
</Fragment>
)}
</RootDialog>
)}
</RootDialog>
</I18n>
)}
</I18n>
</Config>
);
}
}
export { App as _App };
export default withNetwork(App);

View File

@@ -275,4 +275,5 @@ Lookup.defaultProps = {
name: null,
};
export { Lookup as _Lookup };
export default withNetwork(Lookup);

View File

@@ -343,4 +343,5 @@ Notifications.propTypes = {
onCreateSuccess: PropTypes.func.isRequired,
};
export { Notifications as _Notifications };
export default withNetwork(Notifications);

View File

@@ -26,6 +26,7 @@ class NotifyAndRedirect extends Component {
render () {
const { to, push, from, exact, strict, sensitive } = this.props;
return (
<Redirect
to={to}
@@ -39,4 +40,5 @@ class NotifyAndRedirect extends Component {
}
}
export { NotifyAndRedirect as _NotifyAndRedirect };
export default withRootDialog(withRouter(NotifyAndRedirect));

View File

@@ -67,13 +67,13 @@ class provider extends Component {
render () {
const {
value
value: stateValue
} = this.state;
const { children } = this.props;
const { value: propsValue, children } = this.props;
return (
<ConfigContext.Provider value={value}>
<ConfigContext.Provider value={propsValue || stateValue}>
{children}
</ConfigContext.Provider>
);

View File

@@ -59,21 +59,20 @@ class prov extends Component {
render () {
const {
children
} = this.props;
const {
value
value: stateValue
} = this.state;
const { value: propsValue, children } = this.props;
return (
<NetworkContext.Provider value={value}>
<NetworkContext.Provider value={propsValue || stateValue}>
{children}
</NetworkContext.Provider>
);
}
}
export { NetworkProvider as _NetworkProvider };
export const NetworkProvider = withRootDialog(withRouter(prov));
export function withNetwork (Child) {

View File

@@ -50,7 +50,7 @@ import Templates from './pages/Templates';
import Users from './pages/Users';
// eslint-disable-next-line import/prefer-default-export
export async function main (render) {
export function main (render) {
const el = document.getElementById('app');
return render(
@@ -246,7 +246,7 @@ export async function main (render) {
)}
</I18n>
</RootProvider>
</HashRouter>, el
</HashRouter>, el || document.createElement('div')
);
}

View File

@@ -97,4 +97,5 @@ class AWXLogin extends Component {
}
}
export { AWXLogin as _AWXLogin };
export default withNetwork(withRootDialog(withRouter(AWXLogin)));

View File

@@ -94,4 +94,5 @@ class Organizations extends Component {
}
}
export { Organizations as _Organizations };
export default withRootDialog(withRouter(Organizations));

View File

@@ -355,8 +355,8 @@ class OrganizationAccessList extends React.Component {
isOpen={showWarning}
onClose={this.hideWarning}
actions={[
<Button variant="danger" aria-label="confirm-delete" onClick={this.confirmDelete}>Delete</Button>,
<Button variant="secondary" onClick={this.hideWarning}>Cancel</Button>
<Button key="delete" variant="danger" aria-label="Confirm delete" onClick={this.confirmDelete}>Delete</Button>,
<Button key="cancel" variant="secondary" onClick={this.hideWarning}>Cancel</Button>
]}
>
{warningMsg}
@@ -447,4 +447,5 @@ OrganizationAccessList.propTypes = {
removeRole: PropTypes.func.isRequired,
};
export { OrganizationAccessList as _OrganizationAccessList };
export default withNetwork(OrganizationAccessList);

View File

@@ -28,6 +28,7 @@ class OrganizationForm extends Component {
this.state = {
instanceGroups: [],
initialInstanceGroups: [],
formIsValid: true,
};
}
@@ -174,4 +175,5 @@ OrganizationForm.contextTypes = {
custom_virtualenvs: PropTypes.arrayOf(PropTypes.string)
};
export { OrganizationForm as _OrganizationForm };
export default withNetwork(withRouter(OrganizationForm));

View File

@@ -62,4 +62,5 @@ class OrganizationNotifications extends Component {
}
}
export { OrganizationNotifications as _OrganizationNotifications };
export default withNetwork(OrganizationNotifications);

View File

@@ -359,4 +359,5 @@ class OrganizationsList extends Component {
}
}
export { OrganizationsList as _OrganizationsList };
export default withNetwork(withRouter(OrganizationsList));