import * as React from "react";
import { mount } from "enzyme";
import Toast from "../Toast";
import sinon from "sinon";
describe("Component: Toast", () => {
test("renders when called and disappears automatically.", () => {
const clock = sinon.useFakeTimers();
const toast = mount();
Toast.show("Hello there", "success");
expect(toast.state()).toEqual({
text: "Hello there",
show: true,
type: "success"
});
clock.tick(5000);
expect(toast.state("show")).toBeFalsy();
});
test("manually hide toast", () => {
const toast = mount();
Toast.show("Hello there", "success");
expect(toast.state("show")).toBeTruthy();
Toast.hide();
expect(toast.state("show")).toBeFalsy();
});
test("toast show time", () => {
const clock = sinon.useFakeTimers();
const toast = mount();
Toast.show("Hello there", "success");
expect(toast.state()).toEqual({
text: "Hello there",
show: true,
type: "success"
});
clock.tick(10000);
expect(toast.state("show")).toBeFalsy();
});
test("toast.show time argument value is of higher priority than defaultTime prop", () => {
const clock = sinon.useFakeTimers();
const toast = mount();
Toast.show("Hello there", "success", { time: 15000 });
expect(toast.state()).toEqual({
text: "Hello there",
show: true,
type: "success"
});
clock.tick(10000);
expect(toast.state("show")).toBeTruthy();
clock.tick(5000);
expect(toast.state("show")).toBeFalsy();
});
});