import { mount } from "enzyme";
import * as React from "react";
import * as flushPromises from "flush-promises";
import ReactMarkdown = require("react-markdown");
import { Redirect } from "react-router";
import { SharedViewComponent } from "~Documents/SharedView";
import { LoadingStub } from "~LoadingStub";
import { fetchSharedDoc } from "~redux/api/docs";
import { IDocumentEntry } from "~redux/docs/reducer";
import { IDocumentJSON } from "../../../../src/entity/Document";
const testDoc: IDocumentJSON = {
name: "not changed",
content: "not changed",
id: 1,
user: 1,
createdAt: 0,
editedAt: 0,
shared: false,
};
jest.mock("~redux/api/docs");
jest.mock("react-router");
describe("", () => {
afterEach(() => {
jest.restoreAllMocks();
});
it("should redirect if the user's the same", async () => {
(fetchSharedDoc as any).mockReturnValue(
Promise.resolve({ error: null, data: testDoc }),
);
(Redirect as any).mockReturnValue(
test
);
const wrapper = mount(
,
);
// async componentDidMount creates some problems
await flushPromises();
wrapper.update();
expect(wrapper.find(Redirect)).toHaveLength(1);
});
it("shouldn't redirect if the user's different", async () => {
(fetchSharedDoc as any).mockReturnValue(
Promise.resolve({ error: null, data: testDoc }),
);
(Redirect as any).mockReturnValue(test
);
const wrapper = mount(
,
);
// async componentDidMount creates some problems
await flushPromises();
wrapper.update();
expect(wrapper.find(Redirect)).toHaveLength(0);
expect(wrapper.find(ReactMarkdown)).toHaveLength(1);
});
it("should show an error if there's one", async () => {
const testError = "Not Found";
(fetchSharedDoc as any).mockReturnValue(
Promise.resolve({ error: testError, data: null }),
);
(Redirect as any).mockReturnValue(test
);
const wrapper = mount(
,
);
// async componentDidMount creates some problems
await flushPromises();
wrapper.update();
expect(wrapper.contains(testError)).toBeTruthy();
});
});