MCPcopy Index your code
hub / github.com/codecombat/codecombat / startExperiment

Method startExperiment

app/models/User.js:767–790  ·  view source on GitHub ↗
(name, value, probability)

Source from the content-addressed store, hash-verified

765 }
766
767 startExperiment (name, value, probability) {
768 let left
769 const experiments = (left = this.get('experiments')) != null ? left : []
770 if (_.find(experiments, { name })) { return console.error(`Already started experiment ${name}`) }
771 if (!/^[a-z][\-a-z0-9]*$/.test(name)) { return console.error(`Invalid experiment name: ${name}`) } // eslint-disable-line no-useless-escape
772 if (value == null) { return console.error('No experiment value provided') }
773 if ((probability != null) && !(probability >= 0 && probability <= 1)) { return console.error(`Probability should be between 0-1 if set - ${name} - ${value} - ${probability}`) }
774 $.ajax({
775 method: 'POST',
776 url: `/db/user/${this.id}/start-experiment`,
777 data: { name, value, probability },
778 success: attributes => {
779 return this.set(attributes)
780 },
781 error (jqxhr) {
782 return console.error(`Couldn't start experiment ${name}:`, jqxhr.responseJSON)
783 },
784 })
785 const experiment = { name, value, startDate: new Date() } // Server date/save will be authoritative
786 if (probability != null) { experiment.probability = probability }
787 experiments.push(experiment)
788 this.set('experiments', experiments)
789 return experiment
790 }
791
792 updateExperimentValue (experimentName, newValue = null) {
793 let left

Callers 1

tryStartExperimentMethod · 0.80

Calls 3

getMethod · 0.95
errorMethod · 0.45
setMethod · 0.45

Tested by

no test coverage detected