/
index.server.test.tsx
56 lines (48 loc) · 1.42 KB
/
index.server.test.tsx
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
/**
* @jest-environment node
*/
import {createElement as h} from 'react';
import {renderToStaticMarkup} from 'react-dom/server';
import {Provider, Consumer} from '..';
describe('<BatterySensor> SSR', () => {
it('renders without crashing with no value', () => {
const element = (
<Provider name="theme" value={{color: 'red'}}>
<Consumer name="theme">{(theme) => {
return <div>Color is: {theme.color}</div>;
}}</Consumer>
</Provider>
);
const html = renderToStaticMarkup(element);
expect(html).toBe('<div>Color is: red</div>');
});
it('<Provider/> passes context to <Consumer/>', () => {
const value = {foo: 'bar'};
const jsx = h(
Provider,
{name: 'a', value},
h(Consumer, {name: 'a'}, val => {
return h('div', {}, val.foo);
})
);
const html = renderToStaticMarkup(jsx);
expect(html).toBe('<div>bar</div>');
});
it('multiple <Provider/> contexts received by multiple <Consumer/>s', () => {
const jsx = h(
Provider,
{name: 'a', value: {foo1: 'bar'}},
h(
Provider,
{name: 'b', value: {foo2: 'bar2'}},
h(Consumer, {name: 'b'}, val1 => {
return h(Consumer, {name: 'a'}, val2 => {
return h('div', {}, val1.foo2 + val2.foo1);
});
})
)
);
const html = renderToStaticMarkup(jsx);
expect(html).toBe('<div>bar2bar</div>');
});
});