"use strict"; var assert = require("@sinonjs/referee-sinon").assert; var calledInOrder = require("./called-in-order"); var sinon = require("@sinonjs/referee-sinon").sinon; var testObject1 = { someFunction: function () { return; }, }; var testObject2 = { otherFunction: function () { return; }, }; var testObject3 = { thirdFunction: function () { return; }, }; function testMethod() { testObject1.someFunction(); testObject2.otherFunction(); testObject2.otherFunction(); testObject2.otherFunction(); testObject3.thirdFunction(); } describe("calledInOrder", function () { beforeEach(function () { sinon.stub(testObject1, "someFunction"); sinon.stub(testObject2, "otherFunction"); sinon.stub(testObject3, "thirdFunction"); testMethod(); }); afterEach(function () { testObject1.someFunction.restore(); testObject2.otherFunction.restore(); testObject3.thirdFunction.restore(); }); describe("given single array argument", function () { describe("when stubs were called in expected order", function () { it("returns true", function () { assert.isTrue( calledInOrder([ testObject1.someFunction, testObject2.otherFunction, ]) ); assert.isTrue( calledInOrder([ testObject1.someFunction, testObject2.otherFunction, testObject2.otherFunction, testObject3.thirdFunction, ]) ); }); }); describe("when stubs were called in unexpected order", function () { it("returns false", function () { assert.isFalse( calledInOrder([ testObject2.otherFunction, testObject1.someFunction, ]) ); assert.isFalse( calledInOrder([ testObject2.otherFunction, testObject1.someFunction, testObject1.someFunction, testObject3.thirdFunction, ]) ); }); }); }); describe("given multiple arguments", function () { describe("when stubs were called in expected order", function () { it("returns true", function () { assert.isTrue( calledInOrder( testObject1.someFunction, testObject2.otherFunction ) ); assert.isTrue( calledInOrder( testObject1.someFunction, testObject2.otherFunction, testObject3.thirdFunction ) ); }); }); describe("when stubs were called in unexpected order", function () { it("returns false", function () { assert.isFalse( calledInOrder( testObject2.otherFunction, testObject1.someFunction ) ); assert.isFalse( calledInOrder( testObject2.otherFunction, testObject1.someFunction, testObject3.thirdFunction ) ); }); }); }); });