protected override void ProcessRecord()
        {
            base.ProcessRecord();

            long index;

            if (!long.TryParse(Index, out index))
            {
                index = -1;
            }

            // TODO: Validate Operator

            var newRule = new SeatClassificationRule
            {
                RuleName = RuleName,
                Notes    = Notes,
                Order    = index,
                Field    = Field,
                Operator = Operator,
                Value    = Value,
                Status   = Status
            };

            var systemFile       = SeatClassificationFile.Load(SeatClassificationFile.SystemRuleFile);
            var experimentalFile = SeatClassificationFile.Load(SeatClassificationFile.ExperimentalFile);
            var engine           = new SeatClassificationEngine(systemFile, experimentalFile);

            engine.AddRule(newRule, !_production);

            systemFile.Save(SeatClassificationFile.SystemRuleFile);
            experimentalFile.Save(SeatClassificationFile.ExperimentalFile);
        }
Example #2
0
            public void Save_WhenCalledWithNonEmptyFileObject_StoresFileToDisk()
            {
                // Arrange
                var sut = new SeatClassificationFile();

                sut.Add(new SeatClassificationRule
                {
                    RuleName = "Test",
                    Field    = ClassificationRuleField.BaseType,
                    Operator = "Equals",
                    Value    = "1",
                    Status   = SeatStatus.AvailableForPurchase
                });
                var path = "ClassificationRules.json";

                if (File.Exists(path))
                {
                    File.Delete(path);
                }

                // Act
                sut.Save(path);

                // Assert
                File.Exists(path).Should().BeTrue("the file should have been saved");
                File.Delete(path);
            }
Example #3
0
            public void Load_WhenLoadingSavedFile_GetsCorrectData()
            {
                // Arrange
                var sut = new SeatClassificationFile();

                sut.Add(new SeatClassificationRule
                {
                    RuleName = "Test",
                    Notes    = "Test notes",
                    Field    = ClassificationRuleField.BaseType,
                    Operator = "Equals",
                    Value    = "1",
                    Status   = SeatStatus.AvailableForPurchase
                });
                var path = "ClassificationRulesLoadAndSave.json";

                if (File.Exists(path))
                {
                    File.Delete(path);
                }

                // Act
                sut.Save(path);
                var res = SeatClassificationFile.Load(path);

                File.Delete(path);

                // Assert
                res.Rules.Count().Should().Be(1, "we should have a single rule");
                var rule = res.Rules.Single();

                rule.RuleName.Should().Be("Test", "that was the name given to the original rule");
                rule.Notes.Should().Be("Test notes");
                rule.Field.Should().Be(ClassificationRuleField.BaseType, "that was the original content of Field");
                rule.Operator.Should().Be("Equals");
                rule.Value.Should().Be("1");
                rule.Status.Should().Be(SeatStatus.AvailableForPurchase);
            }