Skip to content
This repository was archived by the owner on May 17, 2021. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 10 additions & 1 deletion src/components/import-preview/import-preview.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -127,9 +127,18 @@ class ImportPreview extends PureComponent {
};

render() {
if (!this.props.loaded) {
const { loaded, fields, values } = this.props;

if (!loaded) {
debug('Preview unavailable: not loaded yet');
return null;
}

if (!Array.isArray(fields) || !Array.isArray(values)) {
debug('Preview unavailable: Fields or values is not an array', { fields, values });
return null;
}

return (
<div className={style()}>
<div className={style('header')}>Specify Fields and Types</div>
Expand Down
100 changes: 100 additions & 0 deletions src/components/import-preview/import-preview.spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
import React from 'react';
import { mount } from 'enzyme';

import ImportPreview from './';
import createStyler from 'utils/styler.js';
import styles from './import-preview.less';

let onFieldCheckedChangedSpy;
let setFieldTypeSpy;

describe('ImportPreview [Component]', () => {
describe('not loaded', () => {
let component;

before(() => {
onFieldCheckedChangedSpy = sinon.spy();
setFieldTypeSpy = sinon.spy();

component = mount(
<ImportPreview
fields={[['_id']]}
values={[[1]]}
loaded={false}
onFieldCheckedChanged={onFieldCheckedChangedSpy}
setFieldType={setFieldTypeSpy}
/>
);
});

it('should not render', () => {
const style = createStyler(styles, 'import-preview');
expect(component.find(`.${style()}`)).to.not.be.present();
});

after(() => {
component = null;
onFieldCheckedChangedSpy = null;
setFieldTypeSpy = null;
});
});
describe('no fields', () => {
let component;

before(() => {
onFieldCheckedChangedSpy = sinon.spy();
setFieldTypeSpy = sinon.spy();

component = mount(
<ImportPreview
fields={null}
values={[[1, 2]]}
loaded
onFieldCheckedChanged={onFieldCheckedChangedSpy}
setFieldType={setFieldTypeSpy}
/>
);
});

it('should not render', () => {
const style = createStyler(styles, 'import-preview');
expect(component.find(`.${style()}`)).to.not.be.present();
});

after(() => {
component = null;
onFieldCheckedChangedSpy = null;
setFieldTypeSpy = null;
});
});

describe('no fields', () => {
let component;

before(() => {
onFieldCheckedChangedSpy = sinon.spy();
setFieldTypeSpy = sinon.spy();

component = mount(
<ImportPreview
fields={[['_id']]}
values={null}
loaded
onFieldCheckedChanged={onFieldCheckedChangedSpy}
setFieldType={setFieldTypeSpy}
/>
);
});

it('should not render', () => {
const style = createStyler(styles, 'import-preview');
expect(component.find(`.${style()}`)).to.not.be.present();
});

after(() => {
component = null;
onFieldCheckedChangedSpy = null;
setFieldTypeSpy = null;
});
});
});
2 changes: 1 addition & 1 deletion src/modules/import.js
Original file line number Diff line number Diff line change
Expand Up @@ -367,7 +367,7 @@ const loadPreviewDocs = (
* actually need it.
*/
const source = fs.createReadStream(fileName, {encoding: 'utf8', end: 20 * 1024});
const dest = createPreviewWritable();
const dest = createPreviewWritable(fileType, delimiter, fileIsMultilineJSON);
stream.pipeline(
source,
createPeekStream(fileType, delimiter, fileIsMultilineJSON),
Expand Down