diff --git a/frontend/packages/shared/components/layout/clientSDK/ClientSDKLayout.test.js b/frontend/packages/shared/components/layout/clientSDK/ClientSDKLayout.test.js
deleted file mode 100644
index 67b3fb0518..0000000000
--- a/frontend/packages/shared/components/layout/clientSDK/ClientSDKLayout.test.js
+++ /dev/null
@@ -1,34 +0,0 @@
-import { buildComponentInApp } from 'testUtils';
-import ClientSDKLayout from 'shared/components/layout/clientSDK/ClientSDKLayout';
-
-describe('', () => {
- it('Renders a progress bar while loading', async () => {
- const { getByTestId } = buildComponentInApp(ClientSDKLayout)
- .withProps({ id: 'test' })
- .withApolloLoading()
- .render();
- expect(getByTestId('progress')).toBeInTheDocument();
- });
-
- it('Renders client sdk layout', async () => {
- const rendered = buildComponentInApp(ClientSDKLayout)
- .withTheme()
- .withProps({ id: 'test' })
- .withRouterEntries(['/client-sdks/test'])
- .withApolloData({
- clientSdk: {
- id: 'test',
- componentType: 'client-sdk',
- owner: {
- id: 'test-squad',
- name: 'test-squad',
- type: 'squad',
- },
- },
- })
- .render();
-
- rendered.getByText('Client SDK');
- rendered.getByText('test-squad');
- });
-});
diff --git a/frontend/packages/shared/components/layout/clientSDK/ClientSDKLayout.tsx b/frontend/packages/shared/components/layout/clientSDK/ClientSDKLayout.tsx
deleted file mode 100644
index 7747247687..0000000000
--- a/frontend/packages/shared/components/layout/clientSDK/ClientSDKLayout.tsx
+++ /dev/null
@@ -1,59 +0,0 @@
-import React from 'react';
-import gql from 'graphql-tag';
-
-import { Content, Header, OwnerHeaderLabel, Page } from 'shared/components/layout';
-import { theme } from 'core/app/PageThemeProvider';
-import QueryLayout, { ComponentLayoutProps } from 'shared/components/layout/QueryLayout';
-import ClientSDKNavigation from './ClientSDKNavigation';
-
-export default function ClientSDKLayout({
- id,
- fragment,
- children,
- emptyHelperText,
- ...otherProps
-}: ComponentLayoutProps) {
- const query = gql`
- query($id: String!) {
- clientSdk(id: $id) {
- id
- componentType
- owner {
- id
- name
- type
- }
- ${fragment ? `...${fragment.definitions[0].name.value}` : ''}
- }
- }
- ${fragment || ''}
- `;
-
- const emptyHelperTextWithDefault = emptyHelperText || `We couldn't find a client sdk named '${id}'`;
- return (
-
- {data => {
- const clientSdk = data.clientSdk;
-
- return (
-
-
-
- {typeof children === 'function' ? children(clientSdk) : children}
-
- );
- }}
-
- );
-}
-
-const defaultProps: Partial = {
- handleEmptyCheck: data => !data.clientSdk,
- emptyTitleText: 'Client SDK not found',
- emptyLink: '/explore/client-sdks',
- emptyLinkText: 'All Client SDKs',
-};
-
-ClientSDKLayout.defaultProps = defaultProps;
diff --git a/frontend/packages/shared/components/layout/clientSDK/ClientSDKNavigation.js b/frontend/packages/shared/components/layout/clientSDK/ClientSDKNavigation.js
deleted file mode 100644
index e185560e07..0000000000
--- a/frontend/packages/shared/components/layout/clientSDK/ClientSDKNavigation.js
+++ /dev/null
@@ -1,18 +0,0 @@
-import React, { Component } from 'react';
-
-import { Navigation, NavItem } from 'shared/components/layout';
-
-class ClientSDKNavigation extends Component {
- render() {
- const { id } = this.props;
- const clientSDKUrl = `/client-sdks/${id}`;
-
- return (
-
-
-
- );
- }
-}
-
-export default ClientSDKNavigation;
diff --git a/frontend/packages/shared/components/layout/clientSDK/ClientSDKNavigation.test.js b/frontend/packages/shared/components/layout/clientSDK/ClientSDKNavigation.test.js
deleted file mode 100644
index f12b4fbaa5..0000000000
--- a/frontend/packages/shared/components/layout/clientSDK/ClientSDKNavigation.test.js
+++ /dev/null
@@ -1,22 +0,0 @@
-import React from 'react';
-import { render } from '@testing-library/react';
-import ClientSDKNavigation from 'shared/components/layout/clientSDK/ClientSDKNavigation';
-import { wrapInThemedTestApp } from 'testUtils';
-
-describe('', () => {
- it('renders without exploding', () => {
- const rendered = render(wrapInThemedTestApp());
- expect(rendered.getByText('Overview')).toBeInTheDocument();
- });
-
- it('renders nav items', () => {
- const rendered = render(wrapInThemedTestApp());
- expect(rendered.getByText('Overview')).toBeInTheDocument();
- });
-
- it('renders links', () => {
- const rendered = render(wrapInThemedTestApp());
- const anchor = rendered.container.querySelector('a');
- expect(anchor.href).toContain('client-sdks/test');
- });
-});
diff --git a/frontend/packages/shared/components/layout/dataEndpoint/DataEndpointContentHeader.js b/frontend/packages/shared/components/layout/dataEndpoint/DataEndpointContentHeader.js
deleted file mode 100644
index 13207c2802..0000000000
--- a/frontend/packages/shared/components/layout/dataEndpoint/DataEndpointContentHeader.js
+++ /dev/null
@@ -1,34 +0,0 @@
-import React, { Component } from 'react';
-import { ContentHeader, Documentation, SupportButton } from 'shared/components/layout';
-import Link from 'shared/components/Link';
-import Button from '@material-ui/core/Button/Button';
-import { Typography } from '@material-ui/core';
-
-class DataEndpointContentHeader extends Component {
- render() {
- return (
-
-
-
-
-
-
-
-
- All data endpoints that you and your squad(s) own
-
- Data Infra Overview
- Data Endpoints
- Batch Management Documentation
-
-
-
- );
- }
-}
-
-export default DataEndpointContentHeader;
diff --git a/frontend/packages/shared/components/layout/dataEndpoint/DataEndpointContentHeader.test.js b/frontend/packages/shared/components/layout/dataEndpoint/DataEndpointContentHeader.test.js
deleted file mode 100644
index 97f86f976b..0000000000
--- a/frontend/packages/shared/components/layout/dataEndpoint/DataEndpointContentHeader.test.js
+++ /dev/null
@@ -1,23 +0,0 @@
-import React from 'react';
-import { render } from '@testing-library/react';
-import { wrapInThemedTestApp } from 'testUtils';
-import DataEndpointContentHeader from './DataEndpointContentHeader';
-
-describe('', () => {
- it('renders without exploding', () => {
- const data = {
- id: 'my-id',
- componentType: 'data-endpoint',
- componentInfoLocationUri: 'ghe:/a/b/c.yaml',
- owner: {
- name: 'my-owner',
- type: 'squad',
- },
- lifecycle: 'my-lifecycle',
- };
- const rendered = render(wrapInThemedTestApp());
- rendered.getByText('Data Endpoints');
- rendered.getByText('Create new data endpoints component');
- rendered.getByText('Support');
- });
-});
diff --git a/frontend/packages/shared/components/layout/dataEndpoint/DataEndpointLayout.js b/frontend/packages/shared/components/layout/dataEndpoint/DataEndpointLayout.js
deleted file mode 100644
index 0f0746c57e..0000000000
--- a/frontend/packages/shared/components/layout/dataEndpoint/DataEndpointLayout.js
+++ /dev/null
@@ -1,68 +0,0 @@
-import React, { Component } from 'react';
-import gql from 'graphql-tag';
-import { theme } from 'core/app/PageThemeProvider';
-import { Content, Header, Page, QueryLayout } from 'shared/components/layout';
-import DataEndpointNavigation from './DataEndpointNavigation';
-import HeaderLabel from 'shared/components/layout/HeaderLabel';
-import OwnerHeaderLabel from 'shared/components/layout/OwnerHeaderLabel';
-import ComponentWorkflowsEndpointsToolbar from 'shared/components/ComponentWorkflowsEndpointsToolbar';
-
-export default class DataEndpointLayout extends Component {
- static defaultProps = {
- handleEmptyCheck: data => !data.dataEndpoint,
- emptyTitleText: 'Data endpoint not found',
- emptyLink: '/data',
- emptyLinkText: 'Your data endpoints',
- };
-
- render() {
- const { id, fragment, children, ...otherProps } = this.props;
-
- const query = gql`
- query($id: String!) {
- dataEndpoint(id: $id) {
- id
- owner {
- id
- name
- contactEmail
- type
- slack
- }
- storageUriPattern
- lifecycle
- component {
- id
- owner {
- id
- name
- }
- ...ComponentWorkflowsEndpointsDropdownInfo
- }
- ${fragment ? `...${fragment.definitions[0].name.value}` : ''}
- }
- }
- ${ComponentWorkflowsEndpointsToolbar.fragment}
- ${fragment || ''}
- `;
-
- const emptyHelperTextWithDefault = `We couldn't find a data endpoint named '${id}'`;
- return (
-
- {data => {
- const dataendpoint = data.dataEndpoint;
- return (
-
-
-
- {typeof children === 'function' ? children(dataendpoint) : children}
-
- );
- }}
-
- );
- }
-}
diff --git a/frontend/packages/shared/components/layout/dataEndpoint/DataEndpointLayout.test.js b/frontend/packages/shared/components/layout/dataEndpoint/DataEndpointLayout.test.js
deleted file mode 100644
index bba8b69121..0000000000
--- a/frontend/packages/shared/components/layout/dataEndpoint/DataEndpointLayout.test.js
+++ /dev/null
@@ -1,56 +0,0 @@
-import { buildComponentInApp } from 'testUtils';
-import DataEndpointLayout from './DataEndpointLayout';
-import gql from 'graphql-tag';
-
-const dataEndpoint = {
- id: 'my-id',
- componentType: 'data-endpoint',
- componentInfoLocationUri: 'ghe:/a/b/c.yaml',
- storageUriPattern: 'bq://a/b/c',
- owner: {
- name: 'my-owner',
- type: 'squad',
- },
- lifecycle: 'lifecycle',
-};
-
-describe('', () => {
- it('renders progress while loading', () => {
- const rendered = buildComponentInApp(DataEndpointLayout)
- .withApolloLoading()
- .render({ id: 'my-id', system: 'system' });
- rendered.getByTestId('progress');
- });
-
- it('renders data', () => {
- const rendered = buildComponentInApp(DataEndpointLayout)
- .withTheme()
- .withApolloData({ dataEndpoint })
- .render({ id: 'my-id', system: 'system' });
- rendered.getByText('my-id');
- rendered.getByText('Overview');
- });
-
- it('renders with fragment', () => {
- let receivedData = null;
- const rendered = buildComponentInApp(DataEndpointLayout)
- .withTheme()
- .withApolloData({ dataEndpoint })
- .render({
- id: 'my-id',
- system: 'system',
- fragment: gql`
- fragment MoreData on Component {
- id
- }
- `,
- children: data => {
- receivedData = data;
- },
- });
-
- expect(receivedData).toEqual(expect.objectContaining({ id: 'my-id' }));
- rendered.getByText('my-id');
- rendered.getByText('Overview');
- });
-});
diff --git a/frontend/packages/shared/components/layout/dataEndpoint/DataEndpointNavigation.js b/frontend/packages/shared/components/layout/dataEndpoint/DataEndpointNavigation.js
deleted file mode 100644
index 64e93df1c0..0000000000
--- a/frontend/packages/shared/components/layout/dataEndpoint/DataEndpointNavigation.js
+++ /dev/null
@@ -1,26 +0,0 @@
-import React, { Component } from 'react';
-import { Navigation, NavItem } from 'shared/components/layout';
-
-class DataEndpointNavigation extends Component {
- render() {
- const { id, uri } = this.props;
- const dataEndpointBaseUrl = `/data-endpoints/${id}`;
-
- return (
-
-
-
-
-
-
-
-
-
- {uri.startsWith('bq://') && }
-
-
- );
- }
-}
-
-export default DataEndpointNavigation;
diff --git a/frontend/packages/shared/components/layout/dataEndpoint/DataEndpointNavigation.test.js b/frontend/packages/shared/components/layout/dataEndpoint/DataEndpointNavigation.test.js
deleted file mode 100644
index 07689a13a5..0000000000
--- a/frontend/packages/shared/components/layout/dataEndpoint/DataEndpointNavigation.test.js
+++ /dev/null
@@ -1,17 +0,0 @@
-import React from 'react';
-import { render } from '@testing-library/react';
-import { wrapInThemedTestApp } from 'testUtils';
-import DataEndpointNavigation from './DataEndpointNavigation';
-
-describe('', () => {
- it('renders without exploding', () => {
- const rendered = render(wrapInThemedTestApp());
- rendered.getByText('Overview');
- expect(rendered.queryByText('BigQuery Stats')).not.toBeInTheDocument();
- });
-
- it('renders bigquery link', () => {
- const rendered = render(wrapInThemedTestApp());
- rendered.getByText('BigQuery Stats');
- });
-});
diff --git a/frontend/packages/shared/components/layout/explore/ExploreLayout.js b/frontend/packages/shared/components/layout/explore/ExploreLayout.js
deleted file mode 100644
index 32b25a0b23..0000000000
--- a/frontend/packages/shared/components/layout/explore/ExploreLayout.js
+++ /dev/null
@@ -1,28 +0,0 @@
-import React from 'react';
-
-import DataSciIcon from '@material-ui/icons/Timeline';
-import { AppIcon, PlatformIcon, ToolsIcon, SdkIcon } from 'shared/icons';
-import { Content, Header, Navigation, NavItem, Page } from 'shared/components/layout';
-import { theme } from 'core/app/PageThemeProvider';
-
-const iconStyle = { fill: '#727272' };
-
-export default class ExploreLayout extends React.Component {
- render() {
- const { children } = this.props;
- return (
-
-
-
- } href="/explore" />
- } href="/explore/infra" />
- } href="/explore/client-sdks" />
- } href="/apps" isBeta />
- } href="/explore/tools" />
- } href="/data-science-tools" />
-
- {children}
-
- );
- }
-}
diff --git a/frontend/packages/shared/components/layout/explore/ExploreLayout.test.js b/frontend/packages/shared/components/layout/explore/ExploreLayout.test.js
deleted file mode 100644
index 555c79674b..0000000000
--- a/frontend/packages/shared/components/layout/explore/ExploreLayout.test.js
+++ /dev/null
@@ -1,12 +0,0 @@
-import { buildComponentInApp } from 'testUtils';
-import ExploreLayout from './ExploreLayout';
-
-describe('', () => {
- it('renders without exploding', () => {
- const rendered = buildComponentInApp(ExploreLayout)
- .withTheme()
- .render({ children: 'my-child' });
- rendered.getByText('Explore the Spotify ecosystem');
- rendered.getByText('my-child');
- });
-});
diff --git a/frontend/packages/shared/components/layout/manage/ManageLayout.test.js b/frontend/packages/shared/components/layout/manage/ManageLayout.test.js
deleted file mode 100644
index 89128fd144..0000000000
--- a/frontend/packages/shared/components/layout/manage/ManageLayout.test.js
+++ /dev/null
@@ -1,20 +0,0 @@
-import { buildComponentInApp } from 'testUtils';
-import ManageLayout from './ManageLayout';
-
-const user = {
- components: [],
- workflows: [],
- dataEndpoints: [],
- googleCloudPlatformProjects: [],
-};
-
-describe('', () => {
- it('renders without exploding', () => {
- const rendered = buildComponentInApp(ManageLayout)
- .withTheme()
- .withApolloData({ user })
- .render();
-
- rendered.getByText('Overview');
- });
-});
diff --git a/frontend/packages/shared/components/layout/manage/ManageLayout.tsx b/frontend/packages/shared/components/layout/manage/ManageLayout.tsx
deleted file mode 100644
index d32e2fe68f..0000000000
--- a/frontend/packages/shared/components/layout/manage/ManageLayout.tsx
+++ /dev/null
@@ -1,36 +0,0 @@
-import React, { FC } from 'react';
-import { theme } from 'core/app/PageThemeProvider';
-import { useUser, useProfile } from 'shared/apis/user';
-import { Content, Header, Page } from 'shared/components/layout';
-import { getTimeBasedGreeting } from 'shared/apis/time/timeUtil';
-import HomePageTimer from 'plugins/homePage/components/HomePageTimer';
-import HomeDrawer from 'plugins/homePage/components/HomeDrawer';
-import { useThankYouMessage } from './hooks';
-
-import ManageNavigation from './ManageNavigation';
-
-const ManageLayout: FC<{}> = ({ children }) => {
- const user = useUser();
- const profile = useProfile();
- const thankYouMessage = useThankYouMessage(user.id);
- const greeting = getTimeBasedGreeting();
-
- return (
-
-
-
- {children}
-
-
- );
-};
-
-export default ManageLayout;
diff --git a/frontend/packages/shared/components/layout/manage/ManageNavigation.test.js b/frontend/packages/shared/components/layout/manage/ManageNavigation.test.js
deleted file mode 100644
index 9fbfe1b7e2..0000000000
--- a/frontend/packages/shared/components/layout/manage/ManageNavigation.test.js
+++ /dev/null
@@ -1,20 +0,0 @@
-import React from 'react';
-import { render } from '@testing-library/react';
-import { wrapInThemedTestApp } from 'testUtils';
-import FeatureFlags from 'shared/apis/featureFlags/featureFlags';
-import ManageNavigation from './ManageNavigation';
-
-describe('', () => {
- it('renders without exploding', () => {
- const rendered = render(wrapInThemedTestApp());
- rendered.getByText('Overview');
- expect(rendered.queryByText('Streaming Pipelines')).not.toBeInTheDocument();
- });
-
- it('renders bigquery link', () => {
- const mock = jest.spyOn(FeatureFlags, 'getItem').mockImplementation(flag => flag === 'galileo');
- const rendered = render(wrapInThemedTestApp());
- rendered.getByText('Streaming Pipelines');
- mock.mockRestore();
- });
-});
diff --git a/frontend/packages/shared/components/layout/manage/ManageNavigation.tsx b/frontend/packages/shared/components/layout/manage/ManageNavigation.tsx
deleted file mode 100644
index f7606c9620..0000000000
--- a/frontend/packages/shared/components/layout/manage/ManageNavigation.tsx
+++ /dev/null
@@ -1,45 +0,0 @@
-import React, { FC } from 'react';
-
-import { Navigation, NavItem } from 'shared/components/layout';
-
-import StreamingIcon from 'shared/assets/icons/stream.svg';
-import {
- AppFeatureIcon,
- DataEndpointsIcon,
- GcpProjectIcon,
- LibraryIcon,
- OtherIcon,
- OverviewIcon,
- ServiceIcon,
- StorageIcon,
- WebsiteIcon,
- WorkflowIcon,
-} from 'shared/icons';
-import FeatureFlags from 'shared/apis/featureFlags/featureFlags';
-
-const style = { fill: '#727272' };
-
-const ManageNavigation: FC<{}> = () => (
-
- } href="/manage">
-
-
- } href={'/services-owned'} />
- } href={'/websites-owned'} />
- } href={'/libraries-owned'} isBeta />
- {FeatureFlags.getItem('foss') && (
- } href={'/foss-owned'} isAlpha />
- )}
- } href={'/workflows-owned'} />
- } href={'/data'} />
- {FeatureFlags.getItem('galileo') && (
-
- )}
- } href={'/app-features-owned'} />
- } href={'/projects-owned'} />
- } href={'/managed-storage-owned'} />
- } href={'/other-owned'} />
-
-);
-
-export default ManageNavigation;
diff --git a/frontend/packages/shared/components/layout/manage/hooks.ts b/frontend/packages/shared/components/layout/manage/hooks.ts
deleted file mode 100644
index 45d151f7c8..0000000000
--- a/frontend/packages/shared/components/layout/manage/hooks.ts
+++ /dev/null
@@ -1,72 +0,0 @@
-import gql from 'graphql-tag';
-import { useQuery } from '@apollo/react-hooks';
-
-import { User, QueryUserArgs, Maybe } from 'generated/graphql/backstage';
-
-export const THANK_YOU_MESSAGE_QUERY = gql`
- query($username: String!) {
- user(username: $username) {
- components {
- id
- }
- dataEndpoints {
- id
- }
- workflows {
- id
- }
- googleCloudPlatformProjects {
- id
- }
- }
- }
-`;
-
-type QueryResponse = {
- user?: Maybe;
-};
-
-const LOADING_MESSAGE = 'Thanks for ...';
-const FALLBACK_MESSAGE = 'Thanks for being awesome';
-
-/**
- * Formulates a personal "thank you" message based on a user's ownership of things.
- *
- * @param username An LDAP username
- */
-export const useThankYouMessage = (username: string) => {
- const { data, loading } = useQuery(THANK_YOU_MESSAGE_QUERY, {
- variables: { username },
- });
-
- if (loading) {
- return LOADING_MESSAGE;
- } else if (!data || !data.user) {
- return FALLBACK_MESSAGE;
- }
-
- const componentCount =
- (data.user.components || []).length + (data.user.workflows || []).length + (data.user.dataEndpoints || []).length;
- const projectCount = (data.user.googleCloudPlatformProjects || []).length;
-
- if (componentCount == 0 && projectCount == 0) {
- return FALLBACK_MESSAGE;
- }
-
- let counts = '';
- if (componentCount > 0) {
- counts += `${componentCount} component`;
- if (componentCount > 1) {
- counts += 's';
- }
- counts += projectCount > 0 ? ' and ' : '';
- }
- if (projectCount > 0) {
- counts += `${projectCount} project`;
- if (projectCount > 1) {
- counts += 's';
- }
- }
-
- return `Thanks for taking care of ${counts}`;
-};
diff --git a/frontend/packages/shared/components/layout/project/ProjectLayout.js b/frontend/packages/shared/components/layout/project/ProjectLayout.js
deleted file mode 100644
index a559e28012..0000000000
--- a/frontend/packages/shared/components/layout/project/ProjectLayout.js
+++ /dev/null
@@ -1,56 +0,0 @@
-import React, { Component } from 'react';
-import gql from 'graphql-tag';
-
-import { Content, Header, HeaderLabel, Page, QueryLayout } from 'shared/components/layout';
-import ProjectNavigation from 'shared/components/layout/project/ProjectNavigation';
-import { theme } from 'core/app/PageThemeProvider';
-
-export default class ProjectLayout extends Component {
- static defaultProps = {
- handleEmptyCheck: data => !data.googleCloudPlatformProject,
- emptyTitleText: 'Project not found',
- emptyLink: '/projects-owned',
- emptyLinkText: 'Your projects',
- };
-
- render() {
- const { id, fragment, emptyHelperText, children, ...otherProps } = this.props;
-
- const query = gql`
- query($id: String!) {
- googleCloudPlatformProject(id: $id) {
- id
- owner {
- id
- name
- }
- ${fragment ? `...${fragment.definitions[0].name.value}` : ''}
- }
- }
- ${fragment || ''}
- `;
-
- const emptyHelperTextWithDefault = emptyHelperText || `We couldn't find a project named '${id}'`;
- return (
-
- {data => {
- const project = data.googleCloudPlatformProject;
-
- return (
-
-
-
- {typeof children === 'function' ? children(project) : children}
-
- );
- }}
-
- );
- }
-}
diff --git a/frontend/packages/shared/components/layout/project/ProjectLayout.test.js b/frontend/packages/shared/components/layout/project/ProjectLayout.test.js
deleted file mode 100644
index 68b3d79bdf..0000000000
--- a/frontend/packages/shared/components/layout/project/ProjectLayout.test.js
+++ /dev/null
@@ -1,45 +0,0 @@
-import { buildComponentInApp } from 'testUtils';
-import ProjectLayout from './ProjectLayout';
-import gql from 'graphql-tag';
-
-describe('', () => {
- it('renders progress while loading', () => {
- const rendered = buildComponentInApp(ProjectLayout)
- .withApolloLoading()
- .render({ id: 'my-project' });
-
- rendered.getByTestId('progress');
- });
-
- it('renders data', () => {
- const rendered = buildComponentInApp(ProjectLayout)
- .withTheme()
- .withApolloData({ googleCloudPlatformProject: { id: 'my-project' } })
- .render({ id: 'my-project' });
-
- rendered.getByText('my-project');
- rendered.getByText('Overview');
- rendered.getByText('Bigtable');
- });
-
- it('renders with fragment', () => {
- let receivedData = null;
- const rendered = buildComponentInApp(ProjectLayout)
- .withTheme()
- .withApolloData({ googleCloudPlatformProject: { id: 'my-project' } })
- .render({
- id: 'my-project',
- fragment: gql`
- fragment MoreData on Component {
- id
- }
- `,
- children: data => {
- receivedData = data;
- },
- });
-
- expect(receivedData).toEqual({ id: 'my-project' });
- rendered.getByText('Bigtable');
- });
-});
diff --git a/frontend/packages/shared/components/layout/project/ProjectNavigation.js b/frontend/packages/shared/components/layout/project/ProjectNavigation.js
deleted file mode 100644
index f977ae16d0..0000000000
--- a/frontend/packages/shared/components/layout/project/ProjectNavigation.js
+++ /dev/null
@@ -1,19 +0,0 @@
-import React, { Component } from 'react';
-
-import { Navigation, NavItem } from 'shared/components/layout';
-
-class ProjectNavigation extends Component {
- render() {
- const { projectId } = this.props;
- const projectBaseUrl = `/projects/${projectId}`;
-
- return (
-
-
-
-
- );
- }
-}
-
-export default ProjectNavigation;
diff --git a/frontend/packages/shared/components/layout/workflow/WorkflowLayout.js b/frontend/packages/shared/components/layout/workflow/WorkflowLayout.js
deleted file mode 100644
index 59320bdd5f..0000000000
--- a/frontend/packages/shared/components/layout/workflow/WorkflowLayout.js
+++ /dev/null
@@ -1,70 +0,0 @@
-import React, { Component } from 'react';
-import gql from 'graphql-tag';
-
-import { Content, Header, HeaderLabel, OwnerHeaderLabel, Page, QueryLayout } from 'shared/components/layout';
-import WorkflowNavigation from 'shared/components/layout/workflow/WorkflowNavigation';
-import { theme } from 'core/app/PageThemeProvider';
-import MissingComponent from 'plugins/workflows/components/MissingComponent';
-import ComponentWorkflowsEndpointsToolbar from 'shared/components/ComponentWorkflowsEndpointsToolbar';
-
-export default class WorkflowLayout extends Component {
- static defaultProps = {
- handleEmptyCheck: data => !data.workflow,
- emptyTitleText: 'Workflow not found',
- emptyLink: '/workflows-owned',
- emptyLinkText: 'Your workflows',
- };
-
- render() {
- const { id, fragment, emptyHelperText, children, ...otherProps } = this.props;
-
- const query = gql`
- query($id: String!) {
- workflow(id: $id) {
- id
- component {
- id
- lifecycle
- owner {
- id
- name
- type
- }
- ...ComponentWorkflowsEndpointsDropdownInfo
- }
- ${fragment ? `...${fragment.definitions[0].name.value}` : ''}
- }
- }
- ${ComponentWorkflowsEndpointsToolbar.fragment}
- ${fragment || ''}
- `;
-
- const emptyHelperTextWithDefault = emptyHelperText || `We couldn't find a workflow named '${id}'`;
- return (
-
- {data => {
- const workflow = data.workflow;
- if (!workflow.component) {
- return ;
- }
- const { component } = workflow;
- return (
-
-
-
- {typeof children === 'function' ? children(workflow) : children}
-
- );
- }}
-
- );
- }
-}
diff --git a/frontend/packages/shared/components/layout/workflow/WorkflowLayout.test.js b/frontend/packages/shared/components/layout/workflow/WorkflowLayout.test.js
deleted file mode 100644
index 15ae6a146a..0000000000
--- a/frontend/packages/shared/components/layout/workflow/WorkflowLayout.test.js
+++ /dev/null
@@ -1,69 +0,0 @@
-import { buildComponentInApp } from 'testUtils';
-import WorkflowLayout from './WorkflowLayout';
-import gql from 'graphql-tag';
-import FeatureFlags from 'shared/apis/featureFlags/featureFlags';
-
-const workflow = {
- id: 'my-workflow',
- component: {
- id: 'my-component',
- owner: { name: 'me' },
- },
- componentType: 'workflow',
- componentInfoLocationUri: 'ghe://a/b/c',
-};
-
-describe('', () => {
- it('renders progress while loading', () => {
- const rendered = buildComponentInApp(WorkflowLayout)
- .withApolloLoading()
- .render({ id: 'my-workflow' });
-
- rendered.getByTestId('progress');
- });
-
- it('renders data', () => {
- const mock = jest.spyOn(FeatureFlags, 'getItem').mockImplementation(flag => flag === 'workflow-alerts');
- const rendered = buildComponentInApp(WorkflowLayout)
- .withTheme()
- .withApolloData({ workflow })
- .render({ id: 'my-workflow' });
-
- rendered.getByText('my-workflow');
- rendered.getByText('Backfills');
- rendered.getByText('Dependencies');
- rendered.getByText('Alerting');
- mock.mockRestore();
- });
-
- it('renders with fragment', () => {
- let receivedData = null;
- const rendered = buildComponentInApp(WorkflowLayout)
- .withTheme()
- .withApolloData({
- workflow: {
- ...workflow,
- factsJson: JSON.stringify({
- service_tier: 1,
- }),
- },
- })
- .render({
- id: 'my-workflow',
- fragment: gql`
- fragment MoreData on Component {
- id
- }
- `,
- children: data => {
- receivedData = data;
- },
- });
-
- expect(receivedData).toEqual(expect.objectContaining({ id: 'my-workflow' }));
- rendered.getByText('my-workflow');
- rendered.getByText('Backfills');
- rendered.getByText('Dependencies');
- expect(rendered.queryByText('Alerting')).toBeNull();
- });
-});
diff --git a/frontend/packages/shared/components/layout/workflow/WorkflowNavigation.js b/frontend/packages/shared/components/layout/workflow/WorkflowNavigation.js
deleted file mode 100644
index b52f0a9a22..0000000000
--- a/frontend/packages/shared/components/layout/workflow/WorkflowNavigation.js
+++ /dev/null
@@ -1,23 +0,0 @@
-import React, { Component } from 'react';
-
-import { Navigation, NavItem } from 'shared/components/layout';
-import FeatureFlags from 'shared/apis/featureFlags/featureFlags';
-
-class WorkflowNavigation extends Component {
- render() {
- const { workflowId } = this.props;
- const workflowBaseUrl = `/workflows/${workflowId}`;
-
- return (
-
-
-
-
-
- {FeatureFlags.getItem('workflow-alerts') && }
-
- );
- }
-}
-
-export default WorkflowNavigation;
diff --git a/frontend/packages/shared/validators/ValidatorSysmodelComponent.js b/frontend/packages/shared/validators/ValidatorSysmodelComponent.js
deleted file mode 100644
index 864905682d..0000000000
--- a/frontend/packages/shared/validators/ValidatorSysmodelComponent.js
+++ /dev/null
@@ -1,25 +0,0 @@
-import { ValidatorBase } from 'shared/components/form/validators';
-import SysmodelClient from 'shared/apis/sysmodel/SysmodelClient';
-
-export default class ValidatorSysmodelComponent extends ValidatorBase {
- validate(value /* , element */) {
- return new Promise(result => {
- if (!/^[a-z][a-z0-9-]{2,253}[a-z0-9]$/i.test(value)) {
- return result(
- 'Must be 4 to 255 lowercase letters, digits, or hyphens. It must start with a letter. Trailing hyphens are prohibited.',
- );
- }
-
- SysmodelClient.getComponent(value)
- .then((/* response */) => {
- result(`The component '${value}' already exists`);
- })
- .catch(error => {
- if (error.response.status === 404) {
- return result(true);
- }
- result(`Error response (${error.response.status}) from sysmodel preventing validation`);
- });
- });
- }
-}
diff --git a/frontend/packages/shared/validators/ValidatorSysmodelComponent.test.js b/frontend/packages/shared/validators/ValidatorSysmodelComponent.test.js
deleted file mode 100644
index 2bfa2d8c92..0000000000
--- a/frontend/packages/shared/validators/ValidatorSysmodelComponent.test.js
+++ /dev/null
@@ -1,39 +0,0 @@
-import ValidatorSysmodelComponent from './ValidatorSysmodelComponent';
-import SysmodelClient from 'shared/apis/sysmodel/SysmodelClient';
-
-describe('ValidatorSysmodelComponent', () => {
- it('instantiates without error', () => {
- expect(() => {
- let validator = new ValidatorSysmodelComponent();
- expect(validator).toBeDefined();
- }).not.toThrow();
- });
-
- describe('has a working validate() method', () => {
- it('has sane defaults', async () => {
- const result = await new ValidatorSysmodelComponent().validate('');
- expect(result).toContain('Must be 4 to 255 lowercase');
- });
-
- it('Treats 200 as failure because component already exists', async () => {
- const sysmodelResponse = { response: { status: 200 } };
- jest.spyOn(SysmodelClient, 'getComponent').mockImplementation(() => Promise.resolve(sysmodelResponse));
- const result = await new ValidatorSysmodelComponent().validate('uniq-component-name');
- expect(result).toContain("'uniq-component-name' already exists");
- });
-
- it('Treats 404 as successful', async () => {
- const sysmodelResponse = { response: { status: 404 } };
- jest.spyOn(SysmodelClient, 'getComponent').mockImplementation(() => Promise.reject(sysmodelResponse));
- const result = await new ValidatorSysmodelComponent().validate('uniq-component-name');
- expect(result).toBeTruthy();
- });
-
- it('Catches 500 errors', async () => {
- const sysmodelResponse = { response: { status: 500 } };
- jest.spyOn(SysmodelClient, 'getComponent').mockImplementation(() => Promise.reject(sysmodelResponse));
- const result = await new ValidatorSysmodelComponent().validate('uniq-component-name');
- expect(result).toContain('Error response (500) from sysmodel preventing validation');
- });
- });
-});