adui
Version:
<div> <img src="https://wxa.wxs.qq.com/mpweb/delivery/legacy/wxadtouch/upload/t1/od834zef_52939fc6.png" style="margin:40px 0 0 -8px; background-color: #fcfcfc; box-shadow: none;" /> </div>
175 lines (144 loc) • 21.8 kB
JavaScript
;
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
var _react = _interopRequireWildcard(require("react"));
var _enzyme = require("enzyme");
var _reactTestRenderer = _interopRequireDefault(require("react-test-renderer"));
var _ = _interopRequireDefault(require(".."));
var _testUtils = require("react-dom/test-utils");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
var ColorPickerMounter = function (_Component) {
_inherits(ColorPickerMounter, _Component);
var _super = _createSuper(ColorPickerMounter);
function ColorPickerMounter() {
var _this;
_classCallCheck(this, ColorPickerMounter);
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
_this = _super.call.apply(_super, [this].concat(args));
_this.state = {
value: "#07C160"
};
return _this;
}
_createClass(ColorPickerMounter, [{
key: "render",
value: function render() {
var _this2 = this;
var value = this.state.value;
return _react["default"].createElement(_["default"], _extends({
value: value,
onChange: function onChange(val) {
return _this2.setState({
value: val
});
}
}, this.props));
}
}]);
return ColorPickerMounter;
}(_react.Component);
describe("ColorPicker", function () {
beforeAll(function () {
jest.useFakeTimers();
});
afterAll(function () {
jest.useRealTimers();
});
it("是否正确渲染", function () {
var wrapper = _reactTestRenderer["default"].create(_react["default"].createElement(_["default"], {
defaultValue: "#07C160"
}));
expect(wrapper).toMatchSnapshot();
});
it("是否能处理小写值的情况", function () {
var wrapper = (0, _enzyme.mount)(_react["default"].createElement(_["default"], {
defaultValue: "#07c160"
}));
var value = wrapper.find(".adui-cp").at(0).props()["data-value"];
var inputValue = wrapper.find("Input").at(0).props().value;
expect(inputValue === "07C160" && value === "#07C160").toBe(true);
});
it("内部驱动", function () {
var wrapper = (0, _enzyme.mount)(_react["default"].createElement(_["default"], {
defaultValue: "#07C160"
}));
wrapper.find("button").simulate("click");
wrapper.find(".adui-cp-standard i").at(0).simulate("click");
var value = wrapper.find(".adui-cp").at(0).props()["data-value"];
var inputValue = wrapper.find("Input").at(0).props().value;
expect(inputValue === "FFFFFF" && value === "#FFFFFF").toBe(true);
wrapper.find("input").at(0).simulate("change", {
target: {
value: "F0F0F0"
}
});
var value1 = wrapper.find(".adui-cp").at(0).props()["data-value"];
var inputValue1 = wrapper.find("Input").at(0).props().value;
expect(inputValue1 === "F0F0F0" && value1 === "#F0F0F0").toBe(true);
});
it("外部控制", function () {
var wrapper = (0, _enzyme.mount)(_react["default"].createElement(ColorPickerMounter, null));
wrapper.find("button").simulate("click");
(0, _testUtils.act)(function () {
wrapper.find(".adui-cp-standard i").at(0).simulate("click");
jest.runAllTimers();
wrapper.update();
var value = wrapper.find(".adui-cp").at(0).props()["data-value"];
var inputValue = wrapper.find("Input").at(0).props().value;
expect(inputValue === "FFFFFF" && value === "#FFFFFF" && wrapper.state().value === "#FFFFFF").toBe(true);
});
wrapper.find("input").at(0).simulate("change", {
target: {
value: "F0F0F0"
}
});
var value1 = wrapper.find(".adui-cp").at(0).props()["data-value"];
var inputValue1 = wrapper.find("Input").at(0).props().value;
expect(inputValue1 === "F0F0F0" && value1 === "#F0F0F0" && wrapper.state().value === "#F0F0F0").toBe(true);
});
it("禁用态", function () {
var wrapper = (0, _enzyme.mount)(_react["default"].createElement(_["default"], {
defaultValue: "#07C160",
disabled: true
}));
wrapper.find("button").simulate("click");
expect(wrapper.find("Popover").props().visible).toBe(false);
});
it("popupResultVisible", function () {
var wrapper0 = (0, _enzyme.mount)(_react["default"].createElement(_["default"], {
defaultValue: "#07C160"
}));
var wrapper1 = (0, _enzyme.mount)(_react["default"].createElement(_["default"], {
defaultValue: "#07C160",
popupResultVisible: false
}));
wrapper0.find("button").simulate("click");
wrapper1.find("button").simulate("click");
expect(wrapper0.find("input")).toHaveLength(2);
expect(wrapper1.find("input")).toHaveLength(1);
});
it("handlePrefixClick 验证", function () {
var wrapper = (0, _enzyme.mount)(_react["default"].createElement(_["default"], {
defaultValue: "#07C160"
}));
wrapper.find(".adui-cp-prefix").simulate("click");
wrapper.find("button").simulate("click");
jest.advanceTimersByTime(50);
wrapper.find(".adui-cp-prefix").at(1).simulate("click");
});
});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDb2xvclBpY2tlck1vdW50ZXIiLCJzdGF0ZSIsInZhbHVlIiwidmFsIiwic2V0U3RhdGUiLCJwcm9wcyIsIkNvbXBvbmVudCIsImRlc2NyaWJlIiwiYmVmb3JlQWxsIiwiamVzdCIsInVzZUZha2VUaW1lcnMiLCJhZnRlckFsbCIsInVzZVJlYWxUaW1lcnMiLCJpdCIsIndyYXBwZXIiLCJUZXN0UmVuZGVyZXIiLCJjcmVhdGUiLCJleHBlY3QiLCJ0b01hdGNoU25hcHNob3QiLCJtb3VudCIsImZpbmQiLCJhdCIsImlucHV0VmFsdWUiLCJ0b0JlIiwic2ltdWxhdGUiLCJ0YXJnZXQiLCJ2YWx1ZTEiLCJpbnB1dFZhbHVlMSIsImFjdCIsInJ1bkFsbFRpbWVycyIsInVwZGF0ZSIsInZpc2libGUiLCJ3cmFwcGVyMCIsIndyYXBwZXIxIiwidG9IYXZlTGVuZ3RoIiwiYWR2YW5jZVRpbWVyc0J5VGltZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2NvbXBvbmVudHMvY29sb3ItcGlja2VyL19fdGVzdHNfXy9pbmRleC50ZXN0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSAqL1xuaW1wb3J0IFJlYWN0LCB7IENvbXBvbmVudCB9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgeyBtb3VudCB9IGZyb20gXCJlbnp5bWVcIlxuaW1wb3J0IFRlc3RSZW5kZXJlciBmcm9tIFwicmVhY3QtdGVzdC1yZW5kZXJlclwiXG4vLyBpbXBvcnQgeyBhY3QgfSBmcm9tIFwicmVhY3QtZG9tL3Rlc3QtdXRpbHNcIlxuaW1wb3J0IENvbG9yUGlja2VyIGZyb20gXCIuLlwiXG5pbXBvcnQgeyBhY3QgfSBmcm9tIFwicmVhY3QtZG9tL3Rlc3QtdXRpbHNcIlxuXG5jbGFzcyBDb2xvclBpY2tlck1vdW50ZXIgZXh0ZW5kcyBDb21wb25lbnQge1xuICBzdGF0ZSA9IHtcbiAgICB2YWx1ZTogXCIjMDdDMTYwXCIsXG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3QgeyB2YWx1ZSB9ID0gdGhpcy5zdGF0ZVxuICAgIHJldHVybiAoXG4gICAgICA8Q29sb3JQaWNrZXJcbiAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICBvbkNoYW5nZT17KHZhbCkgPT4gdGhpcy5zZXRTdGF0ZSh7IHZhbHVlOiB2YWwgfSl9XG4gICAgICAgIHsuLi50aGlzLnByb3BzfVxuICAgICAgLz5cbiAgICApXG4gIH1cbn1cblxuZGVzY3JpYmUoXCJDb2xvclBpY2tlclwiLCAoKSA9PiB7XG4gIGJlZm9yZUFsbCgoKSA9PiB7XG4gICAgamVzdC51c2VGYWtlVGltZXJzKClcbiAgfSlcblxuICBhZnRlckFsbCgoKSA9PiB7XG4gICAgamVzdC51c2VSZWFsVGltZXJzKClcbiAgfSlcblxuICBpdChcIuaYr+WQpuato+ehrua4suafk1wiLCAoKSA9PiB7XG4gICAgY29uc3Qgd3JhcHBlciA9IFRlc3RSZW5kZXJlci5jcmVhdGUoPENvbG9yUGlja2VyIGRlZmF1bHRWYWx1ZT1cIiMwN0MxNjBcIiAvPilcbiAgICBleHBlY3Qod3JhcHBlcikudG9NYXRjaFNuYXBzaG90KClcbiAgfSlcblxuICBpdChcIuaYr+WQpuiDveWkhOeQhuWwj+WGmeWAvOeahOaDheWGtVwiLCAoKSA9PiB7XG4gICAgY29uc3Qgd3JhcHBlciA9IG1vdW50KDxDb2xvclBpY2tlciBkZWZhdWx0VmFsdWU9XCIjMDdjMTYwXCIgLz4pXG4gICAgY29uc3QgdmFsdWUgPSB3cmFwcGVyLmZpbmQoXCIuYWR1aS1jcFwiKS5hdCgwKS5wcm9wcygpW1wiZGF0YS12YWx1ZVwiXVxuICAgIGNvbnN0IGlucHV0VmFsdWUgPSB3cmFwcGVyLmZpbmQoXCJJbnB1dFwiKS5hdCgwKS5wcm9wcygpLnZhbHVlXG4gICAgZXhwZWN0KGlucHV0VmFsdWUgPT09IFwiMDdDMTYwXCIgJiYgdmFsdWUgPT09IFwiIzA3QzE2MFwiKS50b0JlKHRydWUpXG4gIH0pXG5cbiAgaXQoXCLlhoXpg6jpqbHliqhcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHdyYXBwZXIgPSBtb3VudCg8Q29sb3JQaWNrZXIgZGVmYXVsdFZhbHVlPVwiIzA3QzE2MFwiIC8+KVxuICAgIHdyYXBwZXIuZmluZChcImJ1dHRvblwiKS5zaW11bGF0ZShcImNsaWNrXCIpXG4gICAgd3JhcHBlci5maW5kKFwiLmFkdWktY3Atc3RhbmRhcmQgaVwiKS5hdCgwKS5zaW11bGF0ZShcImNsaWNrXCIpXG4gICAgY29uc3QgdmFsdWUgPSB3cmFwcGVyLmZpbmQoXCIuYWR1aS1jcFwiKS5hdCgwKS5wcm9wcygpW1wiZGF0YS12YWx1ZVwiXVxuICAgIGNvbnN0IGlucHV0VmFsdWUgPSB3cmFwcGVyLmZpbmQoXCJJbnB1dFwiKS5hdCgwKS5wcm9wcygpLnZhbHVlXG4gICAgZXhwZWN0KGlucHV0VmFsdWUgPT09IFwiRkZGRkZGXCIgJiYgdmFsdWUgPT09IFwiI0ZGRkZGRlwiKS50b0JlKHRydWUpXG5cbiAgICB3cmFwcGVyXG4gICAgICAuZmluZChcImlucHV0XCIpXG4gICAgICAuYXQoMClcbiAgICAgIC5zaW11bGF0ZShcImNoYW5nZVwiLCB7IHRhcmdldDogeyB2YWx1ZTogXCJGMEYwRjBcIiB9IH0pXG5cbiAgICBjb25zdCB2YWx1ZTEgPSB3cmFwcGVyLmZpbmQoXCIuYWR1aS1jcFwiKS5hdCgwKS5wcm9wcygpW1wiZGF0YS12YWx1ZVwiXVxuICAgIGNvbnN0IGlucHV0VmFsdWUxID0gd3JhcHBlci5maW5kKFwiSW5wdXRcIikuYXQoMCkucHJvcHMoKS52YWx1ZVxuICAgIGV4cGVjdChpbnB1dFZhbHVlMSA9PT0gXCJGMEYwRjBcIiAmJiB2YWx1ZTEgPT09IFwiI0YwRjBGMFwiKS50b0JlKHRydWUpXG4gIH0pXG5cbiAgaXQoXCLlpJbpg6jmjqfliLZcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHdyYXBwZXIgPSBtb3VudCg8Q29sb3JQaWNrZXJNb3VudGVyIC8+KVxuXG4gICAgd3JhcHBlci5maW5kKFwiYnV0dG9uXCIpLnNpbXVsYXRlKFwiY2xpY2tcIilcbiAgICBhY3QoKCkgPT4ge1xuICAgICAgd3JhcHBlci5maW5kKFwiLmFkdWktY3Atc3RhbmRhcmQgaVwiKS5hdCgwKS5zaW11bGF0ZShcImNsaWNrXCIpXG4gICAgICBqZXN0LnJ1bkFsbFRpbWVycygpXG4gICAgICB3cmFwcGVyLnVwZGF0ZSgpXG4gICAgICBjb25zdCB2YWx1ZSA9IHdyYXBwZXIuZmluZChcIi5hZHVpLWNwXCIpLmF0KDApLnByb3BzKClbXCJkYXRhLXZhbHVlXCJdXG4gICAgICBjb25zdCBpbnB1dFZhbHVlID0gd3JhcHBlci5maW5kKFwiSW5wdXRcIikuYXQoMCkucHJvcHMoKS52YWx1ZVxuICAgICAgZXhwZWN0KFxuICAgICAgICBpbnB1dFZhbHVlID09PSBcIkZGRkZGRlwiICYmXG4gICAgICAgICAgdmFsdWUgPT09IFwiI0ZGRkZGRlwiICYmXG4gICAgICAgICAgd3JhcHBlci5zdGF0ZSgpLnZhbHVlID09PSBcIiNGRkZGRkZcIlxuICAgICAgKS50b0JlKHRydWUpXG4gICAgfSlcbiAgICB3cmFwcGVyXG4gICAgICAuZmluZChcImlucHV0XCIpXG4gICAgICAuYXQoMClcbiAgICAgIC5zaW11bGF0ZShcImNoYW5nZVwiLCB7IHRhcmdldDogeyB2YWx1ZTogXCJGMEYwRjBcIiB9IH0pXG4gICAgY29uc3QgdmFsdWUxID0gd3JhcHBlci5maW5kKFwiLmFkdWktY3BcIikuYXQoMCkucHJvcHMoKVtcImRhdGEtdmFsdWVcIl1cbiAgICBjb25zdCBpbnB1dFZhbHVlMSA9IHdyYXBwZXIuZmluZChcIklucHV0XCIpLmF0KDApLnByb3BzKCkudmFsdWVcbiAgICBleHBlY3QoXG4gICAgICBpbnB1dFZhbHVlMSA9PT0gXCJGMEYwRjBcIiAmJlxuICAgICAgICB2YWx1ZTEgPT09IFwiI0YwRjBGMFwiICYmXG4gICAgICAgIHdyYXBwZXIuc3RhdGUoKS52YWx1ZSA9PT0gXCIjRjBGMEYwXCJcbiAgICApLnRvQmUodHJ1ZSlcbiAgfSlcblxuICBpdChcIuemgeeUqOaAgVwiLCAoKSA9PiB7XG4gICAgY29uc3Qgd3JhcHBlciA9IG1vdW50KDxDb2xvclBpY2tlciBkZWZhdWx0VmFsdWU9XCIjMDdDMTYwXCIgZGlzYWJsZWQgLz4pXG4gICAgd3JhcHBlci5maW5kKFwiYnV0dG9uXCIpLnNpbXVsYXRlKFwiY2xpY2tcIilcbiAgICBleHBlY3Qod3JhcHBlci5maW5kKFwiUG9wb3ZlclwiKS5wcm9wcygpLnZpc2libGUpLnRvQmUoZmFsc2UpXG4gIH0pXG5cbiAgaXQoXCJwb3B1cFJlc3VsdFZpc2libGVcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHdyYXBwZXIwID0gbW91bnQoPENvbG9yUGlja2VyIGRlZmF1bHRWYWx1ZT1cIiMwN0MxNjBcIiAvPilcbiAgICBjb25zdCB3cmFwcGVyMSA9IG1vdW50KFxuICAgICAgPENvbG9yUGlja2VyIGRlZmF1bHRWYWx1ZT1cIiMwN0MxNjBcIiBwb3B1cFJlc3VsdFZpc2libGU9e2ZhbHNlfSAvPlxuICAgIClcbiAgICB3cmFwcGVyMC5maW5kKFwiYnV0dG9uXCIpLnNpbXVsYXRlKFwiY2xpY2tcIilcbiAgICB3cmFwcGVyMS5maW5kKFwiYnV0dG9uXCIpLnNpbXVsYXRlKFwiY2xpY2tcIilcbiAgICBleHBlY3Qod3JhcHBlcjAuZmluZChcImlucHV0XCIpKS50b0hhdmVMZW5ndGgoMilcbiAgICBleHBlY3Qod3JhcHBlcjEuZmluZChcImlucHV0XCIpKS50b0hhdmVMZW5ndGgoMSlcbiAgfSlcblxuICBpdChcImhhbmRsZVByZWZpeENsaWNrIOmqjOivgVwiLCAoKSA9PiB7XG4gICAgY29uc3Qgd3JhcHBlciA9IG1vdW50KDxDb2xvclBpY2tlciBkZWZhdWx0VmFsdWU9XCIjMDdDMTYwXCIgLz4pXG4gICAgd3JhcHBlci5maW5kKFwiLmFkdWktY3AtcHJlZml4XCIpLnNpbXVsYXRlKFwiY2xpY2tcIilcbiAgICB3cmFwcGVyLmZpbmQoXCJidXR0b25cIikuc2ltdWxhdGUoXCJjbGlja1wiKVxuICAgIGplc3QuYWR2YW5jZVRpbWVyc0J5VGltZSg1MClcbiAgICB3cmFwcGVyLmZpbmQoXCIuYWR1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