1+ import type { ResolvedDependencyInfo } from '#types/context'
12import type { PackageInfo } from '#utils/api/package'
2- import type { ResolveUpgradeOptions } from '../../src/providers/diagnostics/rules/upgrade'
3- import { resolveExactVersion } from '#utils/package'
4- import { isSupportedProtocol , parseVersion } from '#utils/version'
53import { describe , expect , it } from 'vitest'
64import { resolveUpgrade } from '../../src/providers/diagnostics/rules/upgrade'
5+ import { createContext } from './context'
76
87const distTags : Record < string , string > = {
98 latest : '2.7.0' ,
@@ -17,53 +16,38 @@ const versionsMeta: Record<string, object> = {
1716 '3.0.0-alpha.5' : { } ,
1817}
1918
20- function createOptions ( version : string , ignoreList : string [ ] = [ ] ) : ResolveUpgradeOptions | undefined {
21- const parsed = parseVersion ( version )
22- if ( ! parsed )
23- return
24- const exactVersion = isSupportedProtocol ( parsed . protocol )
25- ? resolveExactVersion ( { distTags, versionsMeta, versionToTag : new Map ( ) } as PackageInfo , parsed . version )
26- : null
27- if ( ! exactVersion )
28- return
29- return { name : 'vite' , version, parsed, exactVersion, distTags, ignoreList }
19+ async function createOptions ( version : string ) : Promise < [ ResolvedDependencyInfo , PackageInfo , string ] > {
20+ const ctx = createContext ( { name : 'vite' , version, distTags, versionsMeta } )
21+ return [ ctx . dep , ctx . pkg , ( await ctx . dep . resolvedVersion ( ) ) ! ]
3022}
3123
3224describe ( 'resolveUpgrade' , ( ) => {
33- it ( 'should flag when latest is greater than current version' , ( ) => {
34- expect ( resolveUpgrade ( createOptions ( '^1.0.0' ) ! ) ) . toMatchObject ( {
35- name : 'vite' ,
36- targetVersion : '^2.7.0' ,
37- } )
25+ it ( 'should flag when latest is greater than current version' , async ( ) => {
26+ expect ( resolveUpgrade ( ...await createOptions ( '^1.0.0' ) ) ) . toBe ( '^2.7.0' )
3827 } )
3928
4029 it . each ( [
4130 '^2.7.0' ,
4231 'latest' ,
4332 'npm:latest' ,
4433 '3.0.0-alpha.5' ,
45- ] ) ( 'should not flag for "%s"' , ( version ) => {
46- const options = createOptions ( version )
34+ ] ) ( 'should not flag for "%s"' , async ( version ) => {
35+ const options = await createOptions ( version )
4736 if ( ! options ) {
48- expect ( options ) . toBeUndefined ( )
4937 return
5038 }
51- expect ( resolveUpgrade ( options ) ) . toBeUndefined ( )
39+ expect ( resolveUpgrade ( ... options ) ) . toBeUndefined ( )
5240 } )
5341
54- it ( 'should flag prerelease upgrade within same pre-id' , ( ) => {
55- expect ( resolveUpgrade ( createOptions ( '3.0.0-alpha.1' ) ! ) ) . toMatchObject ( {
56- targetVersion : '3.0.0-alpha.5' ,
57- } )
42+ it ( 'should flag prerelease upgrade within same pre-id' , async ( ) => {
43+ expect ( resolveUpgrade ( ...await createOptions ( '3.0.0-alpha.1' ) ) ) . toBe ( '3.0.0-alpha.5' )
5844 } )
5945
60- it ( 'should not flag when target upgrade version is ignored' , ( ) => {
61- expect ( resolveUpgrade ( createOptions ( '^1.0.0' , [ 'vite@^2.7.0' ] ) ! ) ) . toBeUndefined ( )
46+ it ( 'should not flag when target upgrade version is ignored' , async ( ) => {
47+ expect ( resolveUpgrade ( ... await createOptions ( '^1.0.0' ) , [ 'vite@^2.7.0' ] ) ) . toBeUndefined ( )
6248 } )
6349
64- it ( 'should preserve protocol prefix in targetVersion' , ( ) => {
65- expect ( resolveUpgrade ( createOptions ( 'npm:^1.0.0' ) ! ) ) . toMatchObject ( {
66- targetVersion : 'npm:^2.7.0' ,
67- } )
50+ it ( 'should preserve protocol prefix in targetVersion' , async ( ) => {
51+ expect ( resolveUpgrade ( ...await createOptions ( 'npm:^1.0.0' ) ) ) . toBe ( 'npm:^2.7.0' )
6852 } )
6953} )
0 commit comments