import React from "react";
import { shallow, configure } from "enzyme";
import Adapter from "enzyme-adapter-react-16";
configure({ adapter: new Adapter() });
import { EventLog, mapStateToProps } from "../../app/src/components/EventLog";
describe("EventLog", () => {
const writeTag = jest.fn();
it("renders loading div if events not defined", () => {
const wrapper = shallow();
expect(wrapper.find(".loading")).toHaveLength(1);
expect(wrapper.find(".loading").text()).toMatch("Loading");
});
it("should call writeTag with cmd_ResetAlarms and true on Reset button click", () => {
const wrapper = shallow();
wrapper.find(".reset-button").simulate("click", null);
expect(writeTag).toBeCalledWith("cmd_ResetAlarms", true);
});
describe("event timeline", () => {
let events, wrapper;
beforeEach(() => {
events = [
{ tag: "test", timestamp: new Date(), eventType: "alarm"},
{ tag: "tttt", timestamp: new Date(), eventType: "cmd" }
];
wrapper = shallow();
});
it("should return a Timeline Event for each event", () => {
expect(wrapper.find("TimelineEvent")).toHaveLength(2);
});
it("shows a calendar icon for non-alarm events", () => {
expect(wrapper.find("TimelineEvent").last().html()).toMatch("calendar");
});
it("shows an exclamation triangle for alarm events", () => {
expect(wrapper.find("TimelineEvent").first().html()).toMatch("exclamation-triangle");
});
});
it("should map state to props", () => {
expect(mapStateToProps({ events: "events", extra: "extra" })).toEqual({ events: "events" });
});
});