ironic-ui/ironic_ui/static/dashboard/admin/ironic/base-port/base-port.controller.spec.js

180 lines
6.0 KiB
JavaScript

/*
* Copyright 2017 Cray Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
(function () {
'use strict';
describe('horizon.dashboard.admin.ironic.base-port', function () {
var uibModalInstance, ironicBackendMockService, ironicAPI;
var ctrl = {};
beforeEach(module('horizon.framework.util'));
beforeEach(module('horizon.dashboard.admin.ironic'));
beforeEach(module(function($provide) {
$provide.value('horizon.framework.widgets.toast.service', {
add: function() {}
});
}));
beforeEach(module('horizon.app.core.openstack-service-api'));
beforeEach(module(function($provide) {
$provide.value('$uibModal', {});
}));
beforeEach(module(function($provide) {
uibModalInstance = {
dismiss: jasmine.createSpy()
};
$provide.value('$uibModalInstance', uibModalInstance);
}));
beforeEach(inject(function($injector) {
ironicBackendMockService =
$injector.get('horizon.dashboard.admin.ironic.backend-mock.service');
ironicBackendMockService.init();
ironicAPI =
$injector.get('horizon.app.core.openstack-service-api.ironic');
ironicAPI.createNode(
{driver: ironicBackendMockService.params.defaultDriver})
.then(function(response) {
var node = response.data;
var controller = $injector.get('$controller');
controller('BasePortController', {ctrl: ctrl,
node: node});
});
ironicBackendMockService.flush();
}));
afterEach(function() {
ironicBackendMockService.postTest();
});
it('controller should be defined', function () {
expect(ctrl).toBeDefined();
});
it('base construction', function () {
expect(Object.getOwnPropertyNames(ctrl).sort()).toEqual(
BASE_PORT_CONTROLLER_PROPERTIES.sort());
angular.forEach(
['address', 'pxeEnabled', 'portgroup_uuid'],
function(propertyName) {
expect(Object.keys(ctrl[propertyName])).toContain('value');
});
expect(Object.keys(ctrl.extra)).toContain('properties');
});
it('localLinkConnectionMgr', function () {
var props = ['port_id', 'switch_id', 'switch_info'];
angular.forEach(
props,
function(propertyName) {
expect(ctrl.localLinkConnection[propertyName].constructor.name)
.toBe('FormField');
expect(Object.keys(ctrl.localLinkConnection[propertyName]))
.toContain('value');
});
expect(Object.keys(ctrl.localLinkConnection.fields).sort())
.toEqual(props.sort());
angular.forEach(
props,
function(propertyName) {
expect(ctrl.localLinkConnection[propertyName])
.toEqual(ctrl.localLinkConnection.fields[propertyName]);
});
expect(ctrl.localLinkConnection.update).toBeDefined();
expect(ctrl.localLinkConnection.toPortAttr).toBeDefined();
expect(ctrl.localLinkConnection.setValues).toBeDefined();
expect(ctrl.localLinkConnection.disable).toBeDefined();
});
it('localLinkConnectionMgr.update', function () {
ctrl.localLinkConnection.update();
expect(ctrl.localLinkConnection.port_id.required).toBe(false);
expect(ctrl.localLinkConnection.switch_id.required).toBe(false);
});
it('localLinkConnectionMgr.setValues', function () {
var values = {port_id: 'port-id',
switch_id: '00:00:00:00:00:00',
switch_info: 'switch-info'};
ctrl.localLinkConnection.setValues(values);
angular.forEach(
Object.keys(values),
function(value, key) {
if (ctrl.localLinkConnection.hasOwnProperty(key)) {
expect(ctrl.localLinkConnection[key].value).toEqual(values[key]);
}
});
});
it('localLinkConnectionMgr.update - port_id has value', function () {
ctrl.localLinkConnection.setValues({port_id: 'port-id'});
ctrl.localLinkConnection.update();
expect(ctrl.localLinkConnection.port_id.required).toBe(true);
expect(ctrl.localLinkConnection.switch_id.required).toBe(true);
});
it('localLinkConnectionMgr.update - switch_id has value', function () {
ctrl.localLinkConnection.setValues({switch_id: '00:00:00:00:00:00'});
ctrl.localLinkConnection.update();
expect(ctrl.localLinkConnection.port_id.required).toBe(true);
expect(ctrl.localLinkConnection.switch_id.required).toBe(true);
});
it('localLinkConnectionMgr.toPortAttr - no values', function () {
expect(ctrl.localLinkConnection.toPortAttr()).toBeNull();
});
it('localLinkConnectionMgr.toPortAttr - values', function () {
var values = {port_id: 'port-id',
switch_id: '00:00:00:00:00:00',
switch_info: 'switch-info'};
ctrl.localLinkConnection.setValues(values);
expect(ctrl.localLinkConnection.toPortAttr()).toEqual(values);
});
it('localLinkConnectionMgr.disable', function () {
function validateDisabled(state) {
angular.forEach(
['port_id', 'switch_id', 'switch_info'],
function(propertyName) {
expect(ctrl.localLinkConnection[propertyName]).
toEqual(jasmine.objectContaining({disabled: state}));
});
}
validateDisabled(false);
ctrl.localLinkConnection.disable();
validateDisabled(true);
});
it('cancel', function () {
ctrl.cancel();
expect(uibModalInstance.dismiss).toHaveBeenCalledWith('cancel');
});
});
})();