Skip to content

Commit 756c051

Browse files
committed
Add a better test for the extraCliArgs option
This uses testdouble.js to spy on the `ember` call that is done by `emberNew`.
1 parent f4ff8d5 commit 756c051

File tree

4 files changed

+89
-22
lines changed

4 files changed

+89
-22
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
"debug": "^4.3.2",
2929
"ember-cli-internal-test-helpers": "^0.9.1",
3030
"fs-extra": "^9.1.0",
31-
"testdouble": "^3.16.1",
31+
"testdouble": "^3.20.2",
3232
"tmp-sync": "^1.0.0"
3333
},
3434
"devDependencies": {

tests/acceptance/helpers-test.js

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -33,14 +33,6 @@ describe('Acceptance: helpers', function () {
3333
expect(fs.existsSync(addonPath)).to.equal(true);
3434
});
3535
});
36-
37-
it('emberNew - extraCliArgs', () => {
38-
return emberNew({ extraCliArgs: ['--typescript', '--no-welcome']})
39-
.then(() => {
40-
const appPath = path.resolve(process.cwd(), 'app');
41-
expect(fs.existsSync(appPath)).to.equal(true);
42-
});
43-
});
4436
});
4537

4638
describe('emberGenerateDestroy', () => {

tests/unit/ember-new-test.js

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
'use strict';
2+
const setupTestHooks = require('../../lib/helpers/setup');
3+
4+
const chai = require('../../chai');
5+
const expect = chai.expect;
6+
const td = require('testdouble')
7+
8+
let ember;
9+
10+
describe('Unit: emberNew', function () {
11+
setupTestHooks(this);
12+
13+
afterEach(() => {
14+
td.reset();
15+
ember = undefined;
16+
});
17+
18+
it('emberNew - extraCliArgs', () => {
19+
const originalEmber = require('../../lib/helpers/ember.js');
20+
ember = td.replace('../../lib/helpers/ember.js');
21+
22+
// "spy" on the original ember function.
23+
// testdouble.js doesn't have built-in support for this because it considers it a bad practise:
24+
// https://github.com/testdouble/testdouble.js/issues/512#issuecomment-1527511338
25+
td.when(ember(td.matchers.contains('--typescript', '--no-welcome'), td.matchers.anything())).thenDo((...args) => {
26+
return originalEmber(...args);
27+
});
28+
29+
const emberNew = require('../../lib/ember-new');
30+
31+
return emberNew({ extraCliArgs: ['--typescript', '--no-welcome'] })
32+
.then(() => {
33+
// If we get here that means our testdouble matcher worked and things were called as expected.
34+
expect(true).to.be.true;
35+
});
36+
});
37+
});

yarn.lock

Lines changed: 51 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3218,6 +3218,11 @@ function-bind@^1.1.1:
32183218
version "1.1.1"
32193219
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
32203220

3221+
function-bind@^1.1.2:
3222+
version "1.1.2"
3223+
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c"
3224+
integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==
3225+
32213226
functional-red-black-tree@^1.0.1:
32223227
version "1.0.1"
32233228
resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
@@ -3534,6 +3539,13 @@ hash-for-dep@^1.4.7, hash-for-dep@^1.5.0:
35343539
resolve "^1.10.0"
35353540
resolve-package-path "^1.0.11"
35363541

3542+
hasown@^2.0.2:
3543+
version "2.0.2"
3544+
resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003"
3545+
integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==
3546+
dependencies:
3547+
function-bind "^1.1.2"
3548+
35373549
he@1.2.0:
35383550
version "1.2.0"
35393551
resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
@@ -3844,6 +3856,13 @@ is-buffer@^1.1.5:
38443856
version "1.1.5"
38453857
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc"
38463858

3859+
is-core-module@^2.13.0:
3860+
version "2.15.1"
3861+
resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.15.1.tgz#a7363a25bee942fefab0de13bf6aa372c82dcc37"
3862+
integrity sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==
3863+
dependencies:
3864+
hasown "^2.0.2"
3865+
38473866
is-data-descriptor@^0.1.4:
38483867
version "0.1.4"
38493868
resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
@@ -4599,7 +4618,7 @@ lodash.values@~2.3.0:
45994618
dependencies:
46004619
lodash.keys "~2.3.0"
46014620

4602-
lodash@^4.0.0, lodash@^4.16.1, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.4, lodash@^4.3.0:
4621+
lodash@^4.0.0, lodash@^4.16.1, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.19, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.3.0:
46034622
version "4.17.21"
46044623
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
46054624
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
@@ -5485,6 +5504,11 @@ path-parse@^1.0.6:
54855504
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
54865505
integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==
54875506

5507+
path-parse@^1.0.7:
5508+
version "1.0.7"
5509+
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
5510+
integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
5511+
54885512
path-posix@^1.0.0:
54895513
version "1.0.0"
54905514
resolved "https://registry.yarnpkg.com/path-posix/-/path-posix-1.0.0.tgz#06b26113f56beab042545a23bfa88003ccac260f"
@@ -5671,13 +5695,13 @@ query-string@^5.0.1:
56715695
object-assign "^4.1.0"
56725696
strict-uri-encode "^1.0.0"
56735697

5674-
quibble@^0.6.4:
5675-
version "0.6.4"
5676-
resolved "https://registry.yarnpkg.com/quibble/-/quibble-0.6.4.tgz#a8a4d6a4f3b7f1785a7edacb945082c046601c13"
5677-
integrity sha512-hZXvHTiBcpCJ4cQ0FvR7tZJuyAF6k5Q1EZMExjTTY6eKng5wSMMWbithU8hNDQjV8vqYWqxasnf79QUDwX8WlQ==
5698+
quibble@^0.9.2:
5699+
version "0.9.2"
5700+
resolved "https://registry.yarnpkg.com/quibble/-/quibble-0.9.2.tgz#1729fdda002bb8bfdbbf6c1b36d75a40162185da"
5701+
integrity sha512-BrL7hrZcbyyt5ZDfePkGFDc3m82uUtxCPOnpRUrkOdtBnmV9ldQKxXORkKL8eIzToRNaCpIPyKyfdfq/tBlFAA==
56785702
dependencies:
5679-
lodash "^4.17.14"
5680-
resolve "^1.11.1"
5703+
lodash "^4.17.21"
5704+
resolve "^1.22.8"
56815705

56825706
quick-temp@^0.1.2, quick-temp@^0.1.3, quick-temp@^0.1.5, quick-temp@^0.1.8:
56835707
version "0.1.8"
@@ -5891,6 +5915,15 @@ resolve@^1.10.0, resolve@^1.11.1, resolve@^1.13.1, resolve@^1.17.0, resolve@^1.3
58915915
dependencies:
58925916
path-parse "^1.0.6"
58935917

5918+
resolve@^1.22.8:
5919+
version "1.22.8"
5920+
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d"
5921+
integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==
5922+
dependencies:
5923+
is-core-module "^2.13.0"
5924+
path-parse "^1.0.7"
5925+
supports-preserve-symlinks-flag "^1.0.0"
5926+
58945927
responselike@1.0.2:
58955928
version "1.0.2"
58965929
resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7"
@@ -6553,6 +6586,11 @@ supports-color@^7.1.0:
65536586
dependencies:
65546587
has-flag "^4.0.0"
65556588

6589+
supports-preserve-symlinks-flag@^1.0.0:
6590+
version "1.0.0"
6591+
resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
6592+
integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
6593+
65566594
symlink-or-copy@^1.0.0, symlink-or-copy@^1.0.1, symlink-or-copy@^1.1.8, symlink-or-copy@^1.2.0, symlink-or-copy@^1.3.0, symlink-or-copy@^1.3.1:
65576595
version "1.3.1"
65586596
resolved "https://registry.yarnpkg.com/symlink-or-copy/-/symlink-or-copy-1.3.1.tgz#9506dd64d8e98fa21dcbf4018d1eab23e77f71fe"
@@ -6619,13 +6657,13 @@ temp@0.9.1:
66196657
dependencies:
66206658
rimraf "~2.6.2"
66216659

6622-
testdouble@^3.16.1:
6623-
version "3.16.1"
6624-
resolved "https://registry.yarnpkg.com/testdouble/-/testdouble-3.16.1.tgz#05e3405b79e81d5e37aec7157cccd52217c97e8b"
6625-
integrity sha512-diaNYjFfR8bdMhtwJ9c2KxHa7M8Al7YciU+kteutWIIendmCC61ZyqQBtprsFkb6Cd/rjBr2sEoUJ8bWIVHm6w==
6660+
testdouble@^3.20.2:
6661+
version "3.20.2"
6662+
resolved "https://registry.yarnpkg.com/testdouble/-/testdouble-3.20.2.tgz#b7b6b7ae474fda194d57a3b10595bb1309825399"
6663+
integrity sha512-790e9vJKdfddWNOaxW1/V9FcMk48cPEl3eJSj2i8Hh1fX89qArEJ6cp3DBnaECpGXc3xKJVWbc1jeNlWYWgiMg==
66266664
dependencies:
6627-
lodash "^4.17.15"
6628-
quibble "^0.6.4"
6665+
lodash "^4.17.21"
6666+
quibble "^0.9.2"
66296667
stringify-object-es5 "^2.5.0"
66306668
theredoc "^1.0.0"
66316669

0 commit comments

Comments
 (0)