@@ -4,6 +4,11 @@ import { readFile } from 'node:fs/promises';
44import semver from 'semver' ;
55import { Project } from 'fixturify-project' ;
66
7+ const mockConsoleError = vi . spyOn ( console , 'error' ) ;
8+ const mockExit = vi . spyOn ( process , 'exit' ) . mockImplementation ( ( exitCode ) => {
9+ throw new Error ( `process exit: ${ exitCode } ` ) ;
10+ } ) ;
11+
712let project ;
813
914import main from '../index.js' ;
@@ -101,15 +106,12 @@ describe('Basic test', () => {
101106 project . addDependency ( 'mocha' , '^5.1.0' ) ;
102107 project . addDependency ( '@ember-data/thingy' , '~5.3.8' ) ;
103108 project . addDependency ( '@ember-data/store' , '~5.1.0' ) ;
109+ project . addDependency ( 'ember-source' , '~1.1.0' ) ;
104110 await project . write ( ) ;
105111
106112 await main ( [
107113 'fake' ,
108114 'fake' ,
109- '--ember-source' ,
110- 'latest' ,
111- '--ember-data' ,
112- 'latest' ,
113115 '--tag' ,
114116 'latest' ,
115117 '--filter' ,
@@ -129,7 +131,8 @@ describe('Basic test', () => {
129131 "dependencies": {
130132 "mocha": "^5.1.0",
131133 "@ember-data/thingy": "~7.7.7",
132- "@ember-data/store": "~7.7.7"
134+ "@ember-data/store": "~7.7.7",
135+ "ember-source": "~1.1.0"
133136 },
134137 "devDependencies": {}
135138 }
@@ -148,10 +151,6 @@ describe('Basic test', () => {
148151 await main ( [
149152 'fake' ,
150153 'fake' ,
151- '--ember-source' ,
152- 'latest' ,
153- '--ember-data' ,
154- 'latest' ,
155154 '--tag' ,
156155 'beta' ,
157156 '--filter' ,
@@ -178,4 +177,44 @@ describe('Basic test', () => {
178177 "
179178 ` ) ;
180179 } ) ;
180+
181+ it ( 'throws an error if you dont pass --filter or --ember-source' , async ( ) => {
182+ project = new Project ( 'test-project' ) ;
183+
184+ project . addDependency ( 'mocha' , '^5.1.0' ) ;
185+ project . addDependency ( '@ember-data/thingy' , '~5.3.8' ) ;
186+ project . addDependency ( '@ember-data/store' , '~5.1.0' ) ;
187+ await project . write ( ) ;
188+
189+ await expect (
190+ main ( [ 'fake' , 'fake' , join ( project . baseDir , 'package.json' ) ] ) ,
191+ ) . rejects . toThrowError ( ) ;
192+
193+ expect ( mockExit ) . to . be . toBeCalledWith ( 1 ) ;
194+ expect ( mockConsoleError . mock . lastCall ) . toMatchInlineSnapshot ( `
195+ [
196+ "You must pass '--ember-source' or '--filter' arguments to this command. Try running again with '--help' for more information",
197+ ]
198+ ` ) ;
199+
200+ // make sure that nothing in the package.json changed
201+ const contents = await readFile (
202+ join ( project . baseDir , 'package.json' ) ,
203+ 'utf8' ,
204+ ) ;
205+ expect ( contents ) . toMatchInlineSnapshot ( `
206+ "{
207+ "name": "test-project",
208+ "version": "0.0.0",
209+ "keywords": [],
210+ "dependencies": {
211+ "mocha": "^5.1.0",
212+ "@ember-data/thingy": "~5.3.8",
213+ "@ember-data/store": "~5.1.0"
214+ },
215+ "devDependencies": {}
216+ }
217+ "
218+ ` ) ;
219+ } ) ;
181220} ) ;
0 commit comments