-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathcontext.test.js
65 lines (52 loc) · 1.5 KB
/
context.test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
import React from 'react';
import { StaticKitProvider, useStaticKit } from '../src';
import ReactDOM from 'react-dom';
import ReactTestUtils from 'react-dom/test-utils';
import { createClient } from '@statickit/core';
import { ErrorBoundary } from './helpers';
jest.mock('@statickit/core');
const { act } = ReactTestUtils;
let container;
beforeEach(() => {
container = document.createElement('div');
document.body.appendChild(container);
});
afterEach(() => {
document.body.removeChild(container);
container = null;
});
it('instantiates a client and provides it via useStaticKit hook', () => {
createClient.mockImplementation(() => ({
startBrowserSession: () => {},
name: 'Client'
}));
const Component = () => {
const client = useStaticKit();
return <div id="client">{client.name}</div>;
};
const Page = ({ site }) => {
return (
<StaticKitProvider site={site}>
<Component />
</StaticKitProvider>
);
};
act(() => {
ReactDOM.render(<Page site="xxx" />, container);
});
expect(container.querySelector('#client').textContent).toBe('Client');
});
it('throws an error if site prop is not provided', () => {
// Mock error console to suppress noise in output
console.error = jest.fn();
act(() => {
ReactDOM.render(
<ErrorBoundary>
<StaticKitProvider></StaticKitProvider>
</ErrorBoundary>,
container
);
});
const error = container.querySelector('#error');
expect(error.textContent).toBe('site is required');
});