Exemplo n.º 1
0
        public async void TestWarningRuleIsNotApplied()
        {
            var rules = new RulesServiceClient(BaseUrl, SessionId, new DummyPackageInfo(), null);

            CreateDefaultRules(rules);
            var rule = rules.GetRules().Single(r => r.Category == RuleCategory.WarningRule && r.Type == RuleType.Default);

            rules.DeactivateRule(rule.Id);

            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.IsFalse(validation.HasWarning);
            Assert.IsNullOrEmpty(validation.Message);
        }
Exemplo n.º 2
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.",
                });
            }
        }
Exemplo n.º 3
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);
        }
Exemplo n.º 4
0
        public override void TestFixtureTearDown()
        {
            var sut = new RulesServiceClient(BaseUrl, SessionId, new DummyPackageInfo(), null);

            DeleteAllRules(sut);

            base.TestFixtureTearDown();
        }
Exemplo n.º 5
0
        private void DeleteAllRules(RulesServiceClient sut)
        {
            var rules = sut.GetRules();

            foreach (var rule in rules)
            {
                sut.DeleteRule(rule.Id);
            }
        }
Exemplo n.º 6
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);
        }
Exemplo n.º 7
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);
        }
Exemplo n.º 8
0
        public void ActivateDeactivate()
        {
            var sut = new RulesServiceClient(BaseUrl, SessionId, new DummyPackageInfo(), null);

            sut.ActivateRule(_knownRuleId);

            var rule = sut.GetRules().Single(x => x.Id == _knownRuleId);

            Assert.IsTrue(rule.IsActive);

            sut.DeactivateRule(_knownRuleId);
            rule = sut.GetRules().Single(x => x.Id == _knownRuleId);
            Assert.IsFalse(rule.IsActive);

            sut.ActivateRule(_knownRuleId);
            rule = sut.GetRules().Single(x => x.Id == _knownRuleId);
            Assert.IsTrue(rule.IsActive);
        }
Exemplo n.º 9
0
        public void UpdateRule()
        {
            var sut               = new RulesServiceClient(BaseUrl, SessionId, new DummyPackageInfo(), null);
            var newMessage        = "UpdateRuleTest" + Guid.NewGuid();
            var newName           = "UpdateRuleTest" + Guid.NewGuid();
            var activeFromDateRef = DateTime.Today.AddDays(20);

            var rule = sut.GetRules().Single(r => r.Id == _knownRuleId);

            rule.Message  = newMessage;
            rule.Name     = newName;
            rule.Priority = 99;

            rule.AppliesToCurrentBooking = false;
            rule.AppliesToFutureBooking  = true;
            rule.ZoneList      = "200,201";
            rule.ActiveFrom    = activeFromDateRef;
            rule.ActiveTo      = activeFromDateRef.AddMonths(4);
            rule.DaysOfTheWeek = DayOfTheWeek.Monday | DayOfTheWeek.Wednesday;
            rule.StartTime     = new DateTime(2000, 1, 1, 20, 18, 8);
            rule.EndTime       = new DateTime(2000, 1, 1, 21, 19, 9);
            rule.IsActive      = false;

            sut.UpdateRule(rule);

            rule = sut.GetRules().Single(r => r.Id == _knownRuleId);
            Assert.AreEqual(newMessage, rule.Message);
            Assert.AreEqual(newName, rule.Name);
            Assert.AreEqual(true, rule.AppliesToFutureBooking);
            Assert.AreEqual(false, rule.AppliesToCurrentBooking);
            Assert.AreEqual("200,201", rule.ZoneList);
            Assert.AreEqual(false, rule.IsActive);
            Assert.AreEqual(activeFromDateRef, rule.ActiveFrom);
            Assert.AreEqual(activeFromDateRef.AddMonths(4), rule.ActiveTo);
            Assert.AreEqual(DayOfTheWeek.Monday | DayOfTheWeek.Wednesday, rule.DaysOfTheWeek);
            Assert.AreEqual(new DateTime(2000, 1, 1, 20, 18, 8), rule.StartTime);
            Assert.AreEqual(new DateTime(2000, 1, 1, 21, 19, 9), rule.EndTime);
            Assert.AreEqual(99, rule.Priority);
        }
Exemplo n.º 10
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()
            });
        }