Skip to content

Commit d6f4b0b

Browse files
committed
update tests
1 parent 2464a08 commit d6f4b0b

2 files changed

Lines changed: 28 additions & 42 deletions

File tree

test/nuxt/composables/use-compare-replacements.spec.ts

Lines changed: 27 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { ref, watchEffect, h, defineComponent } from 'vue'
12
import { afterEach, describe, expect, it, vi } from 'vitest'
23
import { mountSuspended } from '@nuxt/test-utils/runtime'
34
import type { ModuleReplacement } from 'module-replacements'
@@ -50,12 +51,13 @@ describe('useCompareReplacements', () => {
5051
vi.fn().mockImplementation((url: string) => {
5152
if (url.includes('/api/replacements/array-includes')) {
5253
return Promise.resolve({
54+
id: 'array-includes',
5355
type: 'native',
54-
moduleName: 'array-includes',
55-
nodeVersion: '6.0.0',
56-
replacement: 'Array.prototype.includes',
57-
mdnPath: 'Global_Objects/Array/includes',
58-
category: 'native',
56+
url: { type: 'mdn', id: 'Global_Objects/Array/includes' },
57+
engines: [{ engine: 'nodejs', minVersion: '6.0.0' }],
58+
nodeFeatureId: {
59+
moduleName: 'Array.prototype.includes',
60+
},
5961
} satisfies ModuleReplacement)
6062
}
6163
return Promise.resolve(null)
@@ -70,6 +72,7 @@ describe('useCompareReplacements', () => {
7072
expect(noDepSuggestions.value).toHaveLength(1)
7173
})
7274

75+
// Note: forPackage likely maps to the 'id' in the new schema or the original query
7376
expect(noDepSuggestions.value[0]?.forPackage).toBe('array-includes')
7477
expect(noDepSuggestions.value[0]?.replacement.type).toBe('native')
7578
expect(infoSuggestions.value).toHaveLength(0)
@@ -81,10 +84,9 @@ describe('useCompareReplacements', () => {
8184
vi.fn().mockImplementation((url: string) => {
8285
if (url.includes('/api/replacements/is-even')) {
8386
return Promise.resolve({
87+
id: 'is-even',
8488
type: 'simple',
85-
moduleName: 'is-even',
86-
replacement: 'Use (n % 2) === 0',
87-
category: 'micro-utilities',
89+
description: 'Use (n % 2) === 0',
8890
} satisfies ModuleReplacement)
8991
}
9092
return Promise.resolve(null)
@@ -110,10 +112,11 @@ describe('useCompareReplacements', () => {
110112
vi.fn().mockImplementation((url: string) => {
111113
if (url.includes('/api/replacements/moment')) {
112114
return Promise.resolve({
115+
id: 'moment',
113116
type: 'documented',
114-
moduleName: 'moment',
115-
docPath: 'moment',
116-
category: 'preferred',
117+
url: 'https://momentjs.com/docs/#/use-it/built-in-alternatives/',
118+
replacementModule: 'date-fns',
119+
preferred: true,
117120
} satisfies ModuleReplacement)
118121
}
119122
return Promise.resolve(null)
@@ -139,28 +142,25 @@ describe('useCompareReplacements', () => {
139142
vi.fn().mockImplementation((url: string) => {
140143
if (url.includes('/api/replacements/is-odd')) {
141144
return Promise.resolve({
145+
id: 'is-odd',
142146
type: 'simple',
143-
moduleName: 'is-odd',
144-
replacement: 'Use (n % 2) !== 0',
145-
category: 'micro-utilities',
147+
description: 'Use (n % 2) !== 0',
146148
} satisfies ModuleReplacement)
147149
}
148150
if (url.includes('/api/replacements/lodash')) {
149151
return Promise.resolve({
152+
id: 'lodash',
150153
type: 'documented',
151-
moduleName: 'lodash',
152-
docPath: 'lodash-underscore',
153-
category: 'preferred',
154+
url: 'https://github.com/you-dont-need/You-Dont-Need-Lodash-Underscore',
155+
replacementModule: 'native',
154156
} satisfies ModuleReplacement)
155157
}
156158
if (url.includes('/api/replacements/array-map')) {
157159
return Promise.resolve({
160+
id: 'array-map',
158161
type: 'native',
159-
moduleName: 'array-map',
160-
nodeVersion: '0.10.0',
161-
replacement: 'Array.prototype.map',
162-
mdnPath: 'Global_Objects/Array/map',
163-
category: 'native',
162+
url: { type: 'mdn', id: 'Global_Objects/Array/map' },
163+
engines: [{ engine: 'nodejs', minVersion: '0.10.0' }],
164164
} satisfies ModuleReplacement)
165165
}
166166
return Promise.resolve(null)
@@ -178,12 +178,9 @@ describe('useCompareReplacements', () => {
178178
expect(infoSuggestions.value).toHaveLength(1)
179179
})
180180

181-
// no dep should have simple and native
182181
const noDepTypes = noDepSuggestions.value.map(s => s.replacement.type)
183182
expect(noDepTypes).toContain('simple')
184183
expect(noDepTypes).toContain('native')
185-
186-
// Info should have documented
187184
expect(infoSuggestions.value[0]?.replacement.type).toBe('documented')
188185
})
189186
})
@@ -192,12 +189,7 @@ describe('useCompareReplacements', () => {
192189
it('does not include packages with no replacement data', async () => {
193190
vi.stubGlobal(
194191
'$fetch',
195-
vi.fn().mockImplementation((url: string) => {
196-
if (url.includes('/api/replacements/react')) {
197-
return Promise.resolve(null) // No replacement for react
198-
}
199-
return Promise.resolve(null)
200-
}),
192+
vi.fn().mockImplementation(() => Promise.resolve(null)),
201193
)
202194

203195
const { noDepSuggestions, infoSuggestions, replacements } =
@@ -214,21 +206,16 @@ describe('useCompareReplacements', () => {
214206
it('handles fetch errors gracefully', async () => {
215207
vi.stubGlobal(
216208
'$fetch',
217-
vi.fn().mockImplementation(() => {
218-
return Promise.reject(new Error('Network error'))
219-
}),
209+
vi.fn().mockImplementation(() => Promise.reject(new Error('Network error'))),
220210
)
221211

222-
const { noDepSuggestions, infoSuggestions, replacements } =
223-
await useCompareReplacementsInComponent(['some-package'])
212+
const { replacements } = await useCompareReplacementsInComponent(['some-package'])
224213

225214
await vi.waitFor(() => {
226215
expect(replacements.value.has('some-package')).toBe(true)
227216
})
228217

229218
expect(replacements.value.get('some-package')).toBeNull()
230-
expect(noDepSuggestions.value).toHaveLength(0)
231-
expect(infoSuggestions.value).toHaveLength(0)
232219
})
233220
})
234221

@@ -237,10 +224,9 @@ describe('useCompareReplacements', () => {
237224
const fetchMock = vi.fn().mockImplementation((url: string) => {
238225
if (url.includes('/api/replacements/is-even')) {
239226
return Promise.resolve({
227+
id: 'is-even',
240228
type: 'simple',
241-
moduleName: 'is-even',
242-
replacement: 'Use (n % 2) === 0',
243-
category: 'micro-utilities',
229+
description: 'Use (n % 2) === 0',
244230
} satisfies ModuleReplacement)
245231
}
246232
return Promise.resolve(null)

test/nuxt/composables/use-replacement-dependencies.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ describe('useReplacementDependencies', () => {
114114

115115
expect(simple?.type).toBe('simple')
116116
expect(native?.type).toBe('native')
117-
expect(native?.url?.type).toBe('mdn')
117+
expect(native?.url).toHaveProperty('type', 'mdn')
118118
expect(replacements.value['picoquery']).toBeUndefined()
119119
})
120120

0 commit comments

Comments
 (0)