1import React from 'react';
2import { Platform, View as NativeView } from 'react-native';
3import renderer from 'react-test-renderer';
4
5import { createDevView } from '../createDevView';
6
7export const View = createDevView(NativeView);
8
9const originalConsoleError = console.error;
10const originalConsoleWarn = console.warn;
11
12beforeEach(() => {
13  console.error = jest.fn();
14  console.warn = jest.fn();
15});
16afterAll(() => {
17  console.error = originalConsoleError;
18  console.warn = originalConsoleWarn;
19});
20
21it(`renders`, () => {
22  // Ensure no errors
23  renderer
24    .create(
25      <View>
26        <View />
27      </View>
28    )
29    .toJSON();
30});
31
32it(`asserts react-dom elements`, () => {
33  const instance = (
34    <View>
35      <div />
36    </View>
37  );
38  if (Platform.OS === 'web') {
39    // Ensure no errors
40    expect(() => renderer.create(instance)).not.toThrowError();
41  } else {
42    expect(() => renderer.create(instance)).toThrowError(/Using unsupported React DOM element/);
43  }
44});
45
46it(`warns about unwrapped strings`, () => {
47  // Ensure no errors
48  expect(renderer.create(<View>Hey</View>).toJSON()).toMatchSnapshot();
49
50  expect(console.warn).toHaveBeenCalledTimes(1);
51});
52