From a67cc9ab97a6c323395823514c1ebb87e4e9dcad Mon Sep 17 00:00:00 2001 From: SergeyKovalchuk Date: Sun, 31 Jul 2016 13:24:08 +0300 Subject: [PATCH 1/5] Add files via upload --- katas/moduleDependences/README.md | 59 +++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 katas/moduleDependences/README.md diff --git a/katas/moduleDependences/README.md b/katas/moduleDependences/README.md new file mode 100644 index 0000000..b1401a5 --- /dev/null +++ b/katas/moduleDependences/README.md @@ -0,0 +1,59 @@ +## Module Dependencies + +Write recursive function that return all dependencies (and sub-dependencies) in unique module, sort dependencies in alphabet order. +Dependencies should be displayed as * @ * version dependency, eg. `Inflection @ 1.2.6`. + +Extra Task -> * @ * allows multiple versions of the same module, but duplicates (identical versions) must be removed. + +## Arguments + +* `tree`�: tree of dependencies. In Example section you can see the structure. + +## Example + +// See the example + +```javascript + +var loremIpsum = { + "name": "lorem-ipsum", + "version": "0.1.1", + "dependencies": { + "optimist": { + "version": "0.3.7", + "dependencies": { + "wordwrap": { + "version": "0.0.2" + } + } + }, + "inflection": { + "version": "1.2.6" + } + } +} + +getDependencies(loremIpsum) // => [ 'inflection@1.2.6', 'optimist@0.3.7', 'wordwrap@0.0.2' ] + +``` +## Conditions + +* You can't use `for`/`while`. + +## Base + +// Your work is to implement something like in Example in JavaScript. +// With this purpose, I have defined the getDependencies function. + +```js +function getDependencies(tree) { + // ... your code here. + // NOTE: you can add some new arguments to function +} + +module.exports = getDependencies +``` + +## Recourses + +* https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/keys From f4cb7709e4a05127cf0e30a2ed8dce72a6ce51e3 Mon Sep 17 00:00:00 2001 From: SergeyKovalchuk Date: Mon, 1 Aug 2016 11:38:24 +0300 Subject: [PATCH 2/5] Create get-dependencies.js add solution file --- katas/moduleDependences/get-dependencies.js | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 katas/moduleDependences/get-dependencies.js diff --git a/katas/moduleDependences/get-dependencies.js b/katas/moduleDependences/get-dependencies.js new file mode 100644 index 0000000..8fd98bb --- /dev/null +++ b/katas/moduleDependences/get-dependencies.js @@ -0,0 +1,3 @@ +function getDependencies(tree) { + // ... your code here. +} From a9b8a47de215f79ca672b1742664d1b1bbea1824 Mon Sep 17 00:00:00 2001 From: SergeyKovalchuk Date: Mon, 1 Aug 2016 13:32:53 +0300 Subject: [PATCH 3/5] Create get-dependencies-test.js add get-dependencies-test --- .../get-dependencies-test.js | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 katas/moduleDependences/get-dependencies-test.js diff --git a/katas/moduleDependences/get-dependencies-test.js b/katas/moduleDependences/get-dependencies-test.js new file mode 100644 index 0000000..14df9b2 --- /dev/null +++ b/katas/moduleDependences/get-dependencies-test.js @@ -0,0 +1,27 @@ +describe('module dependencies', function() { + var testTree; + + beforeEach(function() { + loremIpsum = { + "name": "lorem-ipsum", + "version": "0.1.1", + "dependencies": { + "optimist": { + "version": "0.3.7", + "dependencies": { + "wordwrap": { + "version": "0.0.2" + } + } + }, + "inflection": { + "version": "1.2.6" + } + } + } + }); + + it('should return correct array of dependencies in descending order', function() { + expect(getDependencies(loremIpsum)).toEqual([ 'inflection@1.2.6', 'optimist@0.3.7', 'wordwrap@0.0.2']); + }); +}); From 734ee1c55ecf8d5b95af00edc5e8e4b6aa52682c Mon Sep 17 00:00:00 2001 From: SergeyKovalchuk Date: Mon, 1 Aug 2016 16:51:18 +0300 Subject: [PATCH 4/5] Update get-dependencies-test.js --- katas/moduleDependences/get-dependencies-test.js | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/katas/moduleDependences/get-dependencies-test.js b/katas/moduleDependences/get-dependencies-test.js index 14df9b2..9450fcf 100644 --- a/katas/moduleDependences/get-dependencies-test.js +++ b/katas/moduleDependences/get-dependencies-test.js @@ -18,10 +18,21 @@ describe('module dependencies', function() { "version": "1.2.6" } } + }, + lorem = { + "dependencies": { + "wordwrap": { + "version": "0.0.2", + } + } } }); it('should return correct array of dependencies in descending order', function() { expect(getDependencies(loremIpsum)).toEqual([ 'inflection@1.2.6', 'optimist@0.3.7', 'wordwrap@0.0.2']); }); + + it('should return latest version of dependency'), function() { + expect(getDependencies(loremIpsum)).toEqual([ 'inflection@1.2.6', 'optimist@0.3.7', 'wordwrap@0.0.2']); + }); }); From 6d61ac446b43f24f54528cacfbb55e2d39700692 Mon Sep 17 00:00:00 2001 From: SergeyKovalchuk Date: Mon, 1 Aug 2016 17:01:02 +0300 Subject: [PATCH 5/5] Update get-dependencies-test.js add some tests --- .../get-dependencies-test.js | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/katas/moduleDependences/get-dependencies-test.js b/katas/moduleDependences/get-dependencies-test.js index 9450fcf..3e33238 100644 --- a/katas/moduleDependences/get-dependencies-test.js +++ b/katas/moduleDependences/get-dependencies-test.js @@ -23,16 +23,32 @@ describe('module dependencies', function() { "dependencies": { "wordwrap": { "version": "0.0.2", + "version": "1.0.2", + } + } + }, + loremEmpty = { + "dependencies": { + "wordwrap": { } } } }); it('should return correct array of dependencies in descending order', function() { - expect(getDependencies(loremIpsum)).toEqual([ 'inflection@1.2.6', 'optimist@0.3.7', 'wordwrap@0.0.2']); + expect(getDependencies(loremIpsum)).toEqual([ 'inflection@1.2.6', 'optimist@0.3.7', 'wordwrap@0.0.2']); }); it('should return latest version of dependency'), function() { - expect(getDependencies(loremIpsum)).toEqual([ 'inflection@1.2.6', 'optimist@0.3.7', 'wordwrap@0.0.2']); + expect(getDependencies(lorem)).toEqual([ 'wordwrap@1.0.2']); + }); + + it('should have the same character @'), function() { + var result = getDependencies(lorem); + expect(result[0].slice(-6,-5)).toEqual('@'); + }); + + it('should return empty array if module doesn\'t have dependencies'), function() { + expect(getDependencies(loremEmpty)).toEqual([]); }); });