// Canvas.test.js
import React from "react";
import renderer from "react-test-renderer";
import DesignComponent from "./Design";
import Canvas from "./Canvas/Canvas";
import { render } from "@testing-library/react";
test("Should be rendered in the dom", () => {
const component = renderer.create();
let tree = component.toJSON();
expect(tree).toMatchSnapshot();
});
test("Should render a component in the itemContainer prop", () => {
const items = [
{
id: "1",
name: "Table",
group: "Furniture",
image:
"https://i.pinimg.com/originals/7a/42/82/7a4282b44d0b6c5339088454cbc9f8da.png"
},
{
id: "2",
name: "Chair",
group: "Furniture",
image:
"https://i.pinimg.com/originals/76/10/7e/76107eeba9ec42f0fca5bb2a89222bee.jpg"
}
];
const { queryByLabelText, getByText, container } = render(
);
container.querySelector(".drawerButton")?.click();
expect(container.querySelectorAll(".ItemDrawerItems").length).toBe(items.length);
});
test("Should apply the style provided by itemContainerStyle on each item if one is provided", () => {
const items = [
{
id: "1",
name: "Table",
group: "Furniture",
image:
"https://i.pinimg.com/originals/7a/42/82/7a4282b44d0b6c5339088454cbc9f8da.png"
}
];
const { queryByLabelText, getByText, container } = render(
);
container.querySelector(".drawerButton")?.click();
expect(container.querySelector(".ItemDrawerItemSource").style.color).toBe('red');
});
test("Should show the Item Drawer in the LEFT position if the LEFT option is used in the location prop", () => {
const items = [
{
id: "1",
name: "Table",
group: "Furniture",
image:
"https://i.pinimg.com/originals/7a/42/82/7a4282b44d0b6c5339088454cbc9f8da.png"
}
];
const { container } = render(
);
container.querySelector(".drawerButton")?.click();
expect(container.querySelectorAll(".ItemDrawerLocationLeft").length).toBe(1);
});
test("Should show the Item Drawer in the RIGHT position if the RIGHT option is used in the location prop", () => {
const items = [
{
id: "1",
name: "Table",
group: "Furniture",
image:
"https://i.pinimg.com/originals/7a/42/82/7a4282b44d0b6c5339088454cbc9f8da.png"
}
];
const { container } = render(
);
container.querySelector(".drawerButton")?.click();
expect(container.querySelectorAll(".ItemDrawerLocationRight").length).toBe(1);
});
test("Should show the Item Drawer in the TOP position if the TOP option is used in the location prop", () => {
const items = [
{
id: "1",
name: "Table",
group: "Furniture",
image:
"https://i.pinimg.com/originals/7a/42/82/7a4282b44d0b6c5339088454cbc9f8da.png"
}
];
const { container } = render(
);
container.querySelector(".drawerButton")?.click();
expect(container.querySelectorAll(".ItemDrawerLocationTop").length).toBe(1);
});
test("Should show the Item Drawer in the BOTTOM position if the BOTTOM option is used in the location prop", () => {
const items = [
{
id: "1",
name: "Table",
group: "Furniture",
image:
"https://i.pinimg.com/originals/7a/42/82/7a4282b44d0b6c5339088454cbc9f8da.png"
}
];
const { container } = render(
);
container.querySelector(".drawerButton")?.click();
expect(container.querySelectorAll(".ItemDrawerLocationBottom").length).toBe(1);
});
test("Should show a title in the Item Drawer that matches the title prop if provided", () => {
const items = [
{
id: "1",
name: "Table",
group: "Furniture",
image:
"https://i.pinimg.com/originals/7a/42/82/7a4282b44d0b6c5339088454cbc9f8da.png"
}
];
const { queryByLabelText, getByText, container } = render(
);
container.querySelector(".drawerButton")?.click();
expect(getByText(/Test task/i)).toBeTruthy();
});
test("Should not render a title if the showTitle prop is false", () => {
const items = [
{
id: "1",
name: "Table",
group: "Furniture",
image:
"https://i.pinimg.com/originals/7a/42/82/7a4282b44d0b6c5339088454cbc9f8da.png"
}
];
const { queryByLabelText, getByText, container } = render(
);
container.querySelector(".drawerButton")?.click();
expect(container.querySelectorAll(".menuHeaderTitle").length).toBe(0);
});
test("Should not show a search component if the searchIsEnabled props is false", () => {
const items = [
{
id: "1",
name: "Table",
group: "Furniture",
image:
"https://i.pinimg.com/originals/7a/42/82/7a4282b44d0b6c5339088454cbc9f8da.png"
}
];
const { queryByLabelText, getByText, container } = render(
);
container.querySelector(".drawerButton")?.click();
expect(container.querySelectorAll(".search-input").length).toBe(0);
});
test("Should not render a close button if the closeButtonIsShowing prop is false", () => {
const items = [
{
id: "1",
name: "Table",
group: "Furniture",
image:
"https://i.pinimg.com/originals/7a/42/82/7a4282b44d0b6c5339088454cbc9f8da.png"
}
];
const { container } = render(
);
container.querySelector(".drawerButton")?.click();
expect(container.querySelectorAll(".closeBtn").length).toBe(0);
});
test("Should not allow drag and drop if the disableDragAndDrop prop is true", () => {
const items = [
{
id: "1",
name: "Table",
group: "Furniture",
image:
"https://i.pinimg.com/originals/7a/42/82/7a4282b44d0b6c5339088454cbc9f8da.png"
}
];
const { container } = render(
);
container.querySelector(".drawerButton")?.click();
expect(container.querySelectorAll(".ItemDrawerDragItemSource").length).toBe(0);
});
test("Should trigger the onClose() event when the drawer is to be closed", () => {
const items = [
{
id: "1",
name: "Table",
group: "Furniture",
image:
"https://i.pinimg.com/originals/7a/42/82/7a4282b44d0b6c5339088454cbc9f8da.png"
}
];
const { container } = render(
);
container.querySelector(".drawerButton")?.click();
container.querySelector(".closeBtn")?.click();
expect(container.querySelectorAll(".closeBtn").length).toBe(0);
});