ironic-ui/ironic_ui/static/dashboard/admin/ironic/enroll-node/enroll-node.controller.spec.js
Peter Piela b55a1004ff Unit test framework for Ironic-UI API service
This commit is a first step in the development of a unit test framework for
the Ironic-UI API service. The approach being used is to provide an emulation
of the Ironic backend using a mock that utilizes Angular $httpbackend
handlers to intercept requests targeted at the Ironic-UI server side REST
endpoints.

In addition to demonstrating the mock I have coded some basic tests to
show how it is used. At this point I would like to get feedback from the team,
and consensus on whether we should continue the process of building
additional tests.

Change-Id: Iaec83b0e19b5051ebf1257ddc56efcc6f11ee39d
2017-06-20 13:07:13 -04:00

89 lines
2.8 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.enroll-node', function () {
var ironicBackendMockService, rootScope, ironicEvents, uibModalInstance;
var ctrl = {};
beforeEach(module('horizon.dashboard.admin.ironic'));
beforeEach(module('horizon.framework.util'));
beforeEach(module(function($provide) {
$provide.value('$uibModal', {});
}));
beforeEach(module(function($provide) {
uibModalInstance = {
close: jasmine.createSpy()
};
$provide.value('$uibModalInstance', uibModalInstance);
}));
beforeEach(module(function($provide) {
$provide.value('horizon.framework.widgets.toast.service',
{});
}));
beforeEach(module('horizon.app.core.openstack-service-api'));
beforeEach(inject(function($injector) {
rootScope = $injector.get('$rootScope');
ironicEvents = $injector.get('horizon.dashboard.admin.ironic.events');
}));
beforeEach(inject(function($injector) {
ironicBackendMockService =
$injector.get('horizon.dashboard.admin.ironic.backend-mock.service');
ironicBackendMockService.init();
var controller = $injector.get('$controller');
ctrl = controller('EnrollNodeController');
ironicBackendMockService.flush();
}));
afterEach(function() {
ironicBackendMockService.postTest();
});
it('controller should be defined', function () {
expect(ctrl).toBeDefined();
});
it('base construction', function () {
var properties = angular.copy(BASE_NODE_CONTROLLER_PROPERTIES);
properties.push('submit');
expect(Object.getOwnPropertyNames(ctrl).sort()).toEqual(
properties.sort());
});
it('submit - success', function () {
spyOn(rootScope, '$emit');
var nodeName = "node_" + Date.now();
ctrl.node.name = nodeName;
ctrl.node.driver = ironicBackendMockService.params.defaultDriver;
ctrl.submit();
ironicBackendMockService.flush();
expect(rootScope.$emit)
.toHaveBeenCalledWith(ironicEvents.ENROLL_NODE_SUCCESS);
expect(uibModalInstance.close)
.toHaveBeenCalledWith(ironicBackendMockService.getNode(nodeName));
});
});
})();