示例#1
0
        public void CreatePublishedAssemblyTest()
        {
            // Arrange
            var mockLogManager        = new Mock <ILogManager>();
            var mockRuleSetRepository = new Mock <IRuleSetRepository>();
            var mockRuleTerminalApplicationService = new Mock <IRuleGrammarTerminalApplicationService>();

            mockRuleTerminalApplicationService.Setup(x => x.GetAllAsync())
            .Returns(Task.FromResult(GetMockRuleTerminals()));

            var businessRuleParser =
                new BusinessRuleParser(mockLogManager.Object, mockRuleTerminalApplicationService.Object);

            var rulesetTranslator   = new RuleSetTranslator(businessRuleParser);
            var ruleAssemblyService = new RuleSetAssemblyService(mockLogManager.Object);


            var testRuleSet = CreateTestRuleSet();

            // Act
            var sut = new RuleApplicationService(
                mockLogManager.Object, mockRuleSetRepository.Object, rulesetTranslator, ruleAssemblyService);

            var response = sut.CreateAssembly(testRuleSet, true);

            // Assert
            response.IsSuccessful.Should().BeTrue();
            response.Errors.Count.Should().Be(0);
            response.Content.GeneratedAssembly.Length.Should().BeGreaterThan(0);
        }
        public void ExecuteRuleTest()
        {
            // Arrange
            var mockLogManager         = new Mock <ILogManager>();
            var mockRuleSetRepository  = new Mock <IRuleSetRepository>();
            var mockRuleSetTranslator  = new Mock <IRuleSetTranslator>();
            var ruleSetAssemblyService = new RuleSetAssemblyService(mockLogManager.Object);

            var sut = new RuleApplicationService(
                mockLogManager.Object, mockRuleSetRepository.Object, mockRuleSetTranslator.Object, ruleSetAssemblyService);

            // Act
            var ruleSet = new RuleSet
            {
                Name  = "TestRule",
                Code  = $@"
                using System;

                namespace {Constants.RuleNamespace}
                {{
                    public class TestRule
                    {{
                        public int TestExecute()
                        {{
                            return 1;
                        }}
                    }}
                }}",
                Rules = new List <IRule>
                {
                    new Rule {
                        Name = "TestExecute"
                    }
                }
            };
            var result = (int)sut.ExecuteRule(ruleSet, "TestExecute");

            // Assert
            result.Should().Be(1);
        }