Best JavaScript code snippet using sinon
Validation.spec.js
Source:Validation.spec.js  
...62const runBasicSortDirectionValidationTests = (invalidParams, validParams, validator) => {63	// Arrange:64	const queryField = 'sortDirection';65	it('fails when sortDirection parameter is invalid', async () => {66		await runAsserts({67			validator,68			values: invalidParams,69			queryField,70			errorMessage: 'sort direction is not supported'71		});72	});73	it('succeeds when sortDirection parameters are present and valid', async () => {74		await runAsserts({75			validator,76			values: validParams,77			queryField78		});79	});80};81const runBasicNemAddressValidationTests = (invalidParams, validParams, validator) => {82	// Arrange:83	const queryField = 'nemAddress';84	it('fails when nemAddress parameter is invalid', async () => {85		await runAsserts({86			validator,87			values: invalidParams,88			queryField,89			errorMessage: 'nem address must be 40 character long'90		});91	});92	it('succeeds when nemAddress parameters are present and valid', async () => {93		await runAsserts({94			validator,95			values: validParams,96			queryField97		});98	});99};100const runBasicTransactionHashValidationTests = (invalidParams, validParams, validator) => {101	// Arrange:102	const queryField = 'transactionHash';103	it('fails when transactionHash parameter is invalid', async () => {104		await runAsserts({105			validator,106			values: invalidParams,107			queryField,108			errorMessage: 'transaction hash must be 64 character long'109		});110	});111	it('succeeds when transactionHash parameters are present and valid', async () => {112		await runAsserts({113			validator,114			values: validParams,115			queryField116		});117	});118};119const runBasicSortByValidationTests = (invalidParams, validParams, validator) => {120	// Arrange:121	const queryField = 'sortBy';122	it('fails when sortBy parameter is invalid', async () => {123		await runAsserts({124			validator,125			values: invalidParams,126			queryField,127			errorMessage: 'field name is not valid'128		});129	});130	it('succeeds when sortBy parameters are present and valid', async () => {131		await runAsserts({132			validator,133			values: validParams,134			queryField135		});136	});137};138describe('validation', () => {139	describe('unsupported validator type', () => {140		it('return error given validator type not supported', () => {141			// Arrange:142			const method = 'notSupported';143			// Act: + Assert:144			expect(() => Validation.validate(method)).to.throw(`${method} is not supported`);145		});146	});147	describe('getCompleted', () => {148		// Arrange:149		const validator = Validation.validate('getCompleted');150		describe('pagination validator', () => {151			runBasicPaginationValidationTests(validator);152		});153		describe('sort direction validator', () => {154			// Arrange:155			const invalidParams = [123, 'invalid'];156			const validParams = ['asc', 'desc', 'none', ''];157			runBasicSortDirectionValidationTests(invalidParams, validParams, validator);158		});159		describe('address and transaction hash validator', () => {160			// Arrange:161			const invalidParams = [123, 'invalid'];162			const validNemAddress = ['NA5UJVHGHUXUFA2VFQOJAUEXZIHPU3FUK7GRDUBM', ''];163			const validTxHash = ['ba9232776840ffb6adbf116820f2341aed3ca26b316b118844ccb050fe73bac8', ''];164			runBasicNemAddressValidationTests(invalidParams, validNemAddress, validator);165			runBasicTransactionHashValidationTests(invalidParams, validTxHash, validator);166		});167		describe('sortBy validator', () => {168			// Arrange:169			const invalidParams = ['invalid', 123];170			const validSortBy = ['nemHashes', 'symbolHashes'];171			runBasicSortByValidationTests(invalidParams, validSortBy, validator);172		});173		describe('optinType validator', () => {174			// Arrange:175			const queryField = 'optinType';176			it('fails when optinType parameter is invalid', async () => {177				// Arrange:178				const invalidParams = ['invalid'];179				await runAsserts({180					validator,181					values: invalidParams,182					queryField,183					errorMessage: 'optin type must be pre or post'184				});185			});186			it('succeeds when optinType parameters are present and valid', async () => {187				// Arrange:188				const validParams = ['pre', 'post'];189				await runAsserts({190					validator,191					values: validParams,192					queryField193				});194			});195		});196		describe('symbol address validator', () => {197			// Arrange:198			const queryField = 'symbolAddress';199			it('fails when symbolAddress parameter is invalid', async () => {200				// Arrange:201				const invalidParams = ['NDCWGCUSOWJBD3JKOQOIWACPWMCVA6LVAWYPC3PI'];202				await runAsserts({203					validator,204					values: invalidParams,205					queryField,206					errorMessage: 'symbol address must be 39 character long'207				});208			});209			it('succeeds when symbolAddress parameters are present and valid', async () => {210				// Arrange:211				const validParams = ['NAIVQSJ6IU2NCDWWZSUYKKXK7JTGROW6FDRQTJY', 'NC6PLXOJLS43WIH23CV7OZGXTWQI3QNXNLBA7MY'];212				await runAsserts({213					validator,214					values: validParams,215					queryField216				});217			});218		});219	});220	describe('getOptinRequests', () => {221		const validator = Validation.validate('getOptinRequests');222		describe('pagination validator', () => {223			runBasicPaginationValidationTests(validator);224		});225		describe('sort direction validator', () => {226			// Arrange:227			const invalidParams = [123, 'invalid'];228			const validParams = ['asc', 'desc', 'none'];229			runBasicSortDirectionValidationTests(invalidParams, validParams, validator);230		});231		describe('address and transaction hash validator', () => {232			// Arrange:233			const invalidParams = [123, 'invalid'];234			const validNemAddress = ['NA5UJVHGHUXUFA2VFQOJAUEXZIHPU3FUK7GRDUBM'];235			const validTxHash = ['ba9232776840ffb6adbf116820f2341aed3ca26b316b118844ccb050fe73bac8'];236			runBasicNemAddressValidationTests(invalidParams, validNemAddress, validator);237			runBasicTransactionHashValidationTests(invalidParams, validTxHash, validator);238		});239		describe('sortBy validator', () => {240			// Arrange:241			const invalidParams = ['invalid'];242			const validSortBy = ['optinTransactionHash', 'payoutTransactionHash'];243			runBasicSortByValidationTests(invalidParams, validSortBy, validator);244		});245		describe('status validator', () => {246			// Arrange:247			const queryField = 'status';248			it('fails when status parameter is invalid', async () => {249				// Arrange:250				const invalidParams = ['invalid'];251				await runAsserts({252					validator,253					values: invalidParams,254					queryField,255					errorMessage: 'status is not supported'256				});257			});258			it('succeeds when status parameters are present and valid', async () => {259				// Arrange:260				const validParams = ['pending', 'sent', 'duplicate', 'error'];261				await runAsserts({262					validator,263					values: validParams,264					queryField265				});266			});267		});268	});269	describe('exportCsv', () => {270		const validator = Validation.validate('exportCsv');271		describe('timezone validator', () => {272			// Arrange:273			const queryField = 'timezone';274			it('fails when timezone parameter is invalid', async () => {275				// Arrange:276				const invalidParams = ['invalid', 'America'];277				await runAsserts({278					validator,279					values: invalidParams,280					queryField,281					errorMessage: 'timezone must be string example America/Los_Angeles'282				});283			});284			it('succeeds when timezone parameters are present and valid', async () => {285				// Arrange:286				const validParams = ['America/Los_Angeles', 'America/New_York'];287				await runAsserts({288					validator,289					values: validParams,290					queryField291				});292			});293		});294	});...foca-service-tests.js
Source:foca-service-tests.js  
...9        .catch(() => {10            assert.fail('Getting leagues list failed.')11            done()12        })13        function runAsserts(body){14            assert.equal(body.count,4)15            assert.equal(body.competitions[1].name, 'Supercopa Argentina')16            assert.equal(body.competitions[2].id, 2023)17            assert.equal(body.competitions[3].area.name, 'Europe')18            done()19        }20    })21    it('should get a specific league specified by its id', done => {22        focaService.getLeaguesById(2001)23        .then(runAsserts)24        .catch(() => {25            assert.fail('Getting league by id failed.')26            done()27        })28        function runAsserts(body){29            assert.equal(body.id, 2001)30            assert.equal(body.area.name, 'Europe')31            assert.equal(body.name, 'UEFA Champions League')32            done()33        }34    })35    it('should get the list of groups', done => {36        focaService.getGroupList()37        .then(runAsserts)38        .catch(() => {39            assert.fail('Getting groups list failed.')40            done()41        })42        function runAsserts(body){43            assert.equal(body.hits.total, 2)44            assert.equal(body.hits.hits[0]._id,'i8kJJGcBSAafA5skJ5RO')45            assert.equal(body.hits.hits[0]._source.name, 'Primeiro Grupo')46            assert.equal(body.hits.hits[0]._source.teams.length, 3)47            done()48        }49    })50    it('should add a group of favorite teams', done => {51        focaService.postGroup('New Group', 'New group description')52        .then(runAsserts)53        .catch(() => {54            assert.fail('Adding group to list failed.')55            done()56        })57        function runAsserts(){58            const groups = require('./mocks/mock-groups.json')59            assert.equal(groups.hits.hits.length, 3)60            assert.equal(groups.hits.hits[2]._id, 'i8kJJGcBSAafA5sABCDO')61            assert.equal(groups.hits.hits[2]._source.name, 'New Group')62            assert.equal(groups.hits.hits[2]._source.description, 'New group description')63            groups.hits.hits.pop()64            fs.writeFileSync(__dirname + '\\mocks\\mock-groups.json', JSON.stringify(groups,null,4))65            done()66        }67    })68    it('should edit a group of favorite teams specified by its id', done => {69        focaService.editGroup('New Group Name', 'New group description', 'OzaIJmcBiLhWrTB2aZGt')70        .then(runAsserts)71        .catch(() => {72            assert.fail('Editing group information failed.')73            done()74        })75        function runAsserts(){76            const groups = require('./mocks/mock-groups.json')77            assert.equal(groups.hits.hits.length,2)78            assert.equal(groups.hits.hits[1]._id, 'OzaIJmcBiLhWrTB2aZGt')79            assert.equal(groups.hits.hits[1]._source.name, 'New Group Name')80            assert.equal(groups.hits.hits[1]._source.description, 'New group description')81            82            groups.hits.hits[1]._source.name = 'Segundo Grupo'83            groups.hits.hits[1]._source.description = 'Descricao do segundo grupo'84            fs.writeFileSync(__dirname + '\\mocks\\mock-groups.json', JSON.stringify(groups,null,4))85            done()86        }87    })88    it('should get the detailed information from a group given its id', done => {89        focaService.getGroupById('i8kJJGcBSAafA5skJ5RO')90        .then(runAsserts)91        .catch(() => {92            assert.fail('Getting group by id failed.')93            done()94        })95        function runAsserts(body){96            assert.equal(body._id, 'i8kJJGcBSAafA5skJ5RO')97            assert.equal(body._source.name, 'Primeiro Grupo')98            assert.equal(body._source.description, 'Descricao do primeiro grupo')99            assert.equal(body._source.teams.length, 3)100            done()101        }102    })103    it('should add a team to a group of favorite teams given both ids', done => {104        focaService.addTeamToGroup('i8kJJGcBSAafA5skJ5RO', 30)105        .then(runAsserts)106        .catch(() => {107            assert.fail('Adding team to group failed.')108            done()109        })110        function runAsserts(){111            const group = require('./mocks/mock-group-i8kJJGcBSAafA5skJ5RO.json')112            113            assert.equal(group._id, 'i8kJJGcBSAafA5skJ5RO')114            assert.equal(group._source.teams.length, 4)115            assert.equal(group._source.teams[3], 30)116            117            group._source.teams.pop()118            119            fs.writeFileSync(__dirname + '\\mocks\\mock-group-i8kJJGcBSAafA5skJ5RO.json', JSON.stringify(group,null,4))120            done()121        }122    })123    it('should remove a team from a group of favorite teams given both ids', done => {124        focaService.removeTeamFromGroup('i8kJJGcBSAafA5skJ5RO', 52)125        .then(runAsserts)126        .catch(() => {127            assert.fail('Deleting team from group failed.')128            done()129        })130        function runAsserts(){131            const group = require('./mocks/mock-group-i8kJJGcBSAafA5skJ5RO.json')132            133            assert.equal(group._id, 'i8kJJGcBSAafA5skJ5RO')134            assert.equal(group._source.teams.length, 2)135            assert.equal(group._source.teams[0], 3)136            assert.equal(group._source.teams[1], 8)137            138            group._source.teams.push(52)139            140            fs.writeFileSync(__dirname + '\\mocks\\mock-group-i8kJJGcBSAafA5skJ5RO.json', JSON.stringify(group,null,4))141            done()142        }143    })144    it('should get the matches from every team of the group given its id', done => {145        focaService.getMatchesByGroup('qqwTnmcBNosGXavWDAAN', undefined)146        .then(runAsserts)147        .catch(() => {148            assert.fail('Getting matches from group teams failed.')149            done()150        })151        function runAsserts(body){152            assert.equal(body.length, 2)153            assert.equal(body[0].matches.length, 2)154            assert.equal(body[0].matches[1].id, 235764)155            assert.equal(body[0].matches[1].status, 'FINISHED')156            assert.equal(body[1].matches.length, 2)157            assert.equal(body[1].matches[0].id, 235753)158            assert.equal(body[1].matches[0].season.id, 155)159            done()160        }161    })...test.js
Source:test.js  
...57		values.push(random[fn]());58	}59	return values;60}61function runAsserts(t, fn, assertFn) {62	const seeds = [63		0,64		1,65		10,66		-10,67		Number.MIN_SAFE_INTEGER,68		Number.MAX_SAFE_INTEGER69	];70	for (const seed of seeds) {71		assertFn(t, seed);72	}73	// Ensure it generates numbers deterministically74	t.deepEqual(runFn(fn), runFn(fn));75	t.deepEqual(runFn(fn), runFn(fn));76}77test('.integer()', t => {78	runAsserts(t, 'integer', assertInteger);79});80test('.integerInRange()', t => {81	runAsserts(t, 'integerInRange', assertIntegerInRange);82});83test('.float()', t => {84	runAsserts(t, 'float', assertFloat);85});86test('.floatInRange()', t => {87	runAsserts(t, 'floatInRange', assertFloatInRange);88});89test('.boolean()', t => {90	runAsserts(t, 'boolean', assertBoolean);...Using AI Code Generation
1sinon.assert.runAsserts();2sinon.assert.assert();3sinon.assert.fail();4sinon.assert.pass();5sinon.assert.callOrder();6sinon.assert.callCount();7sinon.assert.calledOn();8sinon.assert.calledWith();9sinon.assert.calledWithMatch();10sinon.assert.notCalled();11sinon.assert.called();12sinon.assert.alwaysCalledOn();13sinon.assert.alwaysCalledWith();14sinon.assert.alwaysCalledWithMatch();15sinon.assert.neverCalledWith();16sinon.assert.neverCalledWithMatch();17sinon.assert.threw();18sinon.assert.alwaysThrew();19sinon.assert.callOrder();20sinon.assert.callCount();21sinon.assert.calledOn();22sinon.assert.calledWith();23sinon.assert.calledWithMatch();24sinon.assert.notCalled();25sinon.assert.called();26sinon.assert.alwaysCalledOn();27sinon.assert.alwaysCalledWith();28sinon.assert.alwaysCalledWithMatch();Using AI Code Generation
1var assert = require('assert');2var sinon = require('sinon');3var object = {4  method: function () {5    return true;6  }7};8var spy = sinon.spy(object, "method");9object.method();10assert(spy.called);11var assert = require('assert');12var sinon = require('sinon');13var object = {14  method: function () {15    return true;16  }17};18var spy = sinon.spy(object, "method");19object.method();20assert(spy.called);21var assert = require('assert');22var sinon = require('sinon');23var object = {24  method: function () {25    return true;26  }27};28var spy = sinon.spy(object, "method");29object.method();30assert(spy.called);31var assert = require('assert');32var sinon = require('sinon');33var object = {34  method: function () {35    return true;36  }37};38var spy = sinon.spy(object, "method");39object.method();40assert(spy.called);41var assert = require('assert');42var sinon = require('sinon');43var object = {44  method: function () {45    return true;46  }47};48var spy = sinon.spy(object, "method");49object.method();50assert(spy.called);51var assert = require('assert');52var sinon = require('sinon');53var object = {54  method: function () {55    return true;56  }57};58var spy = sinon.spy(object, "method");59object.method();60assert(spy.calledUsing AI Code Generation
1sinon.assert.runAsserts();2sinon.assert.calledOnce(spy);3sinon.assert.calledWith(spy, 'foo');4sinon.assert.calledWith(spy, 'bar');5sinon.assert.calledWith(spy, 'baz');6sinon.assert.calledWith(spy, 'quux');7sinon.assert.callCount(spy, 4);8sinon.assert.callOrder(spy, spy);9sinon.assert.alwaysCalledWith(spy, 'foo');10sinon.assert.alwaysCalledWith(spy, 'bar');11sinon.assert.alwaysCalledWith(spy, 'baz');12sinon.assert.alwaysCalledWith(spy, 'quux');13sinon.assert.neverCalledWith(spy, 'foo');14sinon.assert.neverCalledWith(spy, 'bar');15sinon.assert.neverCalledWith(spy, 'baz');16sinon.assert.neverCalledWith(spy, 'quux');17sinon.assert.calledWithMatch(spy, 'foo');18sinon.assert.calledWithMatch(spy, 'bar');19sinon.assert.calledWithMatch(spy, 'baz');20sinon.assert.calledWithMatch(spy, 'quux');21sinon.assert.alwaysCalledWithMatch(spy, 'foo');22sinon.assert.alwaysCalledWithMatch(spy, 'bar');23sinon.assert.alwaysCalledWithMatch(spy, 'baz');24sinon.assert.alwaysCalledWithMatch(spy, 'quux');25sinon.assert.neverCalledWithMatch(spy, 'foo');26sinon.assert.neverCalledWithMatch(spy, 'bar');27sinon.assert.neverCalledWithMatch(spy, 'baz');28sinon.assert.neverCalledWithMatch(spy, 'quux');29sinon.assert.calledOn(spy, {});30sinon.assert.alwaysCalledOn(spy, {});31sinon.assert.calledWithNew(spy);32sinon.assert.alwaysCalledWithNew(spy);33sinon.assert.called(spy);34sinon.assert.alwaysCalled(spy);35sinon.assert.neverCalled(spy);36sinon.assert.calledBefore(spy, spy);37sinon.assert.calledAfter(spy, spy);38sinon.assert.threw(spy);39sinon.assert.threw(spy, 'TypeError');40sinon.assert.threw(spy, new TypeError());41sinon.assert.alwaysThrew(spy);42sinon.assert.alwaysThrew(spy, 'TypeError');43sinon.assert.alwaysThrew(spy,Using AI Code Generation
1runAsserts(function() {2    assert.calledOnce(spy);3    assert.calledWith(spy, "foo");4});5runAsserts(function() {6    assert.calledOnce(spy);7    assert.calledWith(spy, "foo");8});9runAsserts(function() {10    assert.calledOnce(spy);11    assert.calledWith(spy, "foo");12});13runAsserts(function() {14    assert.calledOnce(spy);15    assert.calledWith(spy, "foo");16});17runAsserts(function() {18    assert.calledOnce(spy);19    assert.calledWith(spy, "foo");20});21runAsserts(function() {22    assert.calledOnce(spy);23    assert.calledWith(spy, "foo");24});25runAsserts(function() {26    assert.calledOnce(spy);27    assert.calledWith(spy, "foo");28});29runAsserts(function() {30    assert.calledOnce(spy);31    assert.calledWith(spy, "foo");32});33runAsserts(function() {34    assert.calledOnce(spy);35    assert.calledWith(spy, "foo");36});37runAsserts(function() {38    assert.calledOnce(spy);39    assert.calledWith(spy, "foo");40});41runAsserts(function() {42    assert.calledOnce(spy);43    assert.calledWith(spy, "foo");44});45runAsserts(function() {46    assert.calledOnce(spy);47    assert.calledWith(spy, "foo");48});Using AI Code Generation
1var myObj = {2  myMethod: function() {3    return 1;4  }5};6var spy = sinon.spy(myObj, "myMethod");7myObj.myMethod();8sinon.assert.calledOnce(spy);9sinon.assert.calledWith(spy, 1);10var myObj = {11  myMethod: function() {12    return 1;13  }14};15var spy = sinon.spy(myObj, "myMethod");16myObj.myMethod();17sinon.assert.calledOnce(spy);18sinon.assert.calledWith(spy, 1);19var myObj = {20  myMethod: function() {21    return 1;22  }23};24var spy = sinon.spy(myObj, "myMethod");25myObj.myMethod();26sinon.assert.calledOnce(spy);27sinon.assert.calledWith(spy, 1);28var myObj = {29  myMethod: function() {30    return 1;31  }32};33var spy = sinon.spy(myObj, "myMethod");34myObj.myMethod();35sinon.assert.calledOnce(spy);36sinon.assert.calledWith(spy, 1);37var myObj = {38  myMethod: function() {39    return 1;40  }41};42var spy = sinon.spy(myObj, "myMethod");43myObj.myMethod();44sinon.assert.calledOnce(spy);45sinon.assert.calledWith(spy, 1);46var myObj = {47  myMethod: function() {48    return 1;49  }50};51var spy = sinon.spy(myObj, "myMethod");52myObj.myMethod();53sinon.assert.calledOnce(spy);54sinon.assert.calledWith(spy, 1);55var myObj = {56  myMethod: function() {57    return 1;58  }59};60var spy = sinon.spy(myUsing AI Code Generation
1runAsserts(sinon.assert, function (spy, stub, mock) {2    spy();3    assert(spy.called);4    mock.verify();5    stub();6    assert(stub.called);7});8runAsserts(sinon.test, function (spy, stub, mock) {9    spy();10    assert(spy.called);11    mock.verify();12    stub();13    assert(stub.called);14});15runAsserts(sinon.testCase, function (spy, stub, mock) {16    spy();17    assert(spy.called);18    mock.verify();19    stub();20    assert(stub.called);21});22runAsserts(sinon.testCase, function (spy, stub, mock) {23    spy();24    assert(spy.called);25    mock.verify();26    stub();27    assert(stub.called);28});29runAsserts(sinon.testCase, function (spy, stub, mock) {30    spy();31    assert(spy.called);32    mock.verify();33    stub();34    assert(stub.called);35});36runAsserts(sinon.testCase, function (spy, stub, mock) {37    spy();38    assert(spy.called);39    mock.verify();40    stub();41    assert(stub.called);42});43runAsserts(sinon.testCase, function (spy, stub, mock) {44    spy();45    assert(spy.called);46    mock.verify();47    stub();48    assert(stub.called);49});50runAsserts(sinon.testCase, function (spy, stub, mock) {51    spy();52    assert(spy.called);53    mock.verify();54    stub();55    assert(stub.called);56});57runAsserts(sinon.testCase, function (spy, stub, mock) {58    spy();59    assert(spy.called);Using AI Code Generation
1describe("Test Suite", function() {2    var callback = sinon.spy();3    var obj = {4        method: function() {5            callback();6        }7    };8    obj.method();9    runAsserts(callback);10});11describe("Test Suite", function() {12    var callback = sinon.spy();13    var obj = {14        method: function() {15            callback();16        }17    };18    obj.method();19    runAsserts(callback);20});21describe("Test Suite", function() {22    var callback = sinon.spy();23    var obj = {24        method: function() {25            callback();26        }27    };28    obj.method();29    runAsserts(callback);30});31describe("Test Suite", function() {32    var callback = sinon.spy();33    var obj = {34        method: function() {35            callback();36        }37    };38    obj.method();39    runAsserts(callback);40});41describe("Test Suite", function() {42    var callback = sinon.spy();43    var obj = {44        method: function() {45            callback();46        }47    };48    obj.method();49    runAsserts(callback);50});51describe("Test Suite", function() {52    var callback = sinon.spy();53    var obj = {54        method: function() {55            callback();56        }57    };58    obj.method();59    runAsserts(callback);60});61describe("Test Suite", function() {62    var callback = sinon.spy();63    var obj = {64        method: function() {65            callback();66        }67    };68    obj.method();69    runAsserts(callback);70});71describe("Test Suite", function() {72    var callback = sinon.spy();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!!
