From d9eabac536e400af449cfa3b080ea0b0405c6cbf Mon Sep 17 00:00:00 2001 From: Neil <4138956+nwparker@users.noreply.github.com> Date: Sat, 24 Oct 2026 00:07:10 -0700 Subject: [PATCH] refactor: colocate persistence settings and automation tests (#33058) --- config/scripts/ci-shard-timings.json | 26 +++++++++---------- ...stence-automation-extra-agent-args.test.ts | 8 +++--- .../persistence-automations.test.ts | 16 ++++++------ .../persistence-jira-project.test.ts | 8 +++--- .../persistence-jira-saved-filters.test.ts | 6 ++--- ...stence-legacy-automation-twin-host.test.ts | 21 +++++++++------ ...persistence-native-chat-appearance.test.ts | 9 +++++-- ...sistence-native-chat-tab-view-mode.test.ts | 8 +++--- ...e-native-chat-upgrade-tip-audience.test.ts | 10 +++---- ...e-portuguese-ui-language-migration.test.ts | 2 +- .../persistence-right-sidebar-tab.test.ts | 2 +- .../persistence-settings-ui-defaults.test.ts | 16 ++++++------ .../persistence-settings-update.test.ts | 22 ++++++++-------- ...stence-source-control-ai-migration.test.ts | 12 ++++----- ...e-status-bar-compact-change-notice.test.ts | 6 ++--- .../persistence-ui-state.test.ts | 21 ++++++++------- 16 files changed, 103 insertions(+), 90 deletions(-) rename src/main/{ => persistence/applying-settings}/persistence-automation-extra-agent-args.test.ts (95%) rename src/main/{ => persistence/applying-settings}/persistence-automations.test.ts (98%) rename src/main/{ => persistence/applying-settings}/persistence-jira-project.test.ts (86%) rename src/main/{ => persistence/applying-settings}/persistence-jira-saved-filters.test.ts (83%) rename src/main/{ => persistence/applying-settings}/persistence-legacy-automation-twin-host.test.ts (89%) rename src/main/{ => persistence/applying-settings}/persistence-native-chat-appearance.test.ts (89%) rename src/main/{ => persistence/applying-settings}/persistence-native-chat-tab-view-mode.test.ts (94%) rename src/main/{ => persistence/applying-settings}/persistence-native-chat-upgrade-tip-audience.test.ts (96%) rename src/main/{ => persistence/applying-settings}/persistence-portuguese-ui-language-migration.test.ts (98%) rename src/main/{ => persistence/applying-settings}/persistence-right-sidebar-tab.test.ts (95%) rename src/main/{ => persistence/applying-settings}/persistence-settings-ui-defaults.test.ts (98%) rename src/main/{ => persistence/applying-settings}/persistence-settings-update.test.ts (97%) rename src/main/{ => persistence/applying-settings}/persistence-source-control-ai-migration.test.ts (98%) rename src/main/{ => persistence/applying-settings}/persistence-status-bar-compact-change-notice.test.ts (93%) rename src/main/{ => persistence/applying-settings}/persistence-ui-state.test.ts (97%) diff --git a/config/scripts/ci-shard-timings.json b/config/scripts/ci-shard-timings.json index 2518508a4fa..3bb553e8f69 100644 --- a/config/scripts/ci-shard-timings.json +++ b/config/scripts/ci-shard-timings.json @@ -3711,8 +3711,8 @@ "src/main/orcad/serve-profile-ssh-targets.test.ts": 429, "src/main/own-chromium-tree-kill-guard.test.ts": 113, "src/main/persistence-async-write-syscalls.test.ts": 2801, - "src/main/persistence-automation-extra-agent-args.test.ts": 1694, - "src/main/persistence-automations.test.ts": 2080, + "src/main/persistence/applying-settings/persistence-automation-extra-agent-args.test.ts": 1694, + "src/main/persistence/applying-settings/persistence-automations.test.ts": 2080, "src/main/persistence-clipboard-selection-migration.test.ts": 1954, "src/main/persistence-cohort-and-identity-migration.test.ts": 1714, "src/main/persistence-cross-host-pane-identity.test.ts": 1627, @@ -3727,15 +3727,15 @@ "src/main/persistence-host-partitioned-sessions.test.ts": 1852, "src/main/persistence-host-partitioned-ssh-pty-bindings.test.ts": 1580, "src/main/persistence-initial-load.test.ts": 1852, - "src/main/persistence-jira-project.test.ts": 1400, - "src/main/persistence-jira-saved-filters.test.ts": 1531, + "src/main/persistence/applying-settings/persistence-jira-project.test.ts": 1400, + "src/main/persistence/applying-settings/persistence-jira-saved-filters.test.ts": 1531, "src/main/persistence-layout-binding-recovery.test.ts": 1550, "src/main/persistence-load-repair-durability.test.ts": 1535, "src/main/persistence-loading-store-extraction.test.ts": 1773, "src/main/persistence-loading-store-write-risks.test.ts": 1640, - "src/main/persistence-native-chat-appearance.test.ts": 1369, - "src/main/persistence-native-chat-tab-view-mode.test.ts": 1365, - "src/main/persistence-native-chat-upgrade-tip-audience.test.ts": 1983, + "src/main/persistence/applying-settings/persistence-native-chat-appearance.test.ts": 1369, + "src/main/persistence/applying-settings/persistence-native-chat-tab-view-mode.test.ts": 1365, + "src/main/persistence/applying-settings/persistence-native-chat-upgrade-tip-audience.test.ts": 1983, "src/main/persistence/migrating-orcad-catalog/persistence-orcad-migration-catalog.test.ts": 2096, "src/main/persistence/migrating-orcad-catalog/persistence-orcad-repository-cache-reimport.test.ts": 1587, "src/main/persistence-pane-alias-selective-saves.test.ts": 1608, @@ -3747,12 +3747,12 @@ "src/main/persistence-pty-binding-reconciliation.test.ts": 1631, "src/main/persistence-remote-session-startup.test.ts": 1481, "src/main/persistence-repo-lifecycle.test.ts": 3167, - "src/main/persistence-right-sidebar-tab.test.ts": 1444, + "src/main/persistence/applying-settings/persistence-right-sidebar-tab.test.ts": 1444, "src/main/persistence-runtime-admitted-terminal-membership.test.ts": 1419, - "src/main/persistence-settings-ui-defaults.test.ts": 2214, - "src/main/persistence-settings-update.test.ts": 2072, + "src/main/persistence/applying-settings/persistence-settings-ui-defaults.test.ts": 2214, + "src/main/persistence/applying-settings/persistence-settings-update.test.ts": 2072, "src/main/persistence-single-serialize.test.ts": 1630, - "src/main/persistence-source-control-ai-migration.test.ts": 1770, + "src/main/persistence/applying-settings/persistence-source-control-ai-migration.test.ts": 1770, "src/main/persistence-split-pane-incarnation.test.ts": 1586, "src/main/persistence-ssh-lease-tombstone-retention.test.ts": 1552, "src/main/persistence-ssh-pending-pty-kill.test.ts": 1505, @@ -3760,9 +3760,9 @@ "src/main/persistence-ssh-remote-pty-binding-replay.test.ts": 1537, "src/main/persistence-ssh-remote-pty-leases.test.ts": 1759, "src/main/persistence-ssh-targets-and-pane-keys.test.ts": 1788, - "src/main/persistence-status-bar-compact-change-notice.test.ts": 1688, + "src/main/persistence/applying-settings/persistence-status-bar-compact-change-notice.test.ts": 1688, "src/main/persistence-terminal-option-key-migration.test.ts": 1645, - "src/main/persistence-ui-state.test.ts": 3132, + "src/main/persistence/applying-settings/persistence-ui-state.test.ts": 3132, "src/main/persistence-update-repo.test.ts": 1760, "src/main/persistence-workspace-attachments.test.ts": 1584, "src/main/persistence-workspace-pinned-automation-fence.test.ts": 2063, diff --git a/src/main/persistence-automation-extra-agent-args.test.ts b/src/main/persistence/applying-settings/persistence-automation-extra-agent-args.test.ts similarity index 95% rename from src/main/persistence-automation-extra-agent-args.test.ts rename to src/main/persistence/applying-settings/persistence-automation-extra-agent-args.test.ts index 5f850c09888..d2f951f375e 100644 --- a/src/main/persistence-automation-extra-agent-args.test.ts +++ b/src/main/persistence/applying-settings/persistence-automation-extra-agent-args.test.ts @@ -4,13 +4,13 @@ import { createStore, readDataFile, makeRepo -} from './persistence-test-harness' +} from '../../persistence-test-harness' import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest' import { rmSync, mkdtempSync } from 'node:fs' import { join } from 'node:path' import { tmpdir } from 'node:os' -vi.mock('./ssh/config/ssh-config-parser', () => ({ +vi.mock('../../ssh/config/ssh-config-parser', () => ({ loadUserSshConfig: vi.fn(), sshConfigHostsToTargets: vi.fn() })) @@ -24,8 +24,8 @@ vi.mock('electron', () => ({ } })) -vi.mock('./telemetry/client', () => ({ track: vi.fn() })) -vi.mock('./telemetry/cohort-classifier', () => ({ +vi.mock('../../telemetry/client', () => ({ track: vi.fn() })) +vi.mock('../../telemetry/cohort-classifier', () => ({ getCohortAtEmit: vi.fn(() => ({ nth_repo_added: 2 })) })) diff --git a/src/main/persistence-automations.test.ts b/src/main/persistence/applying-settings/persistence-automations.test.ts similarity index 98% rename from src/main/persistence-automations.test.ts rename to src/main/persistence/applying-settings/persistence-automations.test.ts index bd42b86afcd..0b4aec65642 100644 --- a/src/main/persistence-automations.test.ts +++ b/src/main/persistence/applying-settings/persistence-automations.test.ts @@ -5,22 +5,22 @@ import { writeDataFile, readDataFile, makeRepo -} from './persistence-test-harness' +} from '../../persistence-test-harness' import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest' import { rmSync, mkdtempSync } from 'node:fs' import { join } from 'node:path' import { tmpdir } from 'node:os' -import type { PersistedState } from '../shared/persisted-state-types' -import { toRuntimeExecutionHostId, toSshExecutionHostId } from '../shared/execution-host' -import { hostWorktreeTarget } from '../shared/worktree/host-qualified-identity' -import { removeWorktreeMetaRow } from './persistence/host-qualified-worktree-meta' +import type { PersistedState } from '../../../shared/persisted-state-types' +import { toRuntimeExecutionHostId, toSshExecutionHostId } from '../../../shared/execution-host' +import { hostWorktreeTarget } from '../../../shared/worktree/host-qualified-identity' +import { removeWorktreeMetaRow } from '../host-qualified-worktree-meta' const { loadUserSshConfigMock, sshConfigHostsToTargetsMock } = vi.hoisted(() => ({ loadUserSshConfigMock: vi.fn(), sshConfigHostsToTargetsMock: vi.fn() })) -vi.mock('./ssh/config/ssh-config-parser', () => ({ +vi.mock('../../ssh/config/ssh-config-parser', () => ({ loadUserSshConfig: loadUserSshConfigMock, sshConfigHostsToTargets: sshConfigHostsToTargetsMock })) @@ -46,11 +46,11 @@ vi.mock('electron', () => ({ } })) -vi.mock('./telemetry/client', () => ({ +vi.mock('../../telemetry/client', () => ({ track: trackMock })) -vi.mock('./telemetry/cohort-classifier', () => ({ +vi.mock('../../telemetry/cohort-classifier', () => ({ getCohortAtEmit: getCohortAtEmitMock })) diff --git a/src/main/persistence-jira-project.test.ts b/src/main/persistence/applying-settings/persistence-jira-project.test.ts similarity index 86% rename from src/main/persistence-jira-project.test.ts rename to src/main/persistence/applying-settings/persistence-jira-project.test.ts index 659cd4e0eb7..814dbe8395f 100644 --- a/src/main/persistence-jira-project.test.ts +++ b/src/main/persistence/applying-settings/persistence-jira-project.test.ts @@ -2,10 +2,12 @@ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest' import { mkdtempSync, rmSync } from 'node:fs' import { join } from 'node:path' import { tmpdir } from 'node:os' -import { closeTestStores, testState, createStore, makeRepo } from './persistence-test-harness' +import { closeTestStores, testState, createStore, makeRepo } from '../../persistence-test-harness' vi.mock('electron', () => ({ app: { getPath: () => testState.dir } })) -vi.mock('./telemetry/client', () => ({ track: vi.fn() })) -vi.mock('./telemetry/cohort-classifier', () => ({ getCohortAtEmit: () => ({ nth_repo_added: 2 }) })) +vi.mock('../../telemetry/client', () => ({ track: vi.fn() })) +vi.mock('../../telemetry/cohort-classifier', () => ({ + getCohortAtEmit: () => ({ nth_repo_added: 2 }) +})) const project = { id: '10', key: 'ALP', name: 'Alpha', siteId: 'site-a' } describe('persisted repository Jira defaults', () => { beforeEach(() => { diff --git a/src/main/persistence-jira-saved-filters.test.ts b/src/main/persistence/applying-settings/persistence-jira-saved-filters.test.ts similarity index 83% rename from src/main/persistence-jira-saved-filters.test.ts rename to src/main/persistence/applying-settings/persistence-jira-saved-filters.test.ts index 1dd529545ef..4613efb2a45 100644 --- a/src/main/persistence-jira-saved-filters.test.ts +++ b/src/main/persistence/applying-settings/persistence-jira-saved-filters.test.ts @@ -2,10 +2,10 @@ import { mkdtempSync, rmSync } from 'node:fs' import { join } from 'node:path' import { tmpdir } from 'node:os' import { afterEach, beforeEach, expect, it, vi } from 'vitest' -import { closeTestStores, createStore, testState } from './persistence-test-harness' -import { normalizeJiraSavedFilterState } from '../shared/jira/jira-saved-filters' +import { closeTestStores, createStore, testState } from '../../persistence-test-harness' +import { normalizeJiraSavedFilterState } from '../../../shared/jira/jira-saved-filters' vi.mock('electron', () => ({ app: { getPath: () => testState.dir } })) -vi.mock('./telemetry/client', () => ({ track: vi.fn() })) +vi.mock('../../telemetry/client', () => ({ track: vi.fn() })) beforeEach(() => { testState.dir = mkdtempSync(join(tmpdir(), 'orca-jira-saved-filters-')) }) diff --git a/src/main/persistence-legacy-automation-twin-host.test.ts b/src/main/persistence/applying-settings/persistence-legacy-automation-twin-host.test.ts similarity index 89% rename from src/main/persistence-legacy-automation-twin-host.test.ts rename to src/main/persistence/applying-settings/persistence-legacy-automation-twin-host.test.ts index 3284f4ee52d..967373d3dff 100644 --- a/src/main/persistence-legacy-automation-twin-host.test.ts +++ b/src/main/persistence/applying-settings/persistence-legacy-automation-twin-host.test.ts @@ -1,20 +1,25 @@ -import { closeTestStores, createStore, testState, writeDataFile } from './persistence-test-harness' +import { + closeTestStores, + createStore, + testState, + writeDataFile +} from '../../persistence-test-harness' import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' import { mkdtempSync, rmSync } from 'node:fs' import { join } from 'node:path' import { tmpdir } from 'node:os' -import type { Automation } from '../shared/automations-types' -import type { Repo } from '../shared/repo-types' -import { getDefaultPersistedState } from '../shared/constants' -import { resolveAutomationRunTarget } from './automations/run-target-resolution' -import { AutomationService } from './automations/service' +import type { Automation } from '../../../shared/automations-types' +import type { Repo } from '../../../shared/repo-types' +import { getDefaultPersistedState } from '../../../shared/constants' +import { resolveAutomationRunTarget } from '../../automations/run-target-resolution' +import { AutomationService } from '../../automations/service' vi.mock('electron', () => ({ app: { getPath: () => testState.dir }, safeStorage: { isEncryptionAvailable: () => false } })) -vi.mock('./telemetry/client', () => ({ track: vi.fn() })) -vi.mock('./telemetry/cohort-classifier', () => ({ getCohortAtEmit: vi.fn() })) +vi.mock('../../telemetry/client', () => ({ track: vi.fn() })) +vi.mock('../../telemetry/cohort-classifier', () => ({ getCohortAtEmit: vi.fn() })) const localRow: Repo = { id: 'twin', diff --git a/src/main/persistence-native-chat-appearance.test.ts b/src/main/persistence/applying-settings/persistence-native-chat-appearance.test.ts similarity index 89% rename from src/main/persistence-native-chat-appearance.test.ts rename to src/main/persistence/applying-settings/persistence-native-chat-appearance.test.ts index 08f2b5243f2..3b6bc8e4859 100644 --- a/src/main/persistence-native-chat-appearance.test.ts +++ b/src/main/persistence/applying-settings/persistence-native-chat-appearance.test.ts @@ -1,4 +1,9 @@ -import { closeTestStores, testState, createStore, readDataFile } from './persistence-test-harness' +import { + closeTestStores, + testState, + createStore, + readDataFile +} from '../../persistence-test-harness' import { afterEach, beforeEach, expect, it, vi } from 'vitest' import { mkdtempSync, rmSync } from 'node:fs' import { tmpdir } from 'node:os' @@ -8,7 +13,7 @@ vi.mock('electron', () => ({ app: { getPath: () => testState.dir }, safeStorage: { isEncryptionAvailable: () => false } })) -vi.mock('./telemetry/client', () => ({ track: vi.fn() })) +vi.mock('../../telemetry/client', () => ({ track: vi.fn() })) beforeEach(() => { testState.dir = mkdtempSync(join(tmpdir(), 'orca-chat-appearance-')) diff --git a/src/main/persistence-native-chat-tab-view-mode.test.ts b/src/main/persistence/applying-settings/persistence-native-chat-tab-view-mode.test.ts similarity index 94% rename from src/main/persistence-native-chat-tab-view-mode.test.ts rename to src/main/persistence/applying-settings/persistence-native-chat-tab-view-mode.test.ts index 7e8dba2b72b..9c490daa66c 100644 --- a/src/main/persistence-native-chat-tab-view-mode.test.ts +++ b/src/main/persistence/applying-settings/persistence-native-chat-tab-view-mode.test.ts @@ -4,7 +4,7 @@ import { createStore, writeDataFile, makeRepo -} from './persistence-test-harness' +} from '../../persistence-test-harness' import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest' import { rmSync, mkdtempSync } from 'node:fs' import { join } from 'node:path' @@ -15,7 +15,7 @@ const { loadUserSshConfigMock, sshConfigHostsToTargetsMock } = vi.hoisted(() => sshConfigHostsToTargetsMock: vi.fn() })) -vi.mock('./ssh/config/ssh-config-parser', () => ({ +vi.mock('../../ssh/config/ssh-config-parser', () => ({ loadUserSshConfig: loadUserSshConfigMock, sshConfigHostsToTargets: sshConfigHostsToTargetsMock })) @@ -41,11 +41,11 @@ vi.mock('electron', () => ({ } })) -vi.mock('./telemetry/client', () => ({ +vi.mock('../../telemetry/client', () => ({ track: trackMock })) -vi.mock('./telemetry/cohort-classifier', () => ({ +vi.mock('../../telemetry/cohort-classifier', () => ({ getCohortAtEmit: getCohortAtEmitMock })) diff --git a/src/main/persistence-native-chat-upgrade-tip-audience.test.ts b/src/main/persistence/applying-settings/persistence-native-chat-upgrade-tip-audience.test.ts similarity index 96% rename from src/main/persistence-native-chat-upgrade-tip-audience.test.ts rename to src/main/persistence/applying-settings/persistence-native-chat-upgrade-tip-audience.test.ts index 56bb3b9440c..99f71022170 100644 --- a/src/main/persistence-native-chat-upgrade-tip-audience.test.ts +++ b/src/main/persistence/applying-settings/persistence-native-chat-upgrade-tip-audience.test.ts @@ -4,23 +4,23 @@ import { createStore, readDataFile, writeDataFile -} from './persistence-test-harness' +} from '../../persistence-test-harness' import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' import { mkdtempSync, rmSync } from 'node:fs' import { tmpdir } from 'node:os' import { join } from 'node:path' -import { getDefaultPersistedState } from '../shared/constants' +import { getDefaultPersistedState } from '../../../shared/constants' import type { NativeChatUpgradeTipAudience, NativeChatUpgradeTipVariant -} from '../shared/native-chat-upgrade-tip-audience' -import { normalizeProfileProjectState } from './orca-profiles/profile-project-state-file' +} from '../../../shared/native-chat-upgrade-tip-audience' +import { normalizeProfileProjectState } from '../../orca-profiles/profile-project-state-file' vi.mock('electron', () => ({ app: { getPath: () => testState.dir }, safeStorage: { isEncryptionAvailable: () => false } })) -vi.mock('./telemetry/client', () => ({ track: vi.fn() })) +vi.mock('../../telemetry/client', () => ({ track: vi.fn() })) beforeEach(() => { testState.dir = mkdtempSync(join(tmpdir(), 'orca-chat-upgrade-tip-audience-')) diff --git a/src/main/persistence-portuguese-ui-language-migration.test.ts b/src/main/persistence/applying-settings/persistence-portuguese-ui-language-migration.test.ts similarity index 98% rename from src/main/persistence-portuguese-ui-language-migration.test.ts rename to src/main/persistence/applying-settings/persistence-portuguese-ui-language-migration.test.ts index 4bce80daa23..516cf12acd0 100644 --- a/src/main/persistence-portuguese-ui-language-migration.test.ts +++ b/src/main/persistence/applying-settings/persistence-portuguese-ui-language-migration.test.ts @@ -8,7 +8,7 @@ import { readPersistedStateJson, testState, writeDataFile -} from './persistence-test-harness' +} from '../../persistence-test-harness' const plugin = 'plugin:stablyai.orca-portuguese/pt-BR' diff --git a/src/main/persistence-right-sidebar-tab.test.ts b/src/main/persistence/applying-settings/persistence-right-sidebar-tab.test.ts similarity index 95% rename from src/main/persistence-right-sidebar-tab.test.ts rename to src/main/persistence/applying-settings/persistence-right-sidebar-tab.test.ts index 7ee50834cc3..5b04ff67e3e 100644 --- a/src/main/persistence-right-sidebar-tab.test.ts +++ b/src/main/persistence/applying-settings/persistence-right-sidebar-tab.test.ts @@ -12,7 +12,7 @@ vi.mock('electron', () => ({ } })) -import { normalizeRightSidebarTab } from './persistence' +import { normalizeRightSidebarTab } from './ui-selection-normalization' describe('normalizeRightSidebarTab', () => { it.each(['explorer', 'search', 'vault', 'workspaces', 'source-control', 'checks', 'ports'])( diff --git a/src/main/persistence-settings-ui-defaults.test.ts b/src/main/persistence/applying-settings/persistence-settings-ui-defaults.test.ts similarity index 98% rename from src/main/persistence-settings-ui-defaults.test.ts rename to src/main/persistence/applying-settings/persistence-settings-ui-defaults.test.ts index d4886f74e98..92168c9d24a 100644 --- a/src/main/persistence-settings-ui-defaults.test.ts +++ b/src/main/persistence/applying-settings/persistence-settings-ui-defaults.test.ts @@ -5,22 +5,22 @@ import { withPlatform, writeDataFile, readDataFile -} from './persistence-test-harness' +} from '../../persistence-test-harness' import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest' import { rmSync, mkdtempSync } from 'node:fs' import { join } from 'node:path' import { tmpdir } from 'node:os' -import type { GlobalSettings } from '../shared/global-settings-types' -import type { PersistedState } from '../shared/persisted-state-types' -import { getDefaultPersistedState } from '../shared/constants' -import { ONBOARDING_FINAL_STEP, ONBOARDING_FLOW_VERSION } from '../shared/onboarding-defaults' +import type { GlobalSettings } from '../../../shared/global-settings-types' +import type { PersistedState } from '../../../shared/persisted-state-types' +import { getDefaultPersistedState } from '../../../shared/constants' +import { ONBOARDING_FINAL_STEP, ONBOARDING_FLOW_VERSION } from '../../../shared/onboarding-defaults' const { loadUserSshConfigMock, sshConfigHostsToTargetsMock } = vi.hoisted(() => ({ loadUserSshConfigMock: vi.fn(), sshConfigHostsToTargetsMock: vi.fn() })) -vi.mock('./ssh/config/ssh-config-parser', () => ({ +vi.mock('../../ssh/config/ssh-config-parser', () => ({ loadUserSshConfig: loadUserSshConfigMock, sshConfigHostsToTargets: sshConfigHostsToTargetsMock })) @@ -46,11 +46,11 @@ vi.mock('electron', () => ({ } })) -vi.mock('./telemetry/client', () => ({ +vi.mock('../../telemetry/client', () => ({ track: trackMock })) -vi.mock('./telemetry/cohort-classifier', () => ({ +vi.mock('../../telemetry/cohort-classifier', () => ({ getCohortAtEmit: getCohortAtEmitMock })) diff --git a/src/main/persistence-settings-update.test.ts b/src/main/persistence/applying-settings/persistence-settings-update.test.ts similarity index 97% rename from src/main/persistence-settings-update.test.ts rename to src/main/persistence/applying-settings/persistence-settings-update.test.ts index 593e8d1716d..85b9e3e9ea4 100644 --- a/src/main/persistence-settings-update.test.ts +++ b/src/main/persistence/applying-settings/persistence-settings-update.test.ts @@ -1,4 +1,4 @@ -import { composeAgentLaunchProfile } from '../shared/tui-agent-launch-defaults' +import { composeAgentLaunchProfile } from '../../../shared/tui-agent-launch-defaults' import { closeTestStores, testState, @@ -6,28 +6,28 @@ import { writeDataFile, readDataFile, collectPropertyPaths, - makeRepo, - makeTerminalTab -} from './persistence-test-harness' + makeRepo +} from '../../persistence-test-harness' +import { makeTerminalTab } from '../../persistence-session-fixtures' import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest' import { writeFileSync, rmSync, mkdtempSync } from 'node:fs' import { join } from 'node:path' import { tmpdir } from 'node:os' -import type { GlobalSettings } from '../shared/global-settings-types' -import type { PersistedState } from '../shared/persisted-state-types' -import { getDefaultWorkspaceSession } from '../shared/constants' +import type { GlobalSettings } from '../../../shared/global-settings-types' +import type { PersistedState } from '../../../shared/persisted-state-types' +import { getDefaultWorkspaceSession } from '../../../shared/constants' import { getLocalWorktreeScanGeneration, isLocalWorktreeScanGenerationCurrent -} from './local-worktree-scan-generation' +} from '../../local-worktree-scan-generation' const { loadUserSshConfigMock, sshConfigHostsToTargetsMock } = vi.hoisted(() => ({ loadUserSshConfigMock: vi.fn(), sshConfigHostsToTargetsMock: vi.fn() })) -vi.mock('./ssh/config/ssh-config-parser', () => ({ +vi.mock('../../ssh/config/ssh-config-parser', () => ({ loadUserSshConfig: loadUserSshConfigMock, sshConfigHostsToTargets: sshConfigHostsToTargetsMock })) @@ -53,11 +53,11 @@ vi.mock('electron', () => ({ } })) -vi.mock('./telemetry/client', () => ({ +vi.mock('../../telemetry/client', () => ({ track: trackMock })) -vi.mock('./telemetry/cohort-classifier', () => ({ +vi.mock('../../telemetry/cohort-classifier', () => ({ getCohortAtEmit: getCohortAtEmitMock })) diff --git a/src/main/persistence-source-control-ai-migration.test.ts b/src/main/persistence/applying-settings/persistence-source-control-ai-migration.test.ts similarity index 98% rename from src/main/persistence-source-control-ai-migration.test.ts rename to src/main/persistence/applying-settings/persistence-source-control-ai-migration.test.ts index add9ec3ca57..404eb158bf6 100644 --- a/src/main/persistence-source-control-ai-migration.test.ts +++ b/src/main/persistence/applying-settings/persistence-source-control-ai-migration.test.ts @@ -7,20 +7,20 @@ import { readDataFile, readPersistedStateJson, makeRepo -} from './persistence-test-harness' +} from '../../persistence-test-harness' import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest' import { writeFileSync, readFileSync, rmSync, mkdtempSync, mkdirSync } from 'node:fs' import { join } from 'node:path' import { tmpdir } from 'node:os' -import type { PersistedState } from '../shared/persisted-state-types' -import { setSourceControlActionDefault } from '../shared/source-control-ai-actions' +import type { PersistedState } from '../../../shared/persisted-state-types' +import { setSourceControlActionDefault } from '../../../shared/source-control-ai-actions' const { loadUserSshConfigMock, sshConfigHostsToTargetsMock } = vi.hoisted(() => ({ loadUserSshConfigMock: vi.fn(), sshConfigHostsToTargetsMock: vi.fn() })) -vi.mock('./ssh/config/ssh-config-parser', () => ({ +vi.mock('../../ssh/config/ssh-config-parser', () => ({ loadUserSshConfig: loadUserSshConfigMock, sshConfigHostsToTargets: sshConfigHostsToTargetsMock })) @@ -46,11 +46,11 @@ vi.mock('electron', () => ({ } })) -vi.mock('./telemetry/client', () => ({ +vi.mock('../../telemetry/client', () => ({ track: trackMock })) -vi.mock('./telemetry/cohort-classifier', () => ({ +vi.mock('../../telemetry/cohort-classifier', () => ({ getCohortAtEmit: getCohortAtEmitMock })) diff --git a/src/main/persistence-status-bar-compact-change-notice.test.ts b/src/main/persistence/applying-settings/persistence-status-bar-compact-change-notice.test.ts similarity index 93% rename from src/main/persistence-status-bar-compact-change-notice.test.ts rename to src/main/persistence/applying-settings/persistence-status-bar-compact-change-notice.test.ts index 7e13b805396..08a3072c01b 100644 --- a/src/main/persistence-status-bar-compact-change-notice.test.ts +++ b/src/main/persistence/applying-settings/persistence-status-bar-compact-change-notice.test.ts @@ -2,20 +2,20 @@ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' import { mkdtempSync, rmSync } from 'node:fs' import { tmpdir } from 'node:os' import { join } from 'node:path' -import { getDefaultPersistedState } from '../shared/constants' +import { getDefaultPersistedState } from '../../../shared/constants' import { closeTestStores, testState, createStore, readDataFile, writeDataFile -} from './persistence-test-harness' +} from '../../persistence-test-harness' vi.mock('electron', () => ({ app: { getPath: () => testState.dir }, safeStorage: { isEncryptionAvailable: () => false } })) -vi.mock('./telemetry/client', () => ({ track: vi.fn() })) +vi.mock('../../telemetry/client', () => ({ track: vi.fn() })) beforeEach(() => { testState.dir = mkdtempSync(join(tmpdir(), 'orca-compact-notice-')) diff --git a/src/main/persistence-ui-state.test.ts b/src/main/persistence/applying-settings/persistence-ui-state.test.ts similarity index 97% rename from src/main/persistence-ui-state.test.ts rename to src/main/persistence/applying-settings/persistence-ui-state.test.ts index 1b0c4789003..4d656873c45 100644 --- a/src/main/persistence-ui-state.test.ts +++ b/src/main/persistence/applying-settings/persistence-ui-state.test.ts @@ -2,9 +2,9 @@ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest' import { rmSync, mkdtempSync } from 'node:fs' import { join } from 'node:path' import { tmpdir } from 'node:os' -import type { PersistedState } from '../shared/persisted-state-types' -import { getDefaultPersistedState } from '../shared/constants' -import { createDefaultWorkspaceCleanupBrowseState } from '../shared/workspace-cleanup-browse-state' +import type { PersistedState } from '../../../shared/persisted-state-types' +import { getDefaultPersistedState } from '../../../shared/constants' +import { createDefaultWorkspaceCleanupBrowseState } from '../../../shared/workspace-cleanup-browse-state' import { closeTestStores, createSqliteTestStore, @@ -15,15 +15,15 @@ import { writeDataFile, readDataFile, makeRepo -} from './persistence-test-harness' -import { installFakeAppEnvironment } from '../../config/scripts/vitest-host-ports-setup' +} from '../../persistence-test-harness' +import { installFakeAppEnvironment } from '../../../../config/scripts/vitest-host-ports-setup' const { loadUserSshConfigMock, sshConfigHostsToTargetsMock } = vi.hoisted(() => ({ loadUserSshConfigMock: vi.fn(), sshConfigHostsToTargetsMock: vi.fn() })) -vi.mock('./ssh/config/ssh-config-parser', () => ({ +vi.mock('../../ssh/config/ssh-config-parser', () => ({ loadUserSshConfig: loadUserSshConfigMock, sshConfigHostsToTargets: sshConfigHostsToTargetsMock })) @@ -44,7 +44,7 @@ async function createStore() { if (hasCreatedStoreInCase) { vi.resetModules() } - const { setSecretStore } = await import('../shared/secret-store') + const { setSecretStore } = await import('../../../shared/secret-store') setSecretStore({ isEncryptionAvailable: () => true, encryptString: (plaintext) => Buffer.from(`encrypted:${plaintext}`, 'utf-8'), @@ -61,18 +61,19 @@ async function createStore() { hasCreatedStoreInCase = true return createFreshStore() } - const { Store, initDataPath } = await import('./persistence') + const { Store } = await import('../loading-store/store') + const { initDataPath } = await import('../loading-store/user-data-path') // Reinstall this test’s userData path after resetModules before initializing Store. installFakeAppEnvironment({ getPath: () => testState.dir }) initDataPath() return createSqliteTestStore(Store, { dataFile: join(testState.dir, 'orca-data.json') }) } -vi.mock('./telemetry/client', () => ({ +vi.mock('../../telemetry/client', () => ({ track: trackMock })) -vi.mock('./telemetry/cohort-classifier', () => ({ +vi.mock('../../telemetry/cohort-classifier', () => ({ getCohortAtEmit: getCohortAtEmitMock }))