static async Task ContextCreation(ContextProvider provider) { // context can be created from connection string, connection or transaction // all these types of context implement the same interface ICommandCreator // context from connection string var context1 = provider.CreateContext(connString); // context from connection var connection = GetOpenConnection(); var context2 = provider.CreateContext(connection); // or context1.UsingConnection(connectionContext => { // doing something with connectionContext (attached to opened connection) // for example using transaction connectionContext.UsingTransaction(transactionContext => { // doing something with transactionContext (attached to active transaction) }); }); // or asynchronously await context1.UsingConnectionAsync(async connectionContext => { // doing something with connectionContext (attached to opened connection) // for example using transaction await connectionContext.UsingTransactionAsync(async transactionContext => { // doing something with transactionContext (attached to active transaction) }); }); // context from transaction var transaction = connection.BeginTransaction(); var context3 = provider.CreateContext(transaction); // or context1.UsingTransaction(transactionContext => { // doing something with transactionContext (attached to active transaction) }); // or asynchronously await context1.UsingTransactionAsync(async transactionContext => { // doing something with transactionContext (attached to active transaction) }); }
public FlowManagerTestsBase() { SchedulerExtension = Substitute.For <ISchedulerExtension>(); BucketExtension = Substitute.For <IBucketExtension>(); ArtificialIntelligenceExtension = Substitute.For <IArtificialIntelligenceExtension>(); EventTrackExtension = Substitute.For <IEventTrackExtension>(); BroadcastExtension = Substitute.For <IBroadcastExtension>(); ContactExtension = Substitute.For <IContactExtension>(); HelpDeskExtension = Substitute.For <IHelpDeskExtension>(); TunnelExtension = Substitute.For <ITunnelExtension>(); Sender = Substitute.For <ISender>(); StateManager = Substitute.For <IStateManager>(); ContextProvider = Substitute.For <IContextProvider>(); Context = Substitute.For <IContext>(); Logger = new LoggerConfiguration().CreateLogger(); ContextProvider .CreateContext(Arg.Any <Identity>(), Arg.Any <Identity>(), Arg.Any <LazyInput>(), Arg.Any <Flow>()) .Returns(Context); UserIdentity = new Identity("user", "domain"); ApplicationIdentity = new Identity("application", "domain"); Application = new Application() { Identifier = ApplicationIdentity.Name, Domain = ApplicationIdentity.Domain }; Message = new Message() { From = UserIdentity.ToNode(), To = ApplicationIdentity.ToNode() }; Context.UserIdentity.Returns(UserIdentity); Input = new LazyInput( Message, UserIdentity, new BuilderConfiguration(), Substitute.For <IDocumentSerializer>(), Substitute.For <IEnvelopeSerializer>(), ArtificialIntelligenceExtension, CancellationToken); Context.Input.Returns(Input); TraceProcessor = Substitute.For <ITraceProcessor>(); UserOwnerResolver = Substitute.For <IUserOwnerResolver>(); UserOwnerResolver .GetUserOwnerIdentitiesAsync(Arg.Any <Message>(), Arg.Any <BuilderConfiguration>(), Arg.Any <CancellationToken>()) .Returns(new UserOwner(UserIdentity, ApplicationIdentity)); }
public FlowManagerTestsBase() { BucketExtension = Substitute.For <IBucketExtension>(); ArtificialIntelligenceExtension = Substitute.For <IArtificialIntelligenceExtension>(); EventTrackExtension = Substitute.For <IEventTrackExtension>(); BroadcastExtension = Substitute.For <IBroadcastExtension>(); ContactExtension = Substitute.For <IContactExtension>(); Sender = Substitute.For <ISender>(); StateManager = Substitute.For <IStateManager>(); ContextProvider = Substitute.For <IContextProvider>(); Context = Substitute.For <IContext>(); Logger = Substitute.For <ILogger>(); ContextProvider .CreateContext(Arg.Any <Identity>(), Arg.Any <LazyInput>(), Arg.Any <Flow>()) .Returns(Context); User = new Identity("user", "domain"); Context.User.Returns(User); }
public UnitOfWork(ContextProvider contextProvider) { _contextProvider = contextProvider; _contextProvider.CreateContext(); }