-
Notifications
You must be signed in to change notification settings - Fork 11.9k
Open
Labels
area: @angular-devkit/schematicsfreq1: lowOnly reported by a handful of users who observe it rarelyOnly reported by a handful of users who observe it rarelyseverity3: brokentype: bug/fix
Milestone
Description
Addendum
In creating the test case I've realised that I'm not passing a partialContext
to callRule
, so it is definitely missing context, however, it is not at all clear what context is necessary for mergeWith
to succeed and the error does not indicate that context is actually missing.
Happy for this to be marked as a question instead. Guidance on how to provide the context and what context to provide would be amazingly useful.
🐞 Bug report
Description
Using callRule
to unit test rules within a schematic fails when it comes to rules which return mergeWith
🔬 Minimal Reproduction
See: https://github.com/jdpearce/schematics-apply-problem
Given a rule which applies template files to the tree, this unit test will fail with TypeError: Cannot read property 'path' of undefined
:
describe('applyTemplateFiles Rule', () => {
let tree: UnitTestTree;
beforeEach(async () => {
tree = new UnitTestTree(Tree.empty());
});
it('should apply the files to the tree', async () => {
const schema = {};
tree = (await callRule(applyTemplateFiles(schema), tree)) as UnitTestTree;
expect(tree.files).toEqual(jasmine.arrayContaining(['/libs/destination/test.txt']));
});
});
🔥 Exception or Error
Failures:
1) applyTemplateFiles Rule should apply the files to the tree
Message:
TypeError: Cannot read property 'path' of undefined
Stack:
at <Jasmine>
at ./apply-problem/node_modules/@angular-devkit/schematics/tools/file-system-engine-host-base.js:216:96
at ./tmp/apply-problem/node_modules/@angular-devkit/schematics/src/rules/url.js:13:73
at Object.callSource (./tmp/apply-problem/node_modules/@angular-devkit/schematics/src/rules/call.js:55:20)
at ./tmp/apply-problem/node_modules/@angular-devkit/schematics/src/rules/base.js:45:60
at Object.callSource (./tmp/apply-problem/node_modules/@angular-devkit/schematics/src/rules/call.js:55:20)
at ./tmp/apply-problem/node_modules/@angular-devkit/schematics/src/rules/base.js:53:23
at MergeMapSubscriber.project (./tmp/apply-problem/node_modules/@angular-devkit/schematics/src/rules/call.js:74:24)
at MergeMapSubscriber._tryNext (./tmp/apply-problem/node_modules/rxjs/internal/operators/mergeMap.js:69:27)
at MergeMapSubscriber._next (./tmp/apply-problem/node_modules/rxjs/internal/operators/mergeMap.js:59:18)
at MergeMapSubscriber.Subscriber.next (./tmp/apply-problem/node_modules/rxjs/internal/Subscriber.js:66:18)
2 specs, 1 failure
🌍 Your Environment
"@angular-devkit/core": "^9.0.6",
"@angular-devkit/schematics": "^9.0.6",
"@types/jasmine": "^3.3.9",
"@types/node": "^8.0.31",
"jasmine": "^3.3.1",
"typescript": "~3.5.3"
Metadata
Metadata
Assignees
Labels
area: @angular-devkit/schematicsfreq1: lowOnly reported by a handful of users who observe it rarelyOnly reported by a handful of users who observe it rarelyseverity3: brokentype: bug/fix