Co-authored-by: opencode-agent[bot] <219766164+opencode-agent[bot]@users.noreply.github.com> Co-authored-by: Aiden Cline <63023139+rekram1-node@users.noreply.github.com> Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com> Co-authored-by: Luke Parker <10430890+Hona@users.noreply.github.com> Co-authored-by: usrnk1 <7547651+usrnk1@users.noreply.github.com> Co-authored-by: Aarav Sareen <96787824+arvsrn@users.noreply.github.com> Co-authored-by: Brendan Allan <git@brendonovich.dev> Co-authored-by: Jack <jack@anoma.ly> Co-authored-by: David Hill <1879069+iamdavidhill@users.noreply.github.com> Co-authored-by: Jay <53023+jayair@users.noreply.github.com> Co-authored-by: Brendan Allan <14191578+Brendonovich@users.noreply.github.com> Co-authored-by: Simon Klee <hello@simonklee.dk> Co-authored-by: opencode <opencode@sst.dev> Co-authored-by: Aiden Cline <aidenpcline@gmail.com> Co-authored-by: Adam <2363879+adamdotdevin@users.noreply.github.com> Co-authored-by: James Long <longster@gmail.com> Co-authored-by: James Long <jlongster@users.noreply.github.com> Co-authored-by: Dustin Deus <deusdustin@gmail.com> Co-authored-by: 冯基魁 <56265583+fengjikui@users.noreply.github.com> Co-authored-by: Frank <frank@anoma.ly> Co-authored-by: Aiden Cline <rekram1-node@users.noreply.github.com> Co-authored-by: Kit Langton <kit.langton@gmail.com> Co-authored-by: Victor Navarro <vn4varro@gmail.com> Co-authored-by: Dax Raad <d@ironbay.co> Co-authored-by: Dax <mail@thdxr.com> Co-authored-by: Nabs <nabil@instafork.com> Co-authored-by: Vladimir Glafirov <vglafirov@gitlab.com> Co-authored-by: AidenGeunGeun <eastlandwyvern@gmail.com> Co-authored-by: Mark <geraint0923@users.noreply.github.com> Co-authored-by: Jay <air@live.ca>
65 lines
2.1 KiB
TypeScript
65 lines
2.1 KiB
TypeScript
import { beforeAll, expect, mock, test } from "bun:test"
|
|
import type { AsyncStorage } from "@solid-primitives/storage"
|
|
import { createEffect, createRoot } from "solid-js"
|
|
|
|
let createReviewPanelV2State: typeof import("@/pages/session/v2/review-panel-v2-state").createReviewPanelV2State
|
|
let read: ((value: string | null) => void) | undefined
|
|
|
|
const storage: AsyncStorage = {
|
|
getItem: () => new Promise((resolve) => (read = resolve)),
|
|
setItem: async () => undefined,
|
|
removeItem: async () => undefined,
|
|
clear: async () => undefined,
|
|
key: async () => null,
|
|
getLength: async () => 0,
|
|
length: Promise.resolve(0),
|
|
}
|
|
|
|
beforeAll(async () => {
|
|
mock.module("@opencode-ai/session-ui/v2/session-review-v2", () => ({
|
|
SESSION_REVIEW_V2_SIDEBAR_WIDTH_DEFAULT: 240,
|
|
SESSION_REVIEW_V2_SIDEBAR_WIDTH_MIN: 200,
|
|
SESSION_REVIEW_V2_SIDEBAR_WIDTH_MAX: 480,
|
|
}))
|
|
mock.module("@/context/platform", () => ({
|
|
usePlatform: () => ({ platform: "desktop", storage: () => storage }),
|
|
}))
|
|
|
|
createReviewPanelV2State = (await import("@/pages/session/v2/review-panel-v2-state")).createReviewPanelV2State
|
|
})
|
|
|
|
test("enables sidebar motion only after custom width hydration", async () => {
|
|
await new Promise<void>((resolve, reject) => {
|
|
createRoot((dispose) => {
|
|
const state = createReviewPanelV2State()
|
|
const transition =
|
|
"sidebarTransition" in state && typeof state.sidebarTransition === "function"
|
|
? (state.sidebarTransition as () => boolean)
|
|
: undefined
|
|
|
|
try {
|
|
expect(transition).toBeFunction()
|
|
expect(transition?.()).toBeFalse()
|
|
expect(state.sidebarWidth()).toBe(240)
|
|
} catch (error) {
|
|
dispose()
|
|
reject(error)
|
|
return
|
|
}
|
|
|
|
createEffect(() => {
|
|
if (!transition?.()) return
|
|
try {
|
|
expect(state.sidebarWidth()).toBe(360)
|
|
dispose()
|
|
resolve()
|
|
} catch (error) {
|
|
dispose()
|
|
reject(error)
|
|
}
|
|
})
|
|
|
|
read?.(JSON.stringify({ sidebarOpened: true, sidebarWidth: 360, expandMode: "collapse" }))
|
|
})
|
|
})
|
|
})
|