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'); }); afterEach(function () { faker.Helpers.shuffle.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); }); }); 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' or 'range' 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').withArgs(7).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(); }); }); context("when 'wordCount' and 'range' params 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').withArgs(4).returns(4); var sentence = faker.Lorem.sentence(10, 4); assert.ok(typeof sentence === 'string'); var parts = sentence.split(' '); assert.equal(parts.length, 14); // requested 10 plus stubbed 4. assert.ok(faker.random.number.calledWith(4)); // random.number should be called with the 'range' we passed. assert.ok(faker.Lorem.words.calledWith(14)); faker.Lorem.words.restore(); faker.random.number.restore(); }); it("returns a string of exactly 'wordCount' length when 'range' is zero", function () { var sentence = faker.Lorem.sentence(10, 0); assert.ok(typeof sentence === 'string'); var parts = sentence.split(' '); assert.equal(parts.length, 10); // requested 10 exactly. }); }); }); 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(); }); }); }); });