import React from "react";
import { screen, render, act } from "@testing-library/react";
import { BasicTestUpload } from "./TestComponents";
import userEvent from "@testing-library/user-event";
test("Sets response headers into an object", async () => {
global.xhrListener = jest.fn();
render();
//upload a file into the input
const file = new File(["hello"], "hello.png", { type: "image/png" });
userEvent.upload(screen.getByLabelText("upload"), file);
//wait for the next tick
await act(() => new Promise((resolve) => setTimeout(resolve, 0)));
expect(global.xhrListener.mock.calls[1][0]).toEqual("load");
expect(screen.queryByText("done")).toEqual(null);
//call the load method on the xhr mock
act(() => global.xhrListener.mock.calls[1][1]());
expect(screen.getByText("The test response header")).toBeTruthy();
});
test("Sets request headers from options object", async () => {
global.xhrRequestHeader = jest.fn();
render(
);
//upload a file into the input
const file = new File(["hello"], "hello.png", { type: "image/png" });
userEvent.upload(screen.getByLabelText("upload"), file);
//wait for the next tick
await act(() => new Promise((resolve) => setTimeout(resolve, 0)));
expect(global.xhrRequestHeader.mock.calls[0][0]).toEqual("yo");
expect(global.xhrRequestHeader.mock.calls[0][1]).toEqual("awesome");
expect(global.xhrRequestHeader.mock.calls[1][0]).toEqual("another");
expect(global.xhrRequestHeader.mock.calls[1][1]).toEqual("cool");
});