zarm
Version:
基于 React 的移动端UI库
47 lines (44 loc) • 2.22 kB
JavaScript
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
import { render, screen } from '@testing-library/react';
import React from 'react';
import ConfigProvider, { ConfigContext, defaultConfig } from '../ConfigProvider';
var customRender = function customRender(ui, _ref) {
var providerProps = _ref.providerProps,
renderOptions = _objectWithoutProperties(_ref, ["providerProps"]);
return render( /*#__PURE__*/React.createElement(ConfigProvider, providerProps, ui), renderOptions);
};
describe('ConfigProvider', function () {
test('should provide default context config via default props', function () {
customRender( /*#__PURE__*/React.createElement(ConfigContext.Consumer, null, function (value) {
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", {
"data-testid": "prefixCls"
}, value.prefixCls), /*#__PURE__*/React.createElement("span", {
"data-testid": "safeArea"
}, value.safeArea ? 1 : 0));
}), {
providerProps: {}
});
expect(screen.getByTestId('prefixCls').textContent).toEqual(defaultConfig.prefixCls);
expect(document.body.getAttribute('data-theme')).toEqual(defaultConfig.theme);
expect(!!+screen.getByTestId('safeArea').textContent).toEqual(defaultConfig.safeArea);
});
test('should custum the value from context provider', function () {
customRender( /*#__PURE__*/React.createElement(ConfigContext.Consumer, null, function (value) {
return /*#__PURE__*/React.createElement("span", null, "theme: ", value.theme);
}), {
providerProps: {
theme: 'dark'
}
});
expect(document.body.getAttribute('data-theme')).toEqual('dark');
});
test('should throw error if children has more than one child', function () {
var errorSpy = jest.spyOn(console, 'error').mockImplementation(function () {
return 'silence';
});
expect(function () {
return render( /*#__PURE__*/React.createElement(ConfigProvider, null, /*#__PURE__*/React.createElement("span", null, "child 1"), /*#__PURE__*/React.createElement("span", null, "child 2")));
}).toThrow();
expect(errorSpy).toBeCalled();
});
});