public async Task Setup_MessagesExistInMessageStore_MessagesAreReceivedByClient() { var serializer = new Serializer(); var routeMatcher = new RouteMatcher(); var dispatcher = new DefaultDispatcher(); var messageStore = new Mock <IMessageStore>(); var client = new Mock <IClient>(); client.Setup(c => c.ReachedMaxConcurrency).Returns(false); client.Setup(c => c.Enqueue(It.IsAny <SerializedPayload>())).Returns(new AsyncPayloadTicket()); var sampleMessage = RandomGenerator.GetMessage("TEST"); var topicMessage = sampleMessage.ToTopicMessage(sampleMessage.Route); messageStore.Setup(ms => ms.GetAll()).Returns(new List <Guid> { sampleMessage.Id }); messageStore.Setup(ms => ms.TryGetValue(sampleMessage.Id, out topicMessage)).Returns(true); var topic = new Topic(dispatcher, messageStore.Object, routeMatcher, serializer, NullLogger <Topic> .Instance ); topic.Setup("TEST", "TEST"); topic.ClientSubscribed(client.Object); await topic.ReadNextMessage(); client.Verify(c => c.Enqueue(It.IsAny <SerializedPayload>())); }
public async Task OnMessage_SubscriptionIsAddedAfterTheMessage_ClientEnqueueIsCalled() { var messageStore = new InMemoryMessageStore(); var serializer = new Serializer(); var routeMatcher = new RouteMatcher(); var dispatcher = new DefaultDispatcher(); var mockClient = new Mock <IClient>(); mockClient.Setup(c => c.ReachedMaxConcurrency).Returns(false); mockClient.Setup(c => c.Enqueue(It.IsAny <SerializedPayload>())).Returns(new AsyncPayloadTicket()); var activeSessionId = Guid.NewGuid(); mockClient.Setup(c => c.Id).Returns(activeSessionId); var topic = new Topic(dispatcher, messageStore, routeMatcher, serializer, NullLogger <Topic> .Instance ); topic.Setup("TEST", "TEST"); var sampleMessage = RandomGenerator.GetMessage("TEST"); topic.OnMessage(sampleMessage); topic.ClientSubscribed(mockClient.Object); await topic.ReadNextMessage(); mockClient.Verify(cs => cs.Enqueue(It.IsAny <SerializedPayload>())); }
public void NextAvailable_NoClient_ResultIsNull() { var dispatcher = new DefaultDispatcher(); var result = dispatcher.NextAvailable(); Assert.Null(result); }
public void NextAvailable_WithAvailableClient_ResultIsNull() { var mockSendQueue = new Mock <IClient>(); var dispatcher = new DefaultDispatcher(); dispatcher.Add(mockSendQueue.Object); var result = dispatcher.NextAvailable(); Assert.NotNull(result); }
protected Context_default_dispatcher() { unitOfWorkFactory = Pleasure.MockStrict <IUnitOfWorkFactory>(unitOfWorkFactoryMock => { unitOfWork = Pleasure.Mock <IUnitOfWork>(mock => mock.Setup(r => r.GetRepository()).Returns(Pleasure.MockAsObject <IRepository>())); unitOfWorkFactoryMock.Setup(r => r.Create(IsolationLevel.ReadCommitted, true, Pleasure.MockIt.IsNull <string>())).Returns(unitOfWork.Object); unitOfWorkFactoryMock.Setup(r => r.Create(IsolationLevel.ReadUncommitted, false, Pleasure.MockIt.IsNull <string>())).Returns(unitOfWork.Object); }); IoCFactory.Instance.StubTryResolve(unitOfWorkFactory.Object); dispatcher = new DefaultDispatcher(); }
public Behavior_default_dispatcher_push_with_connection_string() { unitOfWorkFactory = Pleasure.Mock <IUnitOfWorkFactory>(unitOfWorkFactoryMock => { unitOfWork = new Mock <IUnitOfWork>(); unitOfWorkFactoryMock.Setup(r => r.Create(IsolationLevel.ReadCommitted, Pleasure.MockIt.IsAny <string>())) .Returns(unitOfWork.Object); }); IoCFactory.Instance.StubTryResolve(unitOfWorkFactory.Object); IoCFactory.Instance.StubTryResolve(Pleasure.MockAsObject <IEventBroker>()); dispatcher = new DefaultDispatcher(); }
public void CanInvokeUIThreadDispatcherFromBackgroundThread() { DefaultDispatcher dispatcher = new DefaultDispatcher(); bool calledDelegate = false; BackgroundWorker backgroundThread = new BackgroundWorker(); backgroundThread.DoWork += ((sender, e) => dispatcher.BeginInvoke(new Action <object>(o => calledDelegate = true), null)); backgroundThread.RunWorkerAsync(); EnqueueDelay(500); EnqueueCallback(() => Assert.IsTrue(calledDelegate)); EnqueueTestComplete(); }
protected Context_default_dispatcher() { unitOfWorkFactory = Pleasure.MockStrict <IUnitOfWorkFactory>(unitOfWorkFactoryMock => { unitOfWork = new Mock <IUnitOfWork>(); unitOfWorkFactoryMock.Setup(r => r.Create(IsolationLevel.ReadCommitted, Pleasure.MockIt.IsNull <string>())).Returns(unitOfWork.Object); unitOfWorkFactoryMock.Setup(r => r.Create(IsolationLevel.ReadUncommitted, Pleasure.MockIt.IsNull <string>())).Returns(unitOfWork.Object); }); IoCFactory.Instance.StubTryResolve(unitOfWorkFactory.Object); eventBroker = Pleasure.Mock <IEventBroker>(); IoCFactory.Instance.StubTryResolve(eventBroker.Object); dispatcher = new DefaultDispatcher(); }
public void ProcessRequest(HttpContext context) { var dispatcher = new DefaultDispatcher(); var parameter = dispatcher.Query(new GetMvdParameterQuery() { Params = context.Request.Params }); context.Response.ContentType = "application/json"; context.Response.ContentEncoding = Encoding.UTF8; var instanceForQuery = dispatcher.Query(new CreateByTypeQuery() { Type = parameter.Type }); context.Response.Write(IncodingResult.Success(dispatcher.Query(new MVDExecute(new HttpContextWrapper(context)) { Instance = new CommandComposite((IMessage)instanceForQuery) })).ToJsonString()); }
public void ProcessRequest(HttpContext context) { var dispatcher = new DefaultDispatcher(); var parameter = dispatcher.Query(new GetMvdParameterQuery() { Params = context.Request.Params }); var commands = dispatcher.Query(new CreateByTypeQuery.AsCommands() { IncTypes = parameter.Type, IsComposite = parameter.IsCompositeArray }); context.Response.ContentType = "application/json"; context.Response.ContentEncoding = Encoding.UTF8; dispatcher.Push(new CommandComposite(commands)); var data = commands.Length == 1 ? commands[0].Result : commands.Select(r => r.Result); context.Response.Write(IncodingResult.Success(data).ToJsonString()); }
public void OnMessage_AnyCondition_MessageIsAddedToMessageStore() { var messageStore = new Mock <IMessageStore>(); var serializer = new Serializer(); var routeMatcher = new RouteMatcher(); var dispatcher = new DefaultDispatcher(); var topic = new Topic(dispatcher, messageStore.Object, routeMatcher, serializer, NullLogger <Topic> .Instance ); topic.Setup("TEST", "TEST"); var sampleMessage = RandomGenerator.GetMessage("TEST"); topic.OnMessage(sampleMessage); messageStore.Verify(ms => ms.Add(It.IsAny <TopicMessage>())); }
public void OnAck_AnyCondition_MessageIsDeleted() { var serializer = new Serializer(); var routeMatcher = new RouteMatcher(); var dispatcher = new DefaultDispatcher(); var messageStore = new Mock <IMessageStore>(); var topic = new Topic(dispatcher, messageStore.Object, routeMatcher, serializer, NullLogger <Topic> .Instance ); topic.Setup("TEST", "TEST"); var sampleMessage = RandomGenerator.GetMessage("TEST"); topic.OnMessage(sampleMessage); topic.OnStatusChanged(sampleMessage.Id, true); messageStore.Verify(ms => ms.Delete(sampleMessage.Id)); }
public async Task OnNack_AnyCondition_RequeueMessage() { var serializer = new Serializer(); var routeMatcher = new RouteMatcher(); var dispatcher = new DefaultDispatcher(); var messageStore = new InMemoryMessageStore(); var client = new Mock <IClient>(); client.Setup(c => c.ReachedMaxConcurrency).Returns(false); client.Setup(c => c.Enqueue(It.IsAny <SerializedPayload>())).Returns(new AsyncPayloadTicket()); var topic = new Topic(dispatcher, messageStore, routeMatcher, serializer, NullLogger <Topic> .Instance ); topic.Setup("TEST", "TEST"); topic.ClientSubscribed(client.Object); var sampleMessage = RandomGenerator.GetMessage("TEST"); topic.OnMessage(sampleMessage); await topic.ReadNextMessage(); client.Verify(ms => ms.Enqueue(It.IsAny <SerializedPayload>())); topic.OnStatusChanged(sampleMessage.Id, false); await topic.ReadNextMessage(); client.Verify(ms => ms.Enqueue(It.IsAny <SerializedPayload>())); }
/// <summary> /// Invokes action with single argument of type T on UI thread /// </summary> /// <typeparam name="T"></typeparam> /// <param name="action">Action to be invoked</param> /// <param name="argument">Argument to pass to the invoked action</param> public static void BeginInvokeOnUI <T>(Action <T> action, T argument) => DefaultDispatcher.BeginInvoke(action, argument);
public async Task <object> Execute() { //IModelMetadataProvider modelMetataMetadataProvider = Provider.GetRequiredService<IModelMetadataProvider>(); var byPair = Type.Split(UrlDispatcher.separatorByPair.ToCharArray(), StringSplitOptions.RemoveEmptyEntries); string genericType = byPair.ElementAtOrDefault(1); var inst = new DefaultDispatcher().Query(new FindTypeByName() { Type = byPair[0], }); var formCollection = new DefaultDispatcher().Query(new GetFormCollectionsQuery()); var instanceType = IsGroup ? typeof(List <>).MakeGenericType(inst) : inst; if (instanceType.IsTypicalType() && IsModel) { string str = formCollection["incValue"]; if (instanceType == typeof(string)) { return(str); } if (instanceType == typeof(bool)) { return(bool.Parse(str)); } if (instanceType == typeof(DateTime)) { return(DateTime.Parse(str)); } if (instanceType == typeof(int)) { return(int.Parse(str)); } if (instanceType.IsEnum) { return(Enum.Parse(instanceType, str)); } } else if (!string.IsNullOrWhiteSpace(genericType)) { instanceType = instanceType.MakeGenericType(genericType.Split(UrlDispatcher.separatorByGeneric.ToCharArray(), StringSplitOptions.RemoveEmptyEntries) .Select(name => new DefaultDispatcher().Query(new FindTypeByName() { Type = name, })) .ToArray()); } var obj = Activator.CreateInstance(instanceType); await Controller.TryUpdateModelAsync(obj, instanceType, ""); /* * var modelMetadata = modelMetataMetadataProvider.GetMetadataForType(instanceType); * * MvcOptions mvcOptions = Provider.GetRequiredService<IOptions<MvcOptions>>().Value; * mvcOptions.ModelBinderProviders.Clear(); * mvcOptions.ModelBinderProviders.Add(new FormCollectionModelBinderProvider()); * mvcOptions.ModelBinderProviders.Add(new ComplexTypeModelBinderProvider()); * mvcOptions.ModelBinderProviders.Add(new SimpleTypeModelBinderProvider()); * mvcOptions.ModelBinderProviders.Add(new ArrayModelBinderProvider()); * mvcOptions.ModelBinderProviders.Add(new CollectionModelBinderProvider()); * mvcOptions.ModelBinderProviders.Add(new DictionaryModelBinderProvider()); * mvcOptions.ModelBinderProviders.Add(new FloatingPointTypeModelBinderProvider()); * * var modelBinderFactory = new ModelBinderFactory(modelMetadata, * new OptionsWrapper<MvcOptions>(mvcOptions) * ); * * var valueProviderFactoryContext = new ValueProviderFactoryContext(ControllerContext); * * await new FormValueProviderFactory().CreateValueProviderAsync(valueProviderFactoryContext); * await new QueryStringValueProviderFactory().CreateValueProviderAsync(valueProviderFactoryContext); * await new RouteValueProviderFactory().CreateValueProviderAsync(valueProviderFactoryContext); * await new JQueryFormValueProviderFactory().CreateValueProviderAsync(valueProviderFactoryContext); * * bool isValid = await ModelBindingHelper.TryUpdateModelAsync(obj, instanceType, "", ControllerContext, * modelMetataMetadataProvider, * modelBinderFactory, new CompositeValueProvider(valueProviderFactoryContext.ValueProviders), * Provider.GetService<IObjectModelValidator>()); * * return obj; */ // ModelMetadataProviders.Current.GetMetadataForType(() => Activator.CreateInstance(instanceType), instanceType))(). //return new ComplexTypeModelBinder().BindModelAsync(ControllerContext ?? new ControllerContext(), new ModelBindingContext() // { // ModelMetadata = ModelMetadataProviders.Current.GetMetadataForType(() => Activator.CreateInstance(instanceType), instanceType), // ModelState = ModelState ?? new ModelStateDictionary(), // ValueProvider = ControllerContext != null // ? ValueProviderFactories.Factories.GetValueProvider(ControllerContext) // : formCollection, // }); return(obj); }