rsuite
Version:
A suite of react components
70 lines (54 loc) • 2.51 kB
JavaScript
import React from 'react';
import ReactTestUtils from 'react-dom/test-utils';
import { getDOMNode } from '@test/testUtils';
import DropdownMenuGroup from '../DropdownMenuGroup';
import DropdownMenuItem from '../DropdownMenuItem';
const classPrefix = 'dropdown-menu-group';
const titleClassName = `.${classPrefix}-title`;
describe('picker - DropdownMenuGroup', () => {
it('Should output a `menu-item-group`', () => {
const Title = 'Title';
const instance = getDOMNode(<DropdownMenuGroup title="title">{Title}</DropdownMenuGroup>);
assert.equal(instance.className, classPrefix);
assert.equal(instance.querySelector(`.${classPrefix}-children`).innerText, Title);
});
it('Should have a title', () => {
const instance = getDOMNode(<DropdownMenuGroup title={<div>title</div>} />);
assert.equal(instance.querySelector(titleClassName).innerText, 'title');
});
it('Should have 2 option', () => {
const instance = getDOMNode(
<DropdownMenuGroup title={<div>title</div>}>
<DropdownMenuItem classPrefix="rs-dropdown-item">1</DropdownMenuItem>
<DropdownMenuItem classPrefix="rs-dropdown-item">2</DropdownMenuItem>
</DropdownMenuGroup>
);
assert.equal(instance.querySelectorAll('.rs-dropdown-item').length, 2);
});
it('Should be closed', () => {
const instance = getDOMNode(<DropdownMenuGroup title="title" />);
ReactTestUtils.Simulate.click(instance.querySelector(titleClassName));
assert.ok(instance.className.match(/\bclosed\b/));
});
it('Should call onClick callback when click title', done => {
const doneOp = () => {
done();
};
const instance = getDOMNode(<DropdownMenuGroup title="title" onClick={doneOp} />);
ReactTestUtils.Simulate.click(instance.querySelector(titleClassName));
assert.ok(instance.className.match(/\bclosed\b/));
});
it('Should have a custom className', () => {
const instance = getDOMNode(<DropdownMenuGroup className="custom" title="title" />);
assert.ok(instance.className.match(/\bcustom\b/));
});
it('Should have a custom style', () => {
const fontSize = '12px';
const instance = getDOMNode(<DropdownMenuGroup style={{ fontSize }} title="title" />);
assert.equal(instance.style.fontSize, fontSize);
});
it('Should have a custom className prefix', () => {
const instance = getDOMNode(<DropdownMenuGroup classPrefix="custom-prefix" title="title" />);
assert.ok(instance.className.match(/\bcustom-prefix\b/));
});
});