Skip to content

Commit

Permalink
added tests
Browse files Browse the repository at this point in the history
  • Loading branch information
vlt1 committed Sep 10, 2020
1 parent d54d5fa commit d9dc1de
Show file tree
Hide file tree
Showing 5 changed files with 254 additions and 0 deletions.
16 changes: 16 additions & 0 deletions web/client/components/resources/__tests__/ResourceCard-test.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -125,4 +125,20 @@ describe('This test for ResourceCard', () => {
expect(spyonDelete.calls.length).toEqual(1);

});

it('test resource with icon', () => {
const resource = {
canEdit: true,
name: "test",
description: "testDescription",
icon: '1-map'
};

ReactDOM.render(<ResourceCard resource={resource}/>, document.getElementById('container'));

const icon = document.querySelector('.map-thumb-description + div');
expect(icon).toExist();
const glyph = icon.getElementsByClassName('glyphicon-1-map')[0];
expect(glyph).toExist();
});
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
/*
* Copyright 2020, GeoSolutions Sas.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree.
*/

import React from 'react';
import ReactDOM from 'react-dom';
import expect from 'expect';
import {compose, lifecycle, createSink} from 'recompose';

import handleDetails from '../handleDetails';

const createTestRun = (onMount = () => {}, testFunc = () => {}) => {
let ranMount = false;
const runOnMount = lifecycle({
componentDidMount() {
ranMount = true;
onMount(this.props);
}
});
const testProps = (props) => {
if (ranMount) {
testFunc(props);
}
};
return {runOnMount, testProps};
};

describe('handleDetails enhancer', () => {
beforeEach((done) => {
document.body.innerHTML = '<div id="container"></div>';
setTimeout(done);
});
afterEach((done) => {
ReactDOM.unmountComponentAtNode(document.getElementById("container"));
document.body.innerHTML = '';
setTimeout(done);
});
it('handleDetails handlers', () => {
let run = createTestRun(({onShowDetailsSheet}) => {
expect(onShowDetailsSheet).toExist();
onShowDetailsSheet();
}, ({showDetailsSheet}) => {
expect(showDetailsSheet).toBe(true);
});

let Sink = compose(
handleDetails,
run.runOnMount
)(createSink(run.testProps));
ReactDOM.render(<Sink/>, document.getElementById('container'));

run = createTestRun(({onHideDetailsSheet}) => {
expect(onHideDetailsSheet).toExist();
onHideDetailsSheet();
}, ({showDetailsSheet}) => {
expect(showDetailsSheet).toBe(false);
});

Sink = compose(
handleDetails,
run.runOnMount
)(createSink(run.testProps));
ReactDOM.render(<Sink/>, document.getElementById('container'));
});
it('handleDetails savedDetailsText', () => {
let Sink = handleDetails(createSink(({savedDetailsText}) => expect(savedDetailsText).toBe('text')));
ReactDOM.render(<Sink linkedResources={{details: {data: 'text'}}}/>, document.getElementById('container'));
});
it('handleDetails savedDetailsText when data is NODATA', () => {
let Sink = handleDetails(createSink(({savedDetailsText}) => expect(savedDetailsText).toNotExist()));
ReactDOM.render(<Sink linkedResources={{details: {data: 'NODATA'}}}/>, document.getElementById('container'));
});
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
/*
* Copyright 2020, GeoSolutions Sas.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree.
*/

import React from 'react';
import ReactDOM from 'react-dom';
import expect from 'expect';
import {compose, lifecycle, createSink} from 'recompose';

import handleDetailsRow from '../handleDetailsRow';

const createTestRun = (onMount = () => {}, testFunc = () => {}) => {
let ranMount = false;
const runOnMount = lifecycle({
componentDidMount() {
ranMount = true;
onMount(this.props);
}
});
const testProps = (props) => {
if (ranMount) {
testFunc(props);
}
};
return {runOnMount, testProps};
};

describe('handleDetailsRow enhancer', () => {
beforeEach((done) => {
document.body.innerHTML = '<div id="container"></div>';
setTimeout(done);
});
afterEach((done) => {
ReactDOM.unmountComponentAtNode(document.getElementById("container"));
document.body.innerHTML = '';
setTimeout(done);
});
it('handleDetails handlers', () => {
let run = createTestRun(({onShowPreview}) => {
expect(onShowPreview).toExist();
onShowPreview();
}, ({showPreview}) => {
expect(showPreview).toBe(true);
});

let Sink = compose(
handleDetailsRow,
run.runOnMount
)(createSink(run.testProps));
ReactDOM.render(<Sink/>, document.getElementById('container'));

run = createTestRun(({onHidePreview}) => {
expect(onHidePreview).toExist();
onHidePreview();
}, ({showPreview}) => {
expect(showPreview).toBe(false);
});

Sink = compose(
handleDetailsRow,
run.runOnMount
)(createSink(run.testProps));
ReactDOM.render(<Sink/>, document.getElementById('container'));
});
});

Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
/*
* Copyright 2020, GeoSolutions Sas.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree.
*/

import React from 'react';
import ReactDOM from 'react-dom';
import expect from 'expect';

import DetailsRow from '../DetailsRow';

describe('DetailsRow component', () => {
beforeEach((done) => {
document.body.innerHTML = '<div id="container"></div>';
setTimeout(done);
});
afterEach((done) => {
ReactDOM.unmountComponentAtNode(document.getElementById("container"));
document.body.innerHTML = '';
setTimeout(done);
});
it('DetailsRow with defaults', () => {
ReactDOM.render(<DetailsRow/>, document.getElementById('container'));
const details = document.getElementsByClassName('ms-details-sheet')[0];
expect(details).toExist();
const btnGroup = details.getElementsByTagName('button');
expect(btnGroup.length).toBe(1);
expect(btnGroup[0].getElementsByClassName('glyphicon-pencil-add').length).toBe(1);
});
it('DetailsRow no buttons when loading', () => {
ReactDOM.render(<DetailsRow loading/>, document.getElementById('container'));
const details = document.getElementsByClassName('ms-details-sheet')[0];
expect(details).toExist();
const btnGroup = details.getElementsByTagName('button');
expect(btnGroup.length).toBe(0);
});
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
/*
* Copyright 2020, GeoSolutions Sas.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree.
*/

import React from 'react';
import ReactDOM from 'react-dom';
import TestUtils from 'react-dom/test-utils';
import expect from 'expect';

import DetailsSheet from '../DetailsSheet';

describe('DetailsSheet component', () => {
beforeEach((done) => {
document.body.innerHTML = '<div id="container"></div>';
setTimeout(done);
});
afterEach((done) => {
ReactDOM.unmountComponentAtNode(document.getElementById("container"));
document.body.innerHTML = '';
setTimeout(done);
});
it('DetailsSheet with show and buttons test', () => {
const handlers = {
onClose: () => {},
onSave: () => {}
};

const onCloseSpy = expect.spyOn(handlers, 'onClose');
const onSaveSpy = expect.spyOn(handlers, 'onSave');

ReactDOM.render(<DetailsSheet show onClose={handlers.onClose} onSave={handlers.onSave}/>, document.getElementById('container'));

const detailsEditor = document.getElementById('ms-details-editor');
expect(detailsEditor).toExist();
const buttons = document.querySelectorAll('.modal-footer .btn-group button');
expect(buttons.length).toBe(2);
TestUtils.Simulate.click(buttons[0]);
expect(onCloseSpy).toHaveBeenCalled();
TestUtils.Simulate.click(buttons[1]);
expect(onSaveSpy).toHaveBeenCalled();
});
it('DetailsSheet readOnly', () => {
ReactDOM.render(<DetailsSheet show readOnly/>, document.getElementById('container'));
const buttons = document.querySelectorAll('.modal-footer .btn-group button');
expect(buttons.length).toBe(0);
});
});

0 comments on commit d9dc1de

Please sign in to comment.