169 lines
6.7 KiB
JavaScript
169 lines
6.7 KiB
JavaScript
/*
|
|
* Copyright (c) 2015-2018 Red Hat, Inc.
|
|
* All rights reserved. This program and the accompanying materials
|
|
* are made available under the terms of the Eclipse Public License v1.0
|
|
* which accompanies this distribution, and is available at
|
|
* http://www.eclipse.org/legal/epl-v10.html
|
|
*
|
|
* Contributors:
|
|
* Red Hat, Inc. - initial API and implementation
|
|
*/
|
|
'use strict';
|
|
|
|
describe('Stack details >', () => {
|
|
let stackDetailsPageObject;
|
|
let stackDetailsMock;
|
|
let utils;
|
|
|
|
beforeEach(() => {
|
|
stackDetailsMock = require('./../stack-details.mock.js');
|
|
stackDetailsPageObject = require('./../stack-details.po.js');
|
|
utils = require('../../../utils');
|
|
});
|
|
|
|
describe('one machine (dev) in stack >', () => {
|
|
|
|
it('cannot be removed', () => {
|
|
browser.addMockModule('userDashboardMock', stackDetailsMock.dockerimageStack);
|
|
browser.get('/');
|
|
|
|
// go to stack details page
|
|
let stackId = 'testStackId';
|
|
browser.setLocation('/stack/' + stackId);
|
|
|
|
// get the machine configuration elements map
|
|
let machineConfigElement = stackDetailsPageObject.getMachineConfigByIndex(0);
|
|
expect(machineConfigElement).toBeTruthy();
|
|
|
|
let machineConfigParts = stackDetailsPageObject.splitMachineConfig(machineConfigElement);
|
|
|
|
// click on machine's title to expand its config
|
|
expect(machineConfigParts.titleTextElement.isDisplayed()).toBeTruthy();
|
|
machineConfigParts.titleTextElement.click();
|
|
|
|
// check if current machine has ws-agent activated
|
|
expect(machineConfigParts.isDevSwitchElement.getAttribute('class')).toMatch('md-checked');
|
|
|
|
// click on 'Delete' button
|
|
expect(machineConfigParts.titleDeleteElement.isDisplayed()).toBeTruthy();
|
|
machineConfigParts.titleDeleteElement.click();
|
|
|
|
// 'Remove machine' popup is shown
|
|
expect(stackDetailsPageObject.deleteDevMachinePopupElement.isDisplayed()).toBeTruthy();
|
|
// but "Delete" button is not there
|
|
expect(stackDetailsPageObject.deleteDevMachineDeleteButtonElement.isPresent()).toBeFalsy();
|
|
});
|
|
|
|
});
|
|
|
|
describe('two machines in stack >', () => {
|
|
|
|
it('machine (not dev) can be removed', () => {
|
|
browser.addMockModule('userDashboardMock', stackDetailsMock.composefileStack);
|
|
browser.get('/');
|
|
|
|
// go to stack details page
|
|
const stackId = 'testStackId';
|
|
browser.setLocation('/stack/' + stackId);
|
|
|
|
// get machine (not dev)
|
|
const notDevMachineName = 'db';
|
|
let machineConfigElement = stackDetailsPageObject.getMachineConfigByName(notDevMachineName);
|
|
expect(machineConfigElement).toBeTruthy();
|
|
|
|
let machineConfigParts = stackDetailsPageObject.splitMachineConfig(machineConfigElement);
|
|
|
|
// click on machine's title to expand its config
|
|
expect(machineConfigParts.titleTextElement.isDisplayed()).toBeTruthy();
|
|
machineConfigParts.titleTextElement.click();
|
|
|
|
// check if current machine doesn't have ws-agent activated
|
|
expect(machineConfigParts.isDevSwitchElement.getAttribute('class')).not.toMatch('md-checked');
|
|
|
|
// try to remove this machine
|
|
expect(machineConfigParts.titleDeleteElement.isDisplayed()).toBeTruthy();
|
|
machineConfigParts.titleDeleteElement.click();
|
|
|
|
// 'Remove machine' popup is shown
|
|
expect(stackDetailsPageObject.deleteNotDevMachinePopupElement.isDisplayed()).toBeTruthy();
|
|
// 'Delete' button is visible
|
|
expect(stackDetailsPageObject.deleteNotDevMachineDeleteButtonElement.isDisplayed()).toBeTruthy();
|
|
|
|
// click on 'Delete' button
|
|
stackDetailsPageObject.deleteNotDevMachineDeleteButtonElement.click();
|
|
|
|
const deletedMachineConfigElement = stackDetailsPageObject.getMachineConfigByName(notDevMachineName);
|
|
expect(deletedMachineConfigElement.isPresent()).toBeFalsy();
|
|
|
|
});
|
|
|
|
it('machine (dev) can be removed', () => {
|
|
browser.addMockModule('userDashboardMock', stackDetailsMock.composefileStack);
|
|
browser.get('/');
|
|
|
|
// go to stack details page
|
|
const stackId = 'testStackId';
|
|
browser.setLocation('/stack/' + stackId);
|
|
|
|
// get first machine (dev)
|
|
const firstMachineName = 'dev-machine';
|
|
const firstMachineConfigElement = stackDetailsPageObject.getMachineConfigByName(firstMachineName);
|
|
expect(firstMachineConfigElement).toBeTruthy();
|
|
|
|
const firstMachineConfigParts = stackDetailsPageObject.splitMachineConfig(firstMachineConfigElement);
|
|
|
|
// click on first machine's title to expand its config
|
|
expect(firstMachineConfigParts.titleTextElement.isDisplayed()).toBeTruthy();
|
|
firstMachineConfigParts.titleTextElement.click();
|
|
|
|
// check if first machine has ws-agent activated
|
|
expect(firstMachineConfigParts.isDevSwitchElement.getAttribute('class')).toMatch('md-checked');
|
|
|
|
// try to remove this machine
|
|
expect(firstMachineConfigParts.titleDeleteElement.isDisplayed()).toBeTruthy();
|
|
firstMachineConfigParts.titleDeleteElement.click();
|
|
|
|
// 'Remove machine' popup is shown
|
|
expect(stackDetailsPageObject.deleteDevMachinePopupElement.isDisplayed()).toBeTruthy();
|
|
// 'Delete' button is visible
|
|
expect(stackDetailsPageObject.deleteDevMachineDeleteButtonElement.isDisplayed()).toBeTruthy();
|
|
// 'Delete' button is disabled
|
|
expect(stackDetailsPageObject.deleteDevMachineDeleteButtonElement.isEnabled()).toBeFalsy();
|
|
|
|
// look for radio button for second machine
|
|
const secondMachineName = 'db';
|
|
let notDevMachineRadioButtonElement = utils.getRadioButtonByLabel(stackDetailsPageObject.deleteDevMachinePopupElement, secondMachineName.toUpperCase());
|
|
expect(notDevMachineRadioButtonElement.isDisplayed()).toBeTruthy();
|
|
|
|
// check second machine name radio button
|
|
notDevMachineRadioButtonElement.click();
|
|
|
|
// 'Delete' button is enabled
|
|
expect(stackDetailsPageObject.deleteDevMachineDeleteButtonElement.isEnabled()).toBeTruthy();
|
|
|
|
// click on 'Delete' button
|
|
stackDetailsPageObject.deleteDevMachineDeleteButtonElement.click();
|
|
|
|
// first machine config is deleted
|
|
expect(firstMachineConfigElement.isPresent()).toBeFalsy();
|
|
|
|
// get second machine config
|
|
const secondMachineConfigElement = stackDetailsPageObject.getMachineConfigByName(secondMachineName);
|
|
expect(secondMachineConfigElement).toBeTruthy();
|
|
|
|
const secondMachineConfigParts = stackDetailsPageObject.splitMachineConfig(secondMachineConfigElement);
|
|
|
|
|
|
// click on second machine's title to expand its config
|
|
expect(secondMachineConfigParts.titleTextElement.isDisplayed()).toBeTruthy();
|
|
secondMachineConfigParts.titleTextElement.click();
|
|
|
|
// check if second machine has ws-agent activated
|
|
expect(secondMachineConfigParts.isDevSwitchElement.getAttribute('class')).toMatch('md-checked');
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|