예제 #1
0
        public async Task ReadModelCatchup_queries_event_subtypes_correctly()
        {
            var subclassedEventsWritten = 0;

            Events.Write(100, _ =>
            {
                var @event = Any.Bool()
                                 ? Events.Any()
                                 : new CustomerAccount.OrderShipConfirmationEmailSent();

                if (@event is EmailSent)
                {
                    subclassedEventsWritten++;
                }

                return(@event);
            });

            var projector     = Projector.Create <EmailSent>(e => { }).Named(MethodBase.GetCurrentMethod().Name);
            var eventsQueried = 0;

            using (var catchup = CreateReadModelCatchup(projector))
            {
                catchup.Progress
                .Where(s => !s.IsStartOfBatch)
                .ForEachAsync(s => { eventsQueried++; });
                await catchup.Run()
                .ContinueWith(r => catchup.Dispose());

                Console.WriteLine(new { eventsQueried });
            }

            eventsQueried.Should().Be(subclassedEventsWritten);
        }
예제 #2
0
        public async Task ReadModelCatchup_queries_scheduled_commands_if_CommandScheduled_is_subscribed()
        {
            var scheduledCommandsWritten = 0;
            var scheduledCommandsQueried = 0;

            Events.Write(50, _ =>
            {
                if (Any.Bool())
                {
                    return(Events.Any());
                }

                scheduledCommandsWritten++;
                return(new CommandScheduled <Order>
                {
                    Command = new Ship(),
                    DueTime = DateTimeOffset.UtcNow
                });
            });

            var projector     = Projector.Create <CommandScheduled <Order> >(e => { }).Named(MethodBase.GetCurrentMethod().Name);
            var eventsQueried = 0;

            using (var catchup = CreateReadModelCatchup(projector))
                using (var eventStore = EventStoreDbContext())
                {
                    catchup.Progress
                    .Where(s => !s.IsStartOfBatch)
                    .ForEachAsync(s =>
                    {
                        var eventId = s.CurrentEventId;
                        var @event  = eventStore.Events.Single(e => e.Id == eventId);
                        if (@event.Type.StartsWith("Scheduled:"))
                        {
                            scheduledCommandsQueried++;
                        }
                        eventsQueried++;
                    });
                    await catchup.Run()
                    .ContinueWith(r => catchup.Dispose());

                    Console.WriteLine(new { eventsQueried });
                }

            scheduledCommandsQueried.Should().Be(scheduledCommandsWritten);
        }
예제 #3
0
        public static OdcmProjection AnyOdcmProjection(this OdcmType odcmType)
        {
            var projection = new OdcmProjection
            {
                Type         = odcmType,
                Capabilities = new List <OdcmCapability>()
            };

            var capabilityTerms = OdcmProjection
                                  .WellKnowCapabilityTerms
                                  .Distinct();

            foreach (var term in capabilityTerms)
            {
                projection.Capabilities.Add(new OdcmBooleanCapability(Any.Bool(), term));
            }

            return(projection);
        }
예제 #4
0
        public void When_multiple_trigger_callbacks_are_registered_and_one_fails_Then_the_remaining_callbacks_are_notified_the_request_succeeds()
        {
            ConfigurationManagerExtensions.AddFakeAppServiceRuntimeSettings();

            var packageUri = Any.Uri();

            var callbackPaths = Any.Sequence(x => Any.UriPath(1)).ToList();

            using (var mockService = new MockService())
            {
                using (var server = Microsoft.Owin.Testing.TestServer.Create <Startup>())
                {
                    foreach (var callbackPath in callbackPaths)
                    {
                        var closurePath = "/" + callbackPath;

                        if (Any.Bool())
                        {
                            mockService
                            .OnRequest(r => r.Path.ToString() == closurePath)
                            .RespondWith(r => r.StatusCode = 200);
                        }

                        var callbackUri = mockService.GetBaseAddress() + callbackPath;

                        server.HttpClient.PutAsync(String.Format("/api/Trigger?triggerId={0}", Any.Guid()),
                                                   Any.Azure.AppServiceTrigger.MyGetConnectorTriggerBody(callbackUri)
                                                   .ToJsonStringContent())
                        .Wait();
                    }

                    server
                    .HttpClient
                    .AsMyGetTriggerSource()
                    .PostAsync("/api/MyGetWebhook/",
                               Any.MyGet.WebHooks.PackageAddedPayload(packageUri).ToJsonStringContent("application/vnd.myget.webhooks.v1+json"))
                    .Result
                    .ShouldSucceed();
                }
            }
        }