This is an automated email from the ASF dual-hosted git repository.

mitchell852 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/trafficcontrol.git


The following commit(s) were added to refs/heads/master by this push:
     new 1d2bc4a  Fix bug that causes DS requests to fulfill immediately while 
other requests are still open (#3727)
1d2bc4a is described below

commit 1d2bc4affe4cac2c7f60d0e6add91867669ab3a6
Author: Alex Luckerman <[email protected]>
AuthorDate: Wed Jul 24 08:28:41 2019 -0600

    Fix bug that causes DS requests to fulfill immediately while other requests 
are still open (#3727)
    
    * Prevent DS changes while other requests are open
    
    * Add sleep to fix DS requests test failing too fast
    
    * Simplify the check for existing DS requests
    
    * Fix comments describing code logic
---
 .../edit/FormEditDeliveryServiceController.js      | 104 ++++++++++-----------
 .../delivery-service-requests-spec.js              |   1 +
 2 files changed, 50 insertions(+), 55 deletions(-)

diff --git 
a/traffic_portal/app/src/common/modules/form/deliveryService/edit/FormEditDeliveryServiceController.js
 
b/traffic_portal/app/src/common/modules/form/deliveryService/edit/FormEditDeliveryServiceController.js
index 9f6f340..e6d297e 100644
--- 
a/traffic_portal/app/src/common/modules/form/deliveryService/edit/FormEditDeliveryServiceController.js
+++ 
b/traffic_portal/app/src/common/modules/form/deliveryService/edit/FormEditDeliveryServiceController.js
@@ -59,46 +59,42 @@ var FormEditDeliveryServiceController = 
function(deliveryService, origin, type,
                                deliveryService: deliveryService
                        };
 
-                       // if the user chooses to complete/fulfill the delete 
request immediately, the ds will be deleted and behind the
-                       // scenes a delivery service request will be created 
and marked as complete
-                       if (options.status.id == $scope.COMPLETE) {
-                               // first delete the ds
-                               
deliveryServiceService.deleteDeliveryService(deliveryService)
-                                       .then(
-                                               function() {
-                                                       // then create the ds 
request
-                                                       
deliveryServiceRequestService.createDeliveryServiceRequest(dsRequest).
-                                                               then(
-                                                                       
function(response) {
-                                                                               
var comment = {
-                                                                               
        deliveryServiceRequestId: response.id,
-                                                                               
        value: options.comment
-                                                                               
};
-                                                                               
// then create the ds request comment
-                                                                               
deliveryServiceRequestService.createDeliveryServiceRequestComment(comment).
-                                                                               
        then(
-                                                                               
                function() {
-                                                                               
                        var promises = [];
-                                                                               
                        // assign the ds request
-                                                                               
                        
promises.push(deliveryServiceRequestService.assignDeliveryServiceRequest(response.id,
 userModel.user.id));
-                                                                               
                        // set the status to 'complete'
-                                                                               
                        
promises.push(deliveryServiceRequestService.updateDeliveryServiceRequestStatus(response.id,
 'complete'));
-                                                                               
                        // and finally navigate to the /delivery-services page
-                                                                               
                        messageModel.setMessages([ { level: 'success', text: 
'Delivery service [ ' + deliveryService.xmlId + ' ] deleted' } ], true);
-                                                                               
                        locationUtils.navigateToPath('/delivery-services');
-                                                                               
                }
-                                                                               
        );
-                                                                       }
-                                                               );
-                                               },
-                                               function(fault) {
-                                                       $anchorScroll(); // 
scrolls window to top
-                                                       
messageModel.setMessages(fault.data.alerts, false);
-                                               }
-                                       );
-
-
-
+                       // if the user chooses to complete/fulfill the delete 
request immediately, a delivery service request will be made and marked as 
complete, 
+                       // then if that is successful, the DS will be deleted
+                       if (options.status.id === $scope.COMPLETE) {
+                               // first create the ds request
+                               
deliveryServiceRequestService.createDeliveryServiceRequest(dsRequest)
+                                       .then(function(response) {
+                                               var comment = {
+                                                       
deliveryServiceRequestId: response.id,
+                                                       value: options.comment
+                                               };
+                                               // then create the ds request 
comment
+                                               
deliveryServiceRequestService.createDeliveryServiceRequestComment(comment).
+                                                       then(
+                                                               function() {
+                                                                       var 
promises = [];
+                                                                       // 
assign the ds request
+                                                                       
promises.push(deliveryServiceRequestService.assignDeliveryServiceRequest(response.id,
 userModel.user.id));
+                                                                       // set 
the status to 'complete'
+                                                                       
promises.push(deliveryServiceRequestService.updateDeliveryServiceRequestStatus(response.id,
 'complete'));
+                                                                       // and 
finally navigate to the /delivery-services page
+                                                                       
messageModel.setMessages([ { level: 'success', text: 'Delivery service [ ' + 
deliveryService.xmlId + ' ] deleted' } ], true);
+                                                                       
locationUtils.navigateToPath('/delivery-services');
+                                                               }
+                                                       // then, if all that 
works, delete the ds       
+                                                       ).then(
+                                                               function() {
+                                                                       
deliveryServiceService.deleteDeliveryService(deliveryService);
+                                                               }
+                                                       );
+                                       }
+                                       // handle any failures just once
+                                       ).catch(function(fault) {
+                                               $anchorScroll(); // scrolls 
window to top
+                                               
messageModel.setMessages(fault.data.alerts, false);
+                                       }
+                               );
                        } else {
                                
deliveryServiceRequestService.createDeliveryServiceRequest(dsRequest).
                                        then(
@@ -123,7 +119,7 @@ var FormEditDeliveryServiceController = 
function(deliveryService, origin, type,
        };
 
        var createDeliveryServiceUpdateRequest = function(dsRequest, 
dsRequestComment, autoFulfilled) {
-               
deliveryServiceRequestService.createDeliveryServiceRequest(dsRequest).
+               return 
deliveryServiceRequestService.createDeliveryServiceRequest(dsRequest).
                        then(
                                function(response) {
                                        var comment = {
@@ -198,21 +194,19 @@ var FormEditDeliveryServiceController = 
function(deliveryService, origin, type,
                                        status: status,
                                        deliveryService: deliveryService
                                };
-                               // if the user chooses to complete/fulfill the 
update request immediately, the ds will be updated and behind the
-                               // scenes a delivery service request will be 
created and marked as complete
+                               // if the user chooses to complete/fulfill the 
update request immediately, a delivery service request will be made and marked 
as complete, 
+                               // then if that is successful, the DS will be 
updated
                                if (options.status.id == $scope.COMPLETE) {
-                                       
deliveryServiceService.updateDeliveryService(deliveryService).
-                                               then(
-                                                       function() {
-                                                               
$state.reload(); // reloads all the resolves for the view
-                                                               
messageModel.setMessages([ { level: 'success', text: 'Delivery Service [ ' + 
deliveryService.xmlId + ' ] updated' } ], false);
-                                                               
createDeliveryServiceUpdateRequest(dsRequest, options.comment, true);
-                                                       },
-                                                       function(fault) {
-                                                               
$anchorScroll(); // scrolls window to top
-                                                               
messageModel.setMessages(fault.data.alerts, false);
-                                                       }
-                                               );
+                                       
createDeliveryServiceUpdateRequest(dsRequest, options.comment, true).then(
+                                               function() {
+                                                       
deliveryServiceService.updateDeliveryService(deliveryService);
+                                               }).then(function() {
+                                                       $state.reload(); // 
reloads all the resolves for the view
+                                                       
messageModel.setMessages([ { level: 'success', text: 'Delivery Service [ ' + 
deliveryService.xmlId + ' ] updated' } ], false);
+                                               }).catch(function(fault) {
+                                                       $anchorScroll(); // 
scrolls window to top
+                                                       
messageModel.setMessages(fault.data.alerts, false);
+                                       });
                                } else {
                                        
createDeliveryServiceUpdateRequest(dsRequest, options.comment, false);
                                }
diff --git 
a/traffic_portal/test/end_to_end/DeliveryServiceRequests/delivery-service-requests-spec.js
 
b/traffic_portal/test/end_to_end/DeliveryServiceRequests/delivery-service-requests-spec.js
index a9fb161..2b4d57c 100644
--- 
a/traffic_portal/test/end_to_end/DeliveryServiceRequests/delivery-service-requests-spec.js
+++ 
b/traffic_portal/test/end_to_end/DeliveryServiceRequests/delivery-service-requests-spec.js
@@ -144,6 +144,7 @@ describe('Traffic Portal Delivery Service Requests', 
function() {
                pageData.deleteButton.click();
                pageData.confirmWithNameInput.sendKeys(mockVals.xmlId + ' 
request');
                pageData.deletePermanentlyButton.click();
+               browser.sleep(250);
                
expect(browser.getCurrentUrl().then(commonFunctions.urlPath)).toEqual(commonFunctions.urlPath(browser.baseUrl)+"#!/delivery-service-requests");
        });
 });

Reply via email to