Skip to content

Commit

Permalink
added some tests
Browse files Browse the repository at this point in the history
  • Loading branch information
vlt1 committed Sep 18, 2020
1 parent 37a0b52 commit 487e19e
Show file tree
Hide file tree
Showing 4 changed files with 133 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ describe('handleResourceData enhancer', () => {
expect(props).toExist();
expect(props.onUpdateLinkedResource).toExist();
expect(props.metadata.name).toBe("TEST");
if (!props.linkedResources) {
if (!props.linkedResources?.thumbnail) {
props.onUpdateLinkedResource("thumbnail", "DATA", "CATEGORY", {tail: "TEST"});
} else {
const thumb = props.linkedResources.thumbnail;
Expand Down Expand Up @@ -79,4 +79,40 @@ describe('handleResourceData enhancer', () => {
}));
ReactDOM.render(<Sink resource={{ name: "TEST", description: "TEST" }} />, document.getElementById("container"));
});
it('handleResourceData with linkedResources details', (done) => {
const Sink = handleResourceData(createSink(props => {
expect(props).toExist();
expect(props.linkedResources).toExist();
expect(props.linkedResources.details).toExist();
expect(props.linkedResources.details.data).toBe('text');
expect(props.linkedResources.details.category).toBe('DETAILS');
done();
}));
ReactDOM.render(<Sink resource={{ name: 'TEST', description: 'TEST' }} linkedResources={{details: {data: 'text', category: 'DETAILS'}}}/>,
document.getElementById('container'));
});
it('handleResourceData with resource with detailsSettings', (done) => {
const Sink = handleResourceData(createSink(props => {
expect(props).toExist();
expect(props.resource).toExist();
expect(props.resource.attributes).toExist();
expect(props.resource.attributes.detailsSettings).toExist();
expect(props.resource.attributes.detailsSettings).toEqual({showAtStartup: true, showAsModal: true});
done();
}));
ReactDOM.render(<Sink resource={{ name: 'TEST', description: 'TEST', attributes: {detailsSettings: '{\"showAtStartup\":true,\"showAsModal\":true}'} }} />,
document.getElementById('container'));
});
it('handleResourceData with resource with invalid detailsSettings', (done) => {
const Sink = handleResourceData(createSink(props => {
expect(props).toExist();
expect(props.resource).toExist();
expect(props.resource.attributes).toExist();
expect(props.resource.attributes.detailsSettings).toExist();
expect(props.resource.attributes.detailsSettings).toEqual({});
done();
}));
ReactDOM.render(<Sink resource={{ name: 'TEST', description: 'TEST', attributes: {detailsSettings: '{\"showAtStartup\":true,\"showAsModal\":true'} }} />,
document.getElementById('container'));
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ export default mapPropsStream(props$ => {
...(props.linkedResources || {}),
details: {
category: 'DETAILS',
data: detailsText
data: detailsText
}
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
*/
const React = require('react');
const { compose, withStateHandlers, withState, branch, withHandlers, renderComponent} = require('recompose');
const {omit, isString} = require('lodash');
const {isString} = require('lodash');
const {set} = require('../../../../utils/ImmutableUtils');
const Message = require('../../../I18N/Message');
const ConfirmDialog = require('../ConfirmModal');
Expand All @@ -19,8 +19,6 @@ const ConfirmDialog = require('../ConfirmModal');
module.exports = compose(
withStateHandlers(
({resource = {}, linkedResources = {}}) => {
console.log('resource', resource, 'linkedResources', linkedResources);

const detailsSettingsString = resource.detailsSettings || resource.attributes?.detailsSettings;
let detailsSettings = {};

Expand Down Expand Up @@ -57,7 +55,7 @@ module.exports = compose(
description: resource.description
},
createdAt: resource.creation,
modifiedAt: resource.lastUpdate,
modifiedAt: resource.lastUpdate
},
linkedResources
};
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
/*
* 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 Details from '../Details';
import { htmlToDraftJSEditorState } from '../../../../../utils/EditorUtils';

describe('Details 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('Details with defaults', () => {
ReactDOM.render(<Details/>, document.getElementById('container'));
const detailsSheet = document.getElementsByClassName('ms-details-sheet')[0];
expect(detailsSheet).toExist();
const buttons = detailsSheet.getElementsByTagName('button');
expect(buttons).toExist();
expect(buttons.length).toBe(1);
});
it('Details with savedDetailsText', () => {
ReactDOM.render(<Details savedDetailsText="text"/>, document.getElementById('container'));
const detailsSheet = document.getElementsByClassName('ms-details-sheet')[0];
expect(detailsSheet).toExist();
const buttons = detailsSheet.getElementsByTagName('button');
expect(buttons).toExist();
expect(buttons.length).toBe(5);
});
it('Details undo sets linkedResource to detailsBackup', () => {
const handlers = {
onUpdateLinkedResource: () => {},
setDetailsBackup: () => {}
};

const updLinkedResourceSpy = expect.spyOn(handlers, 'onUpdateLinkedResource');
const setDetailsBackupSpy = expect.spyOn(handlers, 'setDetailsBackup');

ReactDOM.render(<Details detailsBackup="text" onUpdateLinkedResource={handlers.onUpdateLinkedResource} setDetailsBackup={handlers.setDetailsBackup}/>, document.getElementById('container'));
const detailsSheet = document.getElementsByClassName('ms-details-sheet')[0];
expect(detailsSheet).toExist();
const buttons = detailsSheet.getElementsByTagName('button');
expect(buttons).toExist();
expect(buttons.length).toBe(2);
const undoButton = [buttons[0], buttons[1]].filter(but => but.childNodes[0]?.className?.indexOf('glyphicon-undo') > -1)[0];
expect(undoButton).toExist();

TestUtils.Simulate.click(undoButton);

expect(updLinkedResourceSpy).toHaveBeenCalled();
expect(setDetailsBackupSpy).toHaveBeenCalled();
expect(updLinkedResourceSpy).toHaveBeenCalledWith('details', 'text', 'DETAILS');
});
it('hideDetailsSheet is called on close and save of the Details sheet', () => {
const handlers = {
onHideDetailsSheet: () => {}
};
const onHideDetailsSheetSpy = expect.spyOn(handlers, 'onHideDetailsSheet');

ReactDOM.render(<Details showDetailsSheet editorState={htmlToDraftJSEditorState('')} onHideDetailsSheet={handlers.onHideDetailsSheet}/>, document.getElementById('container'));
const detailsSheet = document.getElementsByClassName('ms-details-sheet')[0];
expect(detailsSheet).toExist();
const sheetModal = document.getElementsByClassName('modal-fixed')[0];
expect(sheetModal).toExist();
const sheetModalFooter = sheetModal.getElementsByClassName('modal-footer')[0];
expect(sheetModalFooter).toExist();
const buttons = sheetModalFooter.getElementsByTagName('button');
expect(buttons).toExist();
expect(buttons.length).toBe(2);

TestUtils.Simulate.click(buttons[0]);

expect(onHideDetailsSheetSpy).toHaveBeenCalled();
expect(onHideDetailsSheetSpy.calls.length).toBe(1);

TestUtils.Simulate.click(buttons[1]);

expect(onHideDetailsSheetSpy.calls.length).toBe(2);
});
});

0 comments on commit 487e19e

Please sign in to comment.