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>
116 lines (107 loc) • 16 kB
JavaScript
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
import React, { useState } from "react";
import { render, mount } from "enzyme";
import TestRenderer from "react-test-renderer";
import * as sinon from "sinon";
import Table from "..";
window.ResizeObserver = window.ResizeObserver || jest.fn().mockImplementation(function () {
return {
disconnect: jest.fn(),
observe: jest.fn(),
unobserve: jest.fn()
};
});
var Column = Table.Column;
var filters = [{
text: "朋友圈广告",
value: "1"
}, {
text: "公众号广告",
value: "2"
}];
var FilterMounter = function FilterMounter() {
var _useState = useState(null),
_useState2 = _slicedToArray(_useState, 2),
filteredValue = _useState2[0],
set = _useState2[1];
return React.createElement(Table, {
dataSource: [{
filter: "filter"
}]
}, React.createElement(Column, {
title: "\u7B5B\u9009",
dataIndex: "filter",
filters: filters,
filteredValue: filteredValue,
onFilter: function onFilter(argFilteredValue) {
return set(argFilteredValue);
}
}));
};
describe("筛选功能", function () {
beforeEach(function () {
jest.useFakeTimers();
});
afterEach(function () {
jest.useRealTimers();
});
it("onFilter 不能与 onSort 共用", function () {
var stub = sinon.stub(console, "error");
render(React.createElement(Table, null, React.createElement(Table.Column, {
title: "title",
onFilter: function onFilter() {},
onSort: function onSort() {}
})));
expect(stub.calledOnce).toEqual(true);
stub.restore();
});
it("是否正确渲染", function () {
var onFilter = jest.fn();
var wrapper = TestRenderer.create(React.createElement(Table, {
dataSource: [{
filter: "filter"
}]
}, React.createElement(Column, {
title: "\u7B5B\u9009",
dataIndex: "filter",
filters: filters,
onFilter: onFilter
})));
expect(wrapper).toMatchSnapshot();
});
it("是否能够内部驱动", function () {
var onFilter = jest.fn();
var wrapper = mount(React.createElement(Table, {
dataSource: [{
filter: "filter"
}]
}, React.createElement(Column, {
title: "\u7B5B\u9009",
dataIndex: "filter",
filters: filters,
onFilter: onFilter
})));
var th = wrapper.find("[role='columnheader']").at(0);
th.simulate("click");
var dropdownWrapper = mount(wrapper.find("Trigger").instance().getComponent());
dropdownWrapper.find("label").at(1).simulate("click");
expect(onFilter).toHaveBeenCalledWith(["1"]);
dropdownWrapper.find("label").at(2).simulate("click");
expect(onFilter).toHaveBeenCalledWith(["2"]);
dropdownWrapper.find("label").at(0).simulate("click");
});
it("是否能够外部控制", function () {
var wrapper = mount(React.createElement(FilterMounter, null));
var th = wrapper.find("[role='columnheader']").at(0);
th.simulate("click");
var dropdownWrapper = mount(wrapper.find("Trigger").instance().getComponent());
dropdownWrapper.find("label").at(0).simulate("click");
expect(wrapper.find(".adui-table-filter").at(0).props()["data-value"]).toEqual(["all"]);
});
});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZVN0YXRlIiwicmVuZGVyIiwibW91bnQiLCJUZXN0UmVuZGVyZXIiLCJzaW5vbiIsIlRhYmxlIiwid2luZG93IiwiUmVzaXplT2JzZXJ2ZXIiLCJqZXN0IiwiZm4iLCJtb2NrSW1wbGVtZW50YXRpb24iLCJkaXNjb25uZWN0Iiwib2JzZXJ2ZSIsInVub2JzZXJ2ZSIsIkNvbHVtbiIsImZpbHRlcnMiLCJ0ZXh0IiwidmFsdWUiLCJGaWx0ZXJNb3VudGVyIiwiZmlsdGVyZWRWYWx1ZSIsInNldCIsImZpbHRlciIsImFyZ0ZpbHRlcmVkVmFsdWUiLCJkZXNjcmliZSIsImJlZm9yZUVhY2giLCJ1c2VGYWtlVGltZXJzIiwiYWZ0ZXJFYWNoIiwidXNlUmVhbFRpbWVycyIsIml0Iiwic3R1YiIsImNvbnNvbGUiLCJleHBlY3QiLCJjYWxsZWRPbmNlIiwidG9FcXVhbCIsInJlc3RvcmUiLCJvbkZpbHRlciIsIndyYXBwZXIiLCJjcmVhdGUiLCJ0b01hdGNoU25hcHNob3QiLCJ0aCIsImZpbmQiLCJhdCIsInNpbXVsYXRlIiwiZHJvcGRvd25XcmFwcGVyIiwiaW5zdGFuY2UiLCJnZXRDb21wb25lbnQiLCJ0b0hhdmVCZWVuQ2FsbGVkV2l0aCIsInByb3BzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vY29tcG9uZW50cy90YWJsZS9fX3Rlc3RzX18vZmlsdGVyLnRlc3QudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgeyByZW5kZXIsIG1vdW50IH0gZnJvbSBcImVuenltZVwiXG5pbXBvcnQgVGVzdFJlbmRlcmVyIGZyb20gXCJyZWFjdC10ZXN0LXJlbmRlcmVyXCJcbmltcG9ydCAqIGFzIHNpbm9uIGZyb20gXCJzaW5vblwiXG5pbXBvcnQgVGFibGUgZnJvbSBcIi4uXCJcblxud2luZG93LlJlc2l6ZU9ic2VydmVyID1cbiAgd2luZG93LlJlc2l6ZU9ic2VydmVyIHx8XG4gIGplc3QuZm4oKS5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4gKHtcbiAgICBkaXNjb25uZWN0OiBqZXN0LmZuKCksXG4gICAgb2JzZXJ2ZTogamVzdC5mbigpLFxuICAgIHVub2JzZXJ2ZTogamVzdC5mbigpLFxuICB9KSlcblxuY29uc3QgeyBDb2x1bW4gfSA9IFRhYmxlXG5cbmNvbnN0IGZpbHRlcnMgPSBbXG4gIHtcbiAgICB0ZXh0OiBcIuaci+WPi+WciOW5v+WRilwiLFxuICAgIHZhbHVlOiBcIjFcIixcbiAgfSxcbiAge1xuICAgIHRleHQ6IFwi5YWs5LyX5Y+35bm/5ZGKXCIsXG4gICAgdmFsdWU6IFwiMlwiLFxuICB9LFxuXVxuXG5jb25zdCBGaWx0ZXJNb3VudGVyID0gKCkgPT4ge1xuICBjb25zdCBbZmlsdGVyZWRWYWx1ZSwgc2V0XSA9IHVzZVN0YXRlPGFueT4obnVsbClcblxuICByZXR1cm4gKFxuICAgIDxUYWJsZVxuICAgICAgZGF0YVNvdXJjZT17W1xuICAgICAgICB7XG4gICAgICAgICAgZmlsdGVyOiBcImZpbHRlclwiLFxuICAgICAgICB9LFxuICAgICAgXX1cbiAgICA+XG4gICAgICA8Q29sdW1uXG4gICAgICAgIHRpdGxlPVwi562b6YCJXCJcbiAgICAgICAgZGF0YUluZGV4PVwiZmlsdGVyXCJcbiAgICAgICAgZmlsdGVycz17ZmlsdGVyc31cbiAgICAgICAgZmlsdGVyZWRWYWx1ZT17ZmlsdGVyZWRWYWx1ZX1cbiAgICAgICAgb25GaWx0ZXI9eyhhcmdGaWx0ZXJlZFZhbHVlKSA9PiBzZXQoYXJnRmlsdGVyZWRWYWx1ZSl9XG4gICAgICAvPlxuICAgIDwvVGFibGU+XG4gIClcbn1cblxuZGVzY3JpYmUoXCLnrZvpgInlip/og71cIiwgKCkgPT4ge1xuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBqZXN0LnVzZUZha2VUaW1lcnMoKVxuICB9KVxuXG4gIGFmdGVyRWFjaCgoKSA9PiB7XG4gICAgamVzdC51c2VSZWFsVGltZXJzKClcbiAgfSlcblxuICAvLyBpdChcIm9uRmlsdGVyIFByb3Ag5piv5ZCm6IO96aqM6K+BIGZ1bmN0aW9uXCIsICgpID0+IHtcbiAgLy8gICBjb25zdCBzdHViID0gc2lub24uc3R1Yihjb25zb2xlLCAnZXJyb3InKVxuICAvLyAgIGNvbnN0IHdyYXBwZXIgPSByZW5kZXIoXG4gIC8vICAgICA8VGFibGU+XG4gIC8vICAgICAgIDxUYWJsZS5Db2x1bW5cbiAgLy8gICAgICAgICB0aXRsZT1cInRpdGxlXCJcbiAgLy8gICAgICAgICBvbkZpbHRlcj1cInN0cmluZ1wiXG4gIC8vICAgICAgIC8+XG4gIC8vICAgICA8L1RhYmxlPlxuICAvLyAgIClcbiAgLy8gICBleHBlY3Qoc3R1Yi5jYWxsQ291bnQpLnRvQmUoMSlcbiAgLy8gICAoY29uc29sZSBhcyBJQ29uc29sZSkuZXJyb3IucmVzdG9yZSgpXG4gIC8vIH0pXG5cbiAgaXQoXCJvbkZpbHRlciDkuI3og73kuI4gb25Tb3J0IOWFseeUqFwiLCAoKSA9PiB7XG4gICAgY29uc3Qgc3R1YiA9IHNpbm9uLnN0dWIoY29uc29sZSwgXCJlcnJvclwiKVxuICAgIHJlbmRlcihcbiAgICAgIDxUYWJsZT5cbiAgICAgICAgPFRhYmxlLkNvbHVtbiB0aXRsZT1cInRpdGxlXCIgb25GaWx0ZXI9eygpID0+IHt9fSBvblNvcnQ9eygpID0+IHt9fSAvPlxuICAgICAgPC9UYWJsZT5cbiAgICApXG4gICAgZXhwZWN0KHN0dWIuY2FsbGVkT25jZSkudG9FcXVhbCh0cnVlKVxuICAgIHN0dWIucmVzdG9yZSgpXG4gIH0pXG5cbiAgaXQoXCLmmK/lkKbmraPnoa7muLLmn5NcIiwgKCkgPT4ge1xuICAgIGNvbnN0IG9uRmlsdGVyID0gamVzdC5mbigpXG4gICAgY29uc3Qgd3JhcHBlciA9IFRlc3RSZW5kZXJlci5jcmVhdGUoXG4gICAgICA8VGFibGVcbiAgICAgICAgZGF0YVNvdXJjZT17W1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZpbHRlcjogXCJmaWx0ZXJcIixcbiAgICAgICAgICB9LFxuICAgICAgICBdfVxuICAgICAgPlxuICAgICAgICA8Q29sdW1uXG4gICAgICAgICAgdGl0bGU9XCLnrZvpgIlcIlxuICAgICAgICAgIGRhdGFJbmRleD1cImZpbHRlclwiXG4gICAgICAgICAgZmlsdGVycz17ZmlsdGVyc31cbiAgICAgICAgICBvbkZpbHRlcj17b25GaWx0ZXJ9XG4gICAgICAgIC8+XG4gICAgICA8L1RhYmxlPlxuICAgIClcbiAgICBleHBlY3Qod3JhcHBlcikudG9NYXRjaFNuYXBzaG90KClcbiAgfSlcblxuICBpdChcIuaYr+WQpuiDveWkn+WGhemDqOmpseWKqFwiLCAoKSA9PiB7XG4gICAgY29uc3Qgb25GaWx0ZXIgPSBqZXN0LmZuKClcbiAgICBjb25zdCB3cmFwcGVyID0gbW91bnQoXG4gICAgICA8VGFibGVcbiAgICAgICAgZGF0YVNvdXJjZT17W1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZpbHRlcjogXCJmaWx0ZXJcIixcbiAgICAgICAgICB9LFxuICAgICAgICBdfVxuICAgICAgPlxuICAgICAgICA8Q29sdW1uXG4gICAgICAgICAgdGl0bGU9XCLnrZvpgIlcIlxuICAgICAgICAgIGRhdGFJbmRleD1cImZpbHRlclwiXG4gICAgICAgICAgZmlsdGVycz17ZmlsdGVyc31cbiAgICAgICAgICBvbkZpbHRlcj17b25GaWx0ZXJ9XG4gICAgICAgIC8+XG4gICAgICA8L1RhYmxlPlxuICAgIClcbiAgICBjb25zdCB0aCA9IHdyYXBwZXIuZmluZChcIltyb2xlPSdjb2x1bW5oZWFkZXInXVwiKS5hdCgwKVxuICAgIHRoLnNpbXVsYXRlKFwiY2xpY2tcIilcbiAgICBjb25zdCBkcm9wZG93bldyYXBwZXIgPSBtb3VudChcbiAgICAgIHdyYXBwZXIuZmluZChcIlRyaWdnZXJcIikuaW5zdGFuY2UoKS5nZXRDb21wb25lbnQoKVxuICAgIClcbiAgICBkcm9wZG93bldyYXBwZXIuZmluZChcImxhYmVsXCIpLmF0KDEpLnNpbXVsYXRlKFwiY2xpY2tcIilcbiAgICAvLyBleHBlY3QoXG4gICAgLy8gICB3cmFwcGVyXG4gICAgLy8gICAgIC5maW5kKFwiLmFkdWktdGFibGUtZmlsdGVyXCIpXG4gICAgLy8gICAgIC5hdCgwKVxuICAgIC8vICAgICAucHJvcHMoKVtcImRhdGEtdmFsdWVcIl1cbiAgICAvLyApLnRvRXF1YWwoW1wiMVwiXSlcbiAgICBleHBlY3Qob25GaWx0ZXIpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFtcIjFcIl0pXG4gICAgZHJvcGRvd25XcmFwcGVyLmZpbmQoXCJsYWJlbFwiKS5hdCgyKS5zaW11bGF0ZShcImNsaWNrXCIpXG4gICAgLy8gZXhwZWN0KFxuICAgIC8vICAgd3JhcHBlclxuICAgIC8vICAgICAuZmluZChcIi5hZHVpLXRhYmxlLWZpbHRlclwiKVxuICAgIC8vICAgICAuYXQoMClcbiAgICAvLyAgICAgLnByb3BzKClbXCJkYXRhLXZhbHVlXCJdXG4gICAgLy8gKS50b0VxdWFsKFtcIjJcIl0pXG4gICAgZXhwZWN0KG9uRmlsdGVyKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChbXCIyXCJdKVxuICAgIC8qKlxuICAgICAqIOS4jeefpemBk+S4uuS7gOS5iOi/m+S4jeWIsOi/meS4qumAu+i+kemHjO+8jOWvvOiHtCBUYWJsZUZpbHRlciDnmoQgU3RhdGVtZW50cyDkuI3og70gMTAwJVxuICAgICAqIGlmIChmaWx0ZXJlZFZhbHVlID09PSBcImFsbFwiKSB7XG4gICAgICogICAgICBvbkZpbHRlcihbXSlcbiAgICAgKiB9XG4gICAgICovXG4gICAgZHJvcGRvd25XcmFwcGVyLmZpbmQoXCJsYWJlbFwiKS5hdCgwKS5zaW11bGF0ZShcImNsaWNrXCIpXG4gICAgLy8gamVzdC5ydW5BbGxUaW1lcnMoKVxuICB9KVxuXG4gIGl0KFwi5piv5ZCm6IO95aSf5aSW6YOo5o6n5Yi2XCIsICgpID0+IHtcbiAgICBjb25zdCB3cmFwcGVyID0gbW91bnQoPEZpbHRlck1vdW50ZXIgLz4pXG4gICAgY29uc3QgdGggPSB3cmFwcGVyLmZpbmQoXCJbcm9sZT0nY29sdW1uaGVhZGVyJ11cIikuYXQoMClcbiAgICB0aC5zaW11bGF0ZShcImNsaWNrXCIpXG4gICAgY29uc3QgZHJvcGRvd25XcmFwcGVyID0gbW91bnQoXG4gICAgICB3cmFwcGVyLmZpbmQoXCJUcmlnZ2VyXCIpLmluc3RhbmNlKCkuZ2V0Q29tcG9uZW50KClcbiAgICApXG4gICAgZHJvcGRvd25XcmFwcGVyLmZpbmQoXCJsYWJlbFwiKS5hdCgwKS5zaW11bGF0ZShcImNsaWNrXCIpXG4gICAgZXhwZWN0KFxuICAgICAgd3JhcHBlci5maW5kKFwiLmFkdWktdGFibGUtZmlsdGVyXCIpLmF0KDApLnByb3BzKClbXCJkYXRhLXZhbHVlXCJdXG4gICAgKS50b0VxdWFsKFtcImFsbFwiXSlcbiAgICAvLyBkcm9wZG93bldyYXBwZXJcbiAgICAvLyAgIC5maW5kKFwibGFiZWxcIilcbiAgICAvLyAgIC5hdCgyKVxuICAgIC8vICAgLnNpbXVsYXRlKFwiY2xpY2tcIilcbiAgICAvLyBleHBlY3QoXG4gICAgLy8gICB3cmFwcGVyXG4gICAgLy8gICAgIC5maW5kKFwiLmFkdWktdGFibGUtZmlsdGVyXCIpXG4gICAgLy8gICAgIC5hdCgwKVxuICAgIC8vICAgICAucHJvcHMoKVtcImRhdGEtdmFsdWVcIl1cbiAgICAvLyApLnRvRXF1YWwoW1wiMlwiXSlcbiAgfSlcbn0pXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLE9BQU9BLEtBQVAsSUFBZ0JDLFFBQWhCLFFBQWdDLE9BQWhDO0FBQ0EsU0FBU0MsTUFBVCxFQUFpQkMsS0FBakIsUUFBOEIsUUFBOUI7QUFDQSxPQUFPQyxZQUFQLE1BQXlCLHFCQUF6QjtBQUNBLE9BQU8sS0FBS0MsS0FBWixNQUF1QixPQUF2QjtBQUNBLE9BQU9DLEtBQVAsTUFBa0IsSUFBbEI7QUFFQUMsTUFBTSxDQUFDQyxjQUFQLEdBQ0VELE1BQU0sQ0FBQ0MsY0FBUCxJQUNBQyxJQUFJLENBQUNDLEVBQUwsR0FBVUMsa0JBQVYsQ0FBNkI7RUFBQSxPQUFPO0lBQ2xDQyxVQUFVLEVBQUVILElB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