heat-dashboard/heat_dashboard/static/dashboard/project/heat_dashboard/template_generator/js/components/modal-node.controller.spec.js

279 lines
12 KiB
JavaScript

(function() {
'use strict';
describe('horizon.dashboard.project.heat_dashboard.template_generator.FormModalController', function(){
beforeEach(module('horizon.dashboard.project.heat_dashboard.template_generator'));
beforeEach(module('appTemplates'));
var hotgenGlobals, hotgenStates, basePath;
beforeEach(inject(function($injector){
hotgenGlobals = $injector.get('hotgenGlobals');
hotgenStates = $injector.get('hotgenStates');
basePath = $injector.get('horizon.dashboard.project.heat_dashboard.template_generator.basePath');
}));
var $controller, controller, $scope, $rootScope, $mdDialog;
beforeEach(inject(function($injector){
$rootScope = $injector.get('$rootScope');
$mdDialog = $injector.get('$mdDialog');
}));
beforeEach(inject(function(_$controller_, $rootScope) {
$controller = _$controller_;
$scope = $rootScope.$new();
spyOn($scope, '$on');
spyOn($mdDialog, 'show');
spyOn($mdDialog, 'hide');
spyOn($mdDialog, 'cancel');
controller = $controller('horizon.dashboard.project.heat_dashboard.template_generator.FormModalController',
{ $scope: $scope, $mdDialog: $mdDialog});
$mdDialog.show = jasmine.createSpy().and.callFake(function() {
return {
then: (function (callBack) {
callBack(true); //return the value to be assigned.
}, function(callBack){
callBack(false)}
)
}
});
$mdDialog.cancel = jasmine.createSpy().and.callFake(function() {
return function(callBack){callBack(true)};
});
}));
it('should exist', function(){
expect(controller).toBeDefined();
});
it('$scope.$on should be called', function(){
var event = $rootScope.$broadcast('handle_edit_node');
expect($scope.$on).toHaveBeenCalled();
});
it('$scope.handle_edit_node', function(){
var event = $rootScope.$broadcast('handle_edit_node');
spyOn($scope, 'showTabDialog');
$scope.handle_edit_node(event, 'OS__Project__ResourceType');
expect($scope.showTabDialog).toHaveBeenCalled();
});
it('show dialog with no parameters set.', function(){
$scope.showTabDialog();
$scope.$digest();
expect($mdDialog.show).toHaveBeenCalled();
});
it('cancel dialog', function(){
var node = {id: 'node_id', label: 'Node_1', title: 'NodeType_1'}
var to_node = {id: 'to_node_id', label: 'ToNode_1', title: 'ToType_1'}
var edge1 = {id: 'edge_id_1', from: 'node_id', to: 'to_node_id'}
var edge2 = {id: 'edge_id_2', from: 'from_node_id', to: 'node_id'}
hotgenStates.set_selected({
id: node.id,
node: node,
resource_type: node.title,
});
var network = {getConnectedEdges: function(data){
return [edge1.id, edge2.id];
}}
hotgenStates.set_network(network);
$scope.data.nodes.add(node);
$scope.data.edges.add(edge1);
$scope.data.edges.add(edge2);
$scope.dialogController($scope, $mdDialog, hotgenStates);
$scope.cancel();
expect($mdDialog.cancel).toHaveBeenCalled();
});
it('get label', function(){
var node = {id: 'node_id', label: 'Node_1', title: 'NodeType_1'}
var to_node = {id: 'to_node_id', label: 'ToNode_1', title: 'ToType_1'}
var edge1 = {id: 'edge_id_1', from: 'node_id', to: 'to_node_id'}
var edge2 = {id: 'edge_id_2', from: 'from_node_id', to: 'node_id'}
hotgenStates.set_selected({
id: node.id,
node: node,
resource_type: node.title,
});
var network = {getConnectedEdges: function(data){
return [edge1.id, edge2.id];
}}
hotgenStates.set_network(network);
$scope.data.nodes.add(node);
$scope.data.edges.add(edge1);
$scope.data.edges.add(edge2);
hotgenGlobals.update_node_labels(node.title, node.label)
$scope.dialogController($scope, $mdDialog, hotgenStates);
var nodelabel = $scope.get_label('NodeType_1');
expect(nodelabel).toEqual(node.label);
});
it('delete resource', function(){
var node = {id: 'node_id', label: 'Node_1', title: 'NodeType_1'}
var to_node = {id: 'to_node_id', label: 'ToNode_1', title: 'ToType_1'}
var edge1 = {id: 'edge_id_1', from: 'node_id', to: 'to_node_id'}
var edge2 = {id: 'edge_id_2', from: 'from_node_id', to: 'node_id'}
hotgenStates.set_selected({
id: node.id,
node: node,
resource_type: node.title,
});
var network = {
deleteSelected: function(){
return true;
},
getConnectedEdges: function(data){
return [edge1.id, edge2.id];
}
};
hotgenStates.set_network(network);
$scope.data.nodes.add(node);
$scope.data.edges.add(edge1);
$scope.data.edges.add(edge2);
$scope.dialogController($scope, $mdDialog, hotgenStates);
$scope.delete_resource();
expect($mdDialog.cancel).toHaveBeenCalled();
});
it('save without depends_on', function(){
var node = {id: 'node_id', label: 'Node_1', title: 'NodeType_1', image: 'image-gray.svg'}
hotgenStates.set_selected({
id: 'node_id',
node: node,
resource_type: 'NodeType_1',
});
var network = {
deleteSelected: function(){
return true;
},
getConnectedEdges: function(data){
return [];
}
};
$scope.data.nodes.add(node);
hotgenGlobals.update_node_labels(node.id, node.label);
hotgenStates.set_incremented_label(node.id, node.label);
hotgenStates.set_network(network);
$scope.dialogController($scope, $mdDialog, hotgenStates);
$scope.dependson = [];
var returnValue = $scope.save();
expect($mdDialog.hide).toHaveBeenCalled();
expect(returnValue).toEqual(true);
});
it('save with depends_on', function(){
var node = {id: 'node_id', label: 'Node_1', title: 'NodeType_1', icon: {color: '#000'},
shape: 'icon', image: 'image-gray.svg'}
var depend_node = {id: 'depend_node_id', label: 'Node_2', title: 'NodeType_2'}
var connected_node = {id: 'conn_node_id', label: 'Node_3', title: 'NodeType_3'}
var connected_node2 = {id: 'conn_node2_id', label: 'Node_4', title: 'NodeType_3'}
var edge = { id: 'edge_id', from: node.id, to: connected_node.id,
resource_type: {from: node.title, to: connected_node.title},
from_node: node, to_node: connected_node};
var edge2 = { id: 'edge2_id', from: node.id, to: connected_node2.id,
resource_type: {from: node.title, to: connected_node2.title},
from_node: node, to_node: connected_node2};
var depend_edge = {id: 'depend_edge_id', from: node.id, to: depend_node.id,
resource_type: {from: node.title, to: depend_node.title},
from_node: node, to_node: depend_node, arrows: {middle: true}};
$scope.data.nodes.add(node);
$scope.data.nodes.add(depend_node);
$scope.data.nodes.add(connected_node);
$scope.data.nodes.add(connected_node2);
$scope.data.edges.add(edge);
$scope.data.edges.add(edge2);
$scope.data.edges.add(depend_edge);
hotgenGlobals.update_node_labels(node.title, 'name');
hotgenGlobals.update_edge_directions(node.title, {'NodeType_3': {property: 'name'}});
hotgenStates.update_saved_resources(node.id, {type: node.title, data: {name: node.label}})
hotgenStates.set_incremented_label(node.id, node.label);
hotgenStates.update_saved_dependsons(node.title, [depend_node.id]);
hotgenStates.update_saved_dependsons(node.id, [depend_node.id]);
hotgenStates.set_selected({
id: 'node_id',
node: node,
resource_type: 'NodeType_1',
});
var network = {
deleteSelected: function(){
return true;
},
getConnectedEdges: function(data){
return [edge.id, edge2.id, depend_edge.id,];
}
};
hotgenStates.set_network(network);
$scope.dialogController($scope, $mdDialog, hotgenStates);
$scope.dependson = [depend_node.id];
var returnValue = $scope.save();
expect($mdDialog.hide).toHaveBeenCalled();
expect(returnValue).toEqual(true);
});
it('save with trivial cases', function(){
var node = {id: 'node_id', label: 'Node_1', title: 'NodeType_1', icon: {color: '#000'},
shape: 'icon', image: 'image-gray.svg'}
var depend_node = {id: 'depend_node_id', label: 'Node_2', title: 'NodeType_2'}
var connected_node = {id: 'conn_node_id', label: 'Node_3', title: 'NodeType_3'}
var edge = { id: 'edge_id', from: node.id, to: connected_node.id,
resource_type: {from: node.title, to: connected_node.title},
from_node: node, to_node: connected_node};
var depend_edge = {id: 'depend_edge_id', from: node.id, to: depend_node.id,
resource_type: {from: node.title, to: depend_node.title},
from_node: node, to_node: depend_node, arrows: {middle: true}};
$scope.data.nodes.add(node);
$scope.data.nodes.add(depend_node);
$scope.data.nodes.add(connected_node);
$scope.data.edges.add(edge);
$scope.data.edges.add(depend_edge);
hotgenGlobals.update_node_labels(node.title, 'name');
hotgenGlobals.update_edge_directions(node.title, {'NodeType_2': {}});
hotgenStates.update_saved_resources(node.id, {type: node.title, data: {name: node.label}})
hotgenStates.set_incremented_label(node.id, node.label);
hotgenStates.update_saved_dependsons(node.title, [depend_node.id]);
hotgenStates.update_saved_dependsons(node.id, [depend_node.id]);
hotgenStates.set_selected({
id: node.id,
node: node,
resource_type: node.title,
});
var network = {
deleteSelected: function(){
return true;
},
getConnectedEdges: function(data){
return [edge.id, depend_edge.id];
}
};
hotgenStates.set_network(network);
$scope.dialogController($scope, $mdDialog, hotgenStates);
$scope.dependson = [depend_node.id];
var returnValue = $scope.save();
expect($mdDialog.hide).toHaveBeenCalled();
expect(returnValue).toEqual(true);
});
});
})();