From d21472919f18cb61beda43b4811de782499837bf Mon Sep 17 00:00:00 2001 From: Takuya Suemura Date: Sun, 3 Feb 2019 08:06:15 +0900 Subject: [PATCH 1/2] Move injectDependencies() into ScenarioConfig --- lib/interfaces/scenarioConfig.js | 10 ++++++++++ lib/ui.js | 5 ----- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/lib/interfaces/scenarioConfig.js b/lib/interfaces/scenarioConfig.js index 0892749a9..568ab7d6b 100644 --- a/lib/interfaces/scenarioConfig.js +++ b/lib/interfaces/scenarioConfig.js @@ -83,6 +83,16 @@ class ScenarioConfig { this.test.title = `${this.test.title.trim()} ${tagName}`; return this; } + + /** + * Dynamically injects dependencies, see https://codecept.io/pageobjects/#dynamic-injection + * @param {*} dependencies + */ + injectDependencies(dependencies) { + Object.keys(dependencies).forEach((key) => { + this.test.inject[key] = dependencies[key]; + }); + } } module.exports = ScenarioConfig; diff --git a/lib/ui.js b/lib/ui.js index 2a2631909..e76c3ba09 100644 --- a/lib/ui.js +++ b/lib/ui.js @@ -46,11 +46,6 @@ module.exports = function (suite) { } const test = new Test(title, fn); test.fullTitle = () => `${suite.title}: ${test.title}`; - test.injectDependencies = (deps) => { - Object.keys(deps).forEach((key) => { - test.inject[key] = deps[key]; - }); - }; test.tags = (suite.tags || []).concat(title.match(/(\@[a-zA-Z0-9-_]+)/g)); // match tags from title test.file = file; From 25e6262b05da3d773c2a5cb9a5bf401fc95dbf11 Mon Sep 17 00:00:00 2001 From: Takuya Suemura Date: Sun, 3 Feb 2019 08:06:26 +0900 Subject: [PATCH 2/2] Add injectDependencies() test --- test/unit/ui_test.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/test/unit/ui_test.js b/test/unit/ui_test.js index 4e5919073..4552970a3 100644 --- a/test/unit/ui_test.js +++ b/test/unit/ui_test.js @@ -110,5 +110,11 @@ describe('ui', () => { scenarioConfig.tag('@user'); scenarioConfig.test.tags.should.include('@user'); }); + + it('should dynamically inject dependencies', () => { + scenarioConfig = context.Scenario('scenario'); + scenarioConfig.injectDependencies({ Data: 'data' }); + assert.equal(scenarioConfig.test.inject.Data, 'data'); + }); }); });