public void Get_enable_logging_from_shared_variables(PluginLogOption logOption)
        {
            var context = Substitute.For <IPluginExecutionContext>();

            context.SharedVariables.Returns(new ParameterCollection());

            var container = Substitute.For <IContainer>();

            container.Resolve <IPluginExecutionContext>().Returns(context);
            context.SharedVariables["pc-log-option"] = (int)logOption;
            var txConfig = Substitute.For <ITransactionContextConfiguration <xts_entity> >();
            var plugin   = Substitute.For <IPluginBase>();
            var config   = new PluginConfiguration <xts_entity>(plugin, container);

            Assert.Equal(logOption, config.LogOption);
        }
        public void Get_enable_logging_from_assembly_attribute_trace_log_setting(
            Organization.Options.PluginTraceLogSetting setting, PluginLogOption logOption)
        {
            var organization = new Organization {
                Id = Guid.NewGuid()
            };

            organization.Set(e => e.PluginTraceLogSetting, setting);
            var service = Substitute.For <IOrganizationService>();

            service.Retrieve(Arg.Any <string>(), Arg.Any <Guid>(), Arg.Any <ColumnSet>()).Returns(organization);
            var context = Substitute.For <IPluginExecutionContext>();

            context.SharedVariables.Returns(new ParameterCollection());
            context.OrganizationId.Returns(organization.Id);

            var container = Substitute.For <IContainer>();

            container.Resolve <IOrganizationService>().Returns(service);
            container.Resolve <IPluginExecutionContext>().Returns(context);
            var txConfig = Substitute.For <ITransactionContextConfiguration <xts_entity> >();

            var assembly = Substitute.For <_Assembly>();

            assembly.GetCustomAttributes(Arg.Is <Type>(t => t == typeof(CrmPluginLoggingAttribute)), Arg.Any <bool>()).Returns(new object[] { new CrmPluginLoggingAttribute() });

            var plugin       = Substitute.For <IPluginBase>();
            var pluginConfig = new PluginConfiguration <xts_entity>(plugin, container, assembly);

            service.DidNotReceive().Retrieve(Arg.Any <string>(), Arg.Any <Guid>(), Arg.Any <ColumnSet>());
            Assert.Equal(logOption, pluginConfig.LogOption);
            service.Received(1).Retrieve(Arg.Any <string>(), Arg.Any <Guid>(), Arg.Any <ColumnSet>());
            Assert.Equal(logOption, pluginConfig.LogOption);
            service.Received(1).Retrieve(Arg.Any <string>(), Arg.Any <Guid>(), Arg.Any <ColumnSet>());
            Assert.Null(pluginConfig.LogDirPath);

            var anotherPluginConfig = new PluginConfiguration <xts_entity>(plugin, container);

            Assert.Equal(logOption, anotherPluginConfig.LogOption);
            service.Received(1).Retrieve(Arg.Any <string>(), Arg.Any <Guid>(), Arg.Any <ColumnSet>());
            Assert.Equal(logOption, anotherPluginConfig.LogOption);
            service.Received(1).Retrieve(Arg.Any <string>(), Arg.Any <Guid>(), Arg.Any <ColumnSet>());

            Assert.Equal((int)logOption, context.SharedVariables["pc-log-option"]);
            Assert.Null(context.SharedVariables["pc-log-dir"]);
            Assert.Null(anotherPluginConfig.LogDirPath);
        }
Exemplo n.º 3
0
        public void Can_log_operation_execution(PluginLogOption pluginLogOption)
        {
            var list           = new List <string>();
            var tracingService = Substitute.For <ITracingService>();

            tracingService.When(s => s.Trace(Arg.Any <string>(), Arg.Any <object[]>()))
            .Do(ci => {
                var format = ci.ArgAt <string>(0);
                var args   = ci.ArgAt <object[]>(1);
                string log = String.Format(format, args);
                _output.WriteLine(log);
                list.Add(log);
            });

            var context = Substitute.For <ITransactionContext <xts_entity> >();

            context.LogOption.Returns(pluginLogOption);
            context.TracingService.Returns(tracingService);

            new Operation(context).Execute();
            Assert.StartsWith("Entered", list[0]);
            Assert.StartsWith("Exiting", list[1]);
        }
 public LogConfig(PluginLogOption logOption, string logDirPath)
 {
     LogOption  = logOption;
     LogDirPath = logDirPath;
 }