Skip to content

Commit cee332b

Browse files
committed
WIP mock eventsource
1 parent d681e24 commit cee332b

File tree

5 files changed

+297
-5
lines changed

5 files changed

+297
-5
lines changed

site/package.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,9 @@
133133
"prettier": "2.8.1",
134134
"resize-observer": "1.0.4",
135135
"semver": "7.3.7",
136+
"storybook-addon-fetch-mock": "^1.0.1",
137+
"storybook-addon-mock": "^3.2.0",
138+
"storybook-react-context": "^0.6.0",
136139
"typescript": "4.8.2"
137140
},
138141
"browserslist": [

site/src/components/Resources/AgentMetadata.tsx

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@ import makeStyles from "@material-ui/core/styles/makeStyles"
33
import { watchAgentMetadata } from "api/api"
44
import { WorkspaceAgent, WorkspaceAgentMetadata } from "api/typesGenerated"
55
import { Stack } from "components/Stack/Stack"
6-
import { FC, useEffect, useState } from "react"
6+
import { createContext, FC, useContext, useEffect, useState } from "react"
7+
8+
export const WatchAgentMetadataContext = createContext(watchAgentMetadata)
79

810
const MetadataItem: FC<{ item: WorkspaceAgentMetadata }> = ({ item }) => {
911
const styles = useStyles()
@@ -50,11 +52,15 @@ const MetadataItem: FC<{ item: WorkspaceAgentMetadata }> = ({ item }) => {
5052
)
5153
}
5254

53-
export const AgentMetadata: FC<{ agent: WorkspaceAgent }> = ({ agent }) => {
55+
export const AgentMetadata: FC<{
56+
agent: WorkspaceAgent
57+
}> = ({ agent }) => {
5458
const [metadata, setMetadata] = useState<
5559
WorkspaceAgentMetadata[] | undefined
5660
>(undefined)
5761

62+
const watchAgentMetadata = useContext(WatchAgentMetadataContext)
63+
5864
useEffect(() => {
5965
const source = watchAgentMetadata(agent.id)
6066

@@ -68,7 +74,7 @@ export const AgentMetadata: FC<{ agent: WorkspaceAgent }> = ({ agent }) => {
6874
return () => {
6975
source.close()
7076
}
71-
}, [agent.id])
77+
}, [agent.id, watchAgentMetadata])
7278

7379
const styles = useStyles()
7480
if (metadata === undefined) {

site/src/components/Workspace/Workspace.stories.tsx

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,23 @@
11
import { action } from "@storybook/addon-actions"
22
import { Story } from "@storybook/react"
3+
import { WatchAgentMetadataContext } from "components/Resources/AgentMetadata"
34
import * as Mocks from "../../testHelpers/entities"
45
import { Workspace, WorkspaceErrors, WorkspaceProps } from "./Workspace"
6+
import { withReactContext } from "storybook-react-context"
57

68
export default {
79
title: "components/Workspace",
810
component: Workspace,
911
argTypes: {},
12+
decorators: [
13+
withReactContext({
14+
Context: WatchAgentMetadataContext,
15+
initialState: (_: string): EventSource => {
16+
const s = new EventSource()
17+
return s
18+
},
19+
}),
20+
],
1021
}
1122

1223
const Template: Story<WorkspaceProps> = (args) => <Workspace {...args} />

site/src/testHelpers/handlers.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -318,4 +318,16 @@ export const handlers = [
318318
return res(ctx.status(200), ctx.json([M.MockWorkspaceBuildParameter1]))
319319
},
320320
),
321+
322+
rest.get(
323+
"/api/v2/workspaceagents/:workspaceAgentId/watch-metadata",
324+
(_, res, ctx) => {
325+
return res(
326+
ctx.status(200),
327+
ctx.set("Connection", "keep-alive"),
328+
ctx.set("Content-Type", "text/event-stream"),
329+
ctx.body(`data: []\n\n`),
330+
)
331+
},
332+
),
321333
]

0 commit comments

Comments
 (0)