public void AddRoutingRule_SameRoutingRuleName_ShouldReturnError()
        {
            //Arrange
            var mockFacilityGuid                = Utility.ParseStringToGuid(_executionContextAccessor.Current.Facility.FacilityKey);
            var mockRoutingRuleGuid             = Utility.GetNewGuid();
            var mockRoutingRuleName             = "test";
            Dictionary <string, string> headers = new Dictionary <string, string>();

            var fakeRoutingRule = Task.FromResult <RoutingRule>(new RoutingRule {
                RoutingRuleKey  = mockRoutingRuleGuid,
                RoutingRuleName = mockRoutingRuleName,
                FacilityKey     = mockFacilityGuid,
                TenantKey       = Utility.ParseStringToGuid(_executionContextAccessor.Current.Tenant.TenantKey),
            });

            var routingRuleReq = new RoutingRuleRequest
            {
                RoutingRuleName = mockRoutingRuleName,
                SearchCriteriaGranularityLevel = 1,
                ActorKey = Guid.Parse("6DD7B978-2BAE-4C0B-9ED2-0A79FB689A46")
            };

            _mockRoutingRuleRepository.Setup(x => x.GetRoutingRule(mockRoutingRuleName, mockFacilityGuid)).Returns(fakeRoutingRule);

            //Act
            var response = _routingRuleManager.AddRoutingRule(routingRuleReq, headers);

            //Assert
            Assert.Contains("Routing Rule With Same Name Already Exist.", response.Message);
            Assert.False(response.IsSuccess);
        }
        private RoutingRuleRequest FakeDataForPostRoutingRule()
        {
            RoutingRuleRequest r = new RoutingRuleRequest();
            var listRequestRoutingRuleSchedule = new List <RequestRoutingRuleSchedule>
            {
                new RequestRoutingRuleSchedule()
                {
                    ScheduleKey = Utility.GetNewGuid()
                }
            };
            var listRequestRoutingRuleDestination = new List <RequestRoutingRuleDestination>
            {
                new RequestRoutingRuleDestination()
                {
                    DestinationKey = Utility.GetNewGuid()
                }
            };

            var listRequestRoutingRuleTranPriority = new List <RequestRoutingRuleTranPriority>
            {
                new RequestRoutingRuleTranPriority()
                {
                    TranPriorityKey = Utility.GetNewGuid()
                }
            };

            r.RoutingRuleName = "Test";
            r.SearchCriteriaGranularityLevel = 0;
            r.RoutingRuleDestinations        = listRequestRoutingRuleDestination;
            r.RoutingRuleSchedules           = listRequestRoutingRuleSchedule;
            r.RoutingRuleTranPriority        = listRequestRoutingRuleTranPriority;
            return(r);
        }
        public void AddRoutingRule_ValidArguments_ShouldAddRoutingRules()
        {
            //Arrange
            var mockFacilityGuid                = Utility.ParseStringToGuid(_executionContextAccessor.Current.Facility.FacilityKey);
            var mockRoutingRuleGuid             = Utility.GetNewGuid();
            Dictionary <string, string> headers = new Dictionary <string, string>();

            var mockScheduleGuid = Guid.Parse("E767B738-3944-4896-93A0-6F074BA16890");

            var fakeRountingSchedule = new RequestRoutingRuleSchedule
            {
                ScheduleKey = mockScheduleGuid
            };
            var routingRuleScheduleList = new List <RequestRoutingRuleSchedule>();

            routingRuleScheduleList.Add(fakeRountingSchedule);

            var routingRuleReq = new RoutingRuleRequest
            {
                RoutingRuleName = "test new@@@@45",
                SearchCriteriaGranularityLevel = 1,
                ActorKey             = Guid.Parse("6DD7B978-2BAE-4C0B-9ED2-0A79FB689A46"),
                RoutingRuleSchedules = routingRuleScheduleList,
            };

            //Act
            var response = _routingRuleManager.AddRoutingRule(routingRuleReq, headers);

            //Assert
            Assert.Contains("Routing Rule Created Successfully", response.Message);
            Assert.True(response.IsSuccess);
        }
        public void AddRoutingRule_ValidArguments_ShouldAddRoutingRules()
        {
            //Arrange
            var mockTenantGuid                  = Guid.Parse("E767B738-3944-4896-93A0-6F074BA16890");
            var mockFacilityGuid                = Guid.Parse("6DD7B978-2BAE-4C0B-9ED2-0A79FB689A46");
            var mockRoutingRuleGuid             = Utility.GetNewGuid();
            Dictionary <string, string> headers = new Dictionary <string, string>();

            var mockScheduleGuid = Guid.Parse("E767B738-3944-4896-93A0-6F074BA16890");
            var fakeSchedule     = new RequestRoutingRuleSchedule
            {
                ScheduleId = mockScheduleGuid
            };
            var scheduleList = new List <RequestRoutingRuleSchedule>();

            scheduleList.Add(fakeSchedule);

            var routingRuleReq = new RoutingRuleRequest
            {
                RoutingRuleName = "test new",
                SearchCriteriaGranularityLevel = 1,
                ActorKey             = Guid.Parse("6DD7B978-2BAE-4C0B-9ED2-0A79FB689A46"),
                RoutingRuleSchedules = scheduleList,
            };

            var fakeRoutingRuleScheduleTiming = new RoutingRuleScheduleTiming {
                RoutingRuleScheduleTimingKey = Utility.GetNewGuid(),
                TenantKey               = mockTenantGuid, // Guid.Parse(_executionContextAccessor.Current.Tenant.TenantKey),
                ScheduleTimingKey       = mockScheduleGuid,
                RoutingRuleKey          = mockRoutingRuleGuid,
                CreatedByActorKey       = routingRuleReq.ActorKey,
                LastModifiedByActorKey  = routingRuleReq.ActorKey,
                CreatedDateUTCDateTime  = DateTimeOffset.Now,
                LastModifiedUTCDateTime = DateTimeOffset.Now
            };
            var _schedules = new List <RoutingRuleScheduleTiming>();

            _schedules.Add(fakeRoutingRuleScheduleTiming);

            var mockRoutingRule = new RoutingRule
            {
                RoutingRuleName = routingRuleReq.RoutingRuleName.Trim(),
                TenantKey       = mockTenantGuid, // Guid.Parse(_executionContextAccessor.Current.Tenant.TenantKey),
                FacilityKey     = mockFacilityGuid,
                SearchCriteriaGranularityLevel = routingRuleReq.SearchCriteriaGranularityLevel,
                CreatedByActorKey         = routingRuleReq.ActorKey,
                LastModifiedByActorKey    = routingRuleReq.ActorKey,
                RoutingRuleScheduleTiming = _schedules.Count() > 0 ? _schedules : null,
                RoutingRuleKey            = mockRoutingRuleGuid,
            };

            //_mockRoutingRuleRepository.Setup(x => x.Add(mockRoutingRule)).Returns();
            //Act
            var response = _routingRuleManager.AddRoutingRule(routingRuleReq, mockFacilityGuid, headers);

            //Assert
            Assert.Contains("Routing Rule Created Successfully", response.Message);
            Assert.Equal(mockRoutingRuleGuid, response.Id);
        }
        public async Task <IActionResult> Put([FromBody] RoutingRuleRequest routingRule)
        {
            try
            {
                var ruleId = RouteData.Values["rountingRuleKey"].ToString();

                List <string> str = new List <string>()
                {
                    ruleId
                };
                bool res = Utility.ValidateGUID(str);
                if (res == false)
                {
                    _logger.LogInformation("Please provide valid RoutingRuleKey");
                    return(BadRequest(new ErrorResponse("Please provide valid RoutingRuleKey", (int)HttpStatusCode.BadRequest, ResponsePayloadType.BusinessException)));
                }

                if (ModelState.IsValid)
                {
                    if (routingRule.RoutingRuleDestinations.Count == 0 &&
                        routingRule.RoutingRuleTranPriority.Count == 0 &&
                        routingRule.RoutingRuleSchedules.Count == 0)
                    {
                        _logger.LogInformation("Any one of them is mandatory, Destination,Shedule,Transaction Priority");
                        return(BadRequest(new ErrorResponse("Any one of them is mandatory, Destination,Shedule,Transaction Priority", (int)HttpStatusCode.BadRequest, ResponsePayloadType.BusinessException)));
                    }

                    var headers = Request.Headers.ToDictionary <KeyValuePair <string, StringValues>, string, string>(item => item.Key, item => item.Value);
                    BusinessResponse response = _manager.UpdateRoutingRule(routingRule, Utility.ParseStringToGuid(ruleId), headers);
                    if (response.IsSuccess == false)
                    {
                        _logger.LogInformation(response.Message);
                        return(BadRequest(new ErrorResponse(response.Message, (int)HttpStatusCode.BadRequest, ResponsePayloadType.BusinessException)));
                    }
                    else
                    {
                        _logger.LogInformation(response.Message);
                        return(Ok(response.Message));
                    }
                }
                else
                {
                    _logger.LogInformation("Model is not Valid");
                    return(BadRequest(new ErrorResponse(new ModelStateRequestValidationAdaptor(ModelState).ToString(), (int)HttpStatusCode.BadRequest, ResponsePayloadType.BusinessException)));
                }
            }
            catch (Exception ex)
            {
                _logger.LogError(ex.Message);
                return(StatusCode(500));
            }
        }
        public void AddRoutingRule_InvalidArguments_ShouldReturnError()
        {
            //Arrange
            var mockFacilityGuid                = Utility.ParseStringToGuid(_executionContextAccessor.Current.Facility.FacilityKey);
            var mockRoutingRuleGuid             = Utility.GetNewGuid();
            Dictionary <string, string> headers = new Dictionary <string, string>();
            var routingRuleReq = new RoutingRuleRequest
            {
                RoutingRuleName = "test new@@@@45",
                SearchCriteriaGranularityLevel = 1,
                ActorKey = Guid.Parse("6DD7B978-2BAE-4C0B-9ED2-0A79FB689A46")
            };

            //Act
            var response = _routingRuleManager.AddRoutingRule(routingRuleReq, headers);

            //Assert
            Assert.Contains("Please select any schedule or destination or transaction priority.", response.Message);
            Assert.False(response.IsSuccess);
        }
Пример #7
0
        private List <RoutingRuleScheduleTiming> AddOrUpdateSchedules(RoutingRuleRequest routingRule, Guid newID, Guid ruleId, RoutingRule rule)
        {
            var _schedules = new List <RoutingRuleScheduleTiming>();

            if (routingRule.RoutingRuleSchedules != null && routingRule.RoutingRuleSchedules.Any())
            {
                foreach (var item in routingRule.RoutingRuleSchedules)
                {
                    if (ruleId == Guid.Empty) // case Add new Schedule
                    {
                        _schedules.Add(new RoutingRuleScheduleTiming
                        {
                            RoutingRuleScheduleTimingKey = Utility.GetNewGuid(),
                            TenantKey               = Guid.Parse(_executionContextAccessor.Current.Tenant.TenantKey),
                            ScheduleTimingKey       = item.ScheduleKey,
                            RoutingRuleKey          = newID,
                            CreatedByActorKey       = routingRule.ActorKey,
                            LastModifiedByActorKey  = routingRule.ActorKey,
                            CreatedDateTime         = DateTimeOffset.Now,
                            LastModifiedUTCDateTime = DateTime.UtcNow
                        });
                    }
                    else if (newID == Guid.Empty) // Case Update Schedule
                    {
                        rule.RoutingRuleScheduleTiming.Add(new RoutingRuleScheduleTiming
                        {
                            RoutingRuleScheduleTimingKey = Utility.GetNewGuid(),
                            TenantKey               = Guid.Parse(_executionContextAccessor.Current.Tenant.TenantKey),
                            ScheduleTimingKey       = item.ScheduleKey,
                            RoutingRuleKey          = ruleId,
                            CreatedByActorKey       = routingRule.ActorKey,
                            LastModifiedByActorKey  = routingRule.ActorKey,
                            CreatedDateTime         = DateTimeOffset.Now,
                            LastModifiedUTCDateTime = DateTime.UtcNow
                        });
                    }
                }
            }

            return(_schedules);
        }
Пример #8
0
        private List <RoutingRuleTranPriority> AddOrUpdateTranPriority(RoutingRuleRequest routingRule, Guid newID, Guid ruleId, RoutingRule rule)
        {
            var _tranPrio = new List <RoutingRuleTranPriority>();

            if (routingRule.RoutingRuleTranPriority != null && routingRule.RoutingRuleTranPriority.Any())
            {
                foreach (var item in routingRule.RoutingRuleTranPriority)
                {
                    if (ruleId == Guid.Empty) // case Add new tranPriority
                    {
                        _tranPrio.Add(new RoutingRuleTranPriority
                        {
                            RoutingRuleTranPriorityKey = Utility.GetNewGuid(),
                            TenantKey               = Guid.Parse(_executionContextAccessor.Current.Tenant.TenantKey),
                            TranPriorityKey         = item.TranPriorityKey,
                            RoutingRuleKey          = newID,
                            CreatedByActorKey       = routingRule.ActorKey,
                            LastModifiedByActorKey  = routingRule.ActorKey,
                            CreatedDateTime         = DateTimeOffset.Now,
                            LastModifiedUTCDateTime = DateTime.UtcNow
                        });
                    }
                    else if (newID == Guid.Empty) // Case Update destination
                    {
                        rule.RoutingRuleTranPriority.Add(new RoutingRuleTranPriority
                        {
                            RoutingRuleTranPriorityKey = Utility.GetNewGuid(),
                            TenantKey               = Guid.Parse(_executionContextAccessor.Current.Tenant.TenantKey),
                            TranPriorityKey         = item.TranPriorityKey,
                            RoutingRuleKey          = ruleId,
                            CreatedByActorKey       = routingRule.ActorKey,
                            LastModifiedByActorKey  = routingRule.ActorKey,
                            CreatedDateTime         = DateTimeOffset.Now,
                            LastModifiedUTCDateTime = DateTime.UtcNow
                        });
                    }
                }
            }

            return(_tranPrio);
        }
        public async Task <IActionResult> Post([FromBody] RoutingRuleRequest routingRule)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    if (routingRule.RoutingRuleDestinations.Count == 0 &&
                        routingRule.RoutingRuleTranPriority.Count == 0 &&
                        routingRule.RoutingRuleSchedules.Count == 0)
                    {
                        _logger.LogInformation("Any one of them is mandatory, Destination,Shedule,Transaction Priority");
                        return(BadRequest(new ErrorResponse("Any one of them is mandatory, Destination,Shedule,Transaction Priority", (int)HttpStatusCode.BadRequest, ResponsePayloadType.BusinessException)));
                    }

                    var headers = Request.Headers.ToDictionary <KeyValuePair <string, StringValues>, string, string>(item => item.Key, item => item.Value);
                    //to test routing rule name already exist in db or not..
                    BusinessResponse response = _manager.AddRoutingRule(routingRule, headers);

                    if (response.IsSuccess == false)
                    {
                        _logger.LogInformation(response.Message);
                        return(BadRequest(new ErrorResponse(response.Message, (int)HttpStatusCode.BadRequest, ResponsePayloadType.BusinessException)));
                    }
                    else
                    {
                        return(CreatedAtAction(nameof(GetRoutingRule), new { rountingRuleKey = response.Id }, routingRule));
                    }
                }
                else
                {
                    _logger.LogInformation("Model is not valid");
                    return(BadRequest(new ErrorResponse(new ModelStateRequestValidationAdaptor(ModelState).ToString(), (int)HttpStatusCode.BadRequest, ResponsePayloadType.BusinessException)));
                }
            }
            catch (Exception ex)
            {
                _logger.LogError(ex.Message);
                return(StatusCode(500));
            }
        }
Пример #10
0
        /// <summary>
        /// to add routing rule in database
        /// </summary>
        /// <param name="routingRule"></param>
        /// <param name="facilityID"></param>
        /// <returns></returns>
        public BusinessResponse AddRoutingRule(RoutingRuleRequest routingRule, Dictionary <string, string> headers)
        {
            try
            {
                var facilityID = Utility.ParseStringToGuid(_executionContextAccessor.Current.Facility.FacilityKey);

                var rule = _routingRulesRepository.GetRoutingRule(routingRule.RoutingRuleName, facilityID).GetAwaiter().GetResult();
                if (rule != null)
                {
                    var message = new BusinessResponse()
                    {
                        IsSuccess = false, Message = "Routing Rule With Same Name Already Exist."
                    };
                    return(message);
                }

                if (routingRule.RoutingRuleDestinations == null && routingRule.RoutingRuleSchedules == null && routingRule.RoutingRuleTranPriority == null)
                {
                    var message = new BusinessResponse()
                    {
                        IsSuccess = false, Message = "Please select any schedule or destination or transaction priority."
                    };
                    return(message);
                }

                var         newID      = Utility.GetNewGuid();
                var         ruleId     = Guid.Empty;
                RoutingRule UpdateRule = new RoutingRule();

                //common methods for add/Update operations..
                List <RoutingRuleScheduleTiming> _schedules   = AddOrUpdateSchedules(routingRule, newID, ruleId, UpdateRule);
                List <RoutingRuleDestination>    _destination = AddOrUpdateDestination(routingRule, newID, ruleId, UpdateRule);
                List <RoutingRuleTranPriority>   _tranPrio    = AddOrUpdateTranPriority(routingRule, newID, ruleId, UpdateRule);

                _routingRulesRepository.Add(new RoutingRule
                {
                    RoutingRuleName = routingRule.RoutingRuleName.Trim(),
                    TenantKey       = Guid.Parse(_executionContextAccessor.Current.Tenant.TenantKey),
                    FacilityKey     = facilityID,
                    SearchCriteriaGranularityLevel = routingRule.SearchCriteriaGranularityLevel,
                    CreatedByActorKey         = routingRule.ActorKey,
                    LastModifiedByActorKey    = routingRule.ActorKey,
                    RoutingRuleScheduleTiming = _schedules.Any() ? _schedules : null,
                    RoutingRuleDestination    = _destination.Any() ? _destination : null,
                    RoutingRuleTranPriority   = _tranPrio.Any() ? _tranPrio : null,
                    RoutingRuleKey            = newID,
                });

                _unitOfWork.CommitChanges();
                SendEvent(GetByID(newID), "Add", headers);
                var result = new BusinessResponse()
                {
                    IsSuccess = true, Message = "Routing Rule Created Successfully", Id = newID
                };
                return(result);
            }
            catch (Exception ex)
            {
                var exception = new BusinessResponse()
                {
                    IsSuccess = false, Message = ex.Message
                };
                return(exception);
            }
        }
Пример #11
0
        /// <summary>
        /// to update routing rule in database
        /// </summary>
        /// <param name="routingRule"></param>
        /// <param name="facilityID"></param>
        /// <param name="ruleId"></param>
        /// <param name="headers"></param>
        /// <returns></returns>
        public BusinessResponse UpdateRoutingRule(RoutingRuleRequest routingRule, Guid ruleId, Dictionary <string, string> headers)
        {
            try
            {
                var facilityID = Utility.ParseStringToGuid(_executionContextAccessor.Current.Facility.FacilityKey);

                var ruleExist = _routingRulesRepository.GetRoutingRule(routingRule.RoutingRuleName, facilityID).GetAwaiter().GetResult();
                if (ruleExist != null && ruleExist.RoutingRuleKey != ruleId)
                {
                    var message = new BusinessResponse()
                    {
                        IsSuccess = false, Message = "Routing Rule With Same Name Already Exist."
                    };
                    return(message);
                }

                if (routingRule.RoutingRuleDestinations == null && routingRule.RoutingRuleSchedules == null && routingRule.RoutingRuleTranPriority == null)
                {
                    var message = new BusinessResponse()
                    {
                        IsSuccess = false, Message = "Please select any schedule or destination or transaction priority."
                    };
                    return(message);
                }

                var rule = _routingRulesRepository.GetRoutingRule(ruleId, facilityID).GetAwaiter().GetResult();
                if (rule == null)
                {
                    var message = new BusinessResponse()
                    {
                        IsSuccess = false, Message = "Routing Rule with RountingRuleKey :" + ruleId + " not exist."
                    };
                    return(message);
                }

                if (rule.RoutingRuleTranPriority.Any())
                {
                    rule.RoutingRuleTranPriority.Clear();
                }
                if (rule.RoutingRuleScheduleTiming.Any())
                {
                    rule.RoutingRuleScheduleTiming.Clear();
                }
                if (rule.RoutingRuleDestination.Any())
                {
                    rule.RoutingRuleDestination.Clear();
                }

                var newGuid = Guid.Empty;

                //common methods for add/Update operations..
                AddOrUpdateSchedules(routingRule, newGuid, ruleId, rule);
                AddOrUpdateDestination(routingRule, newGuid, ruleId, rule);
                AddOrUpdateTranPriority(routingRule, newGuid, ruleId, rule);


                rule.RoutingRuleName = routingRule.RoutingRuleName.Trim();
                rule.SearchCriteriaGranularityLevel = routingRule.SearchCriteriaGranularityLevel;
                rule.LastModifiedByActorKey         = routingRule.ActorKey;
                rule.LastModifiedUTCDateTime        = DateTime.UtcNow;
                _routingRulesRepository.UpdateRoutingRule(rule);

                _unitOfWork.CommitChanges();
                SendEvent(GetByID(ruleId), "Update", headers);
                var result = new BusinessResponse()
                {
                    IsSuccess = true, Message = "Routing Rule Updated Successfully"
                };
                return(result);
            }
            catch (Exception ex)
            {
                var exception = new BusinessResponse()
                {
                    IsSuccess = false, Message = ex.Message
                };
                return(exception);
            }
        }
        public void UpdateRoutingRule_ValidArgument_ShouldUpdateRoutingRule()
        {
            //Arrange
            var mockFacilityGuid     = Utility.ParseStringToGuid(_executionContextAccessor.Current.Facility.FacilityKey);
            var mockRoutingRuleGuid1 = Utility.GetNewGuid();
            var mockRoutingRuleName1 = "test";
            var mockRoutingRuleGuid2 = Utility.GetNewGuid();
            var mockRoutingRuleName2 = "test new";

            var mockScheduleGuid1 = Utility.GetNewGuid();
            var mockScheduleGuid2 = Utility.GetNewGuid();

            Dictionary <string, string> headers = new Dictionary <string, string>();

            var fakeSchedule1 = new ScheduleTiming
            {
                ScheduleTimingKey  = mockScheduleGuid1,
                ScheduleTimingName = "Test Schedule"
            };

            var fakeSchedule2 = new ScheduleTiming
            {
                ScheduleTimingKey  = mockScheduleGuid2,
                ScheduleTimingName = "Test Schedule 2"
            };
            var fakeRoutingRuleSchedule = new RoutingRuleScheduleTiming
            {
                RoutingRuleScheduleTimingKey = Utility.GetNewGuid(),
                TenantKey         = Utility.ParseStringToGuid(_executionContextAccessor.Current.Tenant.TenantKey),
                ScheduleTimingKey = mockScheduleGuid1,
                RoutingRuleKey    = mockRoutingRuleGuid2,
            };

            var fakeCollectionRoutingRuleSchedule = new List <RoutingRuleScheduleTiming>();

            fakeCollectionRoutingRuleSchedule.Add(fakeRoutingRuleSchedule);

            var fakeRoutingRule1 = Task.FromResult <RoutingRule>(new RoutingRule
            {
                RoutingRuleKey  = mockRoutingRuleGuid1,
                RoutingRuleName = mockRoutingRuleName1,
                FacilityKey     = mockFacilityGuid,
                TenantKey       = Utility.ParseStringToGuid(_executionContextAccessor.Current.Tenant.TenantKey),
            });

            var fakeRoutingRule2 = Task.FromResult <RoutingRule>(new RoutingRule
            {
                RoutingRuleKey            = mockRoutingRuleGuid2,
                RoutingRuleName           = mockRoutingRuleName2,
                FacilityKey               = mockFacilityGuid,
                TenantKey                 = Utility.ParseStringToGuid(_executionContextAccessor.Current.Tenant.TenantKey),
                RoutingRuleScheduleTiming = fakeCollectionRoutingRuleSchedule
            });


            var fakeRountingSchedule = new RequestRoutingRuleSchedule
            {
                ScheduleKey = mockScheduleGuid2
            };
            var routingRuleScheduleList = new List <RequestRoutingRuleSchedule>();

            routingRuleScheduleList.Add(fakeRountingSchedule);


            var routingRuleReq = new RoutingRuleRequest
            {
                RoutingRuleName = mockRoutingRuleName2,
                SearchCriteriaGranularityLevel = 1,
                ActorKey             = Guid.Parse("6DD7B978-2BAE-4C0B-9ED2-0A79FB689A46"),
                RoutingRuleSchedules = routingRuleScheduleList,
            };

            _mockRoutingRuleRepository.Setup(x => x.GetRoutingRule(mockRoutingRuleName1, mockFacilityGuid)).Returns(fakeRoutingRule1);
            _mockRoutingRuleRepository.Setup(x => x.GetRoutingRule(mockRoutingRuleGuid2, mockFacilityGuid)).Returns(fakeRoutingRule2);

            //Act
            var response = _routingRuleManager.UpdateRoutingRule(routingRuleReq, mockRoutingRuleGuid2, headers);

            //Assert
            Assert.Contains("Routing Rule Updated Successfully", response.Message);
            Assert.True(response.IsSuccess);
        }
        public void UpdateRoutingRule_RequiredParameterMissing_ShouldReturnError()
        {
            //Arrange
            var mockFacilityGuid     = Utility.ParseStringToGuid(_executionContextAccessor.Current.Facility.FacilityKey);
            var mockRoutingRuleGuid1 = Utility.GetNewGuid();
            var mockRoutingRuleName1 = "test";
            var mockRoutingRuleGuid2 = Utility.GetNewGuid();
            var mockRoutingRuleName2 = "test new";

            var mockScheduleGuid1 = Utility.GetNewGuid();
            var mockScheduleGuid2 = Utility.GetNewGuid();

            Dictionary <string, string> headers = new Dictionary <string, string>();

            var fakeRoutingRule1 = Task.FromResult <RoutingRule>(new RoutingRule
            {
                RoutingRuleKey  = mockRoutingRuleGuid1,
                RoutingRuleName = mockRoutingRuleName1,
                FacilityKey     = mockFacilityGuid,
                TenantKey       = Utility.ParseStringToGuid(_executionContextAccessor.Current.Tenant.TenantKey),
            });

            var fakeRoutingRule2 = Task.FromResult <RoutingRule>(new RoutingRule
            {
                RoutingRuleKey  = mockRoutingRuleGuid2,
                RoutingRuleName = mockRoutingRuleName2,
                FacilityKey     = mockFacilityGuid,
                TenantKey       = Utility.ParseStringToGuid(_executionContextAccessor.Current.Tenant.TenantKey),
            });

            var fakeSchedule1 = new ScheduleTiming
            {
                ScheduleTimingKey  = mockScheduleGuid1,
                ScheduleTimingName = "Test Schedule"
            };

            var fakeSchedule2 = new ScheduleTiming
            {
                ScheduleTimingKey  = mockScheduleGuid2,
                ScheduleTimingName = "Test Schedule 2"
            };
            var fakeRoutingRuleSchedule = new RoutingRuleScheduleTiming
            {
                RoutingRuleScheduleTimingKey = Utility.GetNewGuid(),
                TenantKey         = Utility.ParseStringToGuid(_executionContextAccessor.Current.Tenant.TenantKey),
                ScheduleTimingKey = mockScheduleGuid1,
                RoutingRuleKey    = mockRoutingRuleGuid2,
            };

            var routingRuleReq = new RoutingRuleRequest
            {
                RoutingRuleName = mockRoutingRuleName2,
                SearchCriteriaGranularityLevel = 1,
                ActorKey = Guid.Parse("6DD7B978-2BAE-4C0B-9ED2-0A79FB689A46")
            };

            _mockRoutingRuleRepository.Setup(x => x.GetRoutingRule(mockRoutingRuleName1, mockFacilityGuid)).Returns(fakeRoutingRule1);
            _mockRoutingRuleRepository.Setup(x => x.GetRoutingRule(mockRoutingRuleGuid2, mockFacilityGuid)).Returns(fakeRoutingRule2);

            //Act
            var response = _routingRuleManager.UpdateRoutingRule(routingRuleReq, mockRoutingRuleGuid2, headers);

            //Assert
            Assert.Contains("Please select any schedule or destination or transaction priority.", response.Message);
            Assert.False(response.IsSuccess);
        }