From f203740f9c9167e75e94e51dcc67be498859d9f7 Mon Sep 17 00:00:00 2001 From: McKayla Washburn Date: Tue, 30 Jan 2024 22:59:46 +0000 Subject: [PATCH 1/4] refactor: move some things to modules/templates and modules/workspaces --- .../TemplateExampleCard.stories.tsx | 2 +- .../TemplateExampleCard/TemplateExampleCard.tsx | 0 .../TemplateFiles/TemplateFiles.stories.tsx | 0 .../templates}/TemplateFiles/TemplateFiles.tsx | 0 .../TemplateParameters/TemplateParameters.tsx | 0 .../TemplateResourcesTable.tsx | 0 .../TemplateScheduleAutostart.tsx | 0 .../WorkspaceBuild/WorkspaceBuildData.tsx | 0 .../workspaces}/WorkspaceBuildLogs/Logs.tsx | 0 .../WorkspaceBuildLogs.stories.tsx | 0 .../WorkspaceBuildLogs/WorkspaceBuildLogs.tsx | 0 .../WorkspaceOutdatedTooltip.stories.tsx | 16 +++++++++++++++- .../WorkspaceOutdatedTooltip.tsx | 0 .../WorkspaceStatusBadge/DormantDeletionText.tsx | 0 .../WorkspaceStatusBadge.stories.tsx | 0 .../WorkspaceStatusBadge.tsx | 0 16 files changed, 16 insertions(+), 2 deletions(-) rename site/src/{components => modules/templates}/TemplateExampleCard/TemplateExampleCard.stories.tsx (93%) rename site/src/{components => modules/templates}/TemplateExampleCard/TemplateExampleCard.tsx (100%) rename site/src/{components => modules/templates}/TemplateFiles/TemplateFiles.stories.tsx (100%) rename site/src/{components => modules/templates}/TemplateFiles/TemplateFiles.tsx (100%) rename site/src/{components => modules/templates}/TemplateParameters/TemplateParameters.tsx (100%) rename site/src/{components => modules/templates}/TemplateResourcesTable/TemplateResourcesTable.tsx (100%) rename site/src/{components => modules/templates}/TemplateScheduleAutostart/TemplateScheduleAutostart.tsx (100%) rename site/src/{components => modules/workspaces}/WorkspaceBuild/WorkspaceBuildData.tsx (100%) rename site/src/{components => modules/workspaces}/WorkspaceBuildLogs/Logs.tsx (100%) rename site/src/{components => modules/workspaces}/WorkspaceBuildLogs/WorkspaceBuildLogs.stories.tsx (100%) rename site/src/{components => modules/workspaces}/WorkspaceBuildLogs/WorkspaceBuildLogs.tsx (100%) rename site/src/{components => modules/workspaces}/WorkspaceOutdatedTooltip/WorkspaceOutdatedTooltip.stories.tsx (64%) rename site/src/{components => modules/workspaces}/WorkspaceOutdatedTooltip/WorkspaceOutdatedTooltip.tsx (100%) rename site/src/{components => modules/workspaces}/WorkspaceStatusBadge/DormantDeletionText.tsx (100%) rename site/src/{components => modules/workspaces}/WorkspaceStatusBadge/WorkspaceStatusBadge.stories.tsx (100%) rename site/src/{components => modules/workspaces}/WorkspaceStatusBadge/WorkspaceStatusBadge.tsx (100%) diff --git a/site/src/components/TemplateExampleCard/TemplateExampleCard.stories.tsx b/site/src/modules/templates/TemplateExampleCard/TemplateExampleCard.stories.tsx similarity index 93% rename from site/src/components/TemplateExampleCard/TemplateExampleCard.stories.tsx rename to site/src/modules/templates/TemplateExampleCard/TemplateExampleCard.stories.tsx index d2645c5bbc55f..59e31a9c46c49 100644 --- a/site/src/components/TemplateExampleCard/TemplateExampleCard.stories.tsx +++ b/site/src/modules/templates/TemplateExampleCard/TemplateExampleCard.stories.tsx @@ -7,7 +7,7 @@ import { import { TemplateExampleCard } from "./TemplateExampleCard"; const meta: Meta = { - title: "components/TemplateExampleCard", + title: "modules/templates/TemplateExampleCard", parameters: { chromatic }, component: TemplateExampleCard, args: { diff --git a/site/src/components/TemplateExampleCard/TemplateExampleCard.tsx b/site/src/modules/templates/TemplateExampleCard/TemplateExampleCard.tsx similarity index 100% rename from site/src/components/TemplateExampleCard/TemplateExampleCard.tsx rename to site/src/modules/templates/TemplateExampleCard/TemplateExampleCard.tsx diff --git a/site/src/components/TemplateFiles/TemplateFiles.stories.tsx b/site/src/modules/templates/TemplateFiles/TemplateFiles.stories.tsx similarity index 100% rename from site/src/components/TemplateFiles/TemplateFiles.stories.tsx rename to site/src/modules/templates/TemplateFiles/TemplateFiles.stories.tsx diff --git a/site/src/components/TemplateFiles/TemplateFiles.tsx b/site/src/modules/templates/TemplateFiles/TemplateFiles.tsx similarity index 100% rename from site/src/components/TemplateFiles/TemplateFiles.tsx rename to site/src/modules/templates/TemplateFiles/TemplateFiles.tsx diff --git a/site/src/components/TemplateParameters/TemplateParameters.tsx b/site/src/modules/templates/TemplateParameters/TemplateParameters.tsx similarity index 100% rename from site/src/components/TemplateParameters/TemplateParameters.tsx rename to site/src/modules/templates/TemplateParameters/TemplateParameters.tsx diff --git a/site/src/components/TemplateResourcesTable/TemplateResourcesTable.tsx b/site/src/modules/templates/TemplateResourcesTable/TemplateResourcesTable.tsx similarity index 100% rename from site/src/components/TemplateResourcesTable/TemplateResourcesTable.tsx rename to site/src/modules/templates/TemplateResourcesTable/TemplateResourcesTable.tsx diff --git a/site/src/components/TemplateScheduleAutostart/TemplateScheduleAutostart.tsx b/site/src/modules/templates/TemplateScheduleAutostart/TemplateScheduleAutostart.tsx similarity index 100% rename from site/src/components/TemplateScheduleAutostart/TemplateScheduleAutostart.tsx rename to site/src/modules/templates/TemplateScheduleAutostart/TemplateScheduleAutostart.tsx diff --git a/site/src/components/WorkspaceBuild/WorkspaceBuildData.tsx b/site/src/modules/workspaces/WorkspaceBuild/WorkspaceBuildData.tsx similarity index 100% rename from site/src/components/WorkspaceBuild/WorkspaceBuildData.tsx rename to site/src/modules/workspaces/WorkspaceBuild/WorkspaceBuildData.tsx diff --git a/site/src/components/WorkspaceBuildLogs/Logs.tsx b/site/src/modules/workspaces/WorkspaceBuildLogs/Logs.tsx similarity index 100% rename from site/src/components/WorkspaceBuildLogs/Logs.tsx rename to site/src/modules/workspaces/WorkspaceBuildLogs/Logs.tsx diff --git a/site/src/components/WorkspaceBuildLogs/WorkspaceBuildLogs.stories.tsx b/site/src/modules/workspaces/WorkspaceBuildLogs/WorkspaceBuildLogs.stories.tsx similarity index 100% rename from site/src/components/WorkspaceBuildLogs/WorkspaceBuildLogs.stories.tsx rename to site/src/modules/workspaces/WorkspaceBuildLogs/WorkspaceBuildLogs.stories.tsx diff --git a/site/src/components/WorkspaceBuildLogs/WorkspaceBuildLogs.tsx b/site/src/modules/workspaces/WorkspaceBuildLogs/WorkspaceBuildLogs.tsx similarity index 100% rename from site/src/components/WorkspaceBuildLogs/WorkspaceBuildLogs.tsx rename to site/src/modules/workspaces/WorkspaceBuildLogs/WorkspaceBuildLogs.tsx diff --git a/site/src/components/WorkspaceOutdatedTooltip/WorkspaceOutdatedTooltip.stories.tsx b/site/src/modules/workspaces/WorkspaceOutdatedTooltip/WorkspaceOutdatedTooltip.stories.tsx similarity index 64% rename from site/src/components/WorkspaceOutdatedTooltip/WorkspaceOutdatedTooltip.stories.tsx rename to site/src/modules/workspaces/WorkspaceOutdatedTooltip/WorkspaceOutdatedTooltip.stories.tsx index 5468a78ebee44..9a464b5b06913 100644 --- a/site/src/components/WorkspaceOutdatedTooltip/WorkspaceOutdatedTooltip.stories.tsx +++ b/site/src/modules/workspaces/WorkspaceOutdatedTooltip/WorkspaceOutdatedTooltip.stories.tsx @@ -1,5 +1,6 @@ import { action } from "@storybook/addon-actions"; import type { Meta, StoryObj } from "@storybook/react"; +import { expect, userEvent, waitFor, within } from "@storybook/test"; import { MockTemplateVersion, MockTemplate } from "testHelpers/entities"; import { WorkspaceOutdatedTooltip } from "./WorkspaceOutdatedTooltip"; @@ -24,6 +25,19 @@ const meta: Meta = { export default meta; type Story = StoryObj; -const Example: Story = {}; +const Example: Story = { + play: async ({ canvasElement, step }) => { + const screen = within(canvasElement); + + await step("activate hover trigger", async () => { + await userEvent.hover(screen.getByRole("button")); + await waitFor(() => + expect( + screen.getByText(MockTemplateVersion.message), + ).toBeInTheDocument(), + ); + }); + }, +}; export { Example as WorkspaceOutdatedTooltip }; diff --git a/site/src/components/WorkspaceOutdatedTooltip/WorkspaceOutdatedTooltip.tsx b/site/src/modules/workspaces/WorkspaceOutdatedTooltip/WorkspaceOutdatedTooltip.tsx similarity index 100% rename from site/src/components/WorkspaceOutdatedTooltip/WorkspaceOutdatedTooltip.tsx rename to site/src/modules/workspaces/WorkspaceOutdatedTooltip/WorkspaceOutdatedTooltip.tsx diff --git a/site/src/components/WorkspaceStatusBadge/DormantDeletionText.tsx b/site/src/modules/workspaces/WorkspaceStatusBadge/DormantDeletionText.tsx similarity index 100% rename from site/src/components/WorkspaceStatusBadge/DormantDeletionText.tsx rename to site/src/modules/workspaces/WorkspaceStatusBadge/DormantDeletionText.tsx diff --git a/site/src/components/WorkspaceStatusBadge/WorkspaceStatusBadge.stories.tsx b/site/src/modules/workspaces/WorkspaceStatusBadge/WorkspaceStatusBadge.stories.tsx similarity index 100% rename from site/src/components/WorkspaceStatusBadge/WorkspaceStatusBadge.stories.tsx rename to site/src/modules/workspaces/WorkspaceStatusBadge/WorkspaceStatusBadge.stories.tsx diff --git a/site/src/components/WorkspaceStatusBadge/WorkspaceStatusBadge.tsx b/site/src/modules/workspaces/WorkspaceStatusBadge/WorkspaceStatusBadge.tsx similarity index 100% rename from site/src/components/WorkspaceStatusBadge/WorkspaceStatusBadge.tsx rename to site/src/modules/workspaces/WorkspaceStatusBadge/WorkspaceStatusBadge.tsx From a6ac9458ba9a95444df7aaeb2e8a831cf9092ee6 Mon Sep 17 00:00:00 2001 From: McKayla Washburn Date: Tue, 30 Jan 2024 23:06:35 +0000 Subject: [PATCH 2/4] fix up the imports --- site/src/modules/resources/AgentRow.tsx | 2 +- .../TemplateFiles/TemplateFiles.stories.tsx | 2 +- .../WorkspaceBuildLogs.stories.tsx | 2 +- .../WorkspaceOutdatedTooltip.stories.tsx | 2 +- .../WorkspaceStatusBadge.stories.tsx | 2 +- .../CreateTemplatePage/CreateTemplateForm.tsx | 24 +++++++++---------- .../StarterTemplatesPageView.tsx | 6 ++--- .../TemplateFilesPage/TemplateFilesPage.tsx | 2 +- .../TemplateSummaryPageView.tsx | 2 +- .../TemplateScheduleForm.tsx | 8 +++---- .../TemplateVersionEditor.tsx | 20 ++++++++-------- .../TemplateVersionPage.tsx | 2 +- .../TemplateVersionPageView.tsx | 10 ++++---- .../pages/TemplatesPage/EmptyTemplates.tsx | 2 +- .../WorkspaceBuildPageView.tsx | 4 ++-- .../pages/WorkspacePage/HistorySidebar.tsx | 13 ++++++---- .../WorkspaceBuildLogsSection.tsx | 2 +- .../pages/WorkspacePage/WorkspaceTopbar.tsx | 12 +++++----- .../pages/WorkspacesPage/WorkspacesTable.tsx | 4 ++-- 19 files changed, 63 insertions(+), 58 deletions(-) diff --git a/site/src/modules/resources/AgentRow.tsx b/site/src/modules/resources/AgentRow.tsx index e0a1e9f9f59da..ac8ea7009a687 100644 --- a/site/src/modules/resources/AgentRow.tsx +++ b/site/src/modules/resources/AgentRow.tsx @@ -25,7 +25,7 @@ import { Line, LogLine, logLineHeight, -} from "components/WorkspaceBuildLogs/Logs"; +} from "modules/workspaces/WorkspaceBuildLogs/Logs"; import { useProxy } from "contexts/ProxyContext"; import { Stack } from "components/Stack/Stack"; import { AgentLatency } from "./AgentLatency"; diff --git a/site/src/modules/templates/TemplateFiles/TemplateFiles.stories.tsx b/site/src/modules/templates/TemplateFiles/TemplateFiles.stories.tsx index ba484d62c74bb..f878fcedf96c1 100644 --- a/site/src/modules/templates/TemplateFiles/TemplateFiles.stories.tsx +++ b/site/src/modules/templates/TemplateFiles/TemplateFiles.stories.tsx @@ -13,7 +13,7 @@ const exampleFiles = { }; const meta: Meta = { - title: "components/TemplateFiles", + title: "modules/templates/TemplateFiles", parameters: { chromatic }, component: TemplateFiles, args: { diff --git a/site/src/modules/workspaces/WorkspaceBuildLogs/WorkspaceBuildLogs.stories.tsx b/site/src/modules/workspaces/WorkspaceBuildLogs/WorkspaceBuildLogs.stories.tsx index 39d966b890fa7..ffbc982d012f3 100644 --- a/site/src/modules/workspaces/WorkspaceBuildLogs/WorkspaceBuildLogs.stories.tsx +++ b/site/src/modules/workspaces/WorkspaceBuildLogs/WorkspaceBuildLogs.stories.tsx @@ -4,7 +4,7 @@ import { MockWorkspaceBuildLogs } from "testHelpers/entities"; import { WorkspaceBuildLogs } from "./WorkspaceBuildLogs"; const meta: Meta = { - title: "components/WorkspaceBuildLogs", + title: "modules/workspaces/WorkspaceBuildLogs", parameters: { chromatic }, component: WorkspaceBuildLogs, }; diff --git a/site/src/modules/workspaces/WorkspaceOutdatedTooltip/WorkspaceOutdatedTooltip.stories.tsx b/site/src/modules/workspaces/WorkspaceOutdatedTooltip/WorkspaceOutdatedTooltip.stories.tsx index 9a464b5b06913..75fce5653ea8e 100644 --- a/site/src/modules/workspaces/WorkspaceOutdatedTooltip/WorkspaceOutdatedTooltip.stories.tsx +++ b/site/src/modules/workspaces/WorkspaceOutdatedTooltip/WorkspaceOutdatedTooltip.stories.tsx @@ -5,7 +5,7 @@ import { MockTemplateVersion, MockTemplate } from "testHelpers/entities"; import { WorkspaceOutdatedTooltip } from "./WorkspaceOutdatedTooltip"; const meta: Meta = { - title: "components/WorkspaceOutdatedTooltip", + title: "modules/workspaces/WorkspaceOutdatedTooltip", component: WorkspaceOutdatedTooltip, parameters: { queries: [ diff --git a/site/src/modules/workspaces/WorkspaceStatusBadge/WorkspaceStatusBadge.stories.tsx b/site/src/modules/workspaces/WorkspaceStatusBadge/WorkspaceStatusBadge.stories.tsx index ec86e1099f7d8..d41703505b93d 100644 --- a/site/src/modules/workspaces/WorkspaceStatusBadge/WorkspaceStatusBadge.stories.tsx +++ b/site/src/modules/workspaces/WorkspaceStatusBadge/WorkspaceStatusBadge.stories.tsx @@ -25,7 +25,7 @@ const MockedAppearance = { }; const meta: Meta = { - title: "components/WorkspaceStatusBadge", + title: "modules/workspaces/WorkspaceStatusBadge", component: WorkspaceStatusBadge, decorators: [ (Story) => ( diff --git a/site/src/pages/CreateTemplatePage/CreateTemplateForm.tsx b/site/src/pages/CreateTemplatePage/CreateTemplateForm.tsx index 5844988d61820..22eb2ee16c26c 100644 --- a/site/src/pages/CreateTemplatePage/CreateTemplateForm.tsx +++ b/site/src/pages/CreateTemplatePage/CreateTemplateForm.tsx @@ -1,5 +1,10 @@ import { type Interpolation, type Theme } from "@emotion/react"; import TextField from "@mui/material/TextField"; +import { useFormik } from "formik"; +import { type FC, useEffect } from "react"; +import camelCase from "lodash/camelCase"; +import capitalize from "lodash/capitalize"; +import * as Yup from "yup"; import type { ProvisionerJobLog, Template, @@ -8,18 +13,19 @@ import type { VariableValue, } from "api/typesGenerated"; import { Stack } from "components/Stack/Stack"; -import { TemplateUpload, type TemplateUploadProps } from "./TemplateUpload"; -import { useFormik } from "formik"; import { SelectedTemplate } from "pages/CreateWorkspacePage/SelectedTemplate"; -import { type FC, useEffect } from "react"; import { nameValidator, getFormHelpers, onChangeTrimmed, templateDisplayNameValidator, } from "utils/formUtils"; -import * as Yup from "yup"; -import { WorkspaceBuildLogs } from "components/WorkspaceBuildLogs/WorkspaceBuildLogs"; +import { + type TemplateAutostartRequirementDaysValue, + type TemplateAutostopRequirementDaysValue, +} from "utils/schedule"; +import { sortedDays } from "modules/templates/TemplateScheduleAutostart/TemplateScheduleAutostart"; +import { WorkspaceBuildLogs } from "modules/workspaces/WorkspaceBuildLogs/WorkspaceBuildLogs"; import { IconField } from "components/IconField/IconField"; import { HorizontalForm, @@ -27,14 +33,8 @@ import { FormFields, FormFooter, } from "components/Form/Form"; -import camelCase from "lodash/camelCase"; -import capitalize from "lodash/capitalize"; +import { TemplateUpload, type TemplateUploadProps } from "./TemplateUpload"; import { VariableInput } from "./VariableInput"; -import { - type TemplateAutostartRequirementDaysValue, - type TemplateAutostopRequirementDaysValue, -} from "utils/schedule"; -import { sortedDays } from "components/TemplateScheduleAutostart/TemplateScheduleAutostart"; const MAX_DESCRIPTION_CHAR_LIMIT = 128; diff --git a/site/src/pages/StarterTemplatesPage/StarterTemplatesPageView.tsx b/site/src/pages/StarterTemplatesPage/StarterTemplatesPageView.tsx index f1f160f813882..ffee1751d8b26 100644 --- a/site/src/pages/StarterTemplatesPage/StarterTemplatesPageView.tsx +++ b/site/src/pages/StarterTemplatesPage/StarterTemplatesPageView.tsx @@ -1,4 +1,6 @@ import { type Interpolation, type Theme } from "@emotion/react"; +import { type FC } from "react"; +import { Link, useSearchParams } from "react-router-dom"; import { ErrorAlert } from "components/Alert/ErrorAlert"; import { Loader } from "components/Loader/Loader"; import { Margins } from "components/Margins/Margins"; @@ -8,9 +10,7 @@ import { PageHeaderTitle, } from "components/PageHeader/PageHeader"; import { Stack } from "components/Stack/Stack"; -import { TemplateExampleCard } from "components/TemplateExampleCard/TemplateExampleCard"; -import { type FC } from "react"; -import { Link, useSearchParams } from "react-router-dom"; +import { TemplateExampleCard } from "modules/templates/TemplateExampleCard/TemplateExampleCard"; import type { StarterTemplatesByTag } from "utils/starterTemplates"; const getTagLabel = (tag: string) => { diff --git a/site/src/pages/TemplatePage/TemplateFilesPage/TemplateFilesPage.tsx b/site/src/pages/TemplatePage/TemplateFilesPage/TemplateFilesPage.tsx index e80e21d6c27db..a3cf599ef8f0a 100644 --- a/site/src/pages/TemplatePage/TemplateFilesPage/TemplateFilesPage.tsx +++ b/site/src/pages/TemplatePage/TemplateFilesPage/TemplateFilesPage.tsx @@ -6,7 +6,7 @@ import { Loader } from "components/Loader/Loader"; import { TemplateFiles, useFileTab, -} from "components/TemplateFiles/TemplateFiles"; +} from "modules/templates/TemplateFiles/TemplateFiles"; import { useTemplateLayoutContext } from "pages/TemplatePage/TemplateLayout"; import { useOrganizationId } from "contexts/auth/useOrganizationId"; import { getTemplatePageTitle } from "../utils"; diff --git a/site/src/pages/TemplatePage/TemplateSummaryPage/TemplateSummaryPageView.tsx b/site/src/pages/TemplatePage/TemplateSummaryPage/TemplateSummaryPageView.tsx index f73e7b1592023..fcf662ea2dc48 100644 --- a/site/src/pages/TemplatePage/TemplateSummaryPage/TemplateSummaryPageView.tsx +++ b/site/src/pages/TemplatePage/TemplateSummaryPage/TemplateSummaryPageView.tsx @@ -7,7 +7,7 @@ import type { } from "api/typesGenerated"; import { Loader } from "components/Loader/Loader"; import { Stack } from "components/Stack/Stack"; -import { TemplateResourcesTable } from "components/TemplateResourcesTable/TemplateResourcesTable"; +import { TemplateResourcesTable } from "modules/templates/TemplateResourcesTable/TemplateResourcesTable"; import { TemplateStats } from "./TemplateStats"; export interface TemplateSummaryPageViewProps { diff --git a/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateScheduleForm.tsx b/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateScheduleForm.tsx index a8d0403a14f19..807371108b37f 100644 --- a/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateScheduleForm.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateScheduleForm.tsx @@ -5,8 +5,9 @@ import Checkbox from "@mui/material/Checkbox"; import FormControlLabel from "@mui/material/FormControlLabel"; import Switch from "@mui/material/Switch"; import { FormikTouched, useFormik } from "formik"; -import { FC, ChangeEvent, useState, useEffect } from "react"; -import { Template, UpdateTemplateMeta } from "api/typesGenerated"; +import { type FC, ChangeEvent, useState, useEffect } from "react"; +import { useTheme } from "@emotion/react"; +import type { Template, UpdateTemplateMeta } from "api/typesGenerated"; import { getFormHelpers } from "utils/formUtils"; import { docs } from "utils/docs"; import { @@ -20,6 +21,7 @@ import { FormFields, } from "components/Form/Form"; import { Stack } from "components/Stack/Stack"; +import { TemplateScheduleAutostart } from "modules/templates/TemplateScheduleAutostart/TemplateScheduleAutostart"; import { useWorkspacesToGoDormant, useWorkspacesToBeDeleted, @@ -38,8 +40,6 @@ import { AutostopRequirementWeeksHelperText, convertAutostopRequirementDaysValue, } from "./AutostopRequirementHelperText"; -import { useTheme } from "@emotion/react"; -import { TemplateScheduleAutostart } from "components/TemplateScheduleAutostart/TemplateScheduleAutostart"; const MS_HOUR_CONVERSION = 3600000; const MS_DAY_CONVERSION = 86400000; diff --git a/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditor.tsx b/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditor.tsx index 96d9f8c0d20b0..74bda67ecd080 100644 --- a/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditor.tsx +++ b/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditor.tsx @@ -2,6 +2,14 @@ import Button from "@mui/material/Button"; import IconButton from "@mui/material/IconButton"; import Tooltip from "@mui/material/Tooltip"; import CreateIcon from "@mui/icons-material/AddOutlined"; +import { Link as RouterLink } from "react-router-dom"; +import { type Interpolation, type Theme, useTheme } from "@emotion/react"; +import { type FC, useCallback, useEffect, useRef, useState } from "react"; +import AlertTitle from "@mui/material/AlertTitle"; +import ButtonGroup from "@mui/material/ButtonGroup"; +import ArrowBackOutlined from "@mui/icons-material/ArrowBackOutlined"; +import CloseOutlined from "@mui/icons-material/CloseOutlined"; +import PlayArrowOutlined from "@mui/icons-material/PlayArrowOutlined"; import type { ProvisionerJobLog, Template, @@ -10,13 +18,10 @@ import type { VariableValue, WorkspaceResource, } from "api/typesGenerated"; -import { Link as RouterLink } from "react-router-dom"; import { Alert, AlertDetail } from "components/Alert/Alert"; -import { TemplateResourcesTable } from "components/TemplateResourcesTable/TemplateResourcesTable"; -import { WorkspaceBuildLogs } from "components/WorkspaceBuildLogs/WorkspaceBuildLogs"; +import { TemplateResourcesTable } from "modules/templates/TemplateResourcesTable/TemplateResourcesTable"; +import { WorkspaceBuildLogs } from "modules/workspaces/WorkspaceBuildLogs/WorkspaceBuildLogs"; import { PublishVersionData } from "pages/TemplateVersionEditorPage/types"; -import { type FC, useCallback, useEffect, useRef, useState } from "react"; -import PlayArrowOutlined from "@mui/icons-material/PlayArrowOutlined"; import { createFile, existsFile, @@ -38,10 +43,6 @@ import { MissingTemplateVariablesDialog } from "./MissingTemplateVariablesDialog import { MonacoEditor } from "./MonacoEditor"; import { PublishTemplateVersionDialog } from "./PublishTemplateVersionDialog"; import { TemplateVersionStatusBadge } from "./TemplateVersionStatusBadge"; -import AlertTitle from "@mui/material/AlertTitle"; -import { type Interpolation, type Theme, useTheme } from "@emotion/react"; -import ArrowBackOutlined from "@mui/icons-material/ArrowBackOutlined"; -import CloseOutlined from "@mui/icons-material/CloseOutlined"; import { MONOSPACE_FONT_FAMILY } from "theme/constants"; import { Loader } from "components/Loader/Loader"; import { @@ -53,7 +54,6 @@ import { TopbarIconButton, } from "components/FullPageLayout/Topbar"; import { Sidebar } from "components/FullPageLayout/Sidebar"; -import ButtonGroup from "@mui/material/ButtonGroup"; import { ProvisionerTagsPopover } from "./ProvisionerTagsPopover"; type Tab = "logs" | "resources" | undefined; // Undefined is to hide the tab diff --git a/site/src/pages/TemplateVersionPage/TemplateVersionPage.tsx b/site/src/pages/TemplateVersionPage/TemplateVersionPage.tsx index 887ffca6d811d..7110c33dc47b8 100644 --- a/site/src/pages/TemplateVersionPage/TemplateVersionPage.tsx +++ b/site/src/pages/TemplateVersionPage/TemplateVersionPage.tsx @@ -5,7 +5,7 @@ import { useParams } from "react-router-dom"; import { usePermissions } from "contexts/auth/usePermissions"; import { useOrganizationId } from "contexts/auth/useOrganizationId"; import { pageTitle } from "utils/page"; -import { useFileTab } from "components/TemplateFiles/TemplateFiles"; +import { useFileTab } from "modules/templates/TemplateFiles/TemplateFiles"; import TemplateVersionPageView from "./TemplateVersionPageView"; import { templateByName, diff --git a/site/src/pages/TemplateVersionPage/TemplateVersionPageView.tsx b/site/src/pages/TemplateVersionPage/TemplateVersionPageView.tsx index c74863eb3cb56..c8aa6d6c0e262 100644 --- a/site/src/pages/TemplateVersionPage/TemplateVersionPageView.tsx +++ b/site/src/pages/TemplateVersionPage/TemplateVersionPageView.tsx @@ -1,6 +1,8 @@ import Button from "@mui/material/Button"; import AddIcon from "@mui/icons-material/Add"; import EditIcon from "@mui/icons-material/Edit"; +import { type FC } from "react"; +import { Link as RouterLink } from "react-router-dom"; import { Loader } from "components/Loader/Loader"; import { Margins } from "components/Margins/Margins"; import { @@ -11,14 +13,12 @@ import { } from "components/PageHeader/PageHeader"; import { Stack } from "components/Stack/Stack"; import { Stats, StatsItem } from "components/Stats/Stats"; -import { TemplateFiles } from "components/TemplateFiles/TemplateFiles"; +import { TemplateFiles } from "modules/templates/TemplateFiles/TemplateFiles"; import { UseTabResult } from "hooks/useTab"; -import { type FC } from "react"; -import { Link as RouterLink } from "react-router-dom"; +import type { TemplateVersion } from "api/typesGenerated"; import { createDayString } from "utils/createDayString"; -import { ErrorAlert } from "components/Alert/ErrorAlert"; -import { TemplateVersion } from "api/typesGenerated"; import { TemplateVersionFiles } from "utils/templateVersion"; +import { ErrorAlert } from "components/Alert/ErrorAlert"; export interface TemplateVersionPageViewProps { versionName: string; diff --git a/site/src/pages/TemplatesPage/EmptyTemplates.tsx b/site/src/pages/TemplatesPage/EmptyTemplates.tsx index cea7969c7eda9..b628c30e86fb7 100644 --- a/site/src/pages/TemplatesPage/EmptyTemplates.tsx +++ b/site/src/pages/TemplatesPage/EmptyTemplates.tsx @@ -7,7 +7,7 @@ import type { TemplateExample } from "api/typesGenerated"; import { CodeExample } from "components/CodeExample/CodeExample"; import { Stack } from "components/Stack/Stack"; import { TableEmpty } from "components/TableEmpty/TableEmpty"; -import { TemplateExampleCard } from "components/TemplateExampleCard/TemplateExampleCard"; +import { TemplateExampleCard } from "modules/templates/TemplateExampleCard/TemplateExampleCard"; import { docs } from "utils/docs"; // Those are from https://github.com/coder/coder/tree/main/examples/templates diff --git a/site/src/pages/WorkspaceBuildPage/WorkspaceBuildPageView.tsx b/site/src/pages/WorkspaceBuildPage/WorkspaceBuildPageView.tsx index ec26222a08921..c162f1ed155f7 100644 --- a/site/src/pages/WorkspaceBuildPage/WorkspaceBuildPageView.tsx +++ b/site/src/pages/WorkspaceBuildPage/WorkspaceBuildPageView.tsx @@ -7,7 +7,7 @@ import { DashboardFullPage } from "modules/dashboard/DashboardLayout"; import { BuildAvatar } from "components/BuildAvatar/BuildAvatar"; import { Loader } from "components/Loader/Loader"; import { Stack } from "components/Stack/Stack"; -import { WorkspaceBuildLogs } from "components/WorkspaceBuildLogs/WorkspaceBuildLogs"; +import { WorkspaceBuildLogs } from "modules/workspaces/WorkspaceBuildLogs/WorkspaceBuildLogs"; import { FullWidthPageHeader, PageHeaderTitle, @@ -18,7 +18,7 @@ import { Alert } from "components/Alert/Alert"; import { WorkspaceBuildData, WorkspaceBuildDataSkeleton, -} from "components/WorkspaceBuild/WorkspaceBuildData"; +} from "modules/workspaces/WorkspaceBuild/WorkspaceBuildData"; import { Sidebar, SidebarCaption, SidebarItem } from "./Sidebar"; const sortLogsByCreatedAt = (logs: ProvisionerJobLog[]) => { diff --git a/site/src/pages/WorkspacePage/HistorySidebar.tsx b/site/src/pages/WorkspacePage/HistorySidebar.tsx index 27c757b3fde2a..5e20afc595ea0 100644 --- a/site/src/pages/WorkspacePage/HistorySidebar.tsx +++ b/site/src/pages/WorkspacePage/HistorySidebar.tsx @@ -1,7 +1,9 @@ import ArrowDownwardOutlined from "@mui/icons-material/ArrowDownwardOutlined"; import LoadingButton from "@mui/lab/LoadingButton"; +import { type FC } from "react"; +import { useInfiniteQuery } from "react-query"; import { infiniteWorkspaceBuilds } from "api/queries/workspaceBuilds"; -import { Workspace } from "api/typesGenerated"; +import type { Workspace } from "api/typesGenerated"; import { Sidebar, SidebarCaption, @@ -11,10 +13,13 @@ import { import { WorkspaceBuildData, WorkspaceBuildDataSkeleton, -} from "components/WorkspaceBuild/WorkspaceBuildData"; -import { useInfiniteQuery } from "react-query"; +} from "modules/workspaces/WorkspaceBuild/WorkspaceBuildData"; + +interface HistorySidebarProps { + workspace: Workspace; +} -export const HistorySidebar = ({ workspace }: { workspace: Workspace }) => { +export const HistorySidebar: FC = ({ workspace }) => { const buildsQuery = useInfiniteQuery({ ...infiniteWorkspaceBuilds(workspace?.id ?? ""), enabled: workspace !== undefined, diff --git a/site/src/pages/WorkspacePage/WorkspaceBuildLogsSection.tsx b/site/src/pages/WorkspacePage/WorkspaceBuildLogsSection.tsx index 7460021b52bb8..35eef3519503e 100644 --- a/site/src/pages/WorkspacePage/WorkspaceBuildLogsSection.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceBuildLogsSection.tsx @@ -2,7 +2,7 @@ import { useTheme } from "@emotion/react"; import { type FC, useRef, useEffect } from "react"; import type { ProvisionerJobLog } from "api/typesGenerated"; import { Loader } from "components/Loader/Loader"; -import { WorkspaceBuildLogs } from "components/WorkspaceBuildLogs/WorkspaceBuildLogs"; +import { WorkspaceBuildLogs } from "modules/workspaces/WorkspaceBuildLogs/WorkspaceBuildLogs"; interface WorkspaceBuildLogsSectionProps { logs?: ProvisionerJobLog[]; diff --git a/site/src/pages/WorkspacePage/WorkspaceTopbar.tsx b/site/src/pages/WorkspacePage/WorkspaceTopbar.tsx index e6ff5b25f0fa6..dda3f94db2d74 100644 --- a/site/src/pages/WorkspacePage/WorkspaceTopbar.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceTopbar.tsx @@ -17,11 +17,7 @@ import { TopbarIcon, TopbarIconButton, } from "components/FullPageLayout/Topbar"; -import { WorkspaceStatusBadge } from "components/WorkspaceStatusBadge/WorkspaceStatusBadge"; -import { - WorkspaceScheduleControls, - shouldDisplayScheduleControls, -} from "./WorkspaceScheduleControls"; +import { WorkspaceStatusBadge } from "modules/workspaces/WorkspaceStatusBadge/WorkspaceStatusBadge"; import { workspaceQuota } from "api/queries/workspaceQuota"; import { useDashboard } from "modules/dashboard/useDashboard"; import { displayDormantDeletion } from "utils/dormant"; @@ -29,10 +25,14 @@ import { Popover, PopoverTrigger } from "components/Popover/Popover"; import { HelpTooltipContent } from "components/HelpTooltip/HelpTooltip"; import { AvatarData } from "components/AvatarData/AvatarData"; import { ExternalAvatar } from "components/Avatar/Avatar"; +import { UserAvatar } from "components/UserAvatar/UserAvatar"; import { WorkspaceActions } from "./WorkspaceActions/WorkspaceActions"; import { WorkspaceNotifications } from "./WorkspaceNotifications/WorkspaceNotifications"; +import { + WorkspaceScheduleControls, + shouldDisplayScheduleControls, +} from "./WorkspaceScheduleControls"; import { WorkspacePermissions } from "./permissions"; -import { UserAvatar } from "components/UserAvatar/UserAvatar"; export type WorkspaceError = | "getBuildsError" diff --git a/site/src/pages/WorkspacesPage/WorkspacesTable.tsx b/site/src/pages/WorkspacesPage/WorkspacesTable.tsx index 4e96e4fdc6867..4c3d2167f107a 100644 --- a/site/src/pages/WorkspacesPage/WorkspacesTable.tsx +++ b/site/src/pages/WorkspacesPage/WorkspacesTable.tsx @@ -21,11 +21,11 @@ import { AvatarData } from "components/AvatarData/AvatarData"; import { ExternalAvatar } from "components/Avatar/Avatar"; import { Stack } from "components/Stack/Stack"; import { LastUsed } from "pages/WorkspacesPage/LastUsed"; -import { WorkspaceOutdatedTooltip } from "components/WorkspaceOutdatedTooltip/WorkspaceOutdatedTooltip"; +import { WorkspaceOutdatedTooltip } from "modules/workspaces/WorkspaceOutdatedTooltip/WorkspaceOutdatedTooltip"; import { DormantStatusBadge, WorkspaceStatusBadge, -} from "components/WorkspaceStatusBadge/WorkspaceStatusBadge"; +} from "modules/workspaces/WorkspaceStatusBadge/WorkspaceStatusBadge"; import { getDisplayWorkspaceTemplateName } from "utils/workspace"; import { AvatarDataSkeleton } from "components/AvatarData/AvatarDataSkeleton"; import { InfoTooltip } from "components/InfoTooltip/InfoTooltip"; From d7df2c508a4512dc1d3c210087430587cbdd5931 Mon Sep 17 00:00:00 2001 From: McKayla Washburn Date: Wed, 31 Jan 2024 18:37:39 +0000 Subject: [PATCH 3/4] update a mock --- .../TemplateVersionEditorPage.test.tsx | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditorPage.test.tsx b/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditorPage.test.tsx index 5a94169f7b2d2..8c8146b5c1369 100644 --- a/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditorPage.test.tsx +++ b/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditorPage.test.tsx @@ -24,11 +24,14 @@ import { AppProviders } from "App"; // For some reason this component in Jest is throwing a MUI style warning so, // since we don't need it for this test, we can mock it out -jest.mock("components/TemplateResourcesTable/TemplateResourcesTable", () => { - return { - TemplateResourcesTable: () =>
, - }; -}); +jest.mock( + "modules/templates/TemplateResourcesTable/TemplateResourcesTable", + () => { + return { + TemplateResourcesTable: () =>
, + }; + }, +); const renderTemplateEditorPage = () => { renderWithAuth(, { From b827e537bd728b22267e970e8be426dbb0f74777 Mon Sep 17 00:00:00 2001 From: McKayla Washburn Date: Wed, 31 Jan 2024 18:39:03 +0000 Subject: [PATCH 4/4] inline --- .../TemplateVersionEditorPage.test.tsx | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditorPage.test.tsx b/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditorPage.test.tsx index 8c8146b5c1369..c49d68110009d 100644 --- a/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditorPage.test.tsx +++ b/site/src/pages/TemplateVersionEditorPage/TemplateVersionEditorPage.test.tsx @@ -26,11 +26,9 @@ import { AppProviders } from "App"; // since we don't need it for this test, we can mock it out jest.mock( "modules/templates/TemplateResourcesTable/TemplateResourcesTable", - () => { - return { - TemplateResourcesTable: () =>
, - }; - }, + () => ({ + TemplateResourcesTable: () =>
, + }), ); const renderTemplateEditorPage = () => { @@ -40,7 +38,7 @@ const renderTemplateEditorPage = () => { extraRoutes: [ { path: "/templates/:templateId", - element:
, + element:
, }, ], });