Skip to content
This repository has been archived by the owner on Mar 1, 2024. It is now read-only.

Commit

Permalink
feat: 🎸 add tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Rashi1997 committed Feb 12, 2021
1 parent 4577a76 commit 24e7b69
Show file tree
Hide file tree
Showing 4 changed files with 76 additions and 5 deletions.
41 changes: 41 additions & 0 deletions tests/multiSurvey.spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
const multiSurvey = require("../trials/multiSurvey.js");

describe("multiSurvey trial", () => {
it(" with same ans choices for all questions", () => {
const preamble = "Answer the below questions";
const options = {
preamble: preamble,
prompts: ["hello?", "1?", "2?"],
ansChoices: { choices: ["no", "yes"] },
};
const questions = [
{ prompt: "hello?", options: ["no", "yes"], required: true },
{ prompt: "1?", options: ["no", "yes"], required: true },
{ prompt: "2?", options: ["no", "yes"], required: true },
];
const result = multiSurvey(options);
expect(result.preamble).toContain(preamble);
expect(result.questions).toEqual(questions);
});

it(" with different ans choices for each questions", () => {
const preamble = "Answer the below questions";
const options = {
preamble: preamble,
prompts: ["hello?", "1?", "2?"],
ansChoices: {
1: ["no", "yes", "maybe"],
2: ["not at all", "yes"],
3: ["nope", "yeah"],
},
};
const questions = [
{ prompt: "hello?", options: ["no", "yes", "maybe"], required: true },
{ prompt: "1?", options: ["not at all", "yes"], required: true },
{ prompt: "2?", options: ["nope", "yeah"], required: true },
];
const result = multiSurvey(options);
expect(result.preamble).toContain(preamble);
expect(result.questions).toEqual(questions);
});
});
1 change: 0 additions & 1 deletion tests/slider.spec.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
const slider = require("../trials/slider.js");
const { init } = require("../app.js");

describe("slider trial", () => {
it("slider with require movement", () => {
Expand Down
18 changes: 18 additions & 0 deletions tests/survey.spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
const survey = require("../trials/survey.js");

describe("survey trial", () => {
it("survey with require movement", () => {
const message = "What is your age?";
const result = survey(
{message:message});
const data = {
prompt: null,
answer: null,
responses: JSON.stringify({Q0:"response"}),
};
result.on_finish(data);
expect(result.questions[0].prompt).toContain(message);
expect(data.prompt[0]).toContain(message);
expect(data.answer).toEqual("response");
});
});
21 changes: 17 additions & 4 deletions trials/survey.js
Original file line number Diff line number Diff line change
@@ -1,16 +1,29 @@
const { baseStimulus } = require("../lib/markup/stimuli");

/**
* @description
* Builds a trial with a question and with free response text fields. The subject types in answers.
* @module
* @param {string} message - A string to be displayed as the question. This can be formatted as an HTML string. (default: "")
* @param {Object} options
* @param {string} options.stimulus - Onscreen stimulus in HTML to be shown in the trial, if not set default text is empty. If the stimulus is not provided, message should be provided as a string. (default: "")
* @param {string} options.message - Onscreen message to be shown in the trial. (default: "")
*/

module.exports = function (message = "") {
module.exports = function (options) {
const defaults = {
stimulus: "",
message: "",
};
const { stimulus, message } = { ...defaults, ...options };

const stimulusOrMessage =
message !== "" ? baseStimulus(`<h1>${message}</h1>`, true) : stimulus;

return {
type: "survey_text",
questions: [{ prompt: baseStimulus(message), required: true }],
questions: [{ prompt: stimulusOrMessage, required: true }],
on_finish: (data) => {
data.prompt = [message];
data.prompt = [stimulusOrMessage];
data.answer = JSON.parse(data.responses)["Q0"];
},
};
Expand Down

0 comments on commit 24e7b69

Please sign in to comment.