示例#1
0
        public void Will_create_default_script_if_missing()
        {
            var scriptRepo = new Mock <IScriptRepository>();
            var scriptRepoGetScriptCalledNum = 0;

            scriptRepo
            .Setup(x => x.GetScriptByName(It.IsAny <string>()))
            .Returns(() => null)
            .Callback(() => scriptRepoGetScriptCalledNum++);


            var utilService = new Mock <IProcessingUtilService>();
            var service     = new RoslynScriptProcessingService(scriptRepo.Object, utilService.Object, new ScriptProcessingSettings()
            {
                GenerateDefaultScript = true
            });


            var doc       = CreateAddDocument();
            var processed = service.Process(doc) as AddDocument;

            processed.Should().NotBeNull();
            processed.Id.Should().Be(doc.Id);
            processed.Domain.Should().Be(doc.Domain);
        }
示例#2
0
        public void Will_use_cached_scripts()
        {
            var script = new Script()
            {
                Code = ResourceUtils.GetManifestString("Scripts.Data.RegexScript.cs"),
                Name = "RegexScript"
            };
            var scriptRepo = new Mock <IScriptRepository>();
            var scriptRepoGetScriptCalledNum = 0;

            scriptRepo
            .Setup(x => x.GetScriptByName(It.IsAny <string>()))
            .Returns(() => script)
            .Callback(() => scriptRepoGetScriptCalledNum++);

            var utilService = new Mock <IProcessingUtilService>();
            var service     = new RoslynScriptProcessingService(scriptRepo.Object, utilService.Object, new ScriptProcessingSettings());

            var doc = CreateAddDocument();

            var firstRun = 0L;

            for (int i = 0; i < 100; i++)
            {
                var timer     = Stopwatch.StartNew();
                var processed = service.Process(doc) as AddDocument;
                if (firstRun == 0)
                {
                    firstRun = timer.ElapsedMilliseconds * 2; //for some margin..
                }
                timer.Stop();

                processed.Should().NotBeNull();
                processed.Id.Should().Be(doc.Id);
                processed.Domain.Should().Be(doc.Domain);
                processed.GetFieldValue("magnus").Should().Be("magnus");
                scriptRepoGetScriptCalledNum.Should().Be(1);
            }
        }
示例#3
0
        public void Will_throw_exception_if_script_missing()
        {
            var scriptRepo = new Mock <IScriptRepository>();
            var scriptRepoGetScriptCalledNum = 0;

            scriptRepo
            .Setup(x => x.GetScriptByName(It.IsAny <string>()))
            .Returns(() => null)
            .Callback(() => scriptRepoGetScriptCalledNum++);


            var utilService = new Mock <IProcessingUtilService>();
            var service     = new RoslynScriptProcessingService(scriptRepo.Object, utilService.Object, new ScriptProcessingSettings()
            {
                GenerateDefaultScript = false
            });



            Action invoke = () => service.Process(CreateAddDocument());

            invoke.Should().Throw <ScriptMissingException>();
        }