Skip to content

Commit

Permalink
Add release documentation for v11.1.0
Browse files Browse the repository at this point in the history
  • Loading branch information
fatso83 committed May 25, 2021
1 parent b91c955 commit b901a02
Show file tree
Hide file tree
Showing 74 changed files with 4,172 additions and 88 deletions.
3 changes: 2 additions & 1 deletion docs/_releases/latest.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
layout: page
title: API documentation - Sinon.JS
skip_ad: true
release_id: v11.0.0
release_id: v11.1.0
---

# {{page.title}} - `{{page.release_id}}`
Expand All @@ -15,6 +15,7 @@ This page contains the entire Sinon.JS API documentation along with brief introd
- [Stubs](./stubs)
- [Mocks](./mocks)
- [Spy calls](./spy-call)
- [Promises](./promises)
- [Fake timers](./fake-timers)
- [Fake <code>XHR</code> and server](./fake-xhr-and-server)
- [JSON-P](./json-p)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
require("@fatso83/mini-mocha").install();
const sinon = require("sinon");
const referee = require("@sinonjs/referee");
const assert = referee.assert;

describe("FakeTest", function () {
it("should be able to be used instead of spies", function () {
const foo = {
bar: () => "baz",
};
// wrap existing method without changing its behaviour
const fake = sinon.replace(foo, "bar", sinon.fake(foo.bar));

assert.equals(fake(), "baz"); // behaviour is the same
assert.equals(fake.callCount, 1); // calling information is saved
});
});
17 changes: 17 additions & 0 deletions docs/_releases/latest/examples/fakes-10-firstArg.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
require("@fatso83/mini-mocha").install();
const sinon = require("sinon");
const referee = require("@sinonjs/referee");
const assert = referee.assert;

describe("FakeTest", function () {
it("should have working firstArg property", function () {
const f = sinon.fake();
const date1 = new Date();
const date2 = new Date();

f(date1, 1, 2);
f(date2, 1, 2);

assert.isTrue(f.firstArg === date2);
});
});
21 changes: 21 additions & 0 deletions docs/_releases/latest/examples/fakes-11-lastArg.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
require("@fatso83/mini-mocha").install();
const sinon = require("sinon");
const referee = require("@sinonjs/referee");
const assert = referee.assert;

describe("FakeTest", function () {
it("should have working lastArg property", function () {
const f = sinon.fake();
const date1 = new Date();
const date2 = new Date();

f(1, 2, date1);
f(1, 2, date2);

assert.isTrue(f.lastArg === date2);
// spy call methods:
assert.isTrue(f.getCall(0).lastArg === date1);
assert.isTrue(f.getCall(1).lastArg === date2);
assert.isTrue(f.lastCall.lastArg === date2);
});
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
require("@fatso83/mini-mocha").install();
const sinon = require("sinon");
const referee = require("@sinonjs/referee");
const assert = referee.assert;

describe("FakeTest", function () {
it("should have working lastArg property", function () {
const fake = sinon.fake.returns("42");

sinon.replace(console, "log", fake);

assert.equals(console.log("apple pie"), 42);

// restores all replaced properties set by sinon methods (replace, spy, stub)
sinon.restore();

assert.equals(console.log("apple pie"), undefined);
assert.equals(fake.callCount, 1);
});
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
require("@fatso83/mini-mocha").install();
const sinon = require("sinon");
const referee = require("@sinonjs/referee");
const assert = referee.assert;

describe("FakeTest", function () {
it("should be able to be used instead of stubs", function () {
const foo = {
bar: () => "baz",
};
// replace method with a fake one
const fake = sinon.replace(
foo,
"bar",
sinon.fake.returns("fake value")
);

assert.equals(fake(), "fake value"); // returns fake value
assert.equals(fake.callCount, 1); // saves calling information
});
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
require("@fatso83/mini-mocha").install();
const sinon = require("sinon");
const referee = require("@sinonjs/referee");
const assert = referee.assert;

describe("FakeTest", function () {
it("should create fake without behaviour", function () {
// create a basic fake, with no behavior
const fake = sinon.fake();

assert.isUndefined(fake()); // by default returns undefined
assert.equals(fake.callCount, 1); // saves call information
});
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
require("@fatso83/mini-mocha").install();
const sinon = require("sinon");
const referee = require("@sinonjs/referee");
const assert = referee.assert;

describe("FakeTest", function () {
it("should create fake with custom behaviour", function () {
// create a fake that returns the text "foo"
const fake = sinon.fake.returns("foo");

assert.equals(fake(), "foo");
});
});
12 changes: 12 additions & 0 deletions docs/_releases/latest/examples/fakes-5-returns.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
require("@fatso83/mini-mocha").install();
const sinon = require("sinon");
const referee = require("@sinonjs/referee");
const assert = referee.assert;

describe("FakeTest", function () {
it("should create a fake that 'returns' a value", function () {
const fake = sinon.fake.returns("apple pie");

assert.equals(fake(), "apple pie");
});
});
13 changes: 13 additions & 0 deletions docs/_releases/latest/examples/fakes-6-throws.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
require("@fatso83/mini-mocha").install();
const sinon = require("sinon");
const referee = require("@sinonjs/referee");
const assert = referee.assert;

describe("FakeTest", function () {
it("should create a fake that 'throws' an Error", function () {
const fake = sinon.fake.throws(new Error("not apple pie"));

// Expected to throw an error with message 'not apple pie'
assert.exception(fake, { name: "Error", message: "not apple pie" });
});
});
23 changes: 23 additions & 0 deletions docs/_releases/latest/examples/fakes-7-yields.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
require("@fatso83/mini-mocha").install();
const sinon = require("sinon");
const referee = require("@sinonjs/referee");
const assert = referee.assert;
const fs = require("fs");

describe("FakeTest", function () {
it("should create a fake that 'yields'", function () {
const fake = sinon.fake.yields(null, "file content");
const anotherFake = sinon.fake();

sinon.replace(fs, "readFile", fake);
fs.readFile("somefile", (err, data) => {
// called with fake values given to yields as arguments
assert.isNull(err);
assert.equals(data, "file content");
// since yields is synchronous, anotherFake is not called yet
assert.isFalse(anotherFake.called);
});

anotherFake();
});
});
23 changes: 23 additions & 0 deletions docs/_releases/latest/examples/fakes-8-yields-async.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
require("@fatso83/mini-mocha").install();
const sinon = require("sinon");
const referee = require("@sinonjs/referee");
const assert = referee.assert;
const fs = require("fs");

describe("FakeTest", function () {
it("should create a fake that 'yields asynchronously'", function () {
const fake = sinon.fake.yieldsAsync(null, "file content");
const anotherFake = sinon.fake();

sinon.replace(fs, "readFile", fake);
fs.readFile("somefile", (err, data) => {
// called with fake values given to yields as arguments
assert.isNull(err);
assert.equals(data, "file content");
// since yields is asynchronous, anotherFake is called first
assert.isTrue(anotherFake.called);
});

anotherFake();
});
});
20 changes: 20 additions & 0 deletions docs/_releases/latest/examples/fakes-9-callback.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
require("@fatso83/mini-mocha").install();
const sinon = require("sinon");
const referee = require("@sinonjs/referee");
const assert = referee.assert;

describe("FakeTest", function () {
it("should have working callback property", function () {
const f = sinon.fake();
const cb1 = function () {};
const cb2 = function () {};

f(1, 2, 3, cb1);
f(1, 2, 3, cb2);

assert.isTrue(f.callback === cb2);
// spy call methods:
assert.isTrue(f.getCall(1).callback === cb2);
assert.isTrue(f.lastCall.callback === cb2);
});
});
6 changes: 4 additions & 2 deletions docs/_releases/latest/examples/run-test.sh
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
#!/bin/bash

# Link 'sinon' to local development dir
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
cd "$SCRIPT_DIR/.."
SINON_ROOT="$SCRIPT_DIR/../../../.."

cd "$SINON_ROOT"
npm link

# Install examples project and link to local sinon folder
cd "$SCRIPT_DIR"
rm -r node_modules 2>/dev/null
npm install --ignore-scripts
npm link sinon

Expand Down
Loading

0 comments on commit b901a02

Please sign in to comment.