124 lines
4.8 KiB
JavaScript
124 lines
4.8 KiB
JavaScript
/*
|
|
* (c) Copyright 2016 Hewlett Packard Enterprise Development LP
|
|
*
|
|
* 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('images service', function() {
|
|
var service;
|
|
beforeEach(module('horizon.app.core.images'));
|
|
beforeEach(inject(function($injector) {
|
|
service = $injector.get('horizon.app.core.images.service');
|
|
}));
|
|
|
|
it("getDetailsPath creates urls using the item's ID", function() {
|
|
var myItem = {id: "1234"};
|
|
expect(service.getDetailsPath(myItem)).toBe('project/ngdetails/OS::Glance::Image/1234');
|
|
});
|
|
|
|
describe('imageType', function() {
|
|
it("imageType returns Snapshot when appropriate", function() {
|
|
var myItem = {properties: {image_type: 'snapshot'}};
|
|
expect(service.imageType(myItem)).toBe('Snapshot');
|
|
});
|
|
|
|
it("imageType returns Image when no item", function() {
|
|
var myItem;
|
|
expect(service.imageType(myItem)).toBe('Image');
|
|
});
|
|
|
|
it("imageType returns Image when no properties", function() {
|
|
var myItem = {};
|
|
expect(service.imageType(myItem)).toBe('Image');
|
|
});
|
|
|
|
it("imageType returns Image when properties but not type 'snapshot'", function() {
|
|
var myItem = {properties: {image_type: 'unknown'}};
|
|
expect(service.imageType(myItem)).toBe('Image');
|
|
});
|
|
});
|
|
|
|
describe('isInTransition Function', function() {
|
|
it("should return true for known transitional statuses", function() {
|
|
var statuses = ["saving", "queued", "pending_delete"];
|
|
statuses.forEach(function(status) {
|
|
var myItem = {status: status};
|
|
expect(service.isInTransition(myItem)).toBe(true);
|
|
});
|
|
});
|
|
|
|
it("should return false for unknown statuses", function() {
|
|
var myItem = {status: "notATransitionalState"};
|
|
expect(service.isInTransition(myItem)).toBe(false);
|
|
});
|
|
|
|
it("should return false for an empty status", function() {
|
|
var myItem = {status: undefined};
|
|
expect(service.isInTransition(myItem)).toBe(false);
|
|
});
|
|
|
|
it("should return false for an undefined status", function() {
|
|
var myItem = {status: undefined};
|
|
expect(service.isInTransition(myItem)).toBe(false);
|
|
});
|
|
|
|
it("should return false for a non-string status", function() {
|
|
var statuses = [3, true, false];
|
|
statuses.forEach(function(status) {
|
|
var myItem = {status: status};
|
|
expect(service.isInTransition(myItem)).toBe(false);
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('getImagesPromise', function() {
|
|
it("provides a promise that gets translated", inject(function($q, $injector, $timeout) {
|
|
var glance = $injector.get('horizon.app.core.openstack-service-api.glance');
|
|
var session = $injector.get('horizon.app.core.openstack-service-api.userSession');
|
|
var deferred = $q.defer();
|
|
var deferredVersion = $q.defer();
|
|
var deferredSession = $q.defer();
|
|
spyOn(glance, 'getImages').and.returnValue(deferred.promise);
|
|
spyOn(glance, 'getVersion').and.returnValue(deferredVersion.promise);
|
|
spyOn(session, 'get').and.returnValue(deferredSession.promise);
|
|
var result = service.getImagesPromise({});
|
|
deferred.resolve({data: {items: [{id: 1, updated_at: 'jul1'}]}});
|
|
deferredVersion.resolve({data: {version: '2'}});
|
|
deferredSession.resolve({project_id: '12'});
|
|
$timeout.flush();
|
|
expect(result.$$state.value.data.items[0].trackBy).toBe('1jul1');
|
|
}));
|
|
});
|
|
|
|
describe('getImagePromise', function() {
|
|
it("provides a promise", inject(function($q, $injector, $timeout) {
|
|
var glance = $injector.get('horizon.app.core.openstack-service-api.glance');
|
|
var deferred = $q.defer();
|
|
var deferredVersion = $q.defer();
|
|
spyOn(glance, 'getImage').and.returnValue(deferred.promise);
|
|
spyOn(glance, 'getVersion').and.returnValue(deferredVersion.promise);
|
|
var result = service.getImagePromise({});
|
|
deferred.resolve({data: {id: 1, updated_at: 'jul1'}});
|
|
deferredVersion.resolve({data: {version: '2'}});
|
|
expect(glance.getImage).toHaveBeenCalled();
|
|
expect(glance.getVersion).toHaveBeenCalled();
|
|
$timeout.flush();
|
|
expect(result.$$state.value.data.updated_at).toBe('jul1');
|
|
}));
|
|
});
|
|
});
|
|
|
|
})();
|