import { clickTarget, simulateTimeline, startTimeline } from "@jspsych/test-utils"; import imageSliderResponse from "."; jest.useFakeTimers(); describe("image-slider-response", () => { test("displays image stimulus", async () => { const { getHTML, expectFinished } = await startTimeline([ { type: imageSliderResponse, stimulus: "../media/blue.png", labels: ["left", "right"], button_label: "button", render_on_canvas: false, }, ]); expect(getHTML()).toContain( '
{
const { getHTML, expectFinished } = await startTimeline([
{
type: imageSliderResponse,
stimulus: "../media/blue.png",
labels: ["left", "right"],
button_label: "button",
render_on_canvas: false,
},
]);
expect(getHTML()).toContain('left');
expect(getHTML()).toContain('right');
clickTarget(document.querySelector("#jspsych-image-slider-response-next"));
await expectFinished();
});
test("displays button label", async () => {
const { getHTML, expectFinished } = await startTimeline([
{
type: imageSliderResponse,
stimulus: "../media/blue.png",
labels: ["left", "right"],
button_label: "button",
render_on_canvas: false,
},
]);
expect(getHTML()).toContain(
''
);
clickTarget(document.querySelector("#jspsych-image-slider-response-next"));
await expectFinished();
});
test("should set min, max and step", async () => {
const { displayElement, expectFinished } = await startTimeline([
{
type: imageSliderResponse,
stimulus: "../media/blue.png",
labels: ["left", "right"],
button_label: "button",
min: 2,
max: 10,
step: 2,
render_on_canvas: false,
},
]);
const responseElement = displayElement.querySelectorThis is a prompt
", render_on_canvas: false, }, ]); expect(getHTML()).toContain("This is a prompt
"); clickTarget(document.querySelector("#jspsych-image-slider-response-next")); await expectFinished(); }); test("should hide stimulus if stimulus_duration is set", async () => { const { displayElement, expectFinished } = await startTimeline([ { type: imageSliderResponse, stimulus: "../media/blue.png", labels: ["left", "right"], button_label: "button", stimulus_duration: 500, render_on_canvas: false, }, ]); const stimulusElement = displayElement.querySelector
{
const { getHTML, expectFinished } = await startTimeline([
{
type: imageSliderResponse,
stimulus: "../media/blue.png",
labels: ["left", "right"],
button_label: "button",
response_ends_trial: true,
render_on_canvas: false,
},
]);
expect(getHTML()).toContain(
'
{
test("data-only mode works", async () => {
const { getData, expectFinished } = await simulateTimeline([
{
type: imageSliderResponse,
stimulus: "foo.png",
labels: ["left", "right"],
button_label: "button",
},
]);
await expectFinished();
const data = getData().values()[0];
expect(data.response).toBeGreaterThanOrEqual(0);
expect(data.response).toBeLessThanOrEqual(100);
expect(data.rt).toBeGreaterThan(0);
});
test("data-only mode works", async () => {
const { getData, expectRunning, expectFinished } = await simulateTimeline(
[
{
type: imageSliderResponse,
stimulus: "foo.png",
labels: ["left", "right"],
button_label: "button",
},
],
"visual"
);
await expectRunning();
jest.runAllTimers();
await expectFinished();
const data = getData().values()[0];
expect(data.response).toBeGreaterThanOrEqual(0);
expect(data.response).toBeLessThanOrEqual(100);
expect(data.rt).toBeGreaterThan(0);
});
});