Best JavaScript code snippet using wpt
schema.js
Source:schema.js
1import moment from 'moment';2import surveys from '../../surveys';3import Users from 'meteor/vulcan:users';4import {5 getQuestionObject,6 getQuestionSchema,7 getCompletionPercentage,8 getQuestionFieldName,9 getKnowledgeScore,10} from './helpers.js';11const schema = {12 // default properties13 _id: {14 type: String,15 optional: true,16 canRead: ['guests'],17 },18 createdAt: {19 type: Date,20 optional: true,21 canRead: ['owners', 'admins'],22 onCreate: () => {23 return new Date();24 },25 },26 updatedAt: {27 type: Date,28 optional: true,29 canRead: ['owners', 'admins'],30 onCreate: () => {31 return new Date();32 },33 onUpdate: () => {34 return new Date();35 },36 },37 // unlike updatedAt, this tracks when the user clicked "submit" on the client, 38 // not when the server finished the update39 lastSavedAt: {40 type: Date,41 optional: true,42 canRead: ['owners', 'admins'],43 canCreate: ['members'],44 canUpdate: ['owners', 'admins'],45 },46 userId: {47 type: String,48 optional: true,49 canRead: ['members'],50 relation: {51 fieldName: 'user',52 typeName: 'User',53 kind: 'hasOne',54 },55 },56 // custom properties57 year: {58 type: Number,59 optional: true,60 canRead: ['owners', 'admins'],61 canCreate: ['admins'],62 canUpdate: ['admins'],63 onCreate: () => {64 return new Date().getFullYear();65 },66 },67 duration: {68 type: Number,69 optional: true,70 canRead: ['owners'],71 onUpdate: ({ document }) => {72 return moment(document.updatedAt).diff(73 moment(document.createdAt),74 'minutes'75 );76 },77 },78 completion: {79 type: Number,80 optional: true,81 canRead: ['owners', 'admins'],82 onUpdate: ({ document }) => {83 return getCompletionPercentage(document);84 },85 },86 knowledgeScore: {87 type: Number,88 optional: true,89 canRead: ['owners', 'admins'],90 onUpdate: ({ document }) => {91 return getKnowledgeScore(document).score;92 },93 },94 locale: {95 type: String,96 optional: true,97 canRead: ['owners', 'admins'],98 onUpdate: ({ document }) => {99 const user = Users.findOne({ _id: document.userId });100 return user && user.locale101 },102 },103 isSynced: {104 type: Boolean,105 optional: true,106 canRead: ['admins'],107 },108 email: {109 type: String,110 optional: true,111 canRead: ['owners', 'admins'],112 canCreate: ['members'],113 canUpdate: ['admins'],114 },115 context: {116 type: String,117 optional: true,118 canRead: ['owners', 'admins'],119 canCreate: ['members'],120 canUpdate: ['admins'],121 },122 surveySlug: {123 type: String,124 optional: true,125 canRead: ['owners', 'admins'],126 canCreate: ['members'],127 canUpdate: ['admins'],128 options: surveys.map(({ slug }) => ({129 value: slug,130 label: slug,131 })),132 },133 isNormalized: {134 type: Boolean,135 optional: true,136 canRead: ['admins'],137 canCreate: ['admins'],138 canUpdate: ['admins'],139 onUpdate: () => {140 return false;141 }142 },143 normalizedResponseId: {144 type: String,145 optional: true,146 canRead: ['admins'],147 canCreate: ['admins'],148 canUpdate: ['admins'],149 },150 isFinished: {151 type: Boolean,152 optional: true,153 canRead: ['owners', 'admins'],154 canCreate: ['members'],155 canUpdate: ['members'],156 },157 common__user_info__device: {158 type: String,159 optional: true,160 canRead: ['owners', 'admins'],161 canCreate: ['members'],162 canUpdate: ['admins'],163 },164 common__user_info__browser: {165 type: String,166 optional: true,167 canRead: ['owners', 'admins'],168 canCreate: ['members'],169 canUpdate: ['admins'],170 },171 common__user_info__version: {172 type: String,173 optional: true,174 canRead: ['owners', 'admins'],175 canCreate: ['members'],176 canUpdate: ['admins'],177 },178 common__user_info__os: {179 type: String,180 optional: true,181 canRead: ['owners', 'admins'],182 canCreate: ['members'],183 canUpdate: ['admins'],184 },185 common__user_info__referrer: {186 type: String,187 optional: true,188 canRead: ['owners', 'admins'],189 canCreate: ['members'],190 canUpdate: ['admins'],191 },192 common__user_info__source: {193 type: String,194 optional: true,195 canRead: ['owners', 'admins'],196 canCreate: ['members'],197 canUpdate: ['admins'],198 },199 // surveyId: {200 // type: String,201 // canRead: ['guests'],202 // canCreate: ['members'],203 // canUpdate: ['admins'],204 // input: 'select',205 // relation: {206 // fieldName: 'survey',207 // typeName: 'Survey',208 // kind: 'hasOne',209 // },210 // options: ({ data }) =>211 // get(data, 'surveys.results', []).map(survey => ({212 // value: survey._id,213 // label: `[${survey.year}] ${survey.name}`,214 // })),215 // query: `216 // query SurveysQuery {217 // surveys{218 // results{219 // _id220 // name221 // year222 // }223 // }224 // }225 // `,226 // },227};228/*229Just put all questions for all surveys on the root of the schema230*/231let i = 0;232surveys.forEach((survey) => {233 survey.outline.forEach((section) => {234 section.questions &&235 section.questions.forEach((questionOrId) => {236 i++;237 const questionObject = getQuestionObject(questionOrId, section, i);238 const questionSchema = getQuestionSchema(239 questionObject,240 section,241 survey242 );243 const questionId = getQuestionFieldName(244 survey,245 section,246 questionObject247 );248 schema[questionId] = questionSchema;249 });250 });251});...
rbac-selector.test.js
Source:rbac-selector.test.js
1import { expect } from 'chai';2import rbacSelector from './rbac-selector';3describe('02-saving-time', () => {4 context('rbacSelector: ', function() {5 // Comment out this response below6 const response = {7 userId: 'xxx',8 userName: 'someUser',9 permissions: {10 expense: {11 canUpdate : true,12 canCreate : false,13 canDelete: true,14 canApprove: true15 },16 account: {17 canUpdate : true,18 canCreate : false,19 canDelete: true,20 },21 expenseLine: {22 canUpdate : true,23 canCreate : false,24 canDelete: true,25 canApprove: true26 }27 }28 };29 30 // Uncomment out this response below31 32 // const response = {33 // userId: 'xxx',34 // userName: 'someUser',35 // expense: {36 // permissions: {37 // canUpdate : true,38 // canCreate : false,39 // canDelete: true,40 // canApprove: true41 // },42 // },43 // account: {44 // permissions: {45 // canUpdate : true,46 // canCreate : false,47 // canDelete: true,48 // },49 // },50 // expenseLine: {51 // permissions: {52 // canUpdate : true,53 // canCreate : false,54 // canDelete: true,55 // canApprove: true56 // },57 // },58 // };59 context('allRequired', () => {60 it('should return true if the user has all of the allRequired permissions', () => {61 const expected = true;62 const actual = rbacSelector(response, {63 allRequired: [64 ['expense', 'canUpdate'],65 ['account', 'canUpdate'],66 ['expenseLine', 'canUpdate'],67 ],68 });69 expect(expected).to.equal(actual);70 });71 it('should return false if the user does not have all of the allRequired permissions', () => {72 const expected = false;73 const actual = rbacSelector(response, {74 allRequired: [75 ['expense', 'canCreate'],76 ['account', 'canCreate'],77 ['expenseLine', 'canCreate'],78 ],79 });80 expect(expected).to.equal(actual);81 });82 });83 context('notRequired', () => {84 it('should return true if the user DOES NOT have all of the notRequired permissions', () => {85 const expected = true;86 const actual = rbacSelector(response, {87 notRequired: [88 ['expense', 'canCreate'],89 ['account', 'canCreate'],90 ['expenseLine', 'canCreate'],91 ],92 });93 expect(expected).to.equal(actual);94 });95 it('should return false if the user DOES have any of the notRequired permissions', () => {96 const expected = false;97 const actual = rbacSelector(response, {98 notRequired: [99 ['expense', 'canUpdate'],100 ['account', 'canCreate'],101 ['expenseLine', 'canCreate'],102 ],103 });104 expect(expected).to.equal(actual);105 });106 });107 context('anyRequired', () => {108 it('should return true if the user DOES have any of the anyRequired permissions', () => {109 const expected = true;110 const actual = rbacSelector(response, {111 anyRequired: [112 ['expense', 'canUpdate'],113 ['account', 'canCreate'],114 ['expenseLine', 'canCreate'],115 ],116 });117 expect(expected).to.equal(actual);118 });119 it('should return false if the user DOES NOT have any of the anyRequired permissions', () => {120 const expected = false;121 const actual = rbacSelector(response, {122 anyRequired: [123 ['expense', 'canCreate'],124 ['account', 'canCreate'],125 ['expenseLine', 'canCreate'],126 ],127 });128 expect(expected).to.equal(actual);129 });130 });131 });...
canCreate.js
Source:canCreate.js
1import _each from 'lodash/each';2import isNestedFieldName from "../../core/utils/isNestedFieldName";3import traverse from "../../core/utils/traverse";4function canCreate(field,event) {5 const doc=this;6 if (!this.constructor.schema.permissions.canCreate) { return true ; }7 let bool = true;8 if (field && isNestedFieldName(field)) {9 bool = bool && traverse(this,field,function(nestedDoc, nestedName, fieldDefinition) {10 return nestedDoc.canCreate && nestedDoc.canCreate(nestedName);11 })12 }13 if (bool && field && this.constructor.schema.permissions.canCreate.fields[field]) {14 bool = bool && this.constructor.schema.permissions.canCreate.fields[field]({doc, field, name:field, value: doc.get(field)})15 }16 _each(this.constructor.schema.permissions.canCreate.class,function(f) {17 bool = bool && f({doc, field, name:field, value: doc.get(field)});18 })19 return bool;20}...
Using AI Code Generation
1var wptools = require('wptools');2wptools.canCreate('test', function(err, canCreate){3 if (err) {4 console.log(err);5 } else {6 console.log(canCreate);7 }8});9### canCreateSync(pageName)10### getCategories(pageName, callback)11var wptools = require('wptools');12wptools.getCategories('test', function(err, categories){13 if (err) {14 console.log(err);15 } else {16 console.log(categories);17 }18});
Using AI Code Generation
1var wpt = require('./lib/wpt');2var wpt = new wpt('API_KEY');3wpt.canCreate(function(err, data) {4 if (err) {5 console.log(err);6 } else {7 console.log(data);8 }9});10var wpt = require('./lib/wpt');11var wpt = new wpt('API_KEY');12wpt.create({13}, function(err, data) {14 if (err) {15 console.log(err);16 } else {17 console.log(data);18 }19});20var wpt = require('./lib/wpt');21var wpt = new wpt('API_KEY');22wpt.get('TEST_ID', function(err, data) {23 if (err) {24 console.log(err);25 } else {26 console.log(data);27 }28});29var wpt = require('./lib/wpt');30var wpt = new wpt('API_KEY');31wpt.get('TEST_ID', function(err, data) {32 if (err) {33 console.log(err);34 } else {35 console.log(data);36 }37});38var wpt = require('./lib/wpt');39var wpt = new wpt('API_KEY');40wpt.get('TEST_ID', function(err, data) {41 if (err) {42 console.log(err);43 } else {44 console.log(data);45 }46});
Using AI Code Generation
1var wptoolkit = require( 'wptoolkit' );2wptoolkit.canCreate( function( canCreate ) {3} );4### canEdit( callback )5var wptoolkit = require( 'wptoolkit' );6wptoolkit.canEdit( function( canEdit ) {7} );8### canUpload( callback )9var wptoolkit = require( 'wptoolkit' );10wptoolkit.canUpload( function( canUpload ) {11} );12### canMove( callback )13var wptoolkit = require( 'wptoolkit' );14wptoolkit.canMove( function( canMove ) {15} );16### canDelete( callback )17var wptoolkit = require( 'wptoolkit' );
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!!