rsuite
Version:
A suite of react components
118 lines (104 loc) • 3.85 kB
JavaScript
import React from 'react';
import ReactTestUtils from 'react-dom/test-utils';
import { getDOMNode, getInstance } from '@test/testUtils';
import UploadFileItem from '../UploadFileItem';
let file = {
fileKey: 'a',
name: 'a',
progress: 0,
status: 'inited'
};
describe('UploadFileItem', () => {
it('Should output a UploadFileItem', () => {
const instance = getDOMNode(<UploadFileItem file={file} />);
assert.include(instance.className, 'rs-uploader-file-item');
});
it('Should render picture-text for layout', () => {
const instance = getInstance(<UploadFileItem listType="picture-text" file={file} />);
assert.include(getDOMNode(instance).className, 'rs-uploader-file-item-picture-text');
assert.ok(
ReactTestUtils.scryRenderedDOMComponentsWithClass(instance, 'rs-uploader-file-item-panel')
);
assert.ok(
ReactTestUtils.findRenderedDOMComponentWithClass(instance, 'rs-uploader-file-item-progress')
);
});
it('Should render picture for layout', () => {
const instance = getInstance(<UploadFileItem listType="picture" file={file} />);
assert.include(getDOMNode(instance).className, 'rs-uploader-file-item-picture');
assert.equal(
ReactTestUtils.scryRenderedDOMComponentsWithClass(instance, 'rs-uploader-file-item-panel')
.length,
0
);
assert.equal(
ReactTestUtils.scryRenderedDOMComponentsWithClass(instance, 'rs-uploader-file-item-progress')
.length,
0
);
});
it('Should be disabled', () => {
const instance = getDOMNode(<UploadFileItem file={file} disabled />);
assert.include(instance.className, 'rs-uploader-file-item-disabled');
});
it('Should call onCancel callback', done => {
const doneOp = () => {
done();
};
const instance = getDOMNode(<UploadFileItem file={file} onCancel={doneOp} />);
ReactTestUtils.Simulate.click(instance.querySelector('.rs-uploader-file-item-btn-remove'));
});
it('Should not render remove button', () => {
const instance = getDOMNode(<UploadFileItem file={file} removable={false} />);
assert.ok(!instance.querySelector('.rs-uploader-file-item-btn-remove'));
});
it('Should call onPreview callback', done => {
const doneOp = () => {
done();
};
const instance = getDOMNode(
<UploadFileItem file={file} onPreview={doneOp} listType="picture-text" />
);
ReactTestUtils.Simulate.click(instance.querySelector('.rs-uploader-file-item-title'));
});
it('Should call onReupload callback', done => {
const doneOp = () => {
done();
};
const instance = getDOMNode(
<UploadFileItem
file={{
...file,
status: 'error'
}}
onReupload={doneOp}
/>
);
ReactTestUtils.Simulate.click(instance.querySelector('.rs-uploader-file-item-icon-reupload'));
});
it('Should have a custom className', () => {
const instance = getDOMNode(<UploadFileItem file={file} className="custom" />);
assert.include(instance.className, 'custom');
});
it('Should output a custom file name', () => {
const instance = getDOMNode(
<UploadFileItem
file={file}
className="custom"
renderFileInfo={file => {
return <div className="file-info">{file.name}</div>;
}}
/>
);
assert.include(instance.querySelector('.file-info').innerText, 'a');
});
it('Should have a custom style', () => {
const fontSize = '12px';
const instance = getDOMNode(<UploadFileItem file={file} style={{ fontSize }} />);
assert.equal(instance.style.fontSize, fontSize);
});
it('Should have a custom className prefix', () => {
const instance = getDOMNode(<UploadFileItem file={file} classPrefix="custom-prefix" />);
assert.ok(instance.className.match(/\bcustom-prefix\b/));
});
});