improve insertion of reindex messages -- prevent empty string lines and add key prop to every new line
This commit is contained in:
@ -1,6 +1,7 @@
|
||||
import {shallow} from 'enzyme';
|
||||
import React from 'react';
|
||||
import MovieSettings from './MovieSettings';
|
||||
import {callAPI} from "../../utils/Api";
|
||||
|
||||
describe('<MovieSettings/>', function () {
|
||||
it('renders without crashing ', function () {
|
||||
@ -49,64 +50,79 @@ describe('<MovieSettings/>', function () {
|
||||
});
|
||||
});
|
||||
|
||||
it('content available received and in state', done => {
|
||||
global.fetch = global.prepareFetchApi({
|
||||
it('content available received and in state', () => {
|
||||
const wrapper = shallow(<MovieSettings/>);
|
||||
|
||||
callAPIMock({
|
||||
contentAvailable: true,
|
||||
message: 'firstline\nsecondline'
|
||||
});
|
||||
const wrapper = shallow(<MovieSettings/>);
|
||||
})
|
||||
|
||||
wrapper.instance().updateStatus();
|
||||
|
||||
process.nextTick(() => {
|
||||
expect(wrapper.state()).toMatchObject({
|
||||
text: [
|
||||
'firstline',
|
||||
'secondline'
|
||||
]
|
||||
});
|
||||
|
||||
global.fetch.mockClear();
|
||||
done();
|
||||
expect(wrapper.state()).toMatchObject({
|
||||
text: [
|
||||
'firstline',
|
||||
'secondline'
|
||||
]
|
||||
});
|
||||
});
|
||||
|
||||
it('test reindex with no content available', done => {
|
||||
global.fetch = global.prepareFetchApi({
|
||||
it('test reindex with no content available', () => {
|
||||
callAPIMock({
|
||||
contentAvailable: false
|
||||
});
|
||||
})
|
||||
|
||||
global.clearInterval = jest.fn();
|
||||
|
||||
const wrapper = shallow(<MovieSettings/>);
|
||||
wrapper.instance().updateStatus();
|
||||
|
||||
process.nextTick(() => {
|
||||
// expect the refresh interval to be cleared
|
||||
expect(global.clearInterval).toBeCalledTimes(1);
|
||||
// expect the refresh interval to be cleared
|
||||
expect(global.clearInterval).toBeCalledTimes(1);
|
||||
|
||||
// expect startbtn to be reenabled
|
||||
expect(wrapper.state()).toMatchObject({startbtnDisabled: false});
|
||||
|
||||
global.fetch.mockClear();
|
||||
done();
|
||||
});
|
||||
// expect startbtn to be reenabled
|
||||
expect(wrapper.state()).toMatchObject({startbtnDisabled: false});
|
||||
});
|
||||
|
||||
it('test simulate gravity cleanup', done => {
|
||||
global.fetch = global.prepareFetchApi('mmi');
|
||||
it('test simulate gravity cleanup', () => {
|
||||
// global.fetch = global.prepareFetchApi('mmi');
|
||||
callAPIMock({})
|
||||
const wrapper = shallow(<MovieSettings/>);
|
||||
wrapper.instance().setState = jest.fn(),
|
||||
wrapper.instance().setState = jest.fn();
|
||||
|
||||
wrapper.find('button').findWhere(e => e.text() === 'Cleanup Gravity' && e.type() === 'button').simulate('click');
|
||||
wrapper.find('button').findWhere(e => e.text() === 'Cleanup Gravity' && e.type() === 'button').simulate('click');
|
||||
|
||||
// initial send of reindex request to server
|
||||
expect(global.fetch).toBeCalledTimes(1);
|
||||
expect(callAPI).toBeCalledTimes(1);
|
||||
|
||||
process.nextTick(() => {
|
||||
expect(wrapper.instance().setState).toBeCalledTimes(1);
|
||||
expect(wrapper.instance().setState).toBeCalledTimes(1);
|
||||
});
|
||||
|
||||
global.fetch.mockClear();
|
||||
done();
|
||||
it('test no textDiv insertion if string is empty', function () {
|
||||
const wrapper = shallow(<MovieSettings/>);
|
||||
|
||||
callAPIMock({
|
||||
contentAvailable: true,
|
||||
message: 'test'
|
||||
})
|
||||
|
||||
wrapper.instance().updateStatus();
|
||||
|
||||
expect(wrapper.state()).toMatchObject({
|
||||
text: ['test']
|
||||
});
|
||||
|
||||
// expect an untouched state if we try to add an empty string...
|
||||
callAPIMock({
|
||||
contentAvailable: true,
|
||||
message: ''
|
||||
})
|
||||
|
||||
wrapper.instance().updateStatus();
|
||||
|
||||
expect(wrapper.state()).toMatchObject({
|
||||
text: ['test']
|
||||
});
|
||||
});
|
||||
});
|
||||
|
@ -47,7 +47,7 @@ class MovieSettings extends React.Component<props, state> {
|
||||
onClick={(): void => {this.cleanupGravity();}}>Cleanup Gravity
|
||||
</button>
|
||||
<div className={style.indextextarea}>{this.state.text.map(m => (
|
||||
<div className='textarea-element'>{m}</div>
|
||||
<div key={m} className='textarea-element'>{m}</div>
|
||||
))}</div>
|
||||
</>
|
||||
);
|
||||
@ -85,8 +85,11 @@ class MovieSettings extends React.Component<props, state> {
|
||||
*/
|
||||
updateStatus = (): void => {
|
||||
callAPI(APINode.Settings, {action: 'getStatusMessage'}, (result: SettingsTypes.getStatusMessageType) => {
|
||||
if (result.contentAvailable === true) {
|
||||
if (result.contentAvailable) {
|
||||
// ignore if message is empty
|
||||
console.log(result);
|
||||
if(result.message === '') return;
|
||||
|
||||
// todo 2020-07-4: scroll to bottom of div here
|
||||
this.setState({
|
||||
// insert a string for each line
|
||||
|
Reference in New Issue
Block a user