Best JavaScript code snippet using fast-check-monorepo
Model.js
Source:Model.js
1import _ from 'underscore';2import logger from '../core/Logger';3import config from '../config';4class Model {5 /**6 * returns promise of this model.7 */8 constructor(options,data) {9 if (config.models) {10 this._modelConfig = _.assign({}, config.models.common, config.models[this.getType()]);11 }12 if(data){13 var self = this;14 var resolvePromise = this.resolveForLocal(data); // todo do we ever need both options and data?15 this.ready = new Promise(function(resolve,reject){16 resolvePromise.then(function(opts){17 _.assign(self,opts);18 delete self._modelConfig;19 resolve();20 });21 });22 } else {23 _.assign(this,this.prepareModel(options));24 delete this._modelConfig;25 this.ready = Promise.resolve();26 }27 }28 /**29 * Prepare promise for all the properties, which are actual domain objects.30 * @param data Object with data from the API.31 * @param model Optional - model for resolving nested objects32 * @param self Optional - this (for nested)33 */34 resolveForLocal(data, model, self) {35 //var self = this;36 var ret = {};37 var promises = [];38 if(!self){39 self = this;40 }41 if(!model) {42 model = self.data();43 if (config.models && self._modelConfig) {44 // only allow first level keys allowed in config45 //todo this doesn't work (omit returns, not mutates), but who knows what a fix will do46 //_.omit(model,function(keyProps, key) {47 // return !self._modelConfig[key];48 //});49 }50 }51 _.each(model, function (keyProps, key) {52 if (keyProps.isArrayOfNested) {53 if(data[keyProps.serverName]) {54 let nestedPromises = [];55 for (var nested of data[keyProps.serverName]) {56 let nestedPromise = self.resolveForLocal(nested, model[key].model, self);57 nestedPromises.push(nestedPromise);58 }59 Promise.all(nestedPromises).then(function(arrayOfNested){60 ret[key] = arrayOfNested;61 }).catch(error => {62 logger.error(`Model# resolveForLocal() Failed to resolve nested promises. Error: ${error} | data:`, data);63 });64 promises.push(Promise.all(nestedPromises));65 } else {66 ret[key] = [];67 }68 } else if (keyProps.isNested) {69 if(data[keyProps.serverName]) {70 let nestedPromise = self.resolveForLocal(data[keyProps.serverName], model[key].model, self);71 nestedPromise.then(function(transformedNestedData){72 if (73 !keyProps.ignoreEmpty ||74 Object.keys(_.pick(transformedNestedData, _.identity)).length75 ) {76 ret[key] = transformedNestedData;77 }78 }).catch(error => {79 logger.error(`Model# resolveForLocal() Failed to resolve nested promise data. Error: ${error} | data:`, data);80 });81 promises.push(nestedPromise);82 } else if (!keyProps.ignoreEmpty) {83 ret[key] = {};84 }85 } else {86 if (keyProps.isPromise) {87 let promise = keyProps.transformForLocal(data[keyProps.serverName], data);88 promise.then(function(transformedData){89 ret[key] = transformedData;90 }).catch(error => {91 logger.error(`Model# resolveForLocal() Failed to resolve data. Error: ${error} | data:`, data, '| key: ', key, '| keyProps:', keyProps);92 });93 promises.push(promise);94 } else if (!keyProps.ignoreEmpty || !!data[keyProps.serverName]) {95 if (keyProps.transformForLocal) {96 ret[key] = keyProps.transformForLocal(data[keyProps.serverName], data);97 } else {98 ret[key] = data[keyProps.serverName];99 }100 }101 }102 });103 return new Promise(function (resolve, reject) {104 Promise.all(promises).then(function(){105 resolve(ret);106 });107 });108 }109 /**110 * Called on options when creating model locally. To be overriden.111 * @param options112 * @returns {*}113 */114 prepareModel(options) {115 return options;116 }117 /**118 * get asociated object type from constants/ObjectTypes119 */120 getType() {121 return 'common';122 }123 /**124 * Transform self for server125 */126 serialize() {127 return this.serializeModel(this,this.data());128 }129 /**130 * Transform model for server131 */132 serializeModel(object, model) {133 var self = this;134 var serializedObject = {};135 _.each(object, function (value, key) {136 if(key!=="ready" && model[key].sendToServer) {137 if(model[key].hasOwnProperty("isArrayOfNested") && model[key].isArrayOfNested) {138 for (var i in value) {139 value[i] = self.serializeModel(value[i], model[key].model);140 }141 } else if (model[key].hasOwnProperty("isNested") && model[key].isNested) {142 value = self.serializeModel(value, model[key].model);143 } else if (model[key].hasOwnProperty("transformForServer")){144 value = model[key].transformForServer(value, object);145 }146 key = model[key].serverName;147 serializedObject[key] = value;148 }149 });150 logger.trace("Model# serializeModel(), Serialized object:",serializedObject);151 return serializedObject;152 }153 // todo static?154 transformDate(dateString) {155 if (dateString) return new Date(dateString);156 return null;157 }158 getKey(model) {159 return (model) ? model.key : null;160 }161 getKeys(models) {162 let keys = [];163 for (let model of models) {164 keys.push(model.key);165 }166 return keys;167 }168}...
crawler.js
Source:crawler.js
1const fs = require('fs');2const {JSDOM} = require('jsdom');3const path = require('path');4async function getImages(host, depth, currentDepth) {5 const domContent = await fetch(host).then(data => data.text()).catch(e => console.log(e));6 const dom = new JSDOM(domContent)7 const images = [...dom.window.document.body.querySelectorAll('img')].map(item => ({8 imageUrl: item.src,9 sourceUrl: host,10 depth: currentDepth,11 }));12 if (depth === currentDepth) {13 return images;14 }15 const nestedPromises = [...dom.window.document.body.querySelectorAll('a')].map(item => item.href).map((link) => { 16 const linkToGo = link.includes('http') ? link : `${host}${link}`;17 return getImages(linkToGo, depth, currentDepth + 1)18 });19 const nestedImages = (await Promise.all(nestedPromises)).flat()20 return [...images, ...nestedImages]21}22async function main(host, depth) {23 const res = await getImages(host, +depth, 0);24 fs.writeFileSync(path.resolve(__dirname, 'result.json'), JSON.stringify({25 results: res26 }))27}...
badWayNestedPromises.js
Source:badWayNestedPromises.js
...6 setTimeout(resolve,2000,newX);7 })8 9 }10 nestedPromises(1)11 .then(x=>nestedPromises(x))12 .then(x=>nestedPromises(x))13 .then(x=>nestedPromises(x))14 .then(x=>console.log(x))15}16 17nestingPromises();18// const doSomething=(x)=>{19// const newX= x+1;20// return Promise.resolve(newX);21// }22// doSomething(0)23// .then(x => {24// doSomething(x)25// .then(x=>{26// doSomething(x).then(x=>console.log(x));27// });...
Using AI Code Generation
1const { nestedPromises } = require('fast-check');2const myPromise = (i, j) => {3 return new Promise((resolve, reject) => {4 setTimeout(() => {5 resolve(i + j);6 }, 500);7 });8};9const myPromiseArb = nestedPromises((i, j) => myPromise(i, j));10 .generate(mrng)11 .then((value) => {12 console.log(value);13 })14 .catch((e) => {15 console.log('error', e);16 });
Using AI Code Generation
1import { nestedPromises } from 'fast-check'2const myPromise = (x) => {3 return new Promise((resolve, reject) => {4 setTimeout(() => {5 resolve(x + 1)6 }, 1000)7 })8}9const myPromise2 = (x) => {10 return new Promise((resolve, reject) => {11 setTimeout(() => {12 resolve(x + 2)13 }, 1000)14 })15}16const myPromise3 = (x) => {17 return new Promise((resolve, reject) => {18 setTimeout(() => {19 resolve(x + 3)20 }, 1000)21 })22}23const myPromise4 = (x) => {24 return new Promise((resolve, reject) => {25 setTimeout(() => {26 resolve(x + 4)27 }, 1000)28 })29}30const myPromise5 = (x) => {31 return new Promise((resolve, reject) => {32 setTimeout(() => {33 resolve(x + 5)34 }, 1000)35 })36}37const myPromise6 = (x) => {38 return new Promise((resolve, reject) => {39 setTimeout(() => {40 resolve(x + 6)41 }, 1000)42 })43}44const myPromise7 = (x) => {45 return new Promise((resolve, reject) => {46 setTimeout(() => {47 resolve(x + 7)48 }, 1000)49 })50}51const myPromise8 = (x) => {52 return new Promise((resolve, reject) => {53 setTimeout(() => {54 resolve(x + 8)55 }, 1000)56 })57}58const myPromise9 = (x) => {59 return new Promise((resolve, reject) => {60 setTimeout(() => {61 resolve(x + 9)62 }, 1000)63 })64}65const myPromise10 = (x) => {66 return new Promise((resolve, reject) => {67 setTimeout(() => {68 resolve(x + 10)69 }, 1000)70 })71}72const myPromise11 = (x) => {73 return new Promise((resolve, reject) => {74 setTimeout(() => {75 resolve(x + 11)76 }, 1000)77 })78}79const myPromise12 = (x) => {80 return new Promise((resolve, reject) => {81 setTimeout(() => {
Using AI Code Generation
1import { nestedPromises } from 'fast-check/lib/check/arbitrary/NestedArbitraryBuilder.js';2import { string } from 'fast-check/lib/check/arbitrary/StringArbitrary.js';3import { constant } from 'fast-check/lib/check/arbitrary/ConstantArbitrary.js';4import { tuple } from 'fast-check/lib/check/arbitrary/TupleArbitrary.js';5import { oneof } from 'fast-check/lib/check/arbitrary/OneOfArbitrary.js';6import { record } from 'fast-check/lib/check/arbitrary/RecordArbitrary.js';7import { set } from 'fast-check/lib/check/arbitrary/SetArbitrary.js';8import { array } from 'fast-check/lib/check/arbitrary/ArrayArbitrary.js';9import { integer } from 'fast-check/lib/check/arbitrary/IntegerArbitrary.js';10import { option } from 'fast-check/lib/check/arbitrary/OptionArbitrary.js';11import { map } from 'fast-check/lib/check/arbitrary/MapArbitrary.js';12import { dictionary } from 'fast-check/lib/check/arbitrary/DictionaryArbitrary.js';13import { float } from 'fast-check/lib/check/arbitrary/FloatArbitrary.js';14import { boolean } from 'fast-check/lib/check/arbitrary/BooleanArbitrary.js';15import { date } from 'fast-check/lib/check/arbitrary/DateArbitrary.js';16import { double } from 'fast-check/lib/check/arbitrary/DoubleArbitrary.js';17import { bigInt } from 'fast-check/lib/check/arbitrary/BigIntArbitrary.js';18import { bigUintN } from 'fast-check/lib/check/arbitrary/BigUintNArbitrary.js';19import { bigIntN } from 'fast-check/lib/check/arbitrary/BigIntNArbitrary.js';20import { char } from 'fast-check/lib/check/arbitrary/CharacterArbitrary.js';21import { unicode } from 'fast-check/lib/check/arbitrary/UnicodeArbitrary.js';22import { fullUnicode } from 'fast-check/lib/check/arbitrary/FullUnicodeArbitrary.js';23import { frequency } from 'fast-check/lib/check/arbitrary/FrequencyArbitrary.js';24import { base64 } from 'fast-check/lib/check/arbitrary/Base64Arbitrary.js';25import { base64Web } from 'fast-check/lib/check/arbitrary/Base64WebArbitrary.js';26import { base64Url } from
Using AI Code Generation
1const fc = require('fast-check');2const nestedPromises = require('fast-check/lib/check/arbitrary/nestedPromises.js');3const arb = fc.nat().map((n) => {4 return nestedPromises(fc.nat(), n);5});6fc.assert(fc.property(arb, (promise) => {7 return promise.then((value) => {8 return value;9 });10}));11{12 "dependencies": {13 },14 "devDependencies": {15 },16 "scripts": {17 },18}19module.exports = {20 testRegex: '(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$',21 moduleNameMapper: {22 '^fast-check/lib/check/arbitrary/(.*)$': 'fast-check/lib/check/arbitrary/$1',23 },24};25{26}27module.exports = function (api) {28 api.cache(true);29 {30 targets: {31 },32 },33 ];34 const plugins = [];35 return {36 };37};
Using AI Code Generation
1const { nestedPromises } = require('fast-check');2const promiseFunction = (x) => {3 return new Promise((resolve, reject) => {4 if (x > 0) {5 resolve(x);6 } else {7 reject(new Error('x must be greater than 0'));8 }9 });10};11describe('promiseFunction', () => {12 it('should return a promise', () => {13 nestedPromises(promiseFunction, 1).then((result) => {14 expect(result).toBe(1);15 });16 });17});18{19 "scripts": {20 },21 "dependencies": {22 }23}
Using AI Code Generation
1const { nestedPromises } = require('fast-check');2const test = nestedPromises(() => {3 return Promise.resolve(1);4});5test().then((result) => {6 console.log(result);7});8const test = async () => {9 return Promise.resolve(1);10};11test().then((result) => {12 console.log(result);13});14const { nestedPromises } = require('fast-check');15const test = nestedPromises(() => {16 return Promise.resolve(1);17});18test().then((result) => {19 console.log(result);20});21const test = async () => {22 return Promise.resolve(1);23};24test().then((result) => {25 console.log(result);26});27const { nestedPromises } = require('fast-check');28const test = nestedPromises(() => {29 return Promise.resolve(1);30});31test().then((result) => {32 console.log(result);33});34const test = async () => {35 return Promise.resolve(1);36};37test().then((result) => {38 console.log(result);39});40const { nestedPromises } = require('fast-check');41const test = nestedPromises(() => {42 return Promise.resolve(1);43});44test().then((result) => {45 console.log(result);46});47const test = async () => {48 return Promise.resolve(1);49};50test().then((result) => {51 console.log(result);52});53const { nestedPromises } = require('fast-check');54const test = nestedPromises(() => {55 return Promise.resolve(
Using AI Code Generation
1const fc = require('fast-check');2const { nestedPromises } = require('fast-check-monorepo');3const idempotent = (f) => (a) => f(f(a)) === f(a);4const associative = (f) => (a, b) => f(a, b) === f(b, a);5const myFunction = (a, b) => a + b;6const idempotentTest = () => {7 return nestedPromises(() => fc.assert(fc.property(fc.integer(), idempotent(myFunction))));8};9const associativeTest = () => {10 return nestedPromises(() => fc.assert(fc.property(fc.integer(), fc.integer(), associative(myFunction))));11};12idempotentTest()13.then(associativeTest)14.then(() => console.log("Tests passed"))15.catch((err) => console.error("Tests failed", err));16{17 "scripts": {18 },19 "dependencies": {20 }21}22{23 "dependencies": {24 "fast-check": {
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!!