Ensure that Utilities(Backup/Restore/Maintenence/Import-Export) should not be started

if binary path is wrong and also added 'Stop Process' button to cancel the process.
This commit is contained in:
Akshay Joshi
2018-10-22 12:35:21 +05:30
parent 370df47042
commit 6bc6bc7f60
49 changed files with 731 additions and 101 deletions

View File

@@ -8,6 +8,8 @@
//////////////////////////////////////////////////////////////
import {BackupDialog} from '../../../pgadmin/tools/backup/static/js/backup_dialog';
import {TreeFake} from '../tree/tree_fake';
import MockAdapter from 'axios-mock-adapter';
import axios from 'axios/index';
const context = describe;
@@ -93,7 +95,9 @@ describe('BackupDialog', () => {
});
describe('#draw', () => {
let networkMock;
beforeEach(() => {
networkMock = new MockAdapter(axios);
alertifySpy = jasmine.createSpyObj('alertify', ['alert', 'dialog']);
alertifySpy['backup_objects'] = jasmine.createSpy('backup_objects');
backupDialog = new BackupDialog(
@@ -106,6 +110,10 @@ describe('BackupDialog', () => {
pgBrowser.get_preference = jasmine.createSpy('get_preferences');
});
afterEach(() => {
networkMock.restore();
});
context('there are no ancestors of the type server', () => {
it('does not create a dialog', () => {
pgBrowser.treeMenu.selectNode([{id: 'root'}]);
@@ -183,19 +191,27 @@ describe('BackupDialog', () => {
alertifySpy['backup_objects'].and
.returnValue(backupDialogResizeToSpy);
pgBrowser.get_preference.and.returnValue({value: '/some/path'});
spyOn(backupDialog, 'url_for_utility_exists').and.returnValue('/backup/utility_exists/10/objects');
networkMock.onGet('/backup/utility_exists/10/objects').reply(200, {'success': 1});
});
it('displays the dialog', () => {
it('displays the dialog', (done) => {
backupDialog.draw(null, [{id: 'serverTreeNode'}], null);
expect(alertifySpy['backup_objects']).toHaveBeenCalledWith(true);
expect(backupDialogResizeToSpy.resizeTo).toHaveBeenCalledWith('60%', '50%');
setTimeout(() => {
expect(alertifySpy['backup_objects']).toHaveBeenCalledWith(true);
expect(backupDialogResizeToSpy.resizeTo).toHaveBeenCalledWith('60%', '50%');
done();
}, 0);
});
context('database label contain "="', () => {
it('should create alert dialog with backup error', () => {
it('should create alert dialog with backup error', (done) => {
backupDialog.draw(null, [{id: 'database_with_equal_in_name'}], null);
expect(alertifySpy.alert).toHaveBeenCalledWith('Backup Error',
'Databases with = symbols in the name cannot be backed up or restored using this utility.');
setTimeout(() => {
expect(alertifySpy.alert).toHaveBeenCalledWith('Backup Error',
'Databases with = symbols in the name cannot be backed up or restored using this utility.');
done();
}, 0);
});
});
});

View File

@@ -385,7 +385,7 @@ describe('BackupDialogWrapper', () => {
networkMock.onPost('/backup/job/10').reply((request) => {
dataSentToServer = request.data;
return [200, {}];
return [200, {'success': 1}];
});
});
@@ -485,7 +485,7 @@ describe('BackupDialogWrapper', () => {
networkMock.onPost('/backup/job/10/object').reply((request) => {
dataSentToServer = request.data;
return [200, {}];
return [200, {'success': 1}];
});
});

View File

@@ -8,6 +8,8 @@
//////////////////////////////////////////////////////////////
import {BackupDialog} from '../../../pgadmin/tools/backup/static/js/backup_dialog';
import {TreeFake} from '../tree/tree_fake';
import MockAdapter from 'axios-mock-adapter';
import axios from 'axios/index';
const context = describe;
@@ -48,7 +50,9 @@ describe('GlobalServerBackupDialog', () => {
});
describe('#draw', () => {
let networkMock;
beforeEach(() => {
networkMock = new MockAdapter(axios);
alertifySpy = jasmine.createSpyObj('alertify', ['alert', 'dialog']);
alertifySpy['BackupDialog_globals'] = jasmine.createSpy('BackupDialog_globals');
alertifySpy['BackupDialog_server'] = jasmine.createSpy('BackupDialog_server');
@@ -62,6 +66,10 @@ describe('GlobalServerBackupDialog', () => {
pgBrowser.get_preference = jasmine.createSpy('get_preferences');
});
afterEach(() => {
networkMock.restore();
});
context('there are no ancestors of the type server', () => {
it('does not create a dialog', () => {
pgBrowser.treeMenu.selectNode([{id: 'level1'}]);
@@ -144,21 +152,29 @@ describe('GlobalServerBackupDialog', () => {
alertifySpy['BackupDialog_server'].and
.returnValue(serverResizeToSpy);
pgBrowser.get_preference.and.returnValue({value: '/some/path'});
spyOn(backupDialog, 'url_for_utility_exists').and.returnValue('/backup/utility_exists/10/servers');
networkMock.onGet('/backup/utility_exists/10/servers').reply(200, {'success': 1});
});
context('dialog for global backup', () => {
it('displays the dialog', () => {
it('displays the dialog', (done) => {
backupDialog.draw(null, [serverTreeNode], {globals: true});
expect(alertifySpy['BackupDialog_globals']).toHaveBeenCalledWith(true);
expect(globalResizeToSpy.resizeTo).toHaveBeenCalledWith('60%', '50%');
setTimeout(() => {
expect(alertifySpy['BackupDialog_globals']).toHaveBeenCalledWith(true);
expect(globalResizeToSpy.resizeTo).toHaveBeenCalledWith('60%', '50%');
done();
}, 0);
});
});
context('dialog for server backup', () => {
it('displays the dialog', () => {
it('displays the dialog', (done) => {
backupDialog.draw(null, [serverTreeNode], {server: true});
expect(alertifySpy['BackupDialog_server']).toHaveBeenCalledWith(true);
expect(serverResizeToSpy.resizeTo).toHaveBeenCalledWith('60%', '50%');
setTimeout(() => {
expect(alertifySpy['BackupDialog_server']).toHaveBeenCalledWith(true);
expect(serverResizeToSpy.resizeTo).toHaveBeenCalledWith('60%', '50%');
done();
}, 0);
});
});
});

View File

@@ -8,6 +8,8 @@
//////////////////////////////////////////////////////////////
import {TreeFake} from '../tree/tree_fake';
import {RestoreDialog} from '../../../pgadmin/tools/restore/static/js/restore_dialog';
import MockAdapter from 'axios-mock-adapter';
import axios from 'axios/index';
const context = describe;
@@ -81,7 +83,9 @@ describe('RestoreDialog', () => {
});
describe('#draw', () => {
let networkMock;
beforeEach(() => {
networkMock = new MockAdapter(axios);
alertifySpy = jasmine.createSpyObj('alertify', ['alert', 'dialog']);
alertifySpy['pg_restore'] = jasmine.createSpy('pg_restore');
restoreDialog = new RestoreDialog(
@@ -94,6 +98,10 @@ describe('RestoreDialog', () => {
pgBrowser.get_preference = jasmine.createSpy('get_preferences');
});
afterEach(() => {
networkMock.restore();
});
context('there are no ancestors of the type server', () => {
it('does not create a dialog', () => {
pgBrowser.treeMenu.selectNode([{id: 'root'}]);
@@ -172,28 +180,36 @@ describe('RestoreDialog', () => {
.returnValue(spy);
pgBrowser.get_preference.and.returnValue({value: '/some/path'});
pgBrowser.Nodes.server.label = 'some-server-label';
spyOn(restoreDialog, 'url_for_utility_exists').and.returnValue('/restore/utility_exists/10/objects');
networkMock.onGet('/restore/utility_exists/10/objects').reply(200, {'success': 1});
});
it('displays the dialog', () => {
it('displays the dialog', (done) => {
restoreDialog.draw(null, [{id: 'serverTreeNode'}], {server: true});
expect(alertifySpy['pg_restore']).toHaveBeenCalledWith(
'Restore (some-server-label: some-tree-label)',
[{id: 'serverTreeNode'}],
{
_id: 10,
_type: 'server',
label: 'some-tree-label',
},
pgBrowser.Nodes.server
);
expect(spy.resizeTo).toHaveBeenCalledWith('65%', '60%');
setTimeout(() => {
expect(alertifySpy['pg_restore']).toHaveBeenCalledWith(
'Restore (some-server-label: some-tree-label)',
[{id: 'serverTreeNode'}],
{
_id: 10,
_type: 'server',
label: 'some-tree-label',
},
pgBrowser.Nodes.server
);
expect(spy.resizeTo).toHaveBeenCalledWith('65%', '60%');
done();
}, 0);
});
context('database label contain "="', () => {
it('should create alert dialog with restore error', () => {
it('should create alert dialog with restore error', (done) => {
restoreDialog.draw(null, [{id: 'database_with_equal_in_name'}], null);
expect(alertifySpy.alert).toHaveBeenCalledWith('Restore Error',
'Databases with = symbols in the name cannot be backed up or restored using this utility.');
setTimeout(() => {
expect(alertifySpy.alert).toHaveBeenCalledWith('Restore Error',
'Databases with = symbols in the name cannot be backed up or restored using this utility.');
done();
}, 0);
});
});
});

View File

@@ -397,7 +397,7 @@ describe('RestoreDialogWrapper', () => {
beforeEach(() => {
networkMock.onPost('/restore/job/10').reply((request) => {
dataSentToServer = request.data;
return [200, {}];
return [200, {'success': 1}];
});
});