import React from "react";
import Enzyme, { shallow } from "enzyme";
import Adapter from "enzyme-adapter-react-16";
import { ItemList } from "../../../src/components/compendium/item-list";
import { ItemFactory } from "../../../factories/item-factory";
Enzyme.configure({ adapter: new Adapter() });
class ItemListPageObject {
private component;
constructor(component) {
this.component = component;
}
items() {
return this.component.find('[data-qa-target="item-list-item"]');
}
searchField() {
return this.component.find('[data-qa-target="item-list-search-field"]');
}
}
const items = [
ItemFactory.build({
name: "Foo"
}),
ItemFactory.build({
name: "Bar"
}),
ItemFactory.build({
name: "Baz"
})
];
describe("ItemList", () => {
test("renders", () => {
const list = shallow();
expect(list.exists()).toBe(true);
});
test("renders all items", () => {
const list = shallow();
const pageObject = new ItemListPageObject(list);
const listItems = pageObject.items();
expect(listItems).toHaveLength(3);
});
test("searches items", () => {
const list = shallow();
const pageObject = new ItemListPageObject(list);
pageObject
.searchField()
.simulate("change", { target: { value: "Ba" } });
expect(pageObject.items()).toHaveLength(2);
});
});