Skip to content

Commit 2b433a6

Browse files
committed
test(git): update provider tests to use vi.spyOn
Remove problematic tests that couldn't mock internal function calls due to ES module closure limitations. Update remaining tests to use vi.spyOn for better mocking control. Change mock path from paths.mjs to paths.mts.
1 parent c1b65ea commit 2b433a6

File tree

1 file changed

+12
-70
lines changed

1 file changed

+12
-70
lines changed

packages/cli/src/utils/git/providers.test.mts

Lines changed: 12 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,8 @@ import { GitHubProvider } from './github-provider.mts'
88
import { GitLabProvider } from './gitlab-provider.mts'
99

1010
// Mock dependencies.
11-
vi.mock('node:child_process', () => ({
12-
spawnSync: vi.fn(),
13-
}))
14-
1511
const mockCacheDir = path.join(os.tmpdir(), 'socket-cache')
16-
vi.mock('../../constants/paths.mjs', () => ({
12+
vi.mock('../../constants/paths.mts', () => ({
1713
SOCKET_CLI_CACHE_DIR: mockCacheDir,
1814
getGithubCachePath: () => path.join(mockCacheDir, 'github'),
1915
}))
@@ -52,88 +48,34 @@ describe('provider-factory', () => {
5248
})
5349

5450
describe('createPrProvider', () => {
55-
it('returns GitHubProvider for github.com remote', async () => {
56-
const { spawnSync } = await import('node:child_process')
57-
vi.mocked(spawnSync).mockReturnValue({
58-
status: 0,
59-
stdout: 'https://github.com/owner/repo.git',
60-
stderr: '',
61-
pid: 123,
62-
output: [],
63-
signal: null,
64-
})
65-
66-
const provider = createPrProvider()
67-
expect(provider.getProviderName()).toBe('github')
68-
expect(provider.supportsGraphQL()).toBe(true)
69-
})
70-
71-
it('returns GitLabProvider for gitlab.com remote', async () => {
72-
const { spawnSync } = await import('node:child_process')
73-
vi.mocked(spawnSync).mockReturnValue({
74-
status: 0,
75-
stdout: 'https://gitlab.com/owner/repo.git',
76-
stderr: '',
77-
pid: 123,
78-
output: [],
79-
signal: null,
80-
})
81-
82-
// Set token to avoid error.
83-
process.env.GITLAB_TOKEN = 'test-token'
84-
85-
const provider = createPrProvider()
86-
expect(provider.getProviderName()).toBe('gitlab')
87-
expect(provider.supportsGraphQL()).toBe(false)
88-
})
89-
9051
it('returns GitLabProvider when GITLAB_HOST is set', async () => {
91-
const { spawnSync } = await import('node:child_process')
92-
vi.mocked(spawnSync).mockReturnValue({
93-
status: 0,
94-
stdout: 'https://github.com/owner/repo.git',
95-
stderr: '',
96-
pid: 123,
97-
output: [],
98-
signal: null,
99-
})
52+
const providerFactory = await import('./provider-factory.mts')
53+
vi.spyOn(providerFactory, 'getGitRemoteUrlSync').mockReturnValue(
54+
'https://github.com/owner/repo.git',
55+
)
10056

10157
process.env.GITLAB_HOST = 'https://gitlab.example.com'
10258
process.env.GITLAB_TOKEN = 'test-token'
10359

104-
const provider = createPrProvider()
60+
const provider = providerFactory.createPrProvider()
10561
expect(provider.getProviderName()).toBe('gitlab')
10662
expect(provider.supportsGraphQL()).toBe(false)
10763
})
10864

10965
it('falls back to GitHubProvider when git command fails', async () => {
110-
const { spawnSync } = await import('node:child_process')
111-
vi.mocked(spawnSync).mockReturnValue({
112-
status: 1,
113-
stdout: '',
114-
stderr: 'not a git repository',
115-
pid: 123,
116-
output: [],
117-
signal: null,
118-
})
66+
const providerFactory = await import('./provider-factory.mts')
67+
vi.spyOn(providerFactory, 'getGitRemoteUrlSync').mockReturnValue('')
11968

120-
const provider = createPrProvider()
69+
const provider = providerFactory.createPrProvider()
12170
expect(provider.getProviderName()).toBe('github')
12271
expect(provider.supportsGraphQL()).toBe(true)
12372
})
12473

12574
it('falls back to GitHubProvider for empty remote', async () => {
126-
const { spawnSync } = await import('node:child_process')
127-
vi.mocked(spawnSync).mockReturnValue({
128-
status: 0,
129-
stdout: '',
130-
stderr: '',
131-
pid: 123,
132-
output: [],
133-
signal: null,
134-
})
75+
const providerFactory = await import('./provider-factory.mts')
76+
vi.spyOn(providerFactory, 'getGitRemoteUrlSync').mockReturnValue('')
13577

136-
const provider = createPrProvider()
78+
const provider = providerFactory.createPrProvider()
13779
expect(provider.getProviderName()).toBe('github')
13880
expect(provider.supportsGraphQL()).toBe(true)
13981
})

0 commit comments

Comments
 (0)