예제 #1
0
        private static void CreateDefaultRules(RulesServiceClient sut)
        {
            if (sut.GetRules().None(r => (r.Category == RuleCategory.WarningRule) && (r.Type == RuleType.Default)))
            {
                // Default rate does not exist for this company
                sut.CreateRule(new Rule
                {
                    Type     = RuleType.Default,
                    Category = RuleCategory.WarningRule,
                    AppliesToCurrentBooking = true,
                    AppliesToFutureBooking  = true,
                    Id         = Guid.NewGuid(),
                    IsActive   = false,
                    Message    = "Due to the current volume of calls, please note that pickup may be delayed.",
                    ActiveFrom = DateTime.Now.AddHours(-1),
                    ActiveTo   = DateTime.Now.AddHours(1)
                });
            }

            if (sut.GetRules().None(r => (r.Category == (int)RuleCategory.DisableRule) && (r.Type == (int)RuleType.Default)))
            {
                // Default rate does not exist for this company
                sut.CreateRule(new Rule
                {
                    Type     = RuleType.Default,
                    Category = RuleCategory.DisableRule,
                    AppliesToCurrentBooking = true,
                    AppliesToFutureBooking  = true,
                    Id      = Guid.NewGuid(),
                    Message = "Service is temporarily unavailable. Please call dispatch center for service.",
                });
            }
        }
예제 #2
0
        private Rule CreateRule(Action <Rule> update)
        {
            var ruleId = Guid.NewGuid();
            var name   = "TestRule" + Guid.NewGuid();
            var mess   = "TestRule Message" + Guid.NewGuid();

            var rules   = new RulesServiceClient(BaseUrl, SessionId, new DummyPackageInfo(), null);
            var newRule = new Rule
            {
                Id       = ruleId,
                Name     = name,
                Type     = RuleType.Recurring,
                Category = RuleCategory.WarningRule,
                AppliesToCurrentBooking = true,
                AppliesToFutureBooking  = true,
                Priority = 23,
                IsActive = true,
                Message  = mess,
            };

            if (update != null)
            {
                update(newRule);
            }

            rules.CreateRule(newRule);

            return(newRule);
        }
예제 #3
0
        public async void TestRecurrencyRuleIsApplied_with_start_and_end_time_on_different_day()
        {
            var ruleId            = Guid.NewGuid();
            var activeFromDateRef = DateTime.Now;
            var name         = "ReccurencyRuleTest" + Guid.NewGuid();
            var mess         = "ReccurencyRuleTestMessage";
            var dayOfTheWeek = 1 << (int)DateTime.Now.DayOfWeek;
            var rules        = new RulesServiceClient(BaseUrl, SessionId, new DummyPackageInfo(), null);

            rules.CreateRule(new Rule
            {
                Id       = ruleId,
                Name     = name,
                Type     = RuleType.Recurring,
                Category = RuleCategory.WarningRule,
                AppliesToCurrentBooking = true,
                AppliesToFutureBooking  = true,
                ActiveFrom    = activeFromDateRef.AddHours(-1),
                ActiveTo      = activeFromDateRef.AddHours(1),
                DaysOfTheWeek = (DayOfTheWeek)dayOfTheWeek,
                StartTime     = activeFromDateRef.AddHours(-1),
                EndTime       = activeFromDateRef.AddHours(22),
                Priority      = 23,
                IsActive      = true,
                Message       = "ReccurencyRuleTestMessage",
                ZoneList      = " "
            });

            var sut   = new OrderServiceClient(BaseUrl, SessionId, new DummyPackageInfo(), null, null);
            var order = new CreateOrderRequest
            {
                Id             = Guid.NewGuid(),
                PickupAddress  = TestAddresses.GetAddress1(),
                PickupDate     = DateTime.Now,
                DropOffAddress = TestAddresses.GetAddress2(),
                Settings       = new BookingSettings
                {
                    ChargeTypeId  = ChargeTypes.PaymentInCar.Id,
                    VehicleTypeId = 1,
                    ProviderId    = 13,
                    Phone         = "5145551212",
                    Passengers    = 6,
                    NumberOfTaxi  = 1,
                    Name          = "Joe Smith"
                },
            };

            var validation = await sut.ValidateOrder(order);

            Assert.IsTrue(validation.HasWarning);
            Assert.AreEqual(mess, validation.Message);
        }
예제 #4
0
        public void AddRule()
        {
            var ruleId            = Guid.NewGuid();
            var activeFromDateRef = DateTime.Today.AddDays(14);
            var name = "AddRuleTest" + Guid.NewGuid();

            var sut = new RulesServiceClient(BaseUrl, SessionId, new DummyPackageInfo(), null);

            sut.CreateRule(new Rule
            {
                Id       = ruleId,
                Name     = name,
                Type     = RuleType.Recurring,
                Category = RuleCategory.WarningRule,
                AppliesToCurrentBooking = true,
                AppliesToFutureBooking  = true,
                ActiveFrom    = activeFromDateRef,
                ActiveTo      = activeFromDateRef.AddMonths(2),
                DaysOfTheWeek = DayOfTheWeek.Saturday | DayOfTheWeek.Sunday,
                StartTime     = new DateTime(2000, 1, 1, 22, 11, 10),
                EndTime       = new DateTime(2000, 1, 1, 23, 22, 11),
                Priority      = 10,
                IsActive      = true,
                Message       = "DisableRuleMessage"
            });

            var rules = sut.GetRules();

            Assert.AreEqual(1, rules.Count(x => x.Id == ruleId));
            var rule = rules.Single(x => x.Id == ruleId);

            Assert.AreEqual(name, rule.Name);
            Assert.AreEqual(RuleCategory.WarningRule, rule.Category);
            Assert.AreEqual(RuleType.Recurring, rule.Type);
            Assert.AreEqual(true, rule.AppliesToFutureBooking);
            Assert.AreEqual(true, rule.AppliesToCurrentBooking);
            Assert.AreEqual(true, rule.IsActive);

            Assert.AreEqual(activeFromDateRef, rule.ActiveFrom);
            Assert.AreEqual(activeFromDateRef.AddMonths(2), rule.ActiveTo);

            Assert.AreEqual(DayOfTheWeek.Saturday | DayOfTheWeek.Sunday, rule.DaysOfTheWeek);
            Assert.AreEqual(new DateTime(2000, 1, 1, 22, 11, 10), rule.StartTime);
            Assert.AreEqual(new DateTime(2000, 1, 1, 23, 22, 11), rule.EndTime);

            Assert.AreEqual(10, rule.Priority);

            Assert.AreEqual("DisableRuleMessage", rule.Message);
        }
예제 #5
0
        public override void Setup()
        {
            base.Setup();
            CreateAndAuthenticateTestAdminAccount().Wait();

            var sut = new RulesServiceClient(BaseUrl, SessionId, new DummyPackageInfo(), null);

            DeleteAllRules(sut);
            sut.CreateRule(new Rule
            {
                Id            = (_knownRuleId = Guid.NewGuid()),
                Type          = RuleType.Recurring,
                Category      = RuleCategory.DisableRule,
                DaysOfTheWeek = DayOfTheWeek.Sunday,
                StartTime     = DateTime.MinValue.AddHours(2),
                EndTime       = DateTime.MinValue.AddHours(3),
                ActiveFrom    = DateTime.Now.AddDays(1),
                ActiveTo      = DateTime.Now.AddDays(2),
                IsActive      = true,
                Name          = "Rate " + Guid.NewGuid(),
                Message       = "Due to...",
                Priority      = new Random().Next()
            });
        }