mirror of
https://github.com/stablyai/orca.git
synced 2026-10-13 08:02:52 +00:00
Split onboarding folder startup repo test
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
import { beforeEach, describe, expect, it, vi } from 'vitest'
|
||||
import { getDefaultOnboardingState, getDefaultSettings } from '../../../../shared/constants'
|
||||
import { createTestStore, makeWorktree } from './store-test-helpers'
|
||||
|
||||
const worktreeActivation = vi.hoisted(() => ({
|
||||
activateAndRevealWorktree: vi.fn()
|
||||
}))
|
||||
|
||||
vi.mock('../../lib/worktree-activation', () => ({
|
||||
activateAndRevealWorktree: worktreeActivation.activateAndRevealWorktree
|
||||
}))
|
||||
|
||||
const reposAdd = vi.fn()
|
||||
const worktreesList = vi.fn()
|
||||
const onboardingGet = vi.fn()
|
||||
|
||||
beforeEach(() => {
|
||||
reposAdd.mockReset()
|
||||
worktreesList.mockReset()
|
||||
onboardingGet.mockReset()
|
||||
worktreeActivation.activateAndRevealWorktree.mockReset()
|
||||
vi.stubGlobal('window', {
|
||||
api: {
|
||||
repos: { add: reposAdd },
|
||||
worktrees: { list: worktreesList },
|
||||
onboarding: { get: onboardingGet }
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
describe('repo slice skipped-onboarding folder startup', () => {
|
||||
it('only seeds the onboarding default agent for the first dismissed-onboarding folder', async () => {
|
||||
reposAdd
|
||||
.mockResolvedValueOnce({
|
||||
repo: { id: 'folder-1', path: '/first', displayName: 'First', addedAt: 1 }
|
||||
})
|
||||
.mockResolvedValueOnce({
|
||||
repo: { id: 'folder-2', path: '/second', displayName: 'Second', addedAt: 2 }
|
||||
})
|
||||
worktreesList.mockImplementation(({ repoId }: { repoId: string }) => [
|
||||
makeWorktree({ id: `${repoId}::/folder`, repoId })
|
||||
])
|
||||
onboardingGet.mockResolvedValue({ ...getDefaultOnboardingState(), outcome: 'dismissed' })
|
||||
const store = createTestStore()
|
||||
store.setState({
|
||||
settings: {
|
||||
...getDefaultSettings('/tmp/orca-workspaces'),
|
||||
defaultTuiAgent: 'codex'
|
||||
}
|
||||
})
|
||||
|
||||
await store.getState().addNonGitFolder('/first')
|
||||
await store.getState().addNonGitFolder('/second')
|
||||
|
||||
expect(worktreeActivation.activateAndRevealWorktree).toHaveBeenNthCalledWith(
|
||||
1,
|
||||
'folder-1::/folder',
|
||||
{
|
||||
startup: {
|
||||
command: 'codex',
|
||||
telemetry: {
|
||||
agent_kind: 'codex',
|
||||
launch_source: 'onboarding',
|
||||
request_kind: 'new'
|
||||
}
|
||||
}
|
||||
}
|
||||
)
|
||||
expect(worktreeActivation.activateAndRevealWorktree).toHaveBeenNthCalledWith(
|
||||
2,
|
||||
'folder-2::/folder',
|
||||
undefined
|
||||
)
|
||||
})
|
||||
})
|
||||
@@ -2,21 +2,12 @@ import { describe, expect, it, vi, beforeEach } from 'vitest'
|
||||
import { createTestStore, makeWorktree } from './store-test-helpers'
|
||||
import { workItemsCacheKey } from './github'
|
||||
import type { Repo } from '../../../../shared/types'
|
||||
import { getDefaultOnboardingState, getDefaultSettings } from '../../../../shared/constants'
|
||||
import {
|
||||
createCompatibleRuntimeStatusResponseIfNeeded,
|
||||
type RuntimeEnvironmentCallRequest
|
||||
} from '../../runtime/runtime-compatibility-test-fixture'
|
||||
import { clearRuntimeCompatibilityCacheForTests } from '../../runtime/runtime-rpc-client'
|
||||
|
||||
const worktreeActivation = vi.hoisted(() => ({
|
||||
activateAndRevealWorktree: vi.fn()
|
||||
}))
|
||||
|
||||
vi.mock('../../lib/worktree-activation', () => ({
|
||||
activateAndRevealWorktree: worktreeActivation.activateAndRevealWorktree
|
||||
}))
|
||||
|
||||
const localRepo: Repo = {
|
||||
id: 'local-repo',
|
||||
path: '/local',
|
||||
@@ -39,9 +30,6 @@ const reposPickFolder = vi.fn()
|
||||
const reposRemove = vi.fn()
|
||||
const reposUpdate = vi.fn()
|
||||
const reposReorder = vi.fn()
|
||||
const worktreesList = vi.fn()
|
||||
const onboardingGet = vi.fn()
|
||||
const onboardingUpdate = vi.fn()
|
||||
const ptyKill = vi.fn()
|
||||
const runtimeEnvironmentCall = vi.fn()
|
||||
const runtimeEnvironmentTransportCall = vi.fn()
|
||||
@@ -54,10 +42,6 @@ beforeEach(() => {
|
||||
reposRemove.mockReset()
|
||||
reposUpdate.mockReset()
|
||||
reposReorder.mockReset()
|
||||
worktreesList.mockReset()
|
||||
onboardingGet.mockReset()
|
||||
onboardingUpdate.mockReset()
|
||||
worktreeActivation.activateAndRevealWorktree.mockReset()
|
||||
ptyKill.mockReset()
|
||||
runtimeEnvironmentCall.mockReset()
|
||||
runtimeEnvironmentTransportCall.mockReset()
|
||||
@@ -74,13 +58,6 @@ beforeEach(() => {
|
||||
update: reposUpdate,
|
||||
reorder: reposReorder
|
||||
},
|
||||
worktrees: {
|
||||
list: worktreesList
|
||||
},
|
||||
onboarding: {
|
||||
get: onboardingGet,
|
||||
update: onboardingUpdate
|
||||
},
|
||||
pty: { kill: ptyKill },
|
||||
runtimeEnvironments: { call: runtimeEnvironmentTransportCall }
|
||||
}
|
||||
@@ -191,58 +168,6 @@ describe('repo slice runtime routing', () => {
|
||||
expect(runtimeEnvironmentCall).not.toHaveBeenCalled()
|
||||
})
|
||||
|
||||
it('only seeds the onboarding default agent for the first dismissed-onboarding folder', async () => {
|
||||
const firstFolderRepo = {
|
||||
...localRepo,
|
||||
id: 'folder-1',
|
||||
path: '/first',
|
||||
displayName: 'First'
|
||||
}
|
||||
const secondFolderRepo = {
|
||||
...localRepo,
|
||||
id: 'folder-2',
|
||||
path: '/second',
|
||||
displayName: 'Second'
|
||||
}
|
||||
reposAdd
|
||||
.mockResolvedValueOnce({ repo: firstFolderRepo })
|
||||
.mockResolvedValueOnce({ repo: secondFolderRepo })
|
||||
worktreesList.mockImplementation(({ repoId }: { repoId: string }) => [
|
||||
makeWorktree({ id: `${repoId}::/folder`, repoId })
|
||||
])
|
||||
onboardingGet.mockResolvedValue({ ...getDefaultOnboardingState(), outcome: 'dismissed' })
|
||||
const store = createTestStore()
|
||||
store.setState({
|
||||
settings: {
|
||||
...getDefaultSettings('/tmp/orca-workspaces'),
|
||||
defaultTuiAgent: 'codex'
|
||||
}
|
||||
})
|
||||
|
||||
await store.getState().addNonGitFolder('/first')
|
||||
await store.getState().addNonGitFolder('/second')
|
||||
|
||||
expect(worktreeActivation.activateAndRevealWorktree).toHaveBeenNthCalledWith(
|
||||
1,
|
||||
'folder-1::/folder',
|
||||
{
|
||||
startup: {
|
||||
command: 'codex',
|
||||
telemetry: {
|
||||
agent_kind: 'codex',
|
||||
launch_source: 'onboarding',
|
||||
request_kind: 'new'
|
||||
}
|
||||
}
|
||||
}
|
||||
)
|
||||
expect(worktreeActivation.activateAndRevealWorktree).toHaveBeenNthCalledWith(
|
||||
2,
|
||||
'folder-2::/folder',
|
||||
undefined
|
||||
)
|
||||
})
|
||||
|
||||
it('removes repos through the active remote runtime environment', async () => {
|
||||
runtimeEnvironmentCall.mockResolvedValue({
|
||||
id: 'rpc-3',
|
||||
|
||||
Reference in New Issue
Block a user