improved reindexing to reindex in background
new button to cleanup gravity
This commit is contained in:
@ -16,9 +16,6 @@ class MovieSettings extends React.Component {
|
||||
}
|
||||
|
||||
componentDidMount() {
|
||||
if (this.myinterval) {
|
||||
clearInterval(this.myinterval);
|
||||
}
|
||||
this.myinterval = setInterval(this.updateStatus, 1000);
|
||||
}
|
||||
|
||||
@ -29,9 +26,12 @@ class MovieSettings extends React.Component {
|
||||
render() {
|
||||
return (
|
||||
<>
|
||||
<button disabled={this.state.startbtnDisabled} className='reindexbtn btn btn-success' onClick={() => {
|
||||
this.startReindex()
|
||||
}}>Reindex Movies
|
||||
<button disabled={this.state.startbtnDisabled}
|
||||
className='btn btn-success'
|
||||
onClick={() => {this.startReindex()}}>Reindex Movie
|
||||
</button>
|
||||
<button className='btn btn-warning'
|
||||
onClick={() => {this.cleanupGravity()}}>Cleanup Gravity
|
||||
</button>
|
||||
<div className={style.indextextarea}>{this.state.text.map(m => (
|
||||
<div className='textarea-element'>{m}</div>
|
||||
@ -50,13 +50,19 @@ class MovieSettings extends React.Component {
|
||||
this.setState({startbtnDisabled: true});
|
||||
|
||||
console.log("starting");
|
||||
const updateRequest = new FormData();
|
||||
const request = new FormData();
|
||||
request.append("action", "startReindex");
|
||||
// fetch all videos available
|
||||
fetch('/api/extractvideopreviews.php', {method: 'POST', body: updateRequest})
|
||||
.then((response) => response.text()
|
||||
fetch('/api/settings.php', {method: 'POST', body: request})
|
||||
.then((response) => response.json()
|
||||
.then((result) => {
|
||||
// todo 2020-07-4: some kind of return finished handler
|
||||
console.log("returned");
|
||||
console.log(result);
|
||||
if (result.success) {
|
||||
console.log("started successfully");
|
||||
} else {
|
||||
console.log("error, reindex already running");
|
||||
this.setState({startbtnDisabled: true});
|
||||
}
|
||||
}))
|
||||
.catch(() => {
|
||||
console.log("no connection to backend");
|
||||
@ -71,8 +77,10 @@ class MovieSettings extends React.Component {
|
||||
* This interval function reloads the current status of reindexing from backend
|
||||
*/
|
||||
updateStatus = () => {
|
||||
const updateRequest = new FormData();
|
||||
fetch('/api/extractionData.php', {method: 'POST', body: updateRequest})
|
||||
const request = new FormData();
|
||||
request.append("action", "getStatusMessage");
|
||||
|
||||
fetch('/api/settings.php', {method: 'POST', body: request})
|
||||
.then((response) => response.json()
|
||||
.then((result) => {
|
||||
if (result.contentAvailable === true) {
|
||||
@ -94,6 +102,25 @@ class MovieSettings extends React.Component {
|
||||
console.log("no connection to backend");
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* send request to cleanup db gravity
|
||||
*/
|
||||
cleanupGravity() {
|
||||
const request = new FormData();
|
||||
request.append("action", "cleanupGravity");
|
||||
|
||||
fetch('/api/settings.php', {method: 'POST', body: request})
|
||||
.then((response) => response.text()
|
||||
.then((result) => {
|
||||
this.setState({
|
||||
text: ['successfully cleaned up gravity!']
|
||||
});
|
||||
}))
|
||||
.catch(() => {
|
||||
console.log("no connection to backend");
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
export default MovieSettings;
|
||||
|
@ -9,5 +9,5 @@
|
||||
overflow-x: auto;
|
||||
overflow-y: scroll;
|
||||
padding: 10px;
|
||||
width: 50%;
|
||||
width: 40%;
|
||||
}
|
||||
|
@ -22,15 +22,33 @@ describe('<MovieSettings/>', function () {
|
||||
});
|
||||
|
||||
it('test simulate reindex', function () {
|
||||
global.fetch = global.prepareFetchApi({});
|
||||
global.fetch = global.prepareFetchApi({success: true});
|
||||
const wrapper = shallow(<MovieSettings/>);
|
||||
|
||||
wrapper.find(".reindexbtn").simulate("click");
|
||||
wrapper.find("button").findWhere(e => e.text() === "Reindex Movie" && e.type() === "button").simulate("click");
|
||||
|
||||
// initial send of reindex request to server
|
||||
expect(global.fetch).toBeCalledTimes(1);
|
||||
});
|
||||
|
||||
it('test failing reindex start', done => {
|
||||
global.fetch = global.prepareFetchApi({success: false});
|
||||
const wrapper = shallow(<MovieSettings/>);
|
||||
|
||||
wrapper.find("button").findWhere(e => e.text() === "Reindex Movie" && e.type() === "button").simulate("click");
|
||||
|
||||
// initial send of reindex request to server
|
||||
expect(global.fetch).toBeCalledTimes(1);
|
||||
|
||||
process.nextTick(() => {
|
||||
// reindex already running --> so disable startbdn
|
||||
expect(wrapper.state()).toMatchObject({startbtnDisabled: true});
|
||||
|
||||
global.fetch.mockClear();
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('content available received and in state', done => {
|
||||
global.fetch = global.prepareFetchApi({
|
||||
contentAvailable: true,
|
||||
@ -51,4 +69,44 @@ describe('<MovieSettings/>', function () {
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('test reindex with no content available', done=> {
|
||||
global.fetch = global.prepareFetchApi({
|
||||
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 startbtn to be reenabled
|
||||
expect(wrapper.state()).toMatchObject({startbtnDisabled: false});
|
||||
|
||||
global.fetch.mockClear();
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('test simulate gravity cleanup', done => {
|
||||
global.fetch = global.prepareFetchApi("mmi");
|
||||
const wrapper = shallow(<MovieSettings/>);
|
||||
wrapper.instance().setState = jest.fn(),
|
||||
|
||||
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);
|
||||
|
||||
process.nextTick(() => {
|
||||
expect(wrapper.instance().setState).toBeCalledTimes(1);
|
||||
|
||||
global.fetch.mockClear();
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
@ -18,6 +18,7 @@ global.prepareFetchApi = (response) => {
|
||||
const mockJsonPromise = Promise.resolve(response);
|
||||
const mockFetchPromise = Promise.resolve({
|
||||
json: () => mockJsonPromise,
|
||||
text: () => mockJsonPromise
|
||||
});
|
||||
return (jest.fn().mockImplementation(() => mockFetchPromise));
|
||||
}
|
||||
|
Reference in New Issue
Block a user