public static TResult Query <TResult>(this IDispatcher dispatcher, QueryBase <TResult> message, Action <MessageExecuteSetting> configurationSetting) where TResult : class
        {
            var setting = new MessageExecuteSetting();

            configurationSetting.Do(action => action(setting));
            return(dispatcher.Query(message, setting));
        }
        public static void Push(this IDispatcher dispatcher, CommandBase message, Action <MessageExecuteSetting> configurationSetting)
        {
            var setting = new MessageExecuteSetting();

            configurationSetting.Do(action => action(setting));
            dispatcher.Push(message, setting);
        }
示例#3
0
            public Lazy <IUnitOfWork> AddOrGet(MessageExecuteSetting setting, bool isFlush)
            {
                if (!ContainsKey(setting))
                {
                    Add(setting, new Lazy <IUnitOfWork>(() =>
                    {
                        var unitOfWorkFactory = string.IsNullOrWhiteSpace(setting.DataBaseInstance)
                                                                                           ? IoCFactory.Instance.TryResolve <IUnitOfWorkFactory>()
                                                                                           : IoCFactory.Instance.TryResolveByNamed <IUnitOfWorkFactory>(setting.DataBaseInstance);

                        var isoLevel = setting.IsolationLevel.GetValueOrDefault(isFlush ? IsolationLevel.ReadCommitted : IsolationLevel.ReadUncommitted);
                        return(unitOfWorkFactory.Create(isoLevel, isFlush, setting.Connection));
                    }, LazyThreadSafetyMode.None));
                }

                return(this[setting]);
            }
 public async Task <TResult> QueryAsync <TResult>(QueryBaseAsync <TResult> message, MessageExecuteSetting executeSetting = null)
 {
     return(await _dispatcherImplementation.QueryAsync(message, executeSetting));
 }
 public TResult Query <TResult>(QueryBase <TResult> message, MessageExecuteSetting executeSetting = null)
 {
     return(_dispatcherImplementation.Query(message, executeSetting));
 }
示例#6
0
 public void ShouldBePush <TCommand>(Action <TCommand> action, MessageExecuteSetting executeSetting = null, int callCount = 1) where TCommand : CommandBase
 {
     this.dispatcher.ShouldBePush(action, executeSetting, callCount);
 }
示例#7
0
 public MockController <TController> StubPushAsThrow <TCommand>(TCommand command, Exception exception, MessageExecuteSetting executeSetting = null) where TCommand : CommandBase
 {
     this.dispatcher.StubPushAsThrow(command, exception, executeSetting);
     return(this);
 }
示例#8
0
 public MockController <TController> StubQuery <TQuery, TResult>(TQuery query, TResult result, MessageExecuteSetting executeSetting = null) where TQuery : QueryBase <TResult> where TResult : class
 {
     this.dispatcher.StubQuery(query, result, executeSetting);
     return(this);
 }
示例#9
0
        public async Task <TResult> QueryAsync <TResult>(QueryBaseAsync <TResult> message, MessageExecuteSetting executeSetting = null)
        {
            await PushAsyncInternal(new CommandComposite(message, executeSetting));

            return((TResult)message.Result);
        }
 public static void StubQuery <TQuery, TResult>(this Mock <IDispatcher> dispatcher, TQuery query, Action <ICompareFactoryDsl <TQuery, TQuery> > dsl, TResult result, MessageExecuteSetting executeSetting = null)
     where TQuery : QueryBase <TResult>
 {
     dispatcher.Setup(r => r.Query(Pleasure.MockIt.IsStrong(query, dsl), Pleasure.MockIt.IsStrong(executeSetting)))
     .Returns(result);
 }
 public static void Push(this IDispatcher dispatcher, CommandBase message, MessageExecuteSetting executeSetting = null)
 {
     dispatcher.Push(composite => composite.Quote(message, executeSetting));
 }
 public static void StubQuery <TQuery, TResult>(this Mock <IDispatcher> dispatcher, TQuery query, TResult result, MessageExecuteSetting executeSetting = null) where TQuery : QueryBase <TResult> where TResult : class
 {
     dispatcher
     .Setup(r => r.Query(Pleasure.MockIt.IsStrong(query), Pleasure.MockIt.IsStrong(executeSetting)))
     .Returns(result);
 }
        public static void StubPushAsThrow <TCommand>(this Mock <IDispatcher> dispatcher, TCommand command, Exception exception, MessageExecuteSetting executeSetting = null) where TCommand : CommandBase
        {
            Action <CommandComposite> verify = commandComposite =>
            {
                commandComposite.Parts.ShouldNotBeEmpty();
                var part = commandComposite.Parts[0];
                part.Message.ShouldEqualWeak(command);
                part.Setting.ShouldEqualWeak(executeSetting ?? new MessageExecuteSetting());
            };

            dispatcher.Setup(r => r.Push(Pleasure.MockIt.Is(verify))).Throws(exception);
        }
        public static void ShouldBePush <TCommand>(this Mock <IDispatcher> dispatcher, Action <TCommand> verifyCommand, MessageExecuteSetting executeSetting = null, int callCount = 1) where TCommand : CommandBase
        {
            executeSetting = executeSetting ?? new MessageExecuteSetting();
            Func <CommandComposite.MessageCompositePart, bool> predicate = part =>
            {
                try
                {
                    verifyCommand((TCommand)part.Message);
                    part.Setting.ShouldEqualWeak(executeSetting);

                    return(true);
                }
                catch (Exception)
                {
                    return(false);
                }
            };

            if (callCount == 0)
            {
                dispatcher.Verify(r => r.Push(Pleasure.MockIt.Is <CommandComposite>(composite => composite.Parts.Any(predicate).ShouldBeTrue())), Times.Never());
            }
            else
            {
                dispatcher.Verify(r => r.Push(Pleasure.MockIt.Is <CommandComposite>(composite => composite.Parts.Count(predicate).ShouldEqual(callCount))));
            }
        }
 public static void ShouldBePush <TCommand>(this Mock <IDispatcher> dispatcher, TCommand command, MessageExecuteSetting executeSetting = null, int callCount = 1) where TCommand : CommandBase
 {
     ShouldBePush <TCommand>(dispatcher, arg => arg.ShouldEqualWeak(command), executeSetting, callCount);
 }
 public static void StubPush <TCommand>(this Mock <IDispatcher> dispatcher, TCommand command, MessageExecuteSetting executeSetting = null, int callCount = 1) where TCommand : CommandBase
 {
     StubPush <TCommand>(dispatcher, arg => arg.ShouldEqualWeak(command, dsl => dsl.ForwardToValue(r => r.Setting, executeSetting ?? new MessageExecuteSetting())), callCount);
 }
        public static void StubPushAsThrow <TCommand>(this Mock <IDispatcher> dispatcher, TCommand command, Exception exception, MessageExecuteSetting executeSetting = null) where TCommand : CommandBase
        {
            Action <CommandComposite> verify = commandComposite =>
            {
                commandComposite.Parts.ShouldNotBeEmpty();
                bool isAnySatisfied = commandComposite.Parts.Any(message =>
                {
                    try
                    {
                        message.ShouldEqualWeak(command, dsl => dsl.ForwardToValue(r => r.Setting, executeSetting ?? new MessageExecuteSetting()));
                        return(true);
                    }
                    catch (SpecificationException)
                    {
                        return(false);
                    }
                });
                if (!isAnySatisfied)
                {
                    throw new SpecificationException();
                }
            };

            dispatcher.Setup(r => r.Push(Pleasure.MockIt.Is(verify))).Throws(exception);
        }
示例#18
0
 /// <summary>
 ///     Mock Dispatcher.Push call
 /// </summary>
 /// <typeparam name="TCommand"></typeparam>
 /// <param name="command"></param>
 /// <param name="executeSetting"></param>
 /// <param name="callCount"></param>
 public void ShouldBePush <TCommand>(TCommand command, MessageExecuteSetting executeSetting = null, int callCount = 1) where TCommand : CommandBase
 {
     dispatcher.ShouldBePush(command, executeSetting, callCount);
 }
 public static void StubQueryAsThrow <TQuery, TResult>(this Mock <IDispatcher> dispatcher, TQuery query, Exception exception, MessageExecuteSetting executeSetting = null) where TQuery : QueryBase <TResult>
 {
     dispatcher
     .Setup(r => r.Query(Pleasure.MockIt.IsStrong(query), Pleasure.MockIt.IsStrong(executeSetting)))
     .Throws(exception);
 }
示例#20
0
 public TResult Query <TResult>(QueryBase <TResult> message, MessageExecuteSetting executeSetting = null)
 {
     Push(new CommandComposite(message, executeSetting));
     return((TResult)message.Result);
 }