Skip to content

Commit 9f26e5b

Browse files
committed
fix: satisfy effect lint for create flow
1 parent f424384 commit 9f26e5b

2 files changed

Lines changed: 47 additions & 14 deletions

File tree

packages/app/src/docker-git/menu-create-shared.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,10 @@ const parseRepoStepInput = (
279279
})
280280
}
281281

282-
const createStepApplied = (): Either.Either<true, ParseError> => Either.right(true as const)
282+
const createStepApplied = (): Either.Either<true, ParseError> => {
283+
const applied: true = true
284+
return Either.right(applied)
285+
}
283286

284287
const hasOwn = <K extends keyof CreateInputs>(values: Partial<CreateInputs>, key: K): boolean =>
285288
Object.prototype.hasOwnProperty.call(values, key)

packages/app/tests/docker-git/app-ready-create.test.ts

Lines changed: 43 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,52 @@
1-
import type { Dispatch, SetStateAction } from "react"
1+
import type { SetStateAction } from "react"
22
import { describe, expect, it, vi } from "vitest"
33

44
import { createInitialFlowView, type CreateFlowView, resolveCreateFlowSteps } from "../../src/docker-git/menu-create-shared.js"
55
import type { BrowserActionContext } from "../../src/web/actions.js"
66
import { submitCreateView } from "../../src/web/app-ready-create.js"
77

8+
const createSetter = <A>() => vi.fn((_value: SetStateAction<A>) => undefined)
9+
810
const createBrowserActionContext = (): BrowserActionContext => ({
11+
addTerminalSession: vi.fn(),
12+
databaseConnectionInput: "",
13+
databaseLabelInput: "",
914
githubStatus: {
10-
tokens: [{ status: "valid" }]
11-
} as never,
15+
summary: "ok",
16+
tokens: [{ key: "GITHUB_TOKEN", label: "default", login: "octocat", status: "valid" }]
17+
},
18+
portForwardInput: "",
19+
reloadDashboard: vi.fn(),
20+
selectedProjectId: null,
21+
selectedProjectKey: null,
22+
selectedProjectName: null,
1223
setActionPrompt: vi.fn(),
13-
setActiveScreen: vi.fn(),
24+
setActiveScreen: createSetter(),
25+
setAuthSnapshot: createSetter(),
26+
setBusyLabel: createSetter(),
27+
setDatabaseConnectionInput: createSetter(),
28+
setDatabaseForwards: createSetter(),
29+
setDatabaseLabelInput: createSetter(),
30+
setDatabaseProfiles: createSetter(),
31+
setDatabaseSession: createSetter(),
32+
setGithubStatus: createSetter(),
1433
setMessage: vi.fn(),
15-
setSelectedMenuIndex: vi.fn()
16-
} as unknown as BrowserActionContext)
34+
setOutput: createSetter(),
35+
setPortForwardInput: createSetter(),
36+
setPortForwards: createSetter(),
37+
setProjectAuthSnapshot: createSetter(),
38+
setProjectBrowser: createSetter(),
39+
setProjectTaskLogs: createSetter(),
40+
setProjectTasks: createSetter(),
41+
setSelectedMenuIndex: createSetter(),
42+
setSelectedProject: createSetter(),
43+
setSelectedProjectId: createSetter()
44+
})
1745

1846
describe("app-ready-create", () => {
1947
it("advances to the next create field on Enter for a repo URL", () => {
2048
const context = createBrowserActionContext()
21-
const setCreateViewSpy = vi.fn()
22-
const setCreateView = setCreateViewSpy as unknown as Dispatch<SetStateAction<CreateFlowView>>
49+
const setCreateView = createSetter<CreateFlowView>()
2350

2451
submitCreateView({
2552
context,
@@ -29,8 +56,12 @@ describe("app-ready-create", () => {
2956
setCreateView
3057
})
3158

32-
expect(setCreateViewSpy).toHaveBeenCalledTimes(1)
33-
const nextView = setCreateViewSpy.mock.calls[0]?.[0]
59+
expect(setCreateView).toHaveBeenCalledTimes(1)
60+
const nextViewAction = setCreateView.mock.calls[0]?.[0]
61+
if (nextViewAction === undefined || typeof nextViewAction === "function") {
62+
throw new Error("Expected create view object update")
63+
}
64+
const nextView = nextViewAction
3465
expect(nextView).toMatchObject({
3566
step: 1,
3667
values: {
@@ -52,8 +83,7 @@ describe("app-ready-create", () => {
5283

5384
it("shows a parse error instead of submitting on invalid inline flags", () => {
5485
const context = createBrowserActionContext()
55-
const setCreateViewSpy = vi.fn()
56-
const setCreateView = setCreateViewSpy as unknown as Dispatch<SetStateAction<CreateFlowView>>
86+
const setCreateView = createSetter<CreateFlowView>()
5787

5888
submitCreateView({
5989
context,
@@ -63,7 +93,7 @@ describe("app-ready-create", () => {
6393
setCreateView
6494
})
6595

66-
expect(setCreateViewSpy).not.toHaveBeenCalled()
96+
expect(setCreateView).not.toHaveBeenCalled()
6797
expect(context.setMessage).toHaveBeenCalledWith("Missing value for option: --bogus")
6898
})
6999
})

0 commit comments

Comments
 (0)