I want to write a jest unit test to test this method.
<code>export async function setEventListeners(dateBlob, log) {
let [nextClicked] = getButtons();
if (nextClicked && nextClicked[0]?.getAttribute("listener") !== "true") {
nextClicked[0]?.addEventListener("click", () => {
console.log("nextclicked");
createBlob("#weekly", dateBlob);
nextClicked[0]?.setAttribute("listener", "true");
});
}
}
export function getElements(){
let nextClicked = document.querySelectorAll(".next");
return [nextClicked];
}
</code>
<code>export async function setEventListeners(dateBlob, log) {
let [nextClicked] = getButtons();
if (nextClicked && nextClicked[0]?.getAttribute("listener") !== "true") {
nextClicked[0]?.addEventListener("click", () => {
console.log("nextclicked");
createBlob("#weekly", dateBlob);
nextClicked[0]?.setAttribute("listener", "true");
});
}
}
export function getElements(){
let nextClicked = document.querySelectorAll(".next");
return [nextClicked];
}
</code>
export async function setEventListeners(dateBlob, log) {
let [nextClicked] = getButtons();
if (nextClicked && nextClicked[0]?.getAttribute("listener") !== "true") {
nextClicked[0]?.addEventListener("click", () => {
console.log("nextclicked");
createBlob("#weekly", dateBlob);
nextClicked[0]?.setAttribute("listener", "true");
});
}
}
export function getElements(){
let nextClicked = document.querySelectorAll(".next");
return [nextClicked];
}
What I currently wrote is this
<code>describe("unit tests", () => {
test('setEventListeners: should call createBlob on click', async () => {
let createBlobSpy = jest.spyOn(instance, 'createBlob');
const mockButton = {
addEventListener: jest.fn().mockImplementationOnce((handler) => {
handler();
}),
};
document.querySelector = jest.fn().mockReturnValueOnce(mockButton);
instance.setEventListeners(mockBlob, "1");
expect(createBlobSpy).toHaveBeenCalled();
});
</code>
<code>describe("unit tests", () => {
test('setEventListeners: should call createBlob on click', async () => {
let createBlobSpy = jest.spyOn(instance, 'createBlob');
const mockButton = {
addEventListener: jest.fn().mockImplementationOnce((handler) => {
handler();
}),
};
document.querySelector = jest.fn().mockReturnValueOnce(mockButton);
instance.setEventListeners(mockBlob, "1");
expect(createBlobSpy).toHaveBeenCalled();
});
</code>
describe("unit tests", () => {
test('setEventListeners: should call createBlob on click', async () => {
let createBlobSpy = jest.spyOn(instance, 'createBlob');
const mockButton = {
addEventListener: jest.fn().mockImplementationOnce((handler) => {
handler();
}),
};
document.querySelector = jest.fn().mockReturnValueOnce(mockButton);
instance.setEventListeners(mockBlob, "1");
expect(createBlobSpy).toHaveBeenCalled();
});
}
However this fails because the test does not trigger the click correctly I believe. Could anyone assist?