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); }
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; }