public void When_multiple_events_are_registered_it_should_remember_their_timestamps()
        {
            //-----------------------------------------------------------------------------------------------------------
            // Arrange
            //-----------------------------------------------------------------------------------------------------------
            DateTime nowUtc = 16.June(2017).At(15, 00).AsUtc();

            var stats = new ProjectionStats(() => nowUtc);

            //-----------------------------------------------------------------------------------------------------------
            // Act
            //-----------------------------------------------------------------------------------------------------------
            stats.LogEvent("myProjector", "first event");

            nowUtc = nowUtc.At(16, 00).AsUtc();
            stats.LogEvent("myProjector", "second event");

            //-----------------------------------------------------------------------------------------------------------
            // Assert
            //-----------------------------------------------------------------------------------------------------------
            var projectorStats = stats.Should().ContainSingle(s => s.ProjectorId == "myProjector").Subject;

            projectorStats.GetEvents().Should().BeEquivalentTo(new[]
            {
                new
                {
                    Body         = "first event",
                    TimestampUtc = nowUtc.At(15, 00)
                },
                new
                {
                    Body         = "second event",
                    TimestampUtc = nowUtc.At(16, 00)
                }
            });
        }
Example #2
0
            public When_the_events_of_a_specific_projector_are_requested()
            {
                Given(() =>
                {
                    var nowUtc = 10.July(2017).At(10, 39).AsUtc();
                    var stats  = new ProjectionStats(() => nowUtc);
                    stats.LogEvent("id1", "someevent");

                    var appBuilder = new AppBuilder();
                    appBuilder.UseLiquidProjections(stats);

                    var httpClient = new HttpClient(new OwinHttpMessageHandler(appBuilder.Build()));
                    httpClient.DefaultRequestHeaders.Accept.Add(
                        new MediaTypeWithQualityHeaderValue("application/json"));

                    WithSubject(ct => httpClient);
                });

                When(async() =>
                {
                    return(await Subject.GetAsync("http://localhost/projectionStats/id1/events"));
                });
            }