@applicaster/zapp-react-native-utils
Version:
Applicaster Zapp React Native utilities package
73 lines (59 loc) • 2.04 kB
JavaScript
jest.mock("react", () => ({
...jest.requireActual("react"),
createContext: jest.fn(() => ({
Provider: jest.fn(),
Consumer: jest.fn(),
})),
}));
const { createContext } = require("../index");
const mockedProvider = jest.fn();
const mockedWithConsumer = jest.fn();
const mockedWithProvider = jest.fn();
jest.mock("../provider", () => ({
createProvider: jest.fn(() => mockedProvider),
}));
jest.mock("../withConsumer", () => ({
createWithConsumerDecorator: jest.fn(() => mockedWithConsumer),
}));
jest.mock("../withProvider", () => ({
createWithProviderDecorator: jest.fn(() => mockedWithProvider),
}));
const initialContext = { foo: "bar" };
describe("createContext - when React has the new context API", () => {
const React = require("react");
const { createProvider } = require("../provider");
const { createWithConsumerDecorator } = require("../withConsumer");
const { createWithProviderDecorator } = require("../withProvider");
const Context = createContext(initialContext);
it("uses the react API", () => {
expect(React.createContext).toHaveBeenCalledWith(
expect.objectContaining({
foo: "bar",
setFoo: expect.any(Function),
})
);
});
it("creates the provider component", () => {
expect(createProvider).toHaveBeenCalledWith(
expect.objectContaining({
ReactContext: expect.objectContaining({
Provider: expect.any(Function),
Consumer: expect.any(Function),
}),
initialContext,
contextPropertiesNames: ["foo"],
contextSettersNames: ["setFoo"],
stateValidator: expect.any(Function),
})
);
});
it("creates the consumer decorator", () => {
expect(createWithConsumerDecorator).toHaveBeenCalledWith(Context.Consumer);
});
it("creates the provider decorator", () => {
expect(createWithProviderDecorator).toHaveBeenCalledWith(Context.Provider);
});
it("returns the components and the decorators", () => {
expect(Context).toMatchSnapshot();
});
});