', () => {
test('handleSubmit should post to api', () => {
diff --git a/src/screens/Organization/OrganizationAdd/index.js b/src/screens/Organization/OrganizationAdd/index.js
new file mode 100644
index 0000000000..c9780003b1
--- /dev/null
+++ b/src/screens/Organization/OrganizationAdd/index.js
@@ -0,0 +1 @@
+export { default } from './OrganizationAdd';
diff --git a/src/pages/Organizations/screens/Organization/OrganizationDetail.jsx b/src/screens/Organization/OrganizationDetail/OrganizationDetail.jsx
similarity index 90%
rename from src/pages/Organizations/screens/Organization/OrganizationDetail.jsx
rename to src/screens/Organization/OrganizationDetail/OrganizationDetail.jsx
index 34e44af61c..e233c79f48 100644
--- a/src/pages/Organizations/screens/Organization/OrganizationDetail.jsx
+++ b/src/screens/Organization/OrganizationDetail/OrganizationDetail.jsx
@@ -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 { 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';
const CardBody = styled(PFCardBody)`
padding-top: 20px;
diff --git a/__tests__/pages/Organizations/screens/Organization/OrganizationDetail.test.jsx b/src/screens/Organization/OrganizationDetail/OrganizationDetail.test.jsx
similarity index 91%
rename from __tests__/pages/Organizations/screens/Organization/OrganizationDetail.test.jsx
rename to src/screens/Organization/OrganizationDetail/OrganizationDetail.test.jsx
index 6e9f675388..7e86cae6c0 100644
--- a/__tests__/pages/Organizations/screens/Organization/OrganizationDetail.test.jsx
+++ b/src/screens/Organization/OrganizationDetail/OrganizationDetail.test.jsx
@@ -1,9 +1,9 @@
import React from 'react';
-import { mountWithContexts, waitForElement } from '../../../../enzymeHelpers';
-import OrganizationDetail from '../../../../../src/pages/Organizations/screens/Organization/OrganizationDetail';
-import { OrganizationsAPI } from '../../../../../src/api';
+import { mountWithContexts, waitForElement } from '../../../../testUtils/enzymeHelpers';
+import OrganizationDetail from './OrganizationDetail';
+import { OrganizationsAPI } from '../../../api';
-jest.mock('../../../../../src/api');
+jest.mock('../../../api');
describe('
', () => {
const mockOrganization = {
diff --git a/src/screens/Organization/OrganizationDetail/index.js b/src/screens/Organization/OrganizationDetail/index.js
new file mode 100644
index 0000000000..4316ac7347
--- /dev/null
+++ b/src/screens/Organization/OrganizationDetail/index.js
@@ -0,0 +1 @@
+export { default } from './OrganizationDetail';
diff --git a/src/pages/Organizations/screens/Organization/OrganizationEdit.jsx b/src/screens/Organization/OrganizationEdit/OrganizationEdit.jsx
similarity index 93%
rename from src/pages/Organizations/screens/Organization/OrganizationEdit.jsx
rename to src/screens/Organization/OrganizationEdit/OrganizationEdit.jsx
index 258b052c79..aa6bba7f88 100644
--- a/src/pages/Organizations/screens/Organization/OrganizationEdit.jsx
+++ b/src/screens/Organization/OrganizationEdit/OrganizationEdit.jsx
@@ -2,10 +2,10 @@ 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 '../../components/OrganizationForm';
-import { Config } from '../../../../contexts/Config';
+import OrganizationForm from '../shared/OrganizationForm';
+import { Config } from '../../../contexts/Config';
-import { OrganizationsAPI } from '../../../../api';
+import { OrganizationsAPI } from '../../../api';
class OrganizationEdit extends Component {
constructor (props) {
diff --git a/__tests__/pages/Organizations/screens/Organization/OrganizationEdit.test.jsx b/src/screens/Organization/OrganizationEdit/OrganizationEdit.test.jsx
similarity index 89%
rename from __tests__/pages/Organizations/screens/Organization/OrganizationEdit.test.jsx
rename to src/screens/Organization/OrganizationEdit/OrganizationEdit.test.jsx
index 25df2eed0a..30b26daac4 100644
--- a/__tests__/pages/Organizations/screens/Organization/OrganizationEdit.test.jsx
+++ b/src/screens/Organization/OrganizationEdit/OrganizationEdit.test.jsx
@@ -1,11 +1,11 @@
import React from 'react';
-import { mountWithContexts } from '../../../../enzymeHelpers';
+import { mountWithContexts } from '../../../../testUtils/enzymeHelpers';
-import OrganizationEdit from '../../../../../src/pages/Organizations/screens/Organization/OrganizationEdit';
+import OrganizationEdit from './OrganizationEdit';
-import { OrganizationsAPI } from '../../../../../src/api';
+import { OrganizationsAPI } from '../../../api';
-jest.mock('../../../../../src/api');
+jest.mock('../../../api');
const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms));
diff --git a/src/screens/Organization/OrganizationEdit/index.js b/src/screens/Organization/OrganizationEdit/index.js
new file mode 100644
index 0000000000..ffaea2be4a
--- /dev/null
+++ b/src/screens/Organization/OrganizationEdit/index.js
@@ -0,0 +1 @@
+export { default } from './OrganizationEdit';
diff --git a/src/pages/Organizations/screens/OrganizationsList.jsx b/src/screens/Organization/OrganizationList/OrganizationList.jsx
similarity index 98%
rename from src/pages/Organizations/screens/OrganizationsList.jsx
rename to src/screens/Organization/OrganizationList/OrganizationList.jsx
index c9ee097649..81f81fce8f 100644
--- a/src/pages/Organizations/screens/OrganizationsList.jsx
+++ b/src/screens/Organization/OrganizationList/OrganizationList.jsx
@@ -13,7 +13,7 @@ import PaginatedDataList, {
ToolbarAddButton
} from '../../../components/PaginatedDataList';
import DataListToolbar from '../../../components/DataListToolbar';
-import OrganizationListItem from '../components/OrganizationListItem';
+import OrganizationListItem from './OrganizationListItem';
import AlertModal from '../../../components/AlertModal';
import { getQSConfig, parseNamespacedQueryString } from '../../../util/qs';
import { OrganizationsAPI } from '../../../api';
diff --git a/__tests__/pages/Organizations/screens/OrganizationsList.test.jsx b/src/screens/Organization/OrganizationList/OrganizationList.test.jsx
similarity index 93%
rename from __tests__/pages/Organizations/screens/OrganizationsList.test.jsx
rename to src/screens/Organization/OrganizationList/OrganizationList.test.jsx
index cf0cbacfb9..54ef801e96 100644
--- a/__tests__/pages/Organizations/screens/OrganizationsList.test.jsx
+++ b/src/screens/Organization/OrganizationList/OrganizationList.test.jsx
@@ -1,9 +1,9 @@
import React from 'react';
-import { mountWithContexts, waitForElement } from '../../../enzymeHelpers';
-import OrganizationsList, { _OrganizationsList } from '../../../../src/pages/Organizations/screens/OrganizationsList';
-import { OrganizationsAPI } from '../../../../src/api';
+import { mountWithContexts, waitForElement } from '../../../../testUtils/enzymeHelpers';
+import OrganizationsList, { _OrganizationsList } from './OrganizationList';
+import { OrganizationsAPI } from '../../../api';
-jest.mock('../../../../src/api');
+jest.mock('../../../api');
const mockAPIOrgsList = {
data: {
diff --git a/src/pages/Organizations/components/OrganizationListItem.jsx b/src/screens/Organization/OrganizationList/OrganizationListItem.jsx
similarity index 100%
rename from src/pages/Organizations/components/OrganizationListItem.jsx
rename to src/screens/Organization/OrganizationList/OrganizationListItem.jsx
diff --git a/__tests__/pages/Organizations/components/OrganizationListItem.test.jsx b/src/screens/Organization/OrganizationList/OrganizationListItem.test.jsx
similarity index 82%
rename from __tests__/pages/Organizations/components/OrganizationListItem.test.jsx
rename to src/screens/Organization/OrganizationList/OrganizationListItem.test.jsx
index e82e1ae9dd..094263d584 100644
--- a/__tests__/pages/Organizations/components/OrganizationListItem.test.jsx
+++ b/src/screens/Organization/OrganizationList/OrganizationListItem.test.jsx
@@ -1,8 +1,8 @@
import React from 'react';
import { MemoryRouter } from 'react-router-dom';
import { I18nProvider } from '@lingui/react';
-import { mountWithContexts } from '../../../enzymeHelpers';
-import OrganizationListItem from '../../../../src/pages/Organizations/components/OrganizationListItem';
+import { mountWithContexts } from '../../../../testUtils/enzymeHelpers';
+import OrganizationListItem from './OrganizationListItem';
describe('
', () => {
test('initially renders succesfully', () => {
diff --git a/src/screens/Organization/OrganizationList/index.js b/src/screens/Organization/OrganizationList/index.js
new file mode 100644
index 0000000000..ef71f26138
--- /dev/null
+++ b/src/screens/Organization/OrganizationList/index.js
@@ -0,0 +1,2 @@
+export { default as OrganizationList } from './OrganizationList';
+export { default as OrganizationListItem } from './OrganizationListItem';
diff --git a/src/pages/Organizations/screens/Organization/OrganizationNotifications.jsx b/src/screens/Organization/OrganizationNotifications/OrganizationNotifications.jsx
similarity index 94%
rename from src/pages/Organizations/screens/Organization/OrganizationNotifications.jsx
rename to src/screens/Organization/OrganizationNotifications/OrganizationNotifications.jsx
index 54274d5f2e..d435c192f9 100644
--- a/src/pages/Organizations/screens/Organization/OrganizationNotifications.jsx
+++ b/src/screens/Organization/OrganizationNotifications/OrganizationNotifications.jsx
@@ -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 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';
const QS_CONFIG = getQSConfig('notification', {
page: 1,
diff --git a/__tests__/pages/Organizations/screens/Organization/OrganizationNotifications.test.jsx b/src/screens/Organization/OrganizationNotifications/OrganizationNotifications.test.jsx
similarity index 93%
rename from __tests__/pages/Organizations/screens/Organization/OrganizationNotifications.test.jsx
rename to src/screens/Organization/OrganizationNotifications/OrganizationNotifications.test.jsx
index 8c29971496..3f3b62e9a6 100644
--- a/__tests__/pages/Organizations/screens/Organization/OrganizationNotifications.test.jsx
+++ b/src/screens/Organization/OrganizationNotifications/OrganizationNotifications.test.jsx
@@ -1,10 +1,10 @@
import React from 'react';
-import { mountWithContexts } from '../../../../enzymeHelpers';
-import OrganizationNotifications from '../../../../../src/pages/Organizations/screens/Organization/OrganizationNotifications';
-import { sleep } from '../../../../testUtils';
-import { OrganizationsAPI } from '../../../../../src/api';
+import { mountWithContexts } from '../../../../testUtils/enzymeHelpers';
+import OrganizationNotifications from './OrganizationNotifications';
+import { sleep } from '../../../../testUtils/testUtils';
+import { OrganizationsAPI } from '../../../api';
-jest.mock('../../../../../src/api');
+jest.mock('../../../api');
describe('
', () => {
let data;
diff --git a/__tests__/pages/Organizations/screens/Organization/__snapshots__/OrganizationNotifications.test.jsx.snap b/src/screens/Organization/OrganizationNotifications/__snapshots__/OrganizationNotifications.test.jsx.snap
similarity index 100%
rename from __tests__/pages/Organizations/screens/Organization/__snapshots__/OrganizationNotifications.test.jsx.snap
rename to src/screens/Organization/OrganizationNotifications/__snapshots__/OrganizationNotifications.test.jsx.snap
diff --git a/src/screens/Organization/OrganizationNotifications/index.js b/src/screens/Organization/OrganizationNotifications/index.js
new file mode 100644
index 0000000000..512e11e424
--- /dev/null
+++ b/src/screens/Organization/OrganizationNotifications/index.js
@@ -0,0 +1 @@
+export { default } from './OrganizationNotifications';
diff --git a/src/pages/Organizations/screens/Organization/OrganizationTeams.jsx b/src/screens/Organization/OrganizationTeams/OrganizationTeams.jsx
similarity index 92%
rename from src/pages/Organizations/screens/Organization/OrganizationTeams.jsx
rename to src/screens/Organization/OrganizationTeams/OrganizationTeams.jsx
index afa0dac525..4ead8d98b9 100644
--- a/src/pages/Organizations/screens/Organization/OrganizationTeams.jsx
+++ b/src/screens/Organization/OrganizationTeams/OrganizationTeams.jsx
@@ -1,9 +1,9 @@
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 PaginatedDataList from '../../../components/PaginatedDataList';
+import { getQSConfig, parseNamespacedQueryString } from '../../../util/qs';
+import { OrganizationsAPI } from '../../../api';
const QS_CONFIG = getQSConfig('team', {
page: 1,
diff --git a/__tests__/pages/Organizations/screens/Organization/OrganizationTeams.test.jsx b/src/screens/Organization/OrganizationTeams/OrganizationTeams.test.jsx
similarity index 82%
rename from __tests__/pages/Organizations/screens/Organization/OrganizationTeams.test.jsx
rename to src/screens/Organization/OrganizationTeams/OrganizationTeams.test.jsx
index fbe4323863..debdad5c26 100644
--- a/__tests__/pages/Organizations/screens/Organization/OrganizationTeams.test.jsx
+++ b/src/screens/Organization/OrganizationTeams/OrganizationTeams.test.jsx
@@ -1,11 +1,11 @@
import React from 'react';
import { shallow } from 'enzyme';
-import { mountWithContexts } from '../../../../enzymeHelpers';
-import { sleep } from '../../../../testUtils';
-import OrganizationTeams, { _OrganizationTeams } from '../../../../../src/pages/Organizations/screens/Organization/OrganizationTeams';
-import { OrganizationsAPI } from '../../../../../src/api';
+import { mountWithContexts } from '../../../../testUtils/enzymeHelpers';
+import { sleep } from '../../../../testUtils/testUtils';
+import OrganizationTeams from './OrganizationTeams';
+import { OrganizationsAPI } from '../../../api';
-jest.mock('../../../../../src/api');
+jest.mock('../../../api');
const listData = {
data: {
@@ -31,7 +31,7 @@ describe('
', () => {
test('renders succesfully', () => {
shallow(
- <_OrganizationTeams
+
', () => {
const network = {};
diff --git a/src/screens/Organization/shared/index.js b/src/screens/Organization/shared/index.js
new file mode 100644
index 0000000000..7f931cff31
--- /dev/null
+++ b/src/screens/Organization/shared/index.js
@@ -0,0 +1,2 @@
+export { default as InstanceGroupsLookup } from './InstanceGroupsLookup';
+export { default as OrganizationForm } from './OrganizationForm';
diff --git a/src/pages/Portal.jsx b/src/screens/Portal/Portal.jsx
similarity index 100%
rename from src/pages/Portal.jsx
rename to src/screens/Portal/Portal.jsx
diff --git a/__tests__/pages/Portal.test.jsx b/src/screens/Portal/Portal.test.jsx
similarity index 86%
rename from __tests__/pages/Portal.test.jsx
rename to src/screens/Portal/Portal.test.jsx
index 892034ba76..0ad075812b 100644
--- a/__tests__/pages/Portal.test.jsx
+++ b/src/screens/Portal/Portal.test.jsx
@@ -1,6 +1,6 @@
import React from 'react';
-import { mountWithContexts } from '../enzymeHelpers';
-import Portal from '../../src/pages/Portal';
+import { mountWithContexts } from '../../../testUtils/enzymeHelpers';
+import Portal from './Portal';
describe('
', () => {
let pageWrapper;
diff --git a/src/screens/Portal/index.js b/src/screens/Portal/index.js
new file mode 100644
index 0000000000..f227015fb9
--- /dev/null
+++ b/src/screens/Portal/index.js
@@ -0,0 +1 @@
+export { default } from './Portal';
diff --git a/src/pages/Projects.jsx b/src/screens/Project/Projects.jsx
similarity index 100%
rename from src/pages/Projects.jsx
rename to src/screens/Project/Projects.jsx
diff --git a/__tests__/pages/Projects.test.jsx b/src/screens/Project/Projects.test.jsx
similarity index 86%
rename from __tests__/pages/Projects.test.jsx
rename to src/screens/Project/Projects.test.jsx
index 9e7ec2c623..7f19cb4016 100644
--- a/__tests__/pages/Projects.test.jsx
+++ b/src/screens/Project/Projects.test.jsx
@@ -1,6 +1,6 @@
import React from 'react';
-import { mountWithContexts } from '../enzymeHelpers';
-import Projects from '../../src/pages/Projects';
+import { mountWithContexts } from '../../../testUtils/enzymeHelpers';
+import Projects from './Projects';
describe('
', () => {
let pageWrapper;
diff --git a/src/screens/Project/index.js b/src/screens/Project/index.js
new file mode 100644
index 0000000000..3b68dc8cf0
--- /dev/null
+++ b/src/screens/Project/index.js
@@ -0,0 +1 @@
+export { default } from './Projects';
diff --git a/src/pages/Schedules.jsx b/src/screens/Schedule/Schedules.jsx
similarity index 100%
rename from src/pages/Schedules.jsx
rename to src/screens/Schedule/Schedules.jsx
diff --git a/__tests__/pages/Schedules.test.jsx b/src/screens/Schedule/Schedules.test.jsx
similarity index 86%
rename from __tests__/pages/Schedules.test.jsx
rename to src/screens/Schedule/Schedules.test.jsx
index b2255f9fc1..aebcc8a192 100644
--- a/__tests__/pages/Schedules.test.jsx
+++ b/src/screens/Schedule/Schedules.test.jsx
@@ -1,6 +1,6 @@
import React from 'react';
-import { mountWithContexts } from '../enzymeHelpers';
-import Schedules from '../../src/pages/Schedules';
+import { mountWithContexts } from '../../../testUtils/enzymeHelpers';
+import Schedules from './Schedules';
describe('
', () => {
let pageWrapper;
diff --git a/src/screens/Schedule/index.js b/src/screens/Schedule/index.js
new file mode 100644
index 0000000000..64f2dedc84
--- /dev/null
+++ b/src/screens/Schedule/index.js
@@ -0,0 +1 @@
+export { default } from './Schedules';
diff --git a/src/pages/SystemSettings.jsx b/src/screens/SystemSetting/SystemSettings.jsx
similarity index 100%
rename from src/pages/SystemSettings.jsx
rename to src/screens/SystemSetting/SystemSettings.jsx
diff --git a/__tests__/pages/SystemSettings.test.jsx b/src/screens/SystemSetting/SystemSettings.test.jsx
similarity index 85%
rename from __tests__/pages/SystemSettings.test.jsx
rename to src/screens/SystemSetting/SystemSettings.test.jsx
index 9fa1f751c7..52e559d0e5 100644
--- a/__tests__/pages/SystemSettings.test.jsx
+++ b/src/screens/SystemSetting/SystemSettings.test.jsx
@@ -1,6 +1,6 @@
import React from 'react';
-import { mountWithContexts } from '../enzymeHelpers';
-import SystemSettings from '../../src/pages/SystemSettings';
+import { mountWithContexts } from '../../../testUtils/enzymeHelpers';
+import SystemSettings from './SystemSettings';
describe('
', () => {
let pageWrapper;
diff --git a/src/screens/SystemSetting/index.js b/src/screens/SystemSetting/index.js
new file mode 100644
index 0000000000..68b119e97b
--- /dev/null
+++ b/src/screens/SystemSetting/index.js
@@ -0,0 +1 @@
+export { default } from './SystemSettings';
diff --git a/src/pages/Teams.jsx b/src/screens/Team/Teams.jsx
similarity index 100%
rename from src/pages/Teams.jsx
rename to src/screens/Team/Teams.jsx
diff --git a/__tests__/pages/Teams.test.jsx b/src/screens/Team/Teams.test.jsx
similarity index 86%
rename from __tests__/pages/Teams.test.jsx
rename to src/screens/Team/Teams.test.jsx
index 9d10331dcf..c845ad599a 100644
--- a/__tests__/pages/Teams.test.jsx
+++ b/src/screens/Team/Teams.test.jsx
@@ -1,6 +1,6 @@
import React from 'react';
-import { mountWithContexts } from '../enzymeHelpers';
-import Teams from '../../src/pages/Teams';
+import { mountWithContexts } from '../../../testUtils/enzymeHelpers';
+import Teams from './Teams';
describe('
', () => {
let pageWrapper;
diff --git a/src/screens/Team/index.js b/src/screens/Team/index.js
new file mode 100644
index 0000000000..319079b82c
--- /dev/null
+++ b/src/screens/Team/index.js
@@ -0,0 +1 @@
+export { default } from './Teams';
diff --git a/src/pages/Templates/TemplatesList.jsx b/src/screens/Template/TemplateList/TemplateList.jsx
similarity index 94%
rename from src/pages/Templates/TemplatesList.jsx
rename to src/screens/Template/TemplateList/TemplateList.jsx
index e904fe6846..fdc0c760d8 100644
--- a/src/pages/Templates/TemplatesList.jsx
+++ b/src/screens/Template/TemplateList/TemplateList.jsx
@@ -7,15 +7,15 @@ import {
PageSection,
PageSectionVariants,
} from '@patternfly/react-core';
-import { JobTemplatesAPI, UnifiedJobTemplatesAPI, WorkflowJobTemplatesAPI } from '../../api';
+import { JobTemplatesAPI, UnifiedJobTemplatesAPI, WorkflowJobTemplatesAPI } from '../../../api';
-import { getQSConfig, parseNamespacedQueryString } from '../../util/qs';
-import AlertModal from '../../components/AlertModal';
-import DatalistToolbar from '../../components/DataListToolbar';
+import { getQSConfig, parseNamespacedQueryString } from '../../../util/qs';
+import AlertModal from '../../../components/AlertModal';
+import DatalistToolbar from '../../../components/DataListToolbar';
import PaginatedDataList, {
ToolbarDeleteButton
-} from '../../components/PaginatedDataList';
-import TemplateListItem from './components/TemplateListItem';
+} from '../../../components/PaginatedDataList';
+import TemplateListItem from './TemplateListItem';
// The type value in const QS_CONFIG below does not have a space between job_template and
// workflow_job_template so the params sent to the API match what the api expects.
diff --git a/src/pages/Templates/components/TemplateListItem.jsx b/src/screens/Template/TemplateList/TemplateListItem.jsx
similarity index 100%
rename from src/pages/Templates/components/TemplateListItem.jsx
rename to src/screens/Template/TemplateList/TemplateListItem.jsx
diff --git a/__tests__/pages/Templates/TemplatesList.test.jsx b/src/screens/Template/TemplateList/TemplatesList.test.jsx
similarity index 95%
rename from __tests__/pages/Templates/TemplatesList.test.jsx
rename to src/screens/Template/TemplateList/TemplatesList.test.jsx
index e70f320190..34e5d8dece 100644
--- a/__tests__/pages/Templates/TemplatesList.test.jsx
+++ b/src/screens/Template/TemplateList/TemplatesList.test.jsx
@@ -1,9 +1,9 @@
import React from 'react';
-import { mountWithContexts, waitForElement } from '../../enzymeHelpers';
-import TemplatesList, { _TemplatesList } from '../../../src/pages/Templates/TemplatesList';
-import { JobTemplatesAPI, UnifiedJobTemplatesAPI, WorkflowJobTemplatesAPI } from '../../../src/api';
+import { mountWithContexts, waitForElement } from '../../../../testUtils/enzymeHelpers';
+import TemplatesList, { _TemplatesList } from './TemplateList';
+import { JobTemplatesAPI, UnifiedJobTemplatesAPI, WorkflowJobTemplatesAPI } from '../../../api';
-jest.mock('../../../src/api');
+jest.mock('../../../api');
const mockTemplates = [{
id: 1,
diff --git a/__tests__/pages/Templates/components/TemplatesListItem.test.jsx b/src/screens/Template/TemplateList/TemplatesListItem.test.jsx
similarity index 67%
rename from __tests__/pages/Templates/components/TemplatesListItem.test.jsx
rename to src/screens/Template/TemplateList/TemplatesListItem.test.jsx
index ee88eba5b6..d7298f78d5 100644
--- a/__tests__/pages/Templates/components/TemplatesListItem.test.jsx
+++ b/src/screens/Template/TemplateList/TemplatesListItem.test.jsx
@@ -1,6 +1,6 @@
import React from 'react';
-import { mountWithContexts } from '../../../enzymeHelpers';
-import TemplatesListItem from '../../../../src/pages/Templates/components/TemplateListItem';
+import { mountWithContexts } from '../../../../testUtils/enzymeHelpers';
+import TemplatesListItem from './TemplateListItem';
describe('
', () => {
test('initially render successfully', () => {
diff --git a/src/screens/Template/TemplateList/index.js b/src/screens/Template/TemplateList/index.js
new file mode 100644
index 0000000000..60759a849a
--- /dev/null
+++ b/src/screens/Template/TemplateList/index.js
@@ -0,0 +1,2 @@
+export { default as TemplateList } from './TemplateList';
+export { default as TemplateListItem } from './TemplateListItem';
diff --git a/src/pages/Templates/Templates.jsx b/src/screens/Template/Templates.jsx
similarity index 92%
rename from src/pages/Templates/Templates.jsx
rename to src/screens/Template/Templates.jsx
index bcbd27bdec..b311ae1473 100644
--- a/src/pages/Templates/Templates.jsx
+++ b/src/screens/Template/Templates.jsx
@@ -4,7 +4,7 @@ import { t } from '@lingui/macro';
import { Route, withRouter, Switch } from 'react-router-dom';
import Breadcrumbs from '../../components/Breadcrumbs/Breadcrumbs';
-import TemplatesList from './TemplatesList';
+import { TemplateList } from './TemplateList';
class Templates extends Component {
constructor (props) {
@@ -28,7 +28,7 @@ class Templates extends Component {
(
-
+
)}
/>
diff --git a/__tests__/pages/Templates.test.jsx b/src/screens/Template/Templates.test.jsx
similarity index 73%
rename from __tests__/pages/Templates.test.jsx
rename to src/screens/Template/Templates.test.jsx
index 1a6bf80919..05dbedc1e6 100644
--- a/__tests__/pages/Templates.test.jsx
+++ b/src/screens/Template/Templates.test.jsx
@@ -1,6 +1,6 @@
import React from 'react';
-import Templates from '../../src/pages/Templates/Templates';
-import { mountWithContexts } from '../enzymeHelpers';
+import Templates from './Templates';
+import { mountWithContexts } from '../../../testUtils/enzymeHelpers';
describe('', () => {
let pageWrapper;
diff --git a/src/screens/Template/index.js b/src/screens/Template/index.js
new file mode 100644
index 0000000000..e4ee3d27fd
--- /dev/null
+++ b/src/screens/Template/index.js
@@ -0,0 +1 @@
+export { default } from './Templates';
diff --git a/src/pages/UISettings.jsx b/src/screens/UISetting/UISettings.jsx
similarity index 100%
rename from src/pages/UISettings.jsx
rename to src/screens/UISetting/UISettings.jsx
diff --git a/__tests__/pages/UISettings.test.jsx b/src/screens/UISetting/UISettings.test.jsx
similarity index 85%
rename from __tests__/pages/UISettings.test.jsx
rename to src/screens/UISetting/UISettings.test.jsx
index 3ecab146bf..1d209bb1d4 100644
--- a/__tests__/pages/UISettings.test.jsx
+++ b/src/screens/UISetting/UISettings.test.jsx
@@ -1,6 +1,6 @@
import React from 'react';
-import { mountWithContexts } from '../enzymeHelpers';
-import UISettings from '../../src/pages/UISettings';
+import { mountWithContexts } from '../../../testUtils/enzymeHelpers';
+import UISettings from './UISettings';
describe('', () => {
let pageWrapper;
diff --git a/src/screens/UISetting/index.js b/src/screens/UISetting/index.js
new file mode 100644
index 0000000000..168e652b48
--- /dev/null
+++ b/src/screens/UISetting/index.js
@@ -0,0 +1 @@
+export { default } from './UISettings';
diff --git a/src/pages/Users.jsx b/src/screens/User/Users.jsx
similarity index 100%
rename from src/pages/Users.jsx
rename to src/screens/User/Users.jsx
diff --git a/__tests__/pages/Users.test.jsx b/src/screens/User/Users.test.jsx
similarity index 86%
rename from __tests__/pages/Users.test.jsx
rename to src/screens/User/Users.test.jsx
index bdacf86be1..cf714b7774 100644
--- a/__tests__/pages/Users.test.jsx
+++ b/src/screens/User/Users.test.jsx
@@ -1,6 +1,6 @@
import React from 'react';
-import { mountWithContexts } from '../enzymeHelpers';
-import Users from '../../src/pages/Users';
+import { mountWithContexts } from '../../../testUtils/enzymeHelpers';
+import Users from './Users';
describe('', () => {
let pageWrapper;
diff --git a/src/screens/User/index.js b/src/screens/User/index.js
new file mode 100644
index 0000000000..b04c2d23da
--- /dev/null
+++ b/src/screens/User/index.js
@@ -0,0 +1 @@
+export { default } from './Users';
diff --git a/__tests__/util/auth.test.js b/src/util/auth.test.js
similarity index 98%
rename from __tests__/util/auth.test.js
rename to src/util/auth.test.js
index b7cfcddae5..7cfbdd63c8 100644
--- a/__tests__/util/auth.test.js
+++ b/src/util/auth.test.js
@@ -1,4 +1,4 @@
-import { isAuthenticated } from '../../src/util/auth';
+import { isAuthenticated } from './auth';
const invalidCookie = 'invalid';
const validLoggedOutCookie = 'current_user=%7B%22id%22%3A1%2C%22type%22%3A%22user%22%2C%22url%22%3A%22%2Fapi%2Fv2%2Fusers%2F1%2F%22%2C%22related%22%3A%7B%22admin_of_organizations%22%3A%22%2Fapi%2Fv2%2Fusers%2F1%2Fadmin_of_organizations%2F%22%2C%22authorized_tokens%22%3A%22%2Fapi%2Fv2%2Fusers%2F1%2Fauthorized_tokens%2F%22%2C%22roles%22%3A%22%2Fapi%2Fv2%2Fusers%2F1%2Froles%2F%22%2C%22organizations%22%3A%22%2Fapi%2Fv2%2Fusers%2F1%2Forganizations%2F%22%2C%22access_list%22%3A%22%2Fapi%2Fv2%2Fusers%2F1%2Faccess_list%2F%22%2C%22teams%22%3A%22%2Fapi%2Fv2%2Fusers%2F1%2Fteams%2F%22%2C%22tokens%22%3A%22%2Fapi%2Fv2%2Fusers%2F1%2Ftokens%2F%22%2C%22personal_tokens%22%3A%22%2Fapi%2Fv2%2Fusers%2F1%2Fpersonal_tokens%2F%22%2C%22credentials%22%3A%22%2Fapi%2Fv2%2Fusers%2F1%2Fcredentials%2F%22%2C%22activity_stream%22%3A%22%2Fapi%2Fv2%2Fusers%2F1%2Factivity_stream%2F%22%2C%22projects%22%3A%22%2Fapi%2Fv2%2Fusers%2F1%2Fprojects%2F%22%7D%2C%22summary_fields%22%3A%7B%7D%2C%22created%22%3A%222018-10-19T16%3A30%3A59.141963Z%22%2C%22username%22%3A%22admin%22%2C%22first_name%22%3A%22%22%2C%22last_name%22%3A%22%22%2C%22email%22%3A%22%22%2C%22is_superuser%22%3Atrue%2C%22is_system_auditor%22%3Afalse%2C%22ldap_dn%22%3A%22%22%2C%22external_account%22%3Anull%2C%22auth%22%3A%5B%5D%7D; userLoggedIn=false; csrftoken=lhOHpLQUFHlIVqx8CCZmEpdEZAz79GIRBIT3asBzTbPE7HS7wizt7WBsgJClz8Ge';
diff --git a/__tests__/util/qs.test.js b/src/util/qs.test.js
similarity index 99%
rename from __tests__/util/qs.test.js
rename to src/util/qs.test.js
index b1f94ffc86..df8d2f450c 100644
--- a/__tests__/util/qs.test.js
+++ b/src/util/qs.test.js
@@ -5,7 +5,7 @@ import {
parseNamespacedQueryString,
encodeNamespacedQueryString,
updateNamespacedQueryString,
-} from '../../src/util/qs';
+} from './qs';
describe('qs (qs.js)', () => {
test('encodeQueryString returns the expected queryString', () => {
diff --git a/__tests__/util/strings.test.js b/src/util/strings.test.js
similarity index 92%
rename from __tests__/util/strings.test.js
rename to src/util/strings.test.js
index 9e23726f4f..ec2e6f3c13 100644
--- a/__tests__/util/strings.test.js
+++ b/src/util/strings.test.js
@@ -1,4 +1,4 @@
-import { pluralize, getArticle, ucFirst } from '../../src/util/strings';
+import { pluralize, getArticle, ucFirst } from './strings';
describe('string utils', () => {
describe('pluralize', () => {
diff --git a/__tests__/util/validators.test.js b/src/util/validators.test.js
similarity index 95%
rename from __tests__/util/validators.test.js
rename to src/util/validators.test.js
index 3021f804cb..588afc954c 100644
--- a/__tests__/util/validators.test.js
+++ b/src/util/validators.test.js
@@ -1,4 +1,4 @@
-import { required, maxLength } from '../../src/util/validators';
+import { required, maxLength } from './validators';
const i18n = { _: val => val };
diff --git a/__tests__/.eslintrc b/testUtils/.eslintrc
similarity index 100%
rename from __tests__/.eslintrc
rename to testUtils/.eslintrc
diff --git a/__tests__/__snapshots__/enzymeHelpers.test.jsx.snap b/testUtils/__snapshots__/enzymeHelpers.test.jsx.snap
similarity index 100%
rename from __tests__/__snapshots__/enzymeHelpers.test.jsx.snap
rename to testUtils/__snapshots__/enzymeHelpers.test.jsx.snap
diff --git a/__tests__/api/reusable.jsx b/testUtils/apiReusable.jsx
similarity index 100%
rename from __tests__/api/reusable.jsx
rename to testUtils/apiReusable.jsx
diff --git a/__tests__/enzymeHelpers.jsx b/testUtils/enzymeHelpers.jsx
similarity index 100%
rename from __tests__/enzymeHelpers.jsx
rename to testUtils/enzymeHelpers.jsx
diff --git a/__tests__/enzymeHelpers.test.jsx b/testUtils/enzymeHelpers.test.jsx
similarity index 100%
rename from __tests__/enzymeHelpers.test.jsx
rename to testUtils/enzymeHelpers.test.jsx
diff --git a/__tests__/testUtils.js b/testUtils/testUtils.js
similarity index 100%
rename from __tests__/testUtils.js
rename to testUtils/testUtils.js