예제 #1
0
        /// <summary>
        /// Process the projection asynchronously and return the end state of the projection
        /// </summary>
        /// <param name="projectionToProcess">
        /// The projection to run
        /// </param>
        /// <returns>
        /// The sequence number up until which the projection was run
        /// </returns>
        public async Task <IProjectionResponse> ProcessAsync(IProjectionUntyped projectionToProcess,
                                                             OrchestrationCallbackIdentity responseSource = null)
        {
            await  Process(projectionToProcess);

            return(ProjectionResponse.Create(projectionToProcess, responseSource));
        }
예제 #2
0
        public void GetValuesAsArray_NotNull_TestMethod()
        {
            ProjectionResponse projResp  = ProjectionResponse.Create(Mocking.Mocking.GetProjectionUntyped());
            JArray             testArray = projResp.Values;

            Assert.IsNotNull(testArray);
        }
예제 #3
0
        public void GetValuesAsArray_AccountMatch_TestMethod()
        {
            string expected = "Acct.1";
            string actual   = "Not set";

            ProjectionResponse projResp  = ProjectionResponse.Create(Mocking.Mocking.GetProjectionUntyped());
            JArray             testArray = projResp.Values;

            Mocking.Mocking.MockBalanceResponse testItem = testArray.First.ToObject <Mocking.Mocking.MockBalanceResponse>();
            if (null != testItem)
            {
                actual = testItem.AccountNumber;
            }

            Assert.AreEqual(expected, actual);
        }
예제 #4
0
        public void GetValuesAsArray_ValueMatch_TestMethod()
        {
            decimal expected = 70.0M;
            decimal actual   = -1.9M;

            ProjectionResponse projResp  = ProjectionResponse.Create(Mocking.Mocking.GetProjectionUntyped());
            JArray             testArray = projResp.Values;

            Mocking.Mocking.MockBalanceResponse testItem = testArray.First.ToObject <Mocking.Mocking.MockBalanceResponse>();
            if (null != testItem)
            {
                actual = testItem.Balance;
            }

            Assert.AreEqual(expected, actual);
        }
예제 #5
0
    public void IterationSetup()
    {
        _cancellationTokenSource = new CancellationTokenSource();
        var tcs = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously);
        var numEventsProcessed = 0;

        _dispatcher = new Mock <ReverseCallDispatcher>();
        _dispatcher
        .Setup(_ => _.Reject(It.IsAny <ProjectionRegistrationResponse>(), It.IsAny <CancellationToken>()))
        .Returns(Task.CompletedTask);
        _dispatcher
        .Setup(_ => _.Accept(It.IsAny <ProjectionRegistrationResponse>(), It.IsAny <CancellationToken>()))
        .Returns(tcs.Task);
        _dispatcher
        .Setup(_ => _.Call(It.IsAny <ProjectionRequest>(), It.IsAny <Dolittle.Runtime.Execution.ExecutionContext>(), It.IsAny <CancellationToken>()))
        .Returns <ProjectionRequest, Dolittle.Runtime.Execution.ExecutionContext, CancellationToken>((request, _, __) =>
        {
            Interlocked.Add(ref numEventsProcessed, 1);
            var response = new ProjectionResponse {
                Replace = new ProjectionReplaceResponse {
                    State = request.CurrentState.State
                }
            };
            if (numEventsProcessed == NumberEventsToProcess)
            {
                tcs.SetResult();
            }
            return(Task.FromResult(response));
        });

        _projectionsToRun = Enumerable.Range(0, Projections).Select(_ => new Dolittle.Runtime.Events.Processing.Projections.Projection(
                                                                        _dispatcher.Object,
                                                                        new ProjectionDefinition(
                                                                            Guid.NewGuid(),
                                                                            ScopeId.Default,
                                                                            _eventTypes.Select(ProjectionEventSelector.EventSourceId),
                                                                            new ProjectionState("{\"hello\": 42}"),
                                                                            new ProjectionCopySpecification(CopyToMongoDBSpecification.Default)),
                                                                        "some alias",
                                                                        false)).ToArray();
    }
예제 #6
0
        public void Constructor_TestMethod()
        {
            ProjectionResponse testObj = ProjectionResponse.Create(Mocking.Mocking.GetProjectionUntyped());

            Assert.IsNotNull(testObj);
        }