diff options
| author | Matthew Bergman <[email protected]> | 2013-01-08 09:35:00 -0800 |
|---|---|---|
| committer | Matthew Bergman <[email protected]> | 2013-01-08 09:35:00 -0800 |
| commit | fd79022a8cb6d0d3adc50e8af96a5e2ae93d8e53 (patch) | |
| tree | 28c0bd9453cf4e6d273b97bfe2ce53cab11d3330 /test/lorem.unit.js | |
| parent | 1e4fcf794181b8d8c9286ee1890a903199f81847 (diff) | |
| parent | 19d0e99ebec18bab6047bf944c07fc472fd9773a (diff) | |
| download | faker-fd79022a8cb6d0d3adc50e8af96a5e2ae93d8e53.tar.xz faker-fd79022a8cb6d0d3adc50e8af96a5e2ae93d8e53.zip | |
Merge pull request #37 from BryanDonovan/main
Refactored with 100% test coverage
Diffstat (limited to 'test/lorem.unit.js')
| -rw-r--r-- | test/lorem.unit.js | 165 |
1 files changed, 165 insertions, 0 deletions
diff --git a/test/lorem.unit.js b/test/lorem.unit.js new file mode 100644 index 00000000..4082bdde --- /dev/null +++ b/test/lorem.unit.js @@ -0,0 +1,165 @@ +if (typeof module !== 'undefined') { + var assert = require('assert'); + var sinon = require('sinon'); + var Faker = require('../index'); +} + +describe("lorem.js", function () { + describe("words()", function () { + beforeEach(function () { + sinon.spy(Faker.Helpers, 'shuffle'); + sinon.spy(Faker.definitions, 'lorem'); + }); + + afterEach(function () { + Faker.Helpers.shuffle.restore(); + Faker.definitions.lorem.restore(); + }); + + context("when no 'num' param passed in", function () { + it("returns three words", function () { + var words = Faker.Lorem.words(); + + assert.ok(Array.isArray(words)); + assert.equal(words.length, 3); + assert.ok(Faker.Helpers.shuffle.called); + assert.ok(Faker.definitions.lorem.called); + }); + }); + + context("when 'num' param passed in", function () { + it("returns requested number of words", function () { + var words = Faker.Lorem.words(7); + + assert.ok(Array.isArray(words)); + assert.equal(words.length, 7); + }); + }); + }); + + describe("sentence()", function () { + context("when no 'wordCount' param passed in", function () { + it("returns a string of at least three words", function () { + sinon.spy(Faker.Lorem, 'words'); + sinon.stub(Faker.random, 'number').returns(2); + var sentence = Faker.Lorem.sentence(); + + assert.ok(typeof sentence === 'string'); + var parts = sentence.split(' '); + assert.equal(parts.length, 5); // default 3 plus stubbed 2. + assert.ok(Faker.Lorem.words.calledWith(5)); + + Faker.Lorem.words.restore(); + Faker.random.number.restore(); + }); + }); + + context("when 'wordCount' param passed in", function () { + it("returns a string of at least the requested number of words", function () { + sinon.spy(Faker.Lorem, 'words'); + sinon.stub(Faker.random, 'number').returns(2); + var sentence = Faker.Lorem.sentence(10); + + assert.ok(typeof sentence === 'string'); + var parts = sentence.split(' '); + assert.equal(parts.length, 12); // requested 10 plus stubbed 2. + assert.ok(Faker.Lorem.words.calledWith(12)); + + Faker.Lorem.words.restore(); + Faker.random.number.restore(); + }); + }); + }); + + describe("sentences()", function () { + context("when no 'sentenceCount' param passed in", function () { + it("returns newline-separated string of three sentences", function () { + sinon.spy(Faker.Lorem, 'sentence'); + var sentences = Faker.Lorem.sentences(); + + assert.ok(typeof sentences === 'string'); + var parts = sentences.split('\n'); + assert.equal(parts.length, 3); + assert.ok(Faker.Lorem.sentence.calledThrice); + + Faker.Lorem.sentence.restore(); + }); + }); + + context("when 'sentenceCount' param passed in", function () { + it("returns newline-separated string of requested number of sentences", function () { + sinon.spy(Faker.Lorem, 'sentence'); + var sentences = Faker.Lorem.sentences(5); + + assert.ok(typeof sentences === 'string'); + var parts = sentences.split('\n'); + assert.equal(parts.length, 5); + + Faker.Lorem.sentence.restore(); + }); + }); + }); + + describe("paragraph()", function () { + context("when no 'wordCount' param passed in", function () { + it("returns a string of at least three sentences", function () { + sinon.spy(Faker.Lorem, 'sentences'); + sinon.stub(Faker.random, 'number').returns(2); + var paragraph = Faker.Lorem.paragraph(); + + assert.ok(typeof paragraph === 'string'); + var parts = paragraph.split('\n'); + assert.equal(parts.length, 5); // default 3 plus stubbed 2. + assert.ok(Faker.Lorem.sentences.calledWith(5)); + + Faker.Lorem.sentences.restore(); + Faker.random.number.restore(); + }); + }); + + context("when 'wordCount' param passed in", function () { + it("returns a string of at least the requested number of sentences", function () { + sinon.spy(Faker.Lorem, 'sentences'); + sinon.stub(Faker.random, 'number').returns(2); + var paragraph = Faker.Lorem.paragraph(10); + + assert.ok(typeof paragraph === 'string'); + var parts = paragraph.split('\n'); + assert.equal(parts.length, 12); // requested 10 plus stubbed 2. + assert.ok(Faker.Lorem.sentences.calledWith(12)); + + Faker.Lorem.sentences.restore(); + Faker.random.number.restore(); + }); + }); + }); + + describe("paragraphs()", function () { + context("when no 'paragraphCount' param passed in", function () { + it("returns newline-separated string of three paragraphs", function () { + sinon.spy(Faker.Lorem, 'paragraph'); + var paragraphs = Faker.Lorem.paragraphs(); + + assert.ok(typeof paragraphs === 'string'); + var parts = paragraphs.split('\n \r\t'); + assert.equal(parts.length, 3); + assert.ok(Faker.Lorem.paragraph.calledThrice); + + Faker.Lorem.paragraph.restore(); + }); + }); + + context("when 'paragraphCount' param passed in", function () { + it("returns newline-separated string of requested number of paragraphs", function () { + sinon.spy(Faker.Lorem, 'paragraph'); + var paragraphs = Faker.Lorem.paragraphs(5); + + assert.ok(typeof paragraphs === 'string'); + var parts = paragraphs.split('\n \r\t'); + assert.equal(parts.length, 5); + + Faker.Lorem.paragraph.restore(); + }); + }); + }); +}); |
