Merge "hz-images have transitional states defined"

This commit is contained in:
Jenkins 2016-08-09 13:32:33 +00:00 committed by Gerrit Code Review
commit c2916f794d
3 changed files with 62 additions and 4 deletions

View File

@ -44,6 +44,11 @@
'killed': gettext('Killed'),
'deleted': gettext('Deleted')
})
.constant('horizon.app.core.images.transitional-statuses', [
"saving",
"queued",
"pending_delete"
])
.run(run)
.config(config);
@ -59,6 +64,7 @@
registry.getResourceType(imageResourceType)
.setNames(gettext('Image'), gettext('Images'))
.setSummaryTemplateUrl(basePath + 'details/drawer.html')
.setItemInTransitionFunction(imagesService.isInTransition)
.setProperty('checksum', {
label: gettext('Checksum')
})
@ -149,7 +155,8 @@
})
.append({
id: 'status',
priority: 1
priority: 1,
itemInTransitionFunction: imagesService.isInTransition
})
.append({
id: 'protected',

View File

@ -20,7 +20,8 @@
.factory('horizon.app.core.images.service', imageService);
imageService.$inject = [
'horizon.app.core.openstack-service-api.glance'
'horizon.app.core.openstack-service-api.glance',
'horizon.app.core.images.transitional-statuses'
];
/*
@ -33,11 +34,12 @@
* but do not need to be restricted to such use. Each exposed function
* is documented below.
*/
function imageService(glance) {
function imageService(glance, transitionalStatuses) {
return {
getDetailsPath: getDetailsPath,
getImagesPromise: getImagesPromise,
imageType: imageType
imageType: imageType,
isInTransition: isInTransition
};
/*
@ -71,6 +73,22 @@
}
}
/**
* @ngdoc function
* @name isInTransition
* @param item {object} - The image object
* @description
* Given an Image object, returns a boolean representing whether the image
* is in a transitional state.
* @returns {boolean}
*/
function isInTransition(item) {
if (item && angular.isString(item.status)) {
return transitionalStatuses.indexOf(item.status.toLowerCase()) > -1;
}
return false;
}
/*
* @ngdoc function
* @name getImagesPromise

View File

@ -50,6 +50,39 @@
});
});
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');