@@ -85,18 +85,23 @@ describe('list npm versions', () => {
8585
8686 describe ( 'listPackageVersionsByTag' , ( ) => {
8787 it ( 'succeeds with nothing to do' , async ( ) => {
88- expect ( await listPackageVersionsByTag ( [ ] , undefined , npmOptions ) ) . toEqual ( { } ) ;
89- expect ( await listPackageVersionsByTag ( [ ] , 'beta' , npmOptions ) ) . toEqual ( { } ) ;
88+ expect ( await listPackageVersionsByTag ( [ ] , npmOptions ) ) . toEqual ( { } ) ;
9089 expect ( npmMock . mock ) . not . toHaveBeenCalled ( ) ;
9190 } ) ;
9291
9392 it ( 'returns requested tag for one package' , async ( ) => {
9493 npmMock . setRegistryData ( { foo : { 'dist-tags' : { latest : '1.0.0' , beta : '2.0.0-beta' } } } ) ;
95- const packageInfos = Object . values (
96- makePackageInfos ( { foo : { combinedOptions : { tag : 'latest' , defaultNpmTag : 'latest' } } } )
94+ const packageInfos = makePackageInfos (
95+ { foo : { } } ,
96+ {
97+ // The merging order is actually handled by getPackageInfosWithOptions, but having a test
98+ // like this is good documentation.
99+ repoOptions : { tag : 'latest' , defaultNpmTag : 'latest' } ,
100+ argv : [ '--tag' , 'beta' ] ,
101+ }
97102 ) ;
98103
99- const versions = await listPackageVersionsByTag ( packageInfos , 'beta' , npmOptions ) ;
104+ const versions = await listPackageVersionsByTag ( Object . values ( packageInfos ) , npmOptions ) ;
100105 expect ( versions ) . toEqual ( { foo : '2.0.0-beta' } ) ;
101106 expect ( npmMock . mock ) . toHaveBeenCalledTimes ( 1 ) ;
102107 expect ( npmMock . mock ) . toHaveBeenCalledWith ( [ ...commonArgs , 'foo' , ...npmShowProperties ] , expect . anything ( ) ) ;
@@ -107,14 +112,15 @@ describe('list npm versions', () => {
107112 foo : { 'dist-tags' : { latest : '1.0.0' , beta : '2.0.0-beta' } } ,
108113 bar : { 'dist-tags' : { latest : '1.0.0' , beta : '3.0.0-beta' } } ,
109114 } ) ;
110- const packageInfos = Object . values (
111- makePackageInfos ( {
112- foo : { combinedOptions : { tag : 'latest' } } ,
113- bar : { combinedOptions : { tag : 'latest' } } ,
114- } )
115+ const packageInfos = makePackageInfos (
116+ { foo : { } , bar : { } } ,
117+ {
118+ repoOptions : { tag : 'latest' } ,
119+ argv : [ '--tag' , 'beta' ] ,
120+ }
115121 ) ;
116122
117- const versions = await listPackageVersionsByTag ( packageInfos , 'beta' , npmOptions ) ;
123+ const versions = await listPackageVersionsByTag ( Object . values ( packageInfos ) , npmOptions ) ;
118124 expect ( versions ) . toEqual ( { foo : '2.0.0-beta' , bar : '3.0.0-beta' } ) ;
119125 expect ( npmMock . mock ) . toHaveBeenCalledTimes ( 2 ) ;
120126 } ) ;
@@ -123,30 +129,21 @@ describe('list npm versions', () => {
123129 const packages = 'abcdefghij' . split ( '' ) ;
124130 const showData = Object . fromEntries ( packages . map ( ( x , i ) => [ x , { 'dist-tags' : { latest : `${ i } .0.0` } } ] ) ) ;
125131 npmMock . setRegistryData ( showData ) ;
126- const packageInfos = Object . values ( makePackageInfos ( Object . fromEntries ( packages . map ( x => [ x , { } ] ) ) ) ) ;
132+ const packageInfos = makePackageInfos ( Object . fromEntries ( packages . map ( x => [ x , { } ] ) ) , {
133+ repoOptions : { tag : 'latest' } ,
134+ } ) ;
127135
128- expect ( await listPackageVersionsByTag ( packageInfos , 'latest' , npmOptions ) ) . toEqual (
136+ expect ( await listPackageVersionsByTag ( Object . values ( packageInfos ) , npmOptions ) ) . toEqual (
129137 Object . fromEntries ( Object . entries ( showData ) . map ( ( [ k , v ] ) => [ k , v [ 'dist-tags' ] . latest ] ) )
130138 ) ;
131139 expect ( npmMock . mock ) . toHaveBeenCalledTimes ( packages . length ) ;
132140 } ) ;
133141
134- it ( 'falls back to combinedOptions.tag' , async ( ) => {
135- npmMock . setRegistryData ( { foo : { 'dist-tags' : { latest : '1.0.0' , beta : '2.0.0-beta' } } } ) ;
136- const packageInfos = Object . values (
137- makePackageInfos ( { foo : { combinedOptions : { tag : 'beta' , defaultNpmTag : 'latest' } } } )
138- ) ;
139-
140- const versions = await listPackageVersionsByTag ( packageInfos , undefined , npmOptions ) ;
141- expect ( versions ) . toEqual ( { foo : '2.0.0-beta' } ) ;
142- expect ( npmMock . mock ) . toHaveBeenCalledTimes ( 1 ) ;
143- } ) ;
144-
145- it ( 'falls back to combinedOptions.defaultNpmTag if combinedOptions.tag is unset' , async ( ) => {
142+ it ( 'falls back to defaultNpmTag if tag is unset' , async ( ) => {
146143 npmMock . setRegistryData ( { foo : { 'dist-tags' : { latest : '1.0.0' , beta : '2.0.0-beta' } } } ) ;
147- const packageInfos = Object . values ( makePackageInfos ( { foo : { combinedOptions : { defaultNpmTag : 'beta' } } } ) ) ;
144+ const packageInfos = Object . values ( makePackageInfos ( { foo : { beachball : { defaultNpmTag : 'beta' } } } ) ) ;
148145
149- const versions = await listPackageVersionsByTag ( packageInfos , undefined , npmOptions ) ;
146+ const versions = await listPackageVersionsByTag ( packageInfos , npmOptions ) ;
150147 expect ( versions ) . toEqual ( { foo : '2.0.0-beta' } ) ;
151148 expect ( npmMock . mock ) . toHaveBeenCalledTimes ( 1 ) ;
152149 } ) ;
@@ -155,33 +152,36 @@ describe('list npm versions', () => {
155152 npmMock . setRegistryData ( { } ) ;
156153 const packageInfos = Object . values ( makePackageInfos ( { foo : { } } ) ) ;
157154
158- const versions = await listPackageVersionsByTag ( packageInfos , 'latest' , npmOptions ) ;
155+ const versions = await listPackageVersionsByTag ( packageInfos , npmOptions ) ;
159156 expect ( versions ) . toEqual ( { } ) ;
160157 expect ( npmMock . mock ) . toHaveBeenCalledTimes ( 1 ) ;
161158 } ) ;
162159
163160 it ( 'returns empty if no matching dist-tags available' , async ( ) => {
164161 npmMock . setRegistryData ( { foo : { 'dist-tags' : { latest : '1.0.0' , beta : '2.0.0-beta' } } } ) ;
165- const packageInfos = Object . values ( makePackageInfos ( { foo : { } } ) ) ;
162+ const packageInfos = Object . values ( makePackageInfos ( { foo : { } } , { repoOptions : { tag : 'missing' } } ) ) ;
166163
167- const versions = await listPackageVersionsByTag ( packageInfos , 'missing' , npmOptions ) ;
164+ const versions = await listPackageVersionsByTag ( packageInfos , npmOptions ) ;
168165 expect ( versions ) . toEqual ( { } ) ;
169166 expect ( npmMock . mock ) . toHaveBeenCalledTimes ( 1 ) ;
170167 } ) ;
171168
172- it ( 'falls back to different tag option for different packages ' , async ( ) => {
169+ it ( 'uses per-package tag option' , async ( ) => {
173170 npmMock . setRegistryData ( {
174171 foo : { 'dist-tags' : { latest : '1.0.0' , beta : '2.0.0-beta' } } ,
175172 bar : { 'dist-tags' : { latest : '1.0.0' , beta : '2.0.0-beta' } } ,
176173 } ) ;
177174 const packageInfos = Object . values (
178- makePackageInfos ( {
179- foo : { combinedOptions : { defaultNpmTag : 'latest' } } ,
180- bar : { combinedOptions : { tag : 'beta' , defaultNpmTag : 'latest' } } ,
181- } )
175+ makePackageInfos (
176+ {
177+ foo : { } ,
178+ bar : { beachball : { tag : 'beta' } } ,
179+ } ,
180+ { repoOptions : { defaultNpmTag : 'latest' } }
181+ )
182182 ) ;
183183
184- const versions = await listPackageVersionsByTag ( packageInfos , undefined , npmOptions ) ;
184+ const versions = await listPackageVersionsByTag ( packageInfos , npmOptions ) ;
185185 expect ( versions ) . toEqual ( { foo : '1.0.0' , bar : '2.0.0-beta' } ) ;
186186 expect ( npmMock . mock ) . toHaveBeenCalledTimes ( 2 ) ;
187187 } ) ;
@@ -190,7 +190,7 @@ describe('list npm versions', () => {
190190 npmMock . setRegistryData ( { foo : { 'dist-tags' : { latest : '1.0.0' } } } ) ;
191191 const packageInfos = Object . values ( makePackageInfos ( { foo : { } , bar : { } } ) ) ;
192192
193- const versions = await listPackageVersionsByTag ( packageInfos , 'latest' , npmOptions ) ;
193+ const versions = await listPackageVersionsByTag ( packageInfos , npmOptions ) ;
194194 expect ( versions ) . toEqual ( { foo : '1.0.0' } ) ;
195195 expect ( npmMock . mock ) . toHaveBeenCalledTimes ( 2 ) ;
196196 } ) ;
0 commit comments