From 3f897a0c0574f28898f6b2e0286bfeb5f366e4e7 Mon Sep 17 00:00:00 2001 From: indieisaconcept Date: Sun, 27 Jul 2014 22:43:52 +1000 Subject: [PATCH] core: ensure unique values are returned - added unique filtering - update release notes - bump package Impact: low --- README.md | 1 + lib/fixturl.js | 12 ++++++--- package.json | 2 +- test/fixturl_test.js | 62 +++++++++++++++++++++++--------------------- 4 files changed, 44 insertions(+), 33 deletions(-) diff --git a/README.md b/README.md index 9df83e9..7c4c46f 100644 --- a/README.md +++ b/README.md @@ -69,6 +69,7 @@ fixtures.random(); // Returns a random item in the array. ## Release History +- **0.1.4** Ensure unique values are returned - **0.1.3** Keyword updates - **0.1.2** Documentation fixes - **0.1.1** Support for combined configs diff --git a/lib/fixturl.js b/lib/fixturl.js index 9b894bf..1db4482 100644 --- a/lib/fixturl.js +++ b/lib/fixturl.js @@ -14,14 +14,14 @@ var reverend = require('reverend'), module.exports = function (/* String */ path, /* Object */ config) { - var fixtures = custArray(); + var fixtures = []; if (arguments.length === 0) { throw new Error('fixturl requires at least 1 argument to generate a fixture'); } if (!config) { - return fixtures.push(path), fixtures; + return fixtures.push(path), custArray.apply(null, fixtures); } config = Array.isArray(config) ? config : [config]; @@ -43,6 +43,12 @@ module.exports = function (/* String */ path, /* Object */ config) { }); - return fixtures; + // ensure there are no duplicates + + fixtures = fixtures.filter(function (value, index, self) { + return self.indexOf(value) === index; + }); + + return custArray.apply(null, fixtures); }; diff --git a/package.json b/package.json index 243eeac..4e79b25 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fixturl", - "version": "0.1.3", + "version": "0.1.4", "description": "Pattern based fixture generator for urls", "main": "index.js", "scripts": { diff --git a/test/fixturl_test.js b/test/fixturl_test.js index 3bc858b..f95f38e 100644 --- a/test/fixturl_test.js +++ b/test/fixturl_test.js @@ -51,9 +51,7 @@ describe('fixturl', function() { it('generates a single url fixture with a query', function () { var result = fixturl('/some/path', { - query: { - foo: 'bar' - } + query: { foo: 'bar' } }); expect(result.length).to.eql(1); @@ -64,12 +62,8 @@ describe('fixturl', function() { it('generates a single url fixture with both params & query', function () { var result = fixturl('/some/path/:id', { - param: { - id: '12345', - }, - query: { - foo: 'bar' - } + param: { id: '12345' }, + query: { foo: 'bar' } }); expect(result.length).to.eql(1); @@ -81,20 +75,35 @@ describe('fixturl', function() { var result = fixturl('/some/path/:id', [ { - param: { - id: '12345', - }, - query: { - foo: 'bar' - } + param: { id: '12345' }, + query: { foo: 'bar' } + }, { + param: { id: '6789' }, + query: { foo: 'bar', buzz: 'fizz' } + } + ]); + + expect(result.length).to.eql(2); + expect(result[0]).to.eql('/some/path/12345?foo=bar'); + expect(result[1]).to.eql('/some/path/6789?foo=bar&buzz=fizz'); + + }); + + it('generates a multiple unique url fixtures', function () { + + var result = fixturl('/some/path/:id', [ + { + param: { id: '12345' }, + query: { foo: 'bar' } + }, { + param: { id: '6789' }, + query: { foo: 'bar', buzz: 'fizz' } }, { - param: { - id: '6789', - }, - query: { - foo: 'bar', - buzz: 'fizz' - } + param: { id: '6789' }, + query: { foo: 'bar', buzz: 'fizz' } + }, { + param: [ { id: '6789' } ], + query: [ { foo: 'bar', buzz: 'fizz' } ] } ]); @@ -131,13 +140,8 @@ describe('fixturl', function() { it('generates a multiple url fixtures from a combined config ( single array )', function () { var result = fixturl('/some/path/:id', { - param: [ - { id: '12345' }, - { id: '6789' } - ], - query: { - foo: 'bar' - } + param: [ { id: '12345' }, { id: '6789' } ], + query: { foo: 'bar' } }); expect(result.length).to.eql(2);