Best JavaScript code snippet using sinon
muya_implementations.js
Source:muya_implementations.js  
1/*jshint esversion: 6 */2var LOCAL = (function () {3  "use strict";4  return {5    RDVisible: false,6    RDTVisible: false,7    prepareDisplayString: function (string) {8      return string;9    },10    prepareNormalisedString: function (string) {11      return string;12    },13    project_witness_sort: function(witnesses) {14      return witnesses.sort(LOCAL.sort_witnesses);15    },16    //used before moving to order readings to make sure that a decision has been made on all top line overlapped readings17    are_no_duplicate_statuses: function() {18      var i, j;19      for (i = 0; i < CL.data.apparatus.length; i += 1) {20        for (j = 0; j < CL.data.apparatus[i].readings.length; j += 1) {21          if (CL.data.apparatus[i].readings[j].hasOwnProperty('overlap_status') &&22            CL.data.apparatus[i].readings[j].overlap_status === 'duplicate') {23            return false;24          }25        }26      }27      return true;28    },29    check_om_overlap_problems: function() {30      var i, unit, j, witnesses, key, ol_unit;31      //check to see if any readings labelled 'overlapped' don't have any text in the overlapped reading32      //if they do then that needs fixing.33      for (i = 0; i < CL.data.apparatus.length; i += 1) {34        unit = CL.data.apparatus[i];35        if ('overlap_units' in unit) {36          witnesses = [];37          for (j = 0; j < unit.readings.length; j += 1) {38            if ('overlap_status' in unit.readings[j] &&39              unit.readings[j].overlap_status === 'overlapped') {40              witnesses.push.apply(witnesses, unit.readings[j].witnesses);41            }42          }43          //for each witness we've collected44          for (j = 0; j < witnesses.length; j += 1) {45            for (key in unit.overlap_units) {46              if (unit.overlap_units[key].indexOf(witnesses[j]) != -1) {47                ol_unit = CL.findOverlapUnitById(key);48                if (ol_unit.readings[1].text.length > 0) { //hard coded 1 is fine as at this stage there is only one reading and its always here49                  return true;50                }51              }52            }53          }54        }55      }56      return false;57    },58    are_no_disallowed_overlaps: function() {59      var key, main_apparatus_data, unit, i;60      main_apparatus_data = [];61      for (i = 0; i < CL.data.apparatus.length; i += 1) {62        unit = CL.data.apparatus[i];63        main_apparatus_data.push(unit.start + '-' + unit.end);64      }65      for (key in CL.data) {66        if (key.indexOf('apparatus') !== -1 && key !== 'apparatus') {67          for (i = 0; i < CL.data[key].length; i += 1) {68            unit = CL.data[key][i];69            if (main_apparatus_data.indexOf(unit.start + '-' + unit.end) !== -1) {70              return false;71            }72          }73        }74      }75      return true;76    },77    compare_witness_suffixes: function(a, b) {78      if (a[0] === '-' && b[0] === '-') {79        return a.replace('-', '') - b.replace('-', '');80      }81      if (a[0] === '*') {82        return -1;83      }84      if (b[0] === '*') {85        return 1;86      }87      return 0;88      //could do more tests here for other suffixes but this is probably enough for now89    },90    sort_witnesses: function (a, b) {91      var dig_regex, suf_regex, numberA, numberB, suffixA, suffixB;92      if ($.isPlainObject(a)) {93        a = a.hand;94      }95      if ($.isPlainObject(b)) {96        b = b.hand;97      }98      dig_regex = /\d+/;99      suf_regex = /\D+\d*/;100      //extract just the number101      if (!a.match(dig_regex)) {102        return 1;103      } if (!b.match(dig_regex)) {104        return -1;105      }106      numberA = parseInt(a.match(dig_regex)[0], 10);107      numberB = parseInt(b.match(dig_regex)[0], 10);108      //if the numbers are the same deal with the suffixes109      if (numberA === numberB) {110        if (a.match(suf_regex)) {111          suffixA = a.match(suf_regex)[0];112        } else {113          suffixA = [''];114        }115        if (b.match(suf_regex)) {116          suffixB = b.match(suf_regex)[0];117        } else {118          suffixB = [''];119        }120        return LOCAL.compare_witness_suffixes(suffixA, suffixB);121      }122      //if the numbers are not the same sort them123      return numberA - numberB;124    },125    showRitualDirections: function () {126      if (LOCAL.RDVisible === true) {127        LOCAL.RDVisible = false;128        LOCAL.RDTVisible = true;129      } else if (LOCAL.RDTVisible === true) {130        LOCAL.RDVisible = false;131        LOCAL.RDTVisible = false;132      } else {133        LOCAL.RDVisible = true;134        LOCAL.RDTVisible = false;135      }136      if (CL.stage === 'regularise') {137        RG.showVerseCollation(CL.data, CL.context, CL.container);138      } else if (CL.stage === 'set') {139        SV.showSetVariants({'container': CL.container});140      } else if (CL.stage === 'ordered') {141        OR.showOrderReadings({'container': CL.container});142      } else if (CL.stage === 'approved') {143        OR.showApprovedVersion({'container': CL.container});144      }145    },146    extractWordsForHeader: function(data) {147        var word, words = [];148        for (let i = 0; i < data.length; i += 1) {149            word = [];150            if (LOCAL.RDVisible && data[i].hasOwnProperty('rd_before')) {151                word.push(data[i].rd_before);152                word.push(' ');153            }154            if (LOCAL.RDTVisible && data[i].hasOwnProperty('rdt_before')) {155                word.push(data[i].rdt_before);156                word.push(' ');157            }158            if (data[i].hasOwnProperty('pc_before')) {159                word.push(data[i].pc_before);160            }161            if (data[i].hasOwnProperty('original')) {162                word.push(data[i].original);163            } else {164                word.push(data[i].t);165            }166            if (data[i].hasOwnProperty('pc_after')) {167                word.push(data[i].pc_after);168            }169            if (LOCAL.RDVisible && data[i].hasOwnProperty('rd_after')) {170                word.push(' ');171                word.push(data[i].rd_after);172            }173            if (LOCAL.RDTVisible && data[i].hasOwnProperty('rdt_after')) {174                word.push(' ');175                word.push(data[i].rdt_after);176            }177            if (data[i].hasOwnProperty('type')) {178                words.push([word.join(''), data[i].type]);179            } else {180                words.push([word.join(''), '']);181            }182        }183        return words;184    },185  };...diff.analyzer.cron.server.controller.js
Source:diff.analyzer.cron.server.controller.js  
1'use strict';2const fs = require('fs');3const path = require('path');4const util = require('util');5module.exports = {6    makeDiffAggregateDoc : makeDiffAggregateDoc7}8function makeDiffAggregateDoc(config, lang) {9    if(config == undefined) return Promise.reject('err_config_is_undefined');10    if(config.saveSuffix == undefined) return Promise.reject('err_saveSuffix_is_undefined');11    if(config.suffixA == undefined) return Promise.reject('err_suffixA_is_undefined');12    if(config.suffixB == undefined) return Promise.reject('err_suffixB_is_undefined');13    14    // no need to below15    // const statMap = loadStatMap();16    const statMap = require('../../const/stat-map.json');17    if(statMap == undefined) return Promise.resolve(`err_can_not_read__statmap.json`); //TODO: how to handle this, if this code is reject other on tick will not excutes18    const saveSuffix = config.saveSuffix;19    const suffixA = config.suffixA;20    const suffixB = config.suffixB;21    const aggregateDocs = [];22    aggregateDocs.push(appendLookupPipeLine(suffixA));23    aggregateDocs.push(appendLookupPipeLine(suffixB));24    aggregateDocs.push(appendReplaceRootPipeLine());25    aggregateDocs.push(appendUnwindPipeLine(suffixA));26    aggregateDocs.push(appendUnwindPipeLine(suffixB));27    aggregateDocs.push(appendSubtractProject(statMap, suffixA, suffixB, lang));28    aggregateDocs.push(appendOutPipeLine(saveSuffix));29    return aggregateDocs;30}31function loadStatMap() {32    let result = undefined;33    try {34        const obj = fs.readFileSync(path.join(__dirname, `./stat-map.json`));35        result = JSON.parse(obj);36    } catch (error) {37        console.log(error);38    }39    return result;40}41function appendLookupPipeLine(suffix) {42    return {43        $lookup : {44            from : `crawl-datas-${suffix}`,45            localField : "_id",46            foreignField : "_id",47            as : `temp.${suffix}`,48        }49    }50}51function appendReplaceRootPipeLine() {52    return {53        $replaceRoot : {54            newRoot : "$temp"55        }56    }57}58function appendUnwindPipeLine(suffix) {59    return {60        $unwind : `$${suffix}`61    }62}63function appendSubtractProject(statMap, suffixA, suffixB, lang) {64    const denominators = statMap.denominators;65    const commonStats = statMap.common;66    const heroes = statMap.heroes;67    const projectObj = {};68    projectObj._id = `$${suffixA}._id`;69    projectObj.cptpt = `$${suffixA}.cptpt`;70    projectObj.diffCptpt = getMetaProjectOberation(suffixA, suffixB, 'cptpt');71    for(let hero in heroes) {72        // subtract denominator area73        for(let obj of denominators) {74            const id = obj.id;75            const crawledField = obj[lang];76            77            // projectObj[`${hero}.${id}`] = getSubtractOperation(suffixA, suffixB, hero, crawledField);78            projectObj[`${hero}.${id}`] = getValueProjectOperation(suffixA, suffixB, hero, crawledField);79        }80        // subtract common area81        for(let obj of commonStats) {82            const id = obj.id;83            const crawledField = obj[lang];84            // projectObj[`${hero}.${id}`] = getSubtractOperation(suffixA, suffixB, hero, field);85            projectObj[`${hero}.${id}`] = getValueProjectOperation(suffixA, suffixB, hero, crawledField);86        }87        const heroStats = heroes[hero];88        for(let obj of heroStats) {89            const id = obj.id;90            const crawledField = obj[lang];91            // projectObj[`${hero}.${id}`] = getSubtractOperation(suffixA, suffixB, hero, field);92            projectObj[`${hero}.${id}`] = getValueProjectOperation(suffixA, suffixB, hero, crawledField);93        }94    }95    return { $project : projectObj}96}97function getMetaProjectOberation(suffixA, suffixB, metaField) {98    const fieldA = `$${suffixA}._meta.${metaField}`;99    const fieldB = `$${suffixB}._meta.${metaField}`;100    const subtractOperation = getSubtractOperation(fieldA, fieldB);101    return wrapConditionOperationForCptpt(fieldA, fieldB, subtractOperation);102}103function getValueProjectOperation(suffixA, suffixB, hero, crawledField) {104    const fieldA = `$${suffixA}._value.${hero}.${crawledField}`;105    const fieldB = `$${suffixB}._value.${hero}.${crawledField}`;106    const subtractOperation = getSubtractOperation(fieldA, fieldB);107    return wrapConditionOperation(fieldA, fieldB, subtractOperation);108}109function appendOutPipeLine(saveSuffix) {110    const collectionName = `diff-datas-${saveSuffix}`;111    return {112        $out : collectionName,113    }114}115function getSubtractOperation(fieldA, fieldB) {116    return {117        $subtract : [118            `${fieldA}`,119            `${fieldB}`120        ]121    }122}123function wrapConditionOperationForCptpt(fieldA, fieldB, subtractOperation) {124    return {125        $cond : [126            {127                $or : [128                    {$eq : ['string', {$type : fieldA}]},129                    {$eq : ['string', {$type : fieldB}]},130                    {$lt : [fieldA, 1]},131                    {$lt : [fieldB, 1]},132                ]133            }134            , null135            , subtractOperation136        ]137    }138}139function wrapConditionOperation(fieldA, fieldB, subtractOperation) {140    return {141        $cond : [142            {143                $or : [144                    {$eq : ['string', {$type : fieldA}]},145                    {$eq : ['string', {$type : fieldB}]},146                ]147            }148            , null149            , subtractOperation150        ]151    }...journal-list.js
Source:journal-list.js  
1import React, { Component } from 'react';2import { TransitionGroup, CSSTransition } from 'react-transition-group';3import Journal from './journal';4import Book from './book';5import testData from './test-data';6if (build.mode === 'development' && !localStorage.getItem('journal-test-data')) {7    localStorage.setItem('journal-test-data', JSON.stringify({ entries: testData }));8}9const journalPrefix = "journal-";10class JournalList extends Component {11    constructor(props) {12        super(props);13        this.state = {14            journalIds: Object.keys(localStorage).filter(key => key.match(journalPrefix)),15            addingJournal: false16        };17        this.addJournal = this.addJournal.bind(this);18        this.deleteJournal = this.deleteJournal.bind(this);19        this.refreshJournalIds = this.refreshJournalIds.bind(this);20    }21    addJournal(e) {22        e.preventDefault();23        this.setState({24            addingJournal: true25        });26    }27    refreshJournalIds(callback) {28        this.setState({29            journalIds: Object.keys(localStorage).filter(key => key.match(journalPrefix))30        }, callback);31    }32    deleteJournal(journalId) {33        localStorage.removeItem(journalId);34        this.refreshJournalIds();35    }36    componentDidUpdate() {37        // If we just added a journal, switch this off and update journal ids38        if (this.state.addingJournal) {39            this.refreshJournalIds(() => {40                this.setState({41                    addingJournal: false42                });43            });44        }45    }46    render() {47        const journals = this.state.journalIds48            .sort((idA, idB) => {49                const suffixA = Number(idA.replace(journalPrefix, ''));50                const suffixB = Number(idB.replace(journalPrefix, ''));51                if (Number.isNaN(suffixA))52                    return -1;53                if (Number.isNaN(suffixB))54                    return 1;55                return suffixB - suffixA;56            })57            .map(id => (58                <CSSTransition timeout={500} classNames="journal" key={id}>59                    <Journal key={id} journalId={id} deleteJournal={this.deleteJournal} />60                </CSSTransition>61            ));62        return (63            <div className="journal-list cn mv5 vw6-l vw8-m vw-s oxh">64                <h1 className="bb lhs pb2">Journals</h1>65                <TransitionGroup>66                    {journals}67                </TransitionGroup>68                {this.state.addingJournal && <Journal deleteJournal={this.deleteJournal} />}69                <button className="bg-blanc ba db wf f2 fwb pv2" onClick={this.addJournal}>New Journal +</button>70            </div>71        )72    }73}...Using AI Code Generation
1var sinon = require('sinon');2var obj = {3  suffixA: function (str) {4    return str + 'a';5  }6};7var spy = sinon.spy(obj, 'suffixA');8obj.suffixA('foo');9var sinon = require('sinon');10var obj = {11  suffixB: function (str) {12    return str + 'b';13  }14};15var spy = sinon.spy(obj, 'suffixB');16obj.suffixB('foo');17var sinon = require('sinon');18var obj = {19  suffixA: function (str) {20    return str + 'a';21  }22};23var stub = sinon.stub(obj, 'suffixA');24stub.withArgs('foo').returns('bar');25var sinon = require('sinon');26var obj = {27  suffixB: function (str) {28    return str + 'b';29  }30};31var stub = sinon.stub(obj, 'suffixB');32stub.withArgs('foo').returns('bar');33var sinon = require('sinon');34var obj = {35  suffixA: function (str) {36    return str + 'a';37  }38};39var mock = sinon.mock(obj);40mock.expects('suffixA').once().withArgs('foo').returns('bar');41mock.verify();42var sinon = require('sinon');43var obj = {44  suffixB: function (str) {45    return str + 'b';46  }47};48var mock = sinon.mock(obj);49mock.expects('suffixUsing AI Code Generation
1var suffixA = sinon.stub().returns('A');2var suffixB = sinon.stub().returns('B');3var suffixA = sinon.stub().returns('A');4var suffixB = sinon.stub().returns('B');5var suffixA = sinon.stub().returns('A');6var suffixB = sinon.stub().returns('B');7var suffixA = sinon.stub().returns('A');8var suffixB = sinon.stub().returns('B');9var suffixA = sinon.stub().returns('A');10var suffixB = sinon.stub().returns('B');11var suffixA = sinon.stub().returns('A');12var suffixB = sinon.stub().returns('B');13var suffixA = sinon.stub().returns('A');14var suffixB = sinon.stub().returns('B');15var suffixA = sinon.stub().returns('A');16var suffixB = sinon.stub().returns('B');17var suffixA = sinon.stub().returns('A');18var suffixB = sinon.stub().returns('B');19var suffixA = sinon.stub().returns('A');20var suffixB = sinon.stub().returns('B');21var suffixA = sinon.stub().returns('A');Using AI Code Generation
1var sinon = require('sinon');2var assert = require('assert');3var myObj = {4    suffixA: function (str) {5        return str + 'A';6    }7};8var stub = sinon.stub(myObj, 'suffixA');9stub.withArgs('foo').returns('fooA');10stub.withArgs('bar').returns('barA');11assert.equal(myObj.suffixA('foo'), 'fooA');12assert.equal(myObj.suffixA('bar'), 'barA');13var sinon = require('sinon');14var assert = require('assert');15var myObj = {16    suffixA: function (str) {17        return str + 'A';18    }19};20var stub = sinon.stub(myObj, 'suffixB');21stub.withArgs('foo').returns('fooB');22stub.withArgs('bar').returns('barB');23assert.equal(myObj.suffixB('foo'), 'fooB');24assert.equal(myObj.suffixB('bar'), 'barB');Using AI Code Generation
1var sinon = require('sinon');2var assert = require('assert');3var foo = {4    bar: function() {5        console.log('bar');6    }7};8var spy = sinon.spy(foo, 'bar');9foo.bar();10assert(spy.calledOnce);11assert(spy.calledWith());12assert(spy.calledOn(foo));13spy.restore();14foo.bar();15var sinon = require('sinon');16var assert = require('assert');17var foo = function() {18    console.log('bar');19};20var spy = sinon.spy(foo);21foo();22assert(spy.calledOnce);23assert(spy.calledWith());24assert(spy.calledOn(foo));25spy.restore();26foo();Using AI Code Generation
1var sinon = require('sinon');2var obj = {3  suffixA: function () {4    return 'foo';5  }6};7var spy = sinon.spy(obj, 'suffixA');8console.log(obj.suffixA());9var sinon = require('sinon');10var obj = {11  suffixB: function () {12    return 'bar';13  }14};15var spy = sinon.spy(obj, 'suffixB');16console.log(obj.suffixB());Using AI Code Generation
1var sinon = require('sinon');2var test = require('test');3var stub = sinon.stub(test, "suffixA");4stub.withArgs("foo").returns("foo-a");5stub.withArgs("bar").returns("bar-a");6stub.withArgs("baz").returns("baz-a");7stub.withArgs("fizz").returns("fizz-a");Using AI Code Generation
1var sinon = require('sinon');2var assert = require('assert');3var myObj = {4    suffixA: function (str) {5        return str + 'A';6    }7};8var spy = sinon.spy(myObj, "suffixA");9myObj.suffixA('foo');10assert(spy.called);11assert(spy.calledWith('foo'));12assert(spy.returned('fooA'));13var sinon = require('sinon');14var assert = require('assert');15var myObj = {16    suffixA: function (str) {17        return str + 'A';18    }19};20var stub = sinon.stub(myObj, "suffixA").returns('bar');21var result = myObj.suffixA('foo');22assert(stub.called);23assert(stub.calledWith('foo'));24assert(stub.returned('bar'));25assert.equal(result, 'bar');Using AI Code Generation
1sinon.stub(sinon, 'suffixA').returns('foo');2sinon.stub(sinon, 'suffixB').returns('bar');3var stub = sinon.stub(, 'myFunction').returns('foo');4var stub = sinon.stub(, 'myFunction').returns('foo');5var stub = sinon.stub(, 'myFunction').returns('foo');6var stub = sinon.stub(, 'myFunction').returns('foo');7var stub = sinon.stub(, 'myFunction').returns('foo');8var stub = sinon.stub(,Using AI Code Generation
1var sinon = require('sinon');2var assert = require('assert');3var suffixA = sinon.stub();4suffixA.returns('a');5assert.equal(suffixA(), 'a');6var sinon = require('sinon');7var assert = require('assert');8var suffixA = sinon.stub();9suffixA.returns('a');10assert.equal(suffixA(), 'a');11var sinon = require('sinon');12var assert = require('assert');13var suffixA = sinon.stub();14suffixA.returns('a');15assert.equal(suffixA(), 'a');16var sinon = require('sinon');17var assert = require('assert');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!!
