From 4f29b1329639660c4ab026f0c59676c73f82de7f Mon Sep 17 00:00:00 2001
From: Harpreet Kataria <hkataria@redhat.com>
Date: Wed, 10 May 2017 17:22:15 -0400
Subject: [PATCH] Save new dialog value & other UI issues fixed

Fixed saving of new dialog name, reset 'Hosts' field when playbook is selected on Retirement tab during edit and fixed issues related to initialization of Escalate Privilege switch

https://bugzilla.redhat.com/show_bug.cgi?id=1448228
---
 .../catalog/catalog_item_form_controller.js   | 22 ++++++++++++++++---
 .../catalog_item_form_controller_spec.js      |  2 +-
 2 files changed, 20 insertions(+), 4 deletions(-)

diff --git a/app/assets/javascripts/controllers/catalog/catalog_item_form_controller.js b/app/assets/javascripts/controllers/catalog/catalog_item_form_controller.js
index c2169072a8b..e9ee5706ccc 100644
--- a/app/assets/javascripts/controllers/catalog/catalog_item_form_controller.js
+++ b/app/assets/javascripts/controllers/catalog/catalog_item_form_controller.js
@@ -114,7 +114,11 @@ ManageIQ.angular.app.controller('catalogItemFormController', ['$scope', 'catalog
     vm.catalogItemModel.provisioning_dialog_name = configData.provision.new_dialog_name;
     vm.catalogItemModel.provisioning_key = '';
     vm.catalogItemModel.provisioning_value = '';
-    vm.catalogItemModel.provisioning_become_enabled = configData.provision.become_enabled
+    if (configData.provision.become_enabled === undefined) {
+      vm.catalogItemModel.provisioning_become_enabled = false;
+    } else {
+      vm.catalogItemModel.provisioning_become_enabled = configData.provision.become_enabled;
+    }
     setExtraVars('provisioning_variables', configData.provision.extra_vars);
 
     if (typeof configData.retirement.repository_id !== 'undefined') {
@@ -124,7 +128,11 @@ ManageIQ.angular.app.controller('catalogItemFormController', ['$scope', 'catalog
       vm.catalogItemModel.retirement_remove_resources = configData.retirement.remove_resources;
       vm.catalogItemModel.retirement_machine_credential_id = configData.retirement.credential_id;
     }
-    vm.catalogItemModel.retirement_become_enabled = configData.retirement.become_enabled
+    if (configData.retirement.become_enabled === undefined) {
+      vm.catalogItemModel.retirement_become_enabled = false;
+    } else {
+      vm.catalogItemModel.retirement_become_enabled = configData.retirement.become_enabled;
+    }
     vm.catalogItemModel.retirement_network_credential_id = configData.retirement.network_credential_id;
     vm.catalogItemModel.retirement_cloud_credential_id = setIfDefined(configData.retirement.cloud_credential_id);
     vm.catalogItemModel.retirement_inventory = configData.retirement.hosts;
@@ -216,7 +224,7 @@ ManageIQ.angular.app.controller('catalogItemFormController', ['$scope', 'catalog
     if (configData.provisioning_cloud_credential_id !== '')
       catalog_item['config_info']['provision']['cloud_credential_id'] = configData.provisioning_cloud_credential_id;
 
-    if (configData.provisioning_dialog_id !== '') {
+    if (configData.provisioning_dialog_id !== undefined && configData.provisioning_dialog_id !== '') {
       catalog_item['config_info']['provision']['dialog_id'] = configData.provisioning_dialog_id;
     } else if (configData.provisioning_dialog_name !== '')
       catalog_item['config_info']['provision']['new_dialog_name'] = configData.provisioning_dialog_name;
@@ -339,6 +347,14 @@ ManageIQ.angular.app.controller('catalogItemFormController', ['$scope', 'catalog
     })
   };
 
+  // reset fields when retirement playbook type is changed
+  $scope.$watch('vm._retirement_playbook', function(value) {
+    if (value && (vm.catalogItemModel.retirement_inventory === undefined || vm.catalogItemModel.retirement_inventory === '')) {
+      vm.catalogItemModel.retirement_inventory = 'localhost';
+      vm.catalogItemModel.retirement_become_enabled = false;
+    }
+  });
+
   $scope.$watch('vm._provisioning_repository', function(value) {
     if (value) {
       vm.repositoryChanged("provisioning", value.id)
diff --git a/spec/javascripts/controllers/catalog/catalog_item_form_controller_spec.js b/spec/javascripts/controllers/catalog/catalog_item_form_controller_spec.js
index 458bbe73bff..d0599bd18ad 100644
--- a/spec/javascripts/controllers/catalog/catalog_item_form_controller_spec.js
+++ b/spec/javascripts/controllers/catalog/catalog_item_form_controller_spec.js
@@ -33,7 +33,7 @@ describe('catalogItemFormController', function() {
             'var1': {'default': 'default_val1'},
             'var2': {'default': 'default_val2'}
           },
-          become_enabled: undefined,
+          become_enabled: false,
           network_credential_id: undefined
         },
         retirement: {