Merge pull request #274 from jakemcdermott/alias-top-level-imports

alias top-level imports
This commit is contained in:
Jake McDermott 2019-06-19 13:09:26 -04:00 committed by GitHub
commit f33b343cd8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
46 changed files with 357 additions and 202 deletions

View File

@ -12,6 +12,11 @@
"airbnb"
],
"settings": {
'import/resolver': {
webpack: {
config: 'webpack.config.js'
}
},
"react": {
"version": "16.5.2"
}
@ -28,7 +33,8 @@
"camelcase": "off",
"arrow-parens": "off",
"comma-dangle": "off",
"import/no-extraneous-dependencies": ["error", { "devDependencies": true }],
// https://github.com/benmosher/eslint-plugin-import/issues/479#issuecomment-252500896
"import/no-extraneous-dependencies": "off",
"indent": ["error", 2, {
"SwitchCase": 1
}],

View File

@ -7,7 +7,14 @@ module.exports = {
'index.js'
],
moduleNameMapper: {
'\\.(css|scss|less)$': '<rootDir>/__mocks__/styleMock.js'
'\\.(css|scss|less)$': '<rootDir>/__mocks__/styleMock.js',
'^@api(.*)$': '<rootDir>/src/api$1',
'^@components(.*)$': '<rootDir>/src/components$1',
'^@contexts(.*)$': '<rootDir>/src/contexts$1',
'^@screens(.*)$': '<rootDir>/src/screens$1',
'^@util(.*)$': '<rootDir>/src/util$1',
'^@types(.*)$': '<rootDir>/src/types$1',
'^@testUtils(.*)$': '<rootDir>/testUtils$1',
},
setupFiles: [
'@nteract/mockument'

99
package-lock.json generated
View File

@ -2724,6 +2724,12 @@
"integrity": "sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=",
"dev": true
},
"array-find": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/array-find/-/array-find-1.0.0.tgz",
"integrity": "sha1-bI4obRHtdoMn+OYuzuhzU8o+eLg=",
"dev": true
},
"array-find-index": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
@ -6022,6 +6028,58 @@
"resolve": "^1.5.0"
}
},
"eslint-import-resolver-webpack": {
"version": "0.11.1",
"resolved": "https://registry.npmjs.org/eslint-import-resolver-webpack/-/eslint-import-resolver-webpack-0.11.1.tgz",
"integrity": "sha512-eK3zR7xVQR/MaoBWwGuD+CULYVuqe5QFlDukman71aI6IboCGzggDUohHNfu1ZeBnbHcUHJc0ywWoXUBNB6qdg==",
"dev": true,
"requires": {
"array-find": "^1.0.0",
"debug": "^2.6.8",
"enhanced-resolve": "~0.9.0",
"find-root": "^1.1.0",
"has": "^1.0.1",
"interpret": "^1.0.0",
"lodash": "^4.17.4",
"node-libs-browser": "^1.0.0 || ^2.0.0",
"resolve": "^1.10.0",
"semver": "^5.3.0"
},
"dependencies": {
"enhanced-resolve": {
"version": "0.9.1",
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz",
"integrity": "sha1-TW5omzcl+GCQknzMhs2fFjW4ni4=",
"dev": true,
"requires": {
"graceful-fs": "^4.1.2",
"memory-fs": "^0.2.0",
"tapable": "^0.1.8"
}
},
"memory-fs": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.2.0.tgz",
"integrity": "sha1-8rslNovBIeORwlIN6Slpyu4KApA=",
"dev": true
},
"resolve": {
"version": "1.11.0",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.0.tgz",
"integrity": "sha512-WL2pBDjqT6pGUNSUzMw00o4T7If+z4H2x3Gz893WoUQ5KW8Vr9txp00ykiP16VBaZF5+j/OcXJHZ9+PCvdiDKw==",
"dev": true,
"requires": {
"path-parse": "^1.0.6"
}
},
"tapable": {
"version": "0.1.10",
"resolved": "https://registry.npmjs.org/tapable/-/tapable-0.1.10.tgz",
"integrity": "sha1-KcNXB8K3DlDQdIK10gLo7URtr9Q=",
"dev": true
}
}
},
"eslint-module-utils": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.2.0.tgz",
@ -7099,7 +7157,8 @@
"ansi-regex": {
"version": "2.1.1",
"bundled": true,
"dev": true
"dev": true,
"optional": true
},
"aproba": {
"version": "1.2.0",
@ -7120,12 +7179,14 @@
"balanced-match": {
"version": "1.0.0",
"bundled": true,
"dev": true
"dev": true,
"optional": true
},
"brace-expansion": {
"version": "1.1.11",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@ -7140,17 +7201,20 @@
"code-point-at": {
"version": "1.1.0",
"bundled": true,
"dev": true
"dev": true,
"optional": true
},
"concat-map": {
"version": "0.0.1",
"bundled": true,
"dev": true
"dev": true,
"optional": true
},
"console-control-strings": {
"version": "1.1.0",
"bundled": true,
"dev": true
"dev": true,
"optional": true
},
"core-util-is": {
"version": "1.0.2",
@ -7267,7 +7331,8 @@
"inherits": {
"version": "2.0.3",
"bundled": true,
"dev": true
"dev": true,
"optional": true
},
"ini": {
"version": "1.3.5",
@ -7279,6 +7344,7 @@
"version": "1.0.0",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"number-is-nan": "^1.0.0"
}
@ -7293,6 +7359,7 @@
"version": "3.0.4",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"brace-expansion": "^1.1.7"
}
@ -7300,12 +7367,14 @@
"minimist": {
"version": "0.0.8",
"bundled": true,
"dev": true
"dev": true,
"optional": true
},
"minipass": {
"version": "2.3.5",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"safe-buffer": "^5.1.2",
"yallist": "^3.0.0"
@ -7324,6 +7393,7 @@
"version": "0.5.1",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"minimist": "0.0.8"
}
@ -7404,7 +7474,8 @@
"number-is-nan": {
"version": "1.0.1",
"bundled": true,
"dev": true
"dev": true,
"optional": true
},
"object-assign": {
"version": "4.1.1",
@ -7416,6 +7487,7 @@
"version": "1.4.0",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"wrappy": "1"
}
@ -7501,7 +7573,8 @@
"safe-buffer": {
"version": "5.1.2",
"bundled": true,
"dev": true
"dev": true,
"optional": true
},
"safer-buffer": {
"version": "2.1.2",
@ -7537,6 +7610,7 @@
"version": "1.0.2",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"code-point-at": "^1.0.0",
"is-fullwidth-code-point": "^1.0.0",
@ -7556,6 +7630,7 @@
"version": "3.0.1",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"ansi-regex": "^2.0.0"
}
@ -7599,12 +7674,14 @@
"wrappy": {
"version": "1.0.2",
"bundled": true,
"dev": true
"dev": true,
"optional": true
},
"yallist": {
"version": "3.0.3",
"bundled": true,
"dev": true
"dev": true,
"optional": true
}
}
},

View File

@ -36,6 +36,7 @@
"enzyme-to-json": "^3.3.5",
"eslint": "^5.6.0",
"eslint-config-airbnb": "^17.1.0",
"eslint-import-resolver-webpack": "0.11.1",
"eslint-plugin-import": "^2.14.0",
"eslint-plugin-jsx-a11y": "^6.1.1",
"eslint-plugin-react": "^7.11.1",

View File

@ -11,14 +11,13 @@ import styled from 'styled-components';
import { t } from '@lingui/macro';
import { withI18n } from '@lingui/react';
import { ConfigAPI, MeAPI, RootAPI } from './api';
import { ConfigProvider } from './contexts/Config';
import About from './components/About';
import AlertModal from './components/AlertModal';
import NavExpandableGroup from './components/NavExpandableGroup';
import BrandLogo from './components/BrandLogo';
import PageHeaderToolbar from './components/PageHeaderToolbar';
import { ConfigAPI, MeAPI, RootAPI } from '@api';
import About from '@components/About';
import AlertModal from '@components/AlertModal';
import NavExpandableGroup from '@components/NavExpandableGroup';
import BrandLogo from '@components/BrandLogo';
import PageHeaderToolbar from '@components/PageHeaderToolbar';
import { ConfigProvider } from '@contexts/Config';
const PageHeader = styled(PFPageHeader)`
& .pf-c-page__header-brand-link {

View File

@ -13,36 +13,35 @@ import { t } from '@lingui/macro';
import '@patternfly/react-core/dist/styles/base.css';
import './app.scss';
import Background from './components/Background';
import { isAuthenticated } from '@util/auth';
import Background from '@components/Background';
import Applications from '@screens/Application';
import Credentials from '@screens/Credential';
import CredentialTypes from '@screens/CredentialType';
import Dashboard from '@screens/Dashboard';
import InstanceGroups from '@screens/InstanceGroup';
import Inventories from '@screens/Inventory';
import InventoryScripts from '@screens/InventoryScript';
import { Jobs } from '@screens/Job';
import Login from '@screens/Login';
import ManagementJobs from '@screens/ManagementJob';
import NotificationTemplates from '@screens/NotificationTemplate';
import Organizations from '@screens/Organization';
import Portal from '@screens/Portal';
import Projects from '@screens/Project';
import Schedules from '@screens/Schedule';
import AuthSettings from '@screens/AuthSetting';
import JobsSettings from '@screens/JobsSetting';
import SystemSettings from '@screens/SystemSetting';
import UISettings from '@screens/UISetting';
import License from '@screens/License';
import Teams from '@screens/Team';
import Templates from '@screens/Template';
import Users from '@screens/User';
import RootProvider from './RootProvider';
import App from './App';
import RootProvider from './RootProvider';
import { BrandName } from './variables';
import { isAuthenticated } from './util/auth';
import Applications from './screens/Application';
import Credentials from './screens/Credential';
import CredentialTypes from './screens/CredentialType';
import Dashboard from './screens/Dashboard';
import InstanceGroups from './screens/InstanceGroup';
import Inventories from './screens/Inventory';
import InventoryScripts from './screens/InventoryScript';
import { Jobs } from './screens/Job';
import Login from './screens/Login';
import ManagementJobs from './screens/ManagementJob';
import NotificationTemplates from './screens/NotificationTemplate';
import Organizations from './screens/Organization';
import Portal from './screens/Portal';
import Projects from './screens/Project';
import Schedules from './screens/Schedule';
import AuthSettings from './screens/AuthSetting';
import JobsSettings from './screens/JobsSetting';
import SystemSettings from './screens/SystemSetting';
import UISettings from './screens/UISetting';
import License from './screens/License';
import Teams from './screens/Team';
import Templates from './screens/Template';
import Users from './screens/User';
// eslint-disable-next-line import/prefer-default-export
export function main (render) {

View File

@ -4,10 +4,12 @@ import { withI18n } from '@lingui/react';
import { t } from '@lingui/macro';
import styled from 'styled-components';
import { Card, CardHeader as PFCardHeader, PageSection } from '@patternfly/react-core';
import { JobsAPI } from '../../api';
import ContentError from '../../components/ContentError';
import CardCloseButton from '../../components/CardCloseButton';
import RoutedTabs from '../../components/RoutedTabs';
import { JobsAPI } from '@api';
import ContentError from '@components/ContentError';
import CardCloseButton from '@components/CardCloseButton';
import RoutedTabs from '@components/RoutedTabs';
import JobDetail from './JobDetail';
import JobOutput from './JobOutput';

View File

@ -1,5 +1,7 @@
import React from 'react';
import { mountWithContexts } from '../../../testUtils/enzymeHelpers';
import { mountWithContexts } from '@testUtils/enzymeHelpers';
import Job from './Jobs';
describe('<Job />', () => {

View File

@ -1,5 +1,7 @@
import React from 'react';
import { mountWithContexts } from '../../../../testUtils/enzymeHelpers';
import { mountWithContexts } from '@testUtils/enzymeHelpers';
import JobDetail from './JobDetail';
describe('<JobDetail />', () => {

View File

@ -1,5 +1,7 @@
import React from 'react';
import { mountWithContexts } from '../../../../testUtils/enzymeHelpers';
import { mountWithContexts } from '@testUtils/enzymeHelpers';
import JobOutput from './JobOutput';
describe('<JobOutput />', () => {

View File

@ -2,7 +2,9 @@ import React, { Component, Fragment } from 'react';
import { Route, withRouter, Switch } from 'react-router-dom';
import { withI18n } from '@lingui/react';
import { t } from '@lingui/macro';
import Breadcrumbs from '../../components/Breadcrumbs/Breadcrumbs';
import Breadcrumbs from '@components/Breadcrumbs/Breadcrumbs';
import { Job } from '.';
class Jobs extends Component {

View File

@ -1,6 +1,8 @@
import React from 'react';
import { createMemoryHistory } from 'history';
import { mountWithContexts } from '../../../testUtils/enzymeHelpers';
import { mountWithContexts } from '@testUtils/enzymeHelpers';
import Jobs from './Jobs';
describe('<Jobs />', () => {

View File

@ -4,17 +4,18 @@ import { t } from '@lingui/macro';
import { Switch, Route, withRouter, Redirect } from 'react-router-dom';
import { Card, CardHeader as PFCardHeader, PageSection } from '@patternfly/react-core';
import styled from 'styled-components';
import CardCloseButton from '../../components/CardCloseButton';
import ContentError from '../../components/ContentError';
import RoutedTabs from '../../components/RoutedTabs';
import { OrganizationsAPI } from '@api';
import CardCloseButton from '@components/CardCloseButton';
import ContentError from '@components/ContentError';
import RoutedTabs from '@components/RoutedTabs';
import { OrganizationAccess } from './OrganizationAccess';
import OrganizationDetail from './OrganizationDetail';
import OrganizationEdit from './OrganizationEdit';
import OrganizationNotifications from './OrganizationNotifications';
import OrganizationTeams from './OrganizationTeams';
import { OrganizationsAPI } from '../../api';
class Organization extends Component {
constructor (props) {
super(props);

View File

@ -1,9 +1,11 @@
import React from 'react';
import { mountWithContexts, waitForElement } from '../../../testUtils/enzymeHelpers';
import Organization from './Organization';
import { OrganizationsAPI } from '../../api';
jest.mock('../../api');
import { OrganizationsAPI } from '@api';
import { mountWithContexts, waitForElement } from '@testUtils/enzymeHelpers';
import Organization from './Organization';
jest.mock('@api');
const mockMe = {
is_super_user: true,

View File

@ -3,8 +3,9 @@ import { func, string } from 'prop-types';
import { Button } from '@patternfly/react-core';
import { withI18n } from '@lingui/react';
import { t } from '@lingui/macro';
import AlertModal from '../../../components/AlertModal';
import { Role } from '../../../types';
import AlertModal from '@components/AlertModal';
import { Role } from '@types';
class DeleteRoleConfirmationModal extends React.Component {
static propTypes = {

View File

@ -1,5 +1,7 @@
import React from 'react';
import { mountWithContexts } from '../../../../testUtils/enzymeHelpers';
import { mountWithContexts } from '@testUtils/enzymeHelpers';
import DeleteRoleConfirmationModal from './DeleteRoleConfirmationModal';
const role = {

View File

@ -2,19 +2,21 @@ import React, { Fragment } from 'react';
import { withRouter } from 'react-router-dom';
import { withI18n } from '@lingui/react';
import { t } from '@lingui/macro';
import AlertModal from '../../../components/AlertModal';
import PaginatedDataList, { ToolbarAddButton } from '../../../components/PaginatedDataList';
import DataListToolbar from '../../../components/DataListToolbar';
import OrganizationAccessItem from './OrganizationAccessItem';
import DeleteRoleConfirmationModal from './DeleteRoleConfirmationModal';
import AddResourceRole from '../../../components/AddRole/AddResourceRole';
import { OrganizationsAPI, TeamsAPI, UsersAPI } from '@api';
import AddResourceRole from '@components/AddRole/AddResourceRole';
import AlertModal from '@components/AlertModal';
import DataListToolbar from '@components/DataListToolbar';
import PaginatedDataList, { ToolbarAddButton } from '@components/PaginatedDataList';
import {
getQSConfig,
encodeQueryString,
parseNamespacedQueryString
} from '../../../util/qs';
import { Organization } from '../../../types';
import { OrganizationsAPI, TeamsAPI, UsersAPI } from '../../../api';
} from '@util/qs';
import { Organization } from '@types';
import DeleteRoleConfirmationModal from './DeleteRoleConfirmationModal';
import OrganizationAccessItem from './OrganizationAccessItem';
const QS_CONFIG = getQSConfig('access', {
page: 1,

View File

@ -1,10 +1,13 @@
import React from 'react';
import { mountWithContexts, waitForElement } from '../../../../testUtils/enzymeHelpers';
import OrganizationAccess from './OrganizationAccess';
import { sleep } from '../../../../testUtils/testUtils';
import { OrganizationsAPI, TeamsAPI, UsersAPI } from '../../../api';
jest.mock('../../../api');
import { sleep } from '@testUtils/testUtils';
import { mountWithContexts, waitForElement } from '@testUtils/enzymeHelpers';
import { OrganizationsAPI, TeamsAPI, UsersAPI } from '@api';
import OrganizationAccess from './OrganizationAccess';
jest.mock('@api');
describe('<OrganizationAccess />', () => {
const organization = {

View File

@ -13,9 +13,10 @@ import {
} from '@patternfly/react-core';
import { Link } from 'react-router-dom';
import styled from 'styled-components';
import { AccessRecord } from '../../../types';
import { DetailList, Detail } from '../../../components/DetailList';
import { ChipGroup, Chip } from '../../../components/Chip';
import { ChipGroup, Chip } from '@components/Chip';
import { DetailList, Detail } from '@components/DetailList';
import { AccessRecord } from '@types';
const DataListItemCells = styled(PFDataListItemCells)`
align-items: start;

View File

@ -1,5 +1,7 @@
import React from 'react';
import { mountWithContexts } from '../../../../testUtils/enzymeHelpers';
import { mountWithContexts } from '@testUtils/enzymeHelpers';
import OrganizationAccessItem from './OrganizationAccessItem';
const accessRecord = {

View File

@ -11,10 +11,11 @@ import {
Tooltip,
} from '@patternfly/react-core';
import { Config } from '../../../contexts/Config';
import CardCloseButton from '../../../components/CardCloseButton';
import { OrganizationsAPI } from '@api';
import { Config } from '@contexts/Config';
import CardCloseButton from '@components/CardCloseButton';
import OrganizationForm from '../shared/OrganizationForm';
import { OrganizationsAPI } from '../../../api';
class OrganizationAdd extends React.Component {
constructor (props) {

View File

@ -5,11 +5,11 @@ import { t } from '@lingui/macro';
import { CardBody as PFCardBody, Button } from '@patternfly/react-core';
import styled from 'styled-components';
import { DetailList, Detail } from '../../../components/DetailList';
import { ChipGroup, Chip } from '../../../components/Chip';
import ContentError from '../../../components/ContentError';
import ContentLoading from '../../../components/ContentLoading';
import { OrganizationsAPI } from '../../../api';
import { OrganizationsAPI } from '@api';
import { DetailList, Detail } from '@components/DetailList';
import { ChipGroup, Chip } from '@components/Chip';
import ContentError from '@components/ContentError';
import ContentLoading from '@components/ContentLoading';
const CardBody = styled(PFCardBody)`
padding-top: 20px;

View File

@ -1,9 +1,11 @@
import React from 'react';
import { mountWithContexts, waitForElement } from '../../../../testUtils/enzymeHelpers';
import OrganizationDetail from './OrganizationDetail';
import { OrganizationsAPI } from '../../../api';
jest.mock('../../../api');
import { OrganizationsAPI } from '@api';
import { mountWithContexts, waitForElement } from '@testUtils/enzymeHelpers';
import OrganizationDetail from './OrganizationDetail';
jest.mock('@api');
describe('<OrganizationDetail />', () => {
const mockOrganization = {

View File

@ -2,10 +2,11 @@ import React, { Component } from 'react';
import PropTypes from 'prop-types';
import { withRouter } from 'react-router-dom';
import { CardBody } from '@patternfly/react-core';
import OrganizationForm from '../shared/OrganizationForm';
import { Config } from '../../../contexts/Config';
import { OrganizationsAPI } from '../../../api';
import { OrganizationsAPI } from '@api';
import { Config } from '@contexts/Config';
import OrganizationForm from '../shared/OrganizationForm';
class OrganizationEdit extends Component {
constructor (props) {

View File

@ -1,11 +1,11 @@
import React from 'react';
import { mountWithContexts } from '../../../../testUtils/enzymeHelpers';
import { OrganizationsAPI } from '@api';
import { mountWithContexts } from '@testUtils/enzymeHelpers';
import OrganizationEdit from './OrganizationEdit';
import { OrganizationsAPI } from '../../../api';
jest.mock('../../../api');
jest.mock('@api');
const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms));

View File

@ -8,15 +8,16 @@ import {
PageSectionVariants,
} from '@patternfly/react-core';
import { OrganizationsAPI } from '@api';
import AlertModal from '@components/AlertModal';
import DataListToolbar from '@components/DataListToolbar';
import PaginatedDataList, {
ToolbarAddButton,
ToolbarDeleteButton,
ToolbarAddButton
} from '../../../components/PaginatedDataList';
import DataListToolbar from '../../../components/DataListToolbar';
} from '@components/PaginatedDataList';
import { getQSConfig, parseNamespacedQueryString } from '@util/qs';
import OrganizationListItem from './OrganizationListItem';
import AlertModal from '../../../components/AlertModal';
import { getQSConfig, parseNamespacedQueryString } from '../../../util/qs';
import { OrganizationsAPI } from '../../../api';
const QS_CONFIG = getQSConfig('organization', {
page: 1,

View File

@ -1,9 +1,10 @@
import React from 'react';
import { mountWithContexts, waitForElement } from '../../../../testUtils/enzymeHelpers';
import OrganizationsList, { _OrganizationsList } from './OrganizationList';
import { OrganizationsAPI } from '../../../api';
import { OrganizationsAPI } from '@api';
import { mountWithContexts, waitForElement } from '@testUtils/enzymeHelpers';
jest.mock('../../../api');
import OrganizationsList, { _OrganizationsList } from './OrganizationList';
jest.mock('@api');
const mockAPIOrgsList = {
data: {

View File

@ -13,11 +13,10 @@ import {
import {
Link
} from 'react-router-dom';
import styled from 'styled-components';
import VerticalSeparator from '../../../components/VerticalSeparator';
import { Organization } from '../../../types';
import VerticalSeparator from '@components/VerticalSeparator';
import { Organization } from '@types';
const Badge = styled(PFBadge)`
align-items: center;

View File

@ -1,7 +1,9 @@
import React from 'react';
import { MemoryRouter } from 'react-router-dom';
import { I18nProvider } from '@lingui/react';
import { mountWithContexts } from '../../../../testUtils/enzymeHelpers';
import { mountWithContexts } from '@testUtils/enzymeHelpers';
import OrganizationListItem from './OrganizationListItem';
describe('<OrganizationListItem />', () => {

View File

@ -4,11 +4,11 @@ import { withRouter } from 'react-router-dom';
import { withI18n } from '@lingui/react';
import { t } from '@lingui/macro';
import AlertModal from '../../../components/AlertModal';
import PaginatedDataList from '../../../components/PaginatedDataList';
import NotificationListItem from '../../../components/NotificationsList/NotificationListItem';
import { getQSConfig, parseNamespacedQueryString } from '../../../util/qs';
import { OrganizationsAPI } from '../../../api';
import { OrganizationsAPI } from '@api';
import AlertModal from '@components/AlertModal';
import NotificationListItem from '@components/NotificationsList/NotificationListItem';
import PaginatedDataList from '@components/PaginatedDataList';
import { getQSConfig, parseNamespacedQueryString } from '@util/qs';
const QS_CONFIG = getQSConfig('notification', {
page: 1,

View File

@ -1,10 +1,11 @@
import React from 'react';
import { mountWithContexts } from '../../../../testUtils/enzymeHelpers';
import OrganizationNotifications from './OrganizationNotifications';
import { sleep } from '../../../../testUtils/testUtils';
import { OrganizationsAPI } from '../../../api';
import { OrganizationsAPI } from '@api';
import { mountWithContexts } from '@testUtils/enzymeHelpers';
import { sleep } from '@testUtils/testUtils';
jest.mock('../../../api');
import OrganizationNotifications from './OrganizationNotifications';
jest.mock('@api');
describe('<OrganizationNotifications />', () => {
let data;

View File

@ -410,9 +410,9 @@ exports[`<OrganizationNotifications /> initially renders succesfully 1`] = `
"$$typeof": Symbol(react.forward_ref),
"attrs": Array [],
"componentStyle": ComponentStyle {
"componentId": "sc-bwzfXH",
"componentId": "sc-bxivhb",
"isStatic": true,
"lastClassName": "iBEPfq",
"lastClassName": "gYEJOJ",
"rules": Array [
"flex-grow: 1;",
],
@ -420,7 +420,7 @@ exports[`<OrganizationNotifications /> initially renders succesfully 1`] = `
"displayName": "Styled(ToolbarItem)",
"foldedComponentIds": Array [],
"render": [Function],
"styledComponentId": "sc-bwzfXH",
"styledComponentId": "sc-bxivhb",
"target": [Function],
"toString": [Function],
"warnTooManyClasses": [Function],
@ -430,10 +430,10 @@ exports[`<OrganizationNotifications /> initially renders succesfully 1`] = `
forwardedRef={null}
>
<ToolbarItem
className="sc-bwzfXH iBEPfq"
className="sc-bxivhb gYEJOJ"
>
<div
className="pf-l-toolbar__item sc-bwzfXH iBEPfq"
className="pf-l-toolbar__item sc-bxivhb gYEJOJ"
>
<WithI18n
columns={
@ -1441,9 +1441,9 @@ exports[`<OrganizationNotifications /> initially renders succesfully 1`] = `
"$$typeof": Symbol(react.forward_ref),
"attrs": Array [],
"componentStyle": ComponentStyle {
"componentId": "sc-bdVaJa",
"componentId": "sc-htpNat",
"isStatic": true,
"lastClassName": "delFyH",
"lastClassName": "jWbbwS",
"rules": Array [
"padding: 0;",
],
@ -1451,7 +1451,7 @@ exports[`<OrganizationNotifications /> initially renders succesfully 1`] = `
"displayName": "Styled(Button)",
"foldedComponentIds": Array [],
"render": [Function],
"styledComponentId": "sc-bdVaJa",
"styledComponentId": "sc-htpNat",
"target": [Function],
"toString": [Function],
"warnTooManyClasses": [Function],
@ -1464,7 +1464,7 @@ exports[`<OrganizationNotifications /> initially renders succesfully 1`] = `
>
<Button
aria-label="Sort"
className="sc-bdVaJa delFyH"
className="sc-htpNat jWbbwS"
component="button"
isActive={false}
isBlock={false}
@ -1479,7 +1479,7 @@ exports[`<OrganizationNotifications /> initially renders succesfully 1`] = `
<button
aria-disabled={null}
aria-label="Sort"
className="pf-c-button pf-m-plain sc-bdVaJa delFyH"
className="pf-c-button pf-m-plain sc-htpNat jWbbwS"
disabled={false}
onClick={[Function]}
tabIndex={null}
@ -1767,9 +1767,9 @@ exports[`<OrganizationNotifications /> initially renders succesfully 1`] = `
"$$typeof": Symbol(react.forward_ref),
"attrs": Array [],
"componentStyle": ComponentStyle {
"componentId": "sc-bxivhb",
"componentId": "sc-bdVaJa",
"isStatic": true,
"lastClassName": "lohjuH",
"lastClassName": "eBseNd",
"rules": Array [
"margin-right: 1.5em;",
],
@ -1777,7 +1777,7 @@ exports[`<OrganizationNotifications /> initially renders succesfully 1`] = `
"displayName": "Styled(Link)",
"foldedComponentIds": Array [],
"render": [Function],
"styledComponentId": "sc-bxivhb",
"styledComponentId": "sc-bdVaJa",
"target": [Function],
"toString": [Function],
"warnTooManyClasses": [Function],
@ -1792,7 +1792,7 @@ exports[`<OrganizationNotifications /> initially renders succesfully 1`] = `
}
>
<Link
className="sc-bxivhb lohjuH"
className="sc-bdVaJa eBseNd"
replace={false}
to={
Object {
@ -1801,7 +1801,7 @@ exports[`<OrganizationNotifications /> initially renders succesfully 1`] = `
}
>
<a
className="sc-bxivhb lohjuH"
className="sc-bdVaJa eBseNd"
onClick={[Function]}
>
<b
@ -1822,9 +1822,9 @@ exports[`<OrganizationNotifications /> initially renders succesfully 1`] = `
"$$typeof": Symbol(react.forward_ref),
"attrs": Array [],
"componentStyle": ComponentStyle {
"componentId": "sc-ifAKCX",
"componentId": "sc-bwzfXH",
"isStatic": true,
"lastClassName": "jGZNNo",
"lastClassName": "chTbOZ",
"rules": Array [
"text-transform: capitalize;",
],
@ -1832,7 +1832,7 @@ exports[`<OrganizationNotifications /> initially renders succesfully 1`] = `
"displayName": "Styled(Badge)",
"foldedComponentIds": Array [],
"render": [Function],
"styledComponentId": "sc-ifAKCX",
"styledComponentId": "sc-bwzfXH",
"target": [Function],
"toString": [Function],
"warnTooManyClasses": [Function],
@ -1843,11 +1843,11 @@ exports[`<OrganizationNotifications /> initially renders succesfully 1`] = `
isRead={true}
>
<Badge
className="sc-ifAKCX jGZNNo"
className="sc-bwzfXH chTbOZ"
isRead={true}
>
<span
className="pf-c-badge pf-m-read sc-ifAKCX jGZNNo"
className="pf-c-badge pf-m-read sc-bwzfXH chTbOZ"
>
email
</span>
@ -2242,9 +2242,9 @@ exports[`<OrganizationNotifications /> initially renders succesfully 1`] = `
"$$typeof": Symbol(react.forward_ref),
"attrs": Array [],
"componentStyle": ComponentStyle {
"componentId": "sc-bxivhb",
"componentId": "sc-bdVaJa",
"isStatic": true,
"lastClassName": "lohjuH",
"lastClassName": "eBseNd",
"rules": Array [
"margin-right: 1.5em;",
],
@ -2252,7 +2252,7 @@ exports[`<OrganizationNotifications /> initially renders succesfully 1`] = `
"displayName": "Styled(Link)",
"foldedComponentIds": Array [],
"render": [Function],
"styledComponentId": "sc-bxivhb",
"styledComponentId": "sc-bdVaJa",
"target": [Function],
"toString": [Function],
"warnTooManyClasses": [Function],
@ -2267,7 +2267,7 @@ exports[`<OrganizationNotifications /> initially renders succesfully 1`] = `
}
>
<Link
className="sc-bxivhb lohjuH"
className="sc-bdVaJa eBseNd"
replace={false}
to={
Object {
@ -2276,7 +2276,7 @@ exports[`<OrganizationNotifications /> initially renders succesfully 1`] = `
}
>
<a
className="sc-bxivhb lohjuH"
className="sc-bdVaJa eBseNd"
onClick={[Function]}
>
<b
@ -2297,9 +2297,9 @@ exports[`<OrganizationNotifications /> initially renders succesfully 1`] = `
"$$typeof": Symbol(react.forward_ref),
"attrs": Array [],
"componentStyle": ComponentStyle {
"componentId": "sc-ifAKCX",
"componentId": "sc-bwzfXH",
"isStatic": true,
"lastClassName": "jGZNNo",
"lastClassName": "chTbOZ",
"rules": Array [
"text-transform: capitalize;",
],
@ -2307,7 +2307,7 @@ exports[`<OrganizationNotifications /> initially renders succesfully 1`] = `
"displayName": "Styled(Badge)",
"foldedComponentIds": Array [],
"render": [Function],
"styledComponentId": "sc-ifAKCX",
"styledComponentId": "sc-bwzfXH",
"target": [Function],
"toString": [Function],
"warnTooManyClasses": [Function],
@ -2318,11 +2318,11 @@ exports[`<OrganizationNotifications /> initially renders succesfully 1`] = `
isRead={true}
>
<Badge
className="sc-ifAKCX jGZNNo"
className="sc-bwzfXH chTbOZ"
isRead={true}
>
<span
className="pf-c-badge pf-m-read sc-ifAKCX jGZNNo"
className="pf-c-badge pf-m-read sc-bwzfXH chTbOZ"
>
email
</span>

View File

@ -1,9 +1,10 @@
import React from 'react';
import PropTypes from 'prop-types';
import { withRouter } from 'react-router-dom';
import PaginatedDataList from '../../../components/PaginatedDataList';
import { getQSConfig, parseNamespacedQueryString } from '../../../util/qs';
import { OrganizationsAPI } from '../../../api';
import { OrganizationsAPI } from '@api';
import PaginatedDataList from '@components/PaginatedDataList';
import { getQSConfig, parseNamespacedQueryString } from '@util/qs';
const QS_CONFIG = getQSConfig('team', {
page: 1,

View File

@ -1,11 +1,13 @@
import React from 'react';
import { shallow } from 'enzyme';
import { mountWithContexts } from '../../../../testUtils/enzymeHelpers';
import { sleep } from '../../../../testUtils/testUtils';
import OrganizationTeams from './OrganizationTeams';
import { OrganizationsAPI } from '../../../api';
jest.mock('../../../api');
import { OrganizationsAPI } from '@api';
import { mountWithContexts } from '@testUtils/enzymeHelpers';
import { sleep } from '@testUtils/testUtils';
import OrganizationTeams from './OrganizationTeams';
jest.mock('@api');
const listData = {
data: {

View File

@ -3,8 +3,8 @@ import { Route, withRouter, Switch } from 'react-router-dom';
import { withI18n } from '@lingui/react';
import { t } from '@lingui/macro';
import { Config } from '../../contexts/Config';
import Breadcrumbs from '../../components/Breadcrumbs/Breadcrumbs';
import { Config } from '@contexts/Config';
import Breadcrumbs from '@components/Breadcrumbs/Breadcrumbs';
import OrganizationsList from './OrganizationList/OrganizationList';
import OrganizationAdd from './OrganizationAdd/OrganizationAdd';

View File

@ -1,8 +1,8 @@
import React from 'react';
import { mountWithContexts } from '../../../testUtils/enzymeHelpers';
import { mountWithContexts } from '@testUtils/enzymeHelpers';
import Organizations from './Organizations';
jest.mock('../../../src/api');
jest.mock('@api');
describe('<Organizations />', () => {
test('initially renders succesfully', () => {

View File

@ -5,9 +5,8 @@ import { t } from '@lingui/macro';
import { FormGroup, Tooltip } from '@patternfly/react-core';
import { QuestionCircleIcon } from '@patternfly/react-icons';
import Lookup from '../../../components/Lookup';
import { InstanceGroupsAPI } from '../../../api';
import { InstanceGroupsAPI } from '@api';
import Lookup from '@components/Lookup';
const getInstanceGroups = async (params) => InstanceGroupsAPI.read(params);

View File

@ -13,14 +13,15 @@ import {
FormGroup,
} from '@patternfly/react-core';
import { Config } from '../../../contexts/Config';
import FormRow from '../../../components/FormRow';
import FormField from '../../../components/FormField';
import FormActionGroup from '../../../components/FormActionGroup/FormActionGroup';
import AnsibleSelect from '../../../components/AnsibleSelect';
import { OrganizationsAPI } from '@api';
import { Config } from '@contexts/Config';
import FormRow from '@components/FormRow';
import FormField from '@components/FormField';
import FormActionGroup from '@components/FormActionGroup/FormActionGroup';
import AnsibleSelect from '@components/AnsibleSelect';
import { required, minMaxValue } from '@util/validators';
import InstanceGroupsLookup from './InstanceGroupsLookup';
import { OrganizationsAPI } from '../../../api';
import { required, minMaxValue } from '../../../util/validators';
class OrganizationForm extends Component {
constructor (props) {

View File

@ -1,10 +1,12 @@
import React from 'react';
import { mountWithContexts } from '../../../../testUtils/enzymeHelpers';
import { sleep } from '../../../../testUtils/testUtils';
import OrganizationForm from './OrganizationForm';
import { OrganizationsAPI } from '../../../api';
jest.mock('../../../api');
import { mountWithContexts } from '@testUtils/enzymeHelpers';
import { sleep } from '@testUtils/testUtils';
import { OrganizationsAPI } from '@api';
import OrganizationForm from './OrganizationForm';
jest.mock('@api');
describe('<OrganizationForm />', () => {
const network = {};

View File

@ -7,14 +7,19 @@ import {
PageSection,
PageSectionVariants,
} from '@patternfly/react-core';
import { JobTemplatesAPI, UnifiedJobTemplatesAPI, WorkflowJobTemplatesAPI } from '../../../api';
import { getQSConfig, parseNamespacedQueryString } from '../../../util/qs';
import AlertModal from '../../../components/AlertModal';
import DatalistToolbar from '../../../components/DataListToolbar';
import {
JobTemplatesAPI,
UnifiedJobTemplatesAPI,
WorkflowJobTemplatesAPI
} from '@api';
import AlertModal from '@components/AlertModal';
import DatalistToolbar from '@components/DataListToolbar';
import PaginatedDataList, {
ToolbarDeleteButton
} from '../../../components/PaginatedDataList';
} from '@components/PaginatedDataList';
import { getQSConfig, parseNamespacedQueryString } from '@util/qs';
import TemplateListItem from './TemplateListItem';
// The type value in const QS_CONFIG below does not have a space between job_template and

View File

@ -9,8 +9,8 @@ import {
} from '@patternfly/react-core';
import styled from 'styled-components';
import { toTitleCase } from '../../../util/strings';
import VerticalSeparator from '../../../components/VerticalSeparator';
import VerticalSeparator from '@components/VerticalSeparator';
import { toTitleCase } from '@util/strings';
const DataListCell = styled(PFDataListCell)`
display: flex;

View File

@ -1,9 +1,14 @@
import React from 'react';
import { mountWithContexts, waitForElement } from '../../../../testUtils/enzymeHelpers';
import TemplatesList, { _TemplatesList } from './TemplateList';
import { JobTemplatesAPI, UnifiedJobTemplatesAPI, WorkflowJobTemplatesAPI } from '../../../api';
import {
JobTemplatesAPI,
UnifiedJobTemplatesAPI,
WorkflowJobTemplatesAPI
} from '@api';
import { mountWithContexts, waitForElement } from '@testUtils/enzymeHelpers';
jest.mock('../../../api');
import TemplatesList, { _TemplatesList } from './TemplateList';
jest.mock('@api');
const mockTemplates = [{
id: 1,

View File

@ -1,5 +1,7 @@
import React from 'react';
import { mountWithContexts } from '../../../../testUtils/enzymeHelpers';
import { mountWithContexts } from '@testUtils/enzymeHelpers';
import TemplatesListItem from './TemplateListItem';
describe('<TemplatesListItem />', () => {

View File

@ -3,7 +3,8 @@ import { withI18n } from '@lingui/react';
import { t } from '@lingui/macro';
import { Route, withRouter, Switch } from 'react-router-dom';
import Breadcrumbs from '../../components/Breadcrumbs/Breadcrumbs';
import Breadcrumbs from '@components/Breadcrumbs/Breadcrumbs';
import { TemplateList } from './TemplateList';
class Templates extends Component {

View File

@ -1,6 +1,8 @@
import React from 'react';
import { mountWithContexts } from '@testUtils/enzymeHelpers';
import Templates from './Templates';
import { mountWithContexts } from '../../../testUtils/enzymeHelpers';
describe('<Templates />', () => {
let pageWrapper;

View File

@ -5,6 +5,9 @@ const TARGET_PORT = process.env.TARGET_PORT || 8043;
const TARGET_HOST = process.env.TARGET_HOST || 'localhost';
const TARGET = `https://${TARGET_HOST}:${TARGET_PORT}`;
const ROOT_PATH = __dirname;
const SRC_PATH = path.join(ROOT_PATH, 'src');
module.exports = {
entry: './src/index.jsx',
module: {
@ -53,7 +56,16 @@ module.exports = {
]
},
resolve: {
extensions: ['*', '.js', '.jsx', '.css']
extensions: ['*', '.js', '.jsx', '.css'],
alias: {
'@api': path.join(SRC_PATH, 'api'),
'@components': path.join(SRC_PATH, 'components'),
'@contexts': path.join(SRC_PATH, 'contexts'),
'@screens': path.join(SRC_PATH, 'screens'),
'@types': path.join(SRC_PATH, 'types'),
'@util': path.join(SRC_PATH, 'util'),
'@testUtils': path.join(ROOT_PATH, 'testUtils'),
}
},
output: {
path: path.resolve(__dirname, '/dist'),