Best JavaScript code snippet using sinon
redis-paired-worker-hash-test.js
Source:redis-paired-worker-hash-test.js  
1(function() {2  var RedisPairedWorker, buster, config, redisClientStub;3  buster = require('buster');4  RedisPairedWorker = require('../index');5  config = {};6  redisClientStub = function() {7    var client;8    return client = {9      value: null,10      hsetnx: function(key, field, value, cb) {11        if (this.value !== null) {12          return cb(null, 0);13        }14        this.value = value;15        return cb(null, 1);16      },17      hget: function(key, field, cb) {18        if (cb) {19          return cb(null, this.value);20        }21      },22      hset: function(key, field, value, cb) {23        this.value = value;24        if (cb) {25          return cb(null, 1);26        }27      },28      hdel: function(key, field, cb) {29        this.value = null;30        if (cb) {31          return cb(null, 1);32        }33      }34    };35  };36  buster.testCase('RedisPairedWorker(hash)', {37    'Do not change default config': function() {38      var defaultTimeout, newConfig, worker0, worker1, worker2;39      worker0 = new RedisPairedWorker({});40      defaultTimeout = worker0.config.lockTimeout;41      refute.equals(defaultTimeout, 1);42      newConfig = {43        lockTimeout: 144      };45      worker1 = new RedisPairedWorker(newConfig);46      assert.equals(worker1.config.lockTimeout, 1);47      worker2 = new RedisPairedWorker({});48      return assert.equals(worker2.config.lockTimeout, defaultTimeout);49    },50    'A faster worker should acquires a lock and another should fail': function() {51      var callback, client, worker1, worker2;52      worker1 = new RedisPairedWorker(config);53      worker2 = new RedisPairedWorker(config);54      callback = this.stub().callsArgWith(2, true);55      client = redisClientStub();56      this.spy(client, 'hdel');57      worker1.hlock(client, 'testLockId', 'aField', callback);58      worker2.hlock(client, 'testLockId', 'aField', callback);59      assert(callback.calledTwice);60      assert(callback.calledWith(null, true));61      assert(callback.calledWith(null, false));62      return assert(client.hdel.calledOnce);63    },64    'When a faster worker fails its job after acquires a lock, another leaves the job undone': function() {65      var callback1, callback2, client, worker1, worker2;66      worker1 = new RedisPairedWorker(config);67      worker2 = new RedisPairedWorker(config);68      callback1 = this.stub().callsArgWith(2, false);69      callback2 = this.stub().callsArgWith(2, true);70      client = redisClientStub();71      this.spy(client, 'hdel');72      worker1.hlock(client, 'testLockId', 'aField', callback1);73      worker2.hlock(client, 'testLockId', 'aField', callback2);74      assert(callback1.calledWith(null, true));75      assert(callback2.calledWith(null, false));76      return refute(client.hdel.calledOnce);77    },78    'If redis.setnx fails, the worker notifies it with error object and lock will be left.': function(done) {79      var callback1, callback2, client, worker1, worker2;80      worker1 = new RedisPairedWorker(config);81      worker2 = new RedisPairedWorker(config);82      callback1 = this.stub().callsArgWith(2, false);83      callback2 = this.stub().callsArgWith(2, true);84      client = redisClientStub();85      client.hsetnx = function(key, field, value, cb) {86        return cb("anError", 0);87      };88      this.spy(client, 'hdel');89      return setTimeout(function() {90        worker1.hlock(client, 'testLockId', 'aField', callback1);91        worker2.hlock(client, 'testLockId', 'aField', callback2);92        assert(callback1.calledOnce);93        assert(callback1.calledWith('anError', false));94        assert(callback2.calledOnce);95        assert(callback2.calledWith('anError', false));96        refute(client.hdel.calledOnce);97        return done();98      }, 10);99    },100    'If the lock had been expired, take over it.': function(done) {101      var callback1, callback2, client, worker1, worker2;102      worker1 = new RedisPairedWorker({103        lockTimeout: 10104      });105      worker2 = new RedisPairedWorker({106        lockTimeout: 20107      });108      callback1 = this.stub().callsArgWith(2, false);109      callback2 = this.stub().callsArgWith(2, true);110      client = redisClientStub();111      this.spy(client, 'hdel');112      worker1.hlock(client, 'testLockId', 'aField', callback1);113      assert(callback1.calledWith(null, true));114      return setTimeout(function() {115        worker2.hlock(client, 'testLockId', 'aField', callback2);116        assert(callback2.calledWith(null, true));117        assert(client.hdel.calledOnce);118        return done();119      }, 10);120    }121  });...redis-paired-worker-test.js
Source:redis-paired-worker-test.js  
1(function() {2  var RedisPairedWorker, buster, config, redisClientStub;3  buster = require('buster');4  RedisPairedWorker = require('../index');5  config = {};6  redisClientStub = function() {7    var client;8    return client = {9      value: null,10      setnx: function(key, value, cb) {11        if (this.value !== null) {12          return cb(null, 0);13        }14        this.value = value;15        return cb(null, 1);16      },17      get: function(key, cb) {18        if (cb) {19          return cb(null, this.value);20        }21      },22      set: function(key, value, cb) {23        this.value = value;24        if (cb) {25          return cb(null, 1);26        }27      },28      del: function(key, cb) {29        this.value = null;30        if (cb) {31          return cb(null, 1);32        }33      }34    };35  };36  buster.testCase('RedisPairedWorker', {37    'Do not change default config': function() {38      var defaultTimeout, newConfig, worker0, worker1, worker2;39      worker0 = new RedisPairedWorker({});40      defaultTimeout = worker0.config.lockTimeout;41      refute.equals(defaultTimeout, 1);42      newConfig = {43        lockTimeout: 144      };45      worker1 = new RedisPairedWorker(newConfig);46      assert.equals(worker1.config.lockTimeout, 1);47      worker2 = new RedisPairedWorker({});48      return assert.equals(worker2.config.lockTimeout, defaultTimeout);49    },50    'A faster worker should acquires a lock and another should fail': function() {51      var callback, client, worker1, worker2;52      worker1 = new RedisPairedWorker(config);53      worker2 = new RedisPairedWorker(config);54      callback = this.stub().callsArgWith(2, true);55      client = redisClientStub();56      this.spy(client, 'del');57      worker1.lock(client, 'testLockId', callback);58      worker2.lock(client, 'testLockId', callback);59      assert(callback.calledTwice);60      assert(callback.calledWith(null, true));61      assert(callback.calledWith(null, false));62      return assert(client.del.calledOnce);63    },64    'When a faster worker fails its job after acquires a lock, another leaves the job undone': function() {65      var callback1, callback2, client, worker1, worker2;66      worker1 = new RedisPairedWorker(config);67      worker2 = new RedisPairedWorker(config);68      callback1 = this.stub().callsArgWith(2, false);69      callback2 = this.stub().callsArgWith(2, true);70      client = redisClientStub();71      this.spy(client, 'del');72      worker1.lock(client, 'testLockId', callback1);73      worker2.lock(client, 'testLockId', callback2);74      assert(callback1.calledWith(null, true));75      assert(callback2.calledWith(null, false));76      return refute(client.del.calledOnce);77    },78    'If redis.setnx fails, the worker notifies it with error object and lock will be left.': function(done) {79      var callback1, callback2, client, worker1, worker2;80      worker1 = new RedisPairedWorker(config);81      worker2 = new RedisPairedWorker(config);82      callback1 = this.stub().callsArgWith(2, false);83      callback2 = this.stub().callsArgWith(2, true);84      client = redisClientStub();85      client.setnx = function(key, value, cb) {86        return cb("anError", 0);87      };88      this.spy(client, 'del');89      return setTimeout(function() {90        worker1.lock(client, 'testLockId', callback1);91        worker2.lock(client, 'testLockId', callback2);92        assert(callback1.calledOnce);93        assert(callback1.calledWith('anError', false));94        assert(callback2.calledOnce);95        assert(callback2.calledWith('anError', false));96        refute(client.del.calledOnce);97        return done();98      }, 10);99    },100    'If the lock had been expired, take over it.': function(done) {101      var callback1, callback2, client, worker1, worker2;102      worker1 = new RedisPairedWorker({103        lockTimeout: 10104      });105      worker2 = new RedisPairedWorker({106        lockTimeout: 20107      });108      callback1 = this.stub().callsArgWith(2, false);109      callback2 = this.stub().callsArgWith(2, true);110      client = redisClientStub();111      this.spy(client, 'del');112      worker1.lock(client, 'testLockId', callback1);113      assert(callback1.calledWith(null, true));114      return setTimeout(function() {115        worker2.lock(client, 'testLockId', callback2);116        assert(callback2.calledWith(null, true));117        assert(client.del.calledOnce);118        return done();119      }, 10);120    }121  });...example_2.2.js
Source:example_2.2.js  
...11  afterEach(() => {12    this.stub.restore();13  });14  it('Should retry three times and throw error', (done) => {15    this.stub.callsArgWith(1, new Error('error'), null, null);16    caller.callWithCallback('http://www.google.com', (error) => {17      expect(error.message).to.be.equal('error');18      done();19    });20  });21  it('Should retry two times and success', (done) => {22    this.stub.onFirstCall().callsArgWith(1, new Error('error'), null, null);23    this.stub.callsArgWith(1, null, null, JSON.stringify({ res: 'yeah' }));24    caller.callWithCallback('http://www.google.com', (error, data) => {25      expect(data).to.be.deep.equal(JSON.stringify({ res: 'yeah' }));26      done();27    });28  });29  // it('Should retry three times and throw error with timer', (done) => {30  //   const clock = sinon.useFakeTimers();31  //   this.stub.callsArgWith(1, new Error('error'), null, null);32  //   caller.callWithCallback('http://www.google.com', (error) => {33  //     expect(error.message).to.be.equal('error');34  //     clock.restore();35  //     done();36  //   });37  //   clock.tick(5000);38  //   clock.tick(5000);39  //   clock.tick(5000);40  // });41  // it('Should retry two times and success with timer', (done) => {42  //   const clock = sinon.useFakeTimers();43  //   this.stub.onFirstCall().callsArgWith(1, new Error('error'), null, null);44  //   this.stub.callsArgWith(1, null, null, JSON.stringify({ res: 'yeah' }));45  //   caller.callWithCallback('http://www.google.com', (error, data) => {46  //     expect(data).to.be.deep.equal(JSON.stringify({ res: 'yeah' }));47  //     clock.restore();48  //     done();49  //   });50  //   clock.tick(5000);51  // });...Using AI Code Generation
1var sinon = require('sinon');2var assert = require('assert');3var stub = sinon.stub();4stub.callsArgWith(0, 'foo', 'bar');5stub(function (arg1, arg2) {6  assert.equal(arg1, 'foo');7  assert.equal(arg2, 'bar');8});9var sinon = require('sinon');10var assert = require('assert');11var stub = sinon.stub();12var obj = {13};14stub.callsArgOn(0, obj);15stub(function () {16  assert.equal(this.foo, 'bar');17});18var sinon = require('sinon');19var assert = require('assert');20var stub = sinon.stub();21var obj = {22};23stub.callsArgOnWith(0, obj, 'foo', 'bar');24stub(function () {25  assert.equal(this.foo, 'bar');26});27var sinon = require('sinon');28var assert = require('assert');29var stub = sinon.stub();30stub.callsArgAsync(0);31stub(function (arg) {32  assert.equal(arg, undefined);33});34var sinon = require('sinon');35var assert = require('assert');36var stub = sinon.stub();37var obj = {38};39stub.callsArgOnAsync(0, obj);40stub(function () {41  assert.equal(this.foo, 'bar');42});43var sinon = require('sinon');44var assert = require('assert');45var stub = sinon.stub();46var obj = {47};48stub.callsArgOnWithAsync(0, obj, 'foo', 'bar');49stub(function () {50  assert.equal(this.foo, 'bar');51});52var sinon = require('sinon');53var assert = require('assert');54var stub = sinon.stub();55stub.callsArgWithAsync(0, 'foo', 'bar');56stub(function (argUsing AI Code Generation
1var sinon = require('sinon');2var obj = {3    foo: function (callback) {4        callback('foo');5    }6};7var spy = sinon.spy(obj, 'foo');8obj.foo(function (data) {9    console.log(data);10});11spy.restore();12var sinon = require('sinon');13var obj = {14    foo: function (callback) {15        callback('foo');16    }17};18var spy = sinon.spy(obj, 'foo');19obj.foo(function (data) {20    console.log(data);21});22spy.restore();23var sinon = require('sinon');24var obj = {25    foo: function (callback) {26        callback('foo');27    }28};29var spy = sinon.spy(obj, 'foo');30obj.foo(function (data) {31    console.log(data);32});33spy.restore();34var sinon = require('sinon');35var obj = {36    foo: function (callback) {37        callback('foo');38    }39};40var spy = sinon.spy(obj, 'foo');41obj.foo(function (data) {42    console.log(data);43});44spy.restore();45var sinon = require('sinon');46var obj = {47    foo: function (callback) {48        callback('foo');49    }50};51var spy = sinon.spy(obj, 'foo');52obj.foo(function (data) {53    console.log(data);54});55spy.restore();56var sinon = require('sinon');57var obj = {58    foo: function (callback) {59        callback('foo');60    }61};62var spy = sinon.spy(obj, 'foo');63obj.foo(function (data) {64    console.log(data);65});66spy.restore();67var sinon = require('sinon');68var obj = {69    foo: function (callback) {70        callback('foo');71    }72};73var spy = sinon.spy(obj, 'foo');74obj.foo(function (data) {75    console.log(data);76});77spy.restore();Using AI Code Generation
1var sinon = require('sinon');2var assert = require('assert');3var foo = {4  bar: function() {5    return 'bar';6  }7};8var stub = sinon.stub(foo, 'bar').callsArgWith(0, 'baz');9foo.bar(function(arg) {10  assert.equal(arg, 'baz');11});12var sinon = require('sinon');13var assert = require('assert');14var foo = {15  bar: function() {16    return 'bar';17  }18};19var stub = sinon.stub(foo, 'bar').returns('baz');20var result = foo.bar();21assert.equal(result, 'baz');22var sinon = require('sinon');23var assert = require('assert');24var foo = {25  bar: function() {26    return 'bar';27  }28};29var stub = sinon.stub(foo, 'bar').yields();30foo.bar(function() {31  assert.ok(true);32});33var sinon = require('sinon');34var assert = require('assert');35var foo = {36  bar: function() {37    return 'bar';38  }39};40var stub = sinon.stub(foo, 'bar').yieldsOn('baz');41foo.bar(function() {42  assert.equal(this, 'baz');43});44var sinon = require('sinon');45var assert = require('assert');46var foo = {47  bar: function() {48    return 'bar';49  }50};51var stub = sinon.stub(foo, 'bar').yieldsTo('baz');52foo.bar(function(arg) {53  assert.equal(arg, 'baz');54});55var sinon = require('sinon');56var assert = require('assert');57var foo = {58  bar: function() {59    return 'bar';60  }61};62var stub = sinon.stub(foo, 'bar').yieldsToOn('baz', 'quux');63foo.bar(function(arg) {Using AI Code Generation
1var sinon = require('sinon');2var myModule = require('./myModule');3var myModuleInstance = new myModule();4var myModuleStub = sinon.stub(myModuleInstance, 'myFunction');5myModuleStub.callsArgWith(0, 'error', 'result');6myModuleInstance.myFunction(function(err, result) {7  console.log(err, result);8});9function myModule() {10  this.myFunction = function(callback) {11    callback('error', 'result');12  }13}14module.exports = myModule;Using AI Code Generation
1var sinon = require('sinon');2var test = require('./test');3var assert = require('assert');4describe('test', function() {5    beforeEach(function() {6        this.stub = sinon.stub(test, 'test');7    });8    afterEach(function() {9        this.stub.restore();10    });11    it('test', function() {12        this.stub.callsArgWith(1, null, 'test');13        test.test('test', function(err, data) {14            assert.equal(data, 'test');15        });16    });17});18exports.test = function(arg, callback) {19    callback(null, arg);20}Using AI Code Generation
1var test = function (callback) {2    callback(1,2,3);3};4var stub = sinon.stub();5stub.callsArgWith(0, 4, 5, 6);6test(stub);7var test = function (callback) {8    callback(1,2,3);9};10var stub = sinon.stub();11stub.callsArgWith(0, 4, 5, 6);12test(stub);13var test = function (callback) {14    callback(1,2,3);15};16var stub = sinon.stub();17stub.callsArgWith(0, 4, 5, 6);18test(stub);19var test = function (callback) {20    callback(1,2,3);21};22var stub = sinon.stub();23stub.callsArgWith(0, 4, 5, 6);24test(stub);25var test = function (callback) {26    callback(1,2,3);27};28var stub = sinon.stub();29stub.callsArgWith(0, 4, 5, 6);30test(stub);31var test = function (callback) {32    callback(1,2,3);33};34var stub = sinon.stub();35stub.callsArgWith(0, 4, 5, 6);36test(stub);37var test = function (callback) {38    callback(1,2,3);39};40var stub = sinon.stub();Using AI Code Generation
1var sinon = require('sinon');2var obj = {3    func: function () {4        console.log('func called');5    }6};7var spy = sinon.spy(obj, 'func');8spy.callsArgWith(0, 'a', 'b');9obj.func();10spy.restore();11var sinon = require('sinon');12var obj = {13    func: function () {14        console.log('func called');15    }16};17var spy = sinon.spy(obj, 'func');18spy.callsArgOnWith(obj, 0, 'a', 'b');19obj.func();20spy.restore();21var sinon = require('sinon');22var obj = {23    func: function () {24        console.log('func called');25    }26};27var spy = sinon.spy(obj, 'func');28spy.returns('a');29console.log(obj.func());30spy.restore();31var sinon = require('sinon');32var obj = {33    func: function (a) {34        console.log('func called');35        return a;36    }37};38var spy = sinon.spy(obj, 'func');39spy.returnsArg(0);40console.log(obj.func('a'));41spy.restore();42var sinon = require('sinon');43var obj = {44    func: function () {45        console.log('func called');46        return this;47    }48};49var spy = sinon.spy(obj, 'func');50spy.returnsThis();51console.log(obj.func());52spy.restore();53{ func: [Function] }54var sinon = require('sinon');55var obj = {56    func: function () {57        console.log('func called');58    }59};60var spy = sinon.spy(obj, 'func');61spy.throws('Error');62try {63    obj.func();64} catch (e) {65    console.log(e);66}67spy.restore();Using AI Code Generation
1var sinon = require('sinon');2var assert = require('assert');3var myObj = {4    myMethod: function (cb) {5        cb(1, 2, 3);6    }7};8var stub = sinon.stub(myObj, "myMethod");9stub.callsArgWith(0, 4, 5, 6);10myObj.myMethod(function (a, b, c) {11    assert(a === 4);12    assert(b === 5);13    assert(c === 6);14});15var sinon = require('sinon');16var assert = require('assert');17var myObj = {18    myMethod: function (cb) {19        cb(1, 2, 3);20    }21};22var stub = sinon.stub(myObj, "myMethod");23var context = {24};25stub.callsArgOn(0, context);26myObj.myMethod(function () {27    assert(this.foo === 'bar');28});29var sinon = require('sinon');30var assert = require('assert');31var myObj = {32    myMethod: function (cb) {33        cb(1, 2, 3);34    }35};36var stub = sinon.stub(myObj, "myMethod");37var context = {38};39stub.callsArgOnWith(0, context, 4, 5, 6);40myObj.myMethod(function (a, b, c) {41    assert(this.foo === 'bar');42    assert(a === 4);43    assert(b === 5);44    assert(c === 6);45});46var sinon = require('sinon');47var assert = require('assert');48var myObj = {49    myMethod: function (cb) {50        cb(1, 2, 3);51    }52};53var stub = sinon.stub(myObj, "myMethod");54stub.callsArgAsync(0);Using AI Code Generation
1var obj = {2    test: function(callback) {3        callback("test");4    }5}6var spy = sinon.spy(obj, "test");7obj.test(function(data) {8    console.log(data);9});10spy.callsArgWith(0, "test1");11obj.test(function(data) {12    console.log(data);13});14var obj = {15    test: function(callback) {16        callback("test");17    }18}19var spy = sinon.spy(obj, "test");20obj.test(function(data) {21    console.log(data);22});23spy.callsArgOn(0, obj);24obj.test(function(data) {25    console.log(data);26});27var obj = {28    test: function(callback) {29        callback("test");30    }31}32var spy = sinon.spy(obj, "test");33obj.test(function(data) {34    console.log(data);35});36spy.callsArgOnWith(0, obj, "test1");37obj.test(function(data) {38    console.log(data);39});40var obj = {41    test: function(callback) {42        callback("test");43    }44}45var spy = sinon.spy(obj, "test");46obj.test(function(data) {47    console.log(data);48});49spy.callsArgOnWith(0, obj, "test1");50obj.test(function(data) {51    console.log(data);52});53var obj = {54    test: function(callback) {55        callback("test");56    }57}58var spy = sinon.spy(obj, "test");59obj.test(function(data) {60    console.log(data);61});62spy.yields("test1");63obj.test(function(data) {64    console.log(data);65});66var obj = {67    test: function(callback) {68        callback("test");69    }70}71var spy = sinon.spy(obj, "test");72obj.test(function(data)Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
