decentraland-ui
Version:
Decentraland's UI components and styles
139 lines (138 loc) • 5.31 kB
JavaScript
;
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var react_1 = __importDefault(require("react"));
var react_2 = require("@testing-library/react");
var ArrayFilter_1 = require("./ArrayFilter");
function renderArrayFilter(props) {
if (props === void 0) { props = {}; }
return (0, react_2.render)(react_1.default.createElement(ArrayFilter_1.ArrayFilter, __assign({ values: [], options: [], onChange: jest.fn() }, props)));
}
var renderedComponent;
describe('when rendering the component without a name', function () {
beforeEach(function () {
renderedComponent = renderArrayFilter();
});
it("should not the component's header", function () {
var queryByTestId = renderedComponent.queryByTestId;
expect(queryByTestId('array-filter-header')).not.toBeInTheDocument();
});
});
describe('when rendering the component with a name', function () {
var name;
beforeEach(function () {
name = 'a name';
renderedComponent = renderArrayFilter({ name: name });
});
it("should show the component's header with the provided name", function () {
var getByTestId = renderedComponent.getByTestId;
var header = getByTestId('array-filter-header');
expect(header).toBeInTheDocument();
expect(header).toHaveTextContent(name);
});
});
describe('when clicking on non-selected options', function () {
var preSelectedOptions;
var options;
var onChangeMock;
beforeEach(function () {
onChangeMock = jest.fn();
options = [
{ text: 'Mainnet', value: 'mainnet' },
{ text: 'Rinkeby', value: 'rinkeby' },
{ text: 'Mumbai', value: 'mumbai' }
];
preSelectedOptions = ['mainnet', 'rinkeby'];
renderedComponent = renderArrayFilter({
options: options,
values: preSelectedOptions,
onChange: onChangeMock
});
});
it('should call onChange callback with the added selected option', function () {
react_2.fireEvent.click(renderedComponent.getByText('Mumbai'));
expect(onChangeMock).toHaveBeenCalledWith(['mainnet', 'rinkeby', 'mumbai']);
});
});
describe('when clicking on a selected option', function () {
var preSelectedOptions;
var options;
var onChangeMock;
beforeEach(function () {
onChangeMock = jest.fn();
options = [
{ text: 'Mainnet', value: 'mainnet' },
{ text: 'Rinkeby', value: 'rinkeby' },
{ text: 'Mumbai', value: 'mumbai' }
];
preSelectedOptions = ['mainnet', 'rinkeby'];
renderedComponent = renderArrayFilter({
options: options,
values: preSelectedOptions,
onChange: onChangeMock
});
});
it('should call onChange callback with the removed selected option', function () {
react_2.fireEvent.click(renderedComponent.getByText('Rinkeby'));
expect(onChangeMock).toHaveBeenCalledWith(['mainnet']);
});
});
describe('when down pressing a key on non-selected options', function () {
var preSelectedOptions;
var options;
var onChangeMock;
beforeEach(function () {
onChangeMock = jest.fn();
options = [
{ text: 'Mainnet', value: 'mainnet' },
{ text: 'Rinkeby', value: 'rinkeby' },
{ text: 'Mumbai', value: 'mumbai' }
];
preSelectedOptions = ['mainnet', 'rinkeby'];
renderedComponent = renderArrayFilter({
options: options,
values: preSelectedOptions,
onChange: onChangeMock
});
});
it('should call onChange callback with the added selected option', function () {
react_2.fireEvent.keyDown(renderedComponent.getByText('Mumbai'), { key: 'Enter' });
expect(onChangeMock).toHaveBeenCalledWith(['mainnet', 'rinkeby', 'mumbai']);
});
});
describe('when down pressing a key on a selected option', function () {
var preSelectedOptions;
var options;
var onChangeMock;
beforeEach(function () {
onChangeMock = jest.fn();
options = [
{ text: 'Mainnet', value: 'mainnet' },
{ text: 'Rinkeby', value: 'rinkeby' },
{ text: 'Mumbai', value: 'mumbai' }
];
preSelectedOptions = ['mainnet', 'rinkeby'];
renderedComponent = renderArrayFilter({
options: options,
values: preSelectedOptions,
onChange: onChangeMock
});
});
it('should call onChange callback with the removed selected option', function () {
react_2.fireEvent.keyDown(renderedComponent.getByText('Rinkeby'), { key: 'Enter' });
expect(onChangeMock).toHaveBeenCalledWith(['mainnet']);
});
});