public void WritePageSizeEventsStoresAllEntriesInFirstPage( AtomEventWriteUsage usage, [Frozen(As = typeof(ITypeResolver))] TestEventTypeResolver dummyResolver, [Frozen(As = typeof(IContentSerializer))] XmlContentSerializer dummySerializer, [Frozen(As = typeof(IAtomEventStorage))] AtomEventsInMemory storage, AtomEventWriterFactory <XmlAttributedTestEventX> writerFactory, AtomEventObserver <XmlAttributedTestEventX> sut, Generator <XmlAttributedTestEventX> eventGenerator) { var before = DateTimeOffset.Now; var events = eventGenerator.Take(sut.PageSize).ToList(); var writer = writerFactory.Create(usage); events.ForEach(e => writer.WriteTo(sut, e)); var writtenFeeds = storage.Feeds.Select(ParseAtomFeed); var actual = FindFirstPage(writtenFeeds, sut.Id); var expectedFeed = new AtomFeedLikeness( before, actual.Id, events.AsEnumerable().Reverse().ToArray()); Assert.True( expectedFeed.Equals(actual), "Expected feed must match actual feed."); }
public void AppendAsyncMoreThanPageSizeEventsStoresOldestEventsInPreviousPage( [Frozen(As = typeof(IAtomEventStorage))] AtomEventsInMemory storage, AtomFeedParser <XmlContentSerializer> parser, AtomEventStream <XmlAttributedTestEventX> sut, Generator <XmlAttributedTestEventX> eventGenerator) { var before = DateTimeOffset.Now; var events = eventGenerator.Take(sut.PageSize + 1).ToList(); events.ForEach(e => sut.AppendAsync(e).Wait()); var writtenIndex = storage.Feeds .Select(parser.Parse) .Single(f => f.Id == sut.Id); UuidIri previousPageId = Guid.Parse( writtenIndex.Links .Single(AtomEventStream.IsPreviousFeedLink) .Href.ToString()); var actualPreviousPage = storage.Feeds .Select(parser.Parse) .Single(f => f.Id == previousPageId); var expectedPreviousPage = new AtomFeedLikeness( before, previousPageId, events.AsEnumerable().Reverse().Skip(1).ToArray()); Assert.True( expectedPreviousPage.Equals(actualPreviousPage), "Expected feed must match actual feed."); }
public void WriteMoreThanTwicePageSizeCorrectlyStoresOverflowingEvent( AtomEventWriteUsage usage, [Frozen(As = typeof(ITypeResolver))] TestEventTypeResolver dummyResolver, [Frozen(As = typeof(IContentSerializer))] XmlContentSerializer dummySerializer, [Frozen(As = typeof(IAtomEventStorage))] AtomEventsInMemory storage, AtomEventWriterFactory <XmlAttributedTestEventX> writerFactory, AtomEventObserver <XmlAttributedTestEventX> sut, Generator <XmlAttributedTestEventX> eventGenerator) { var before = DateTimeOffset.Now; var events = eventGenerator.Take(sut.PageSize * 2 + 1).ToList(); var writer = writerFactory.Create(usage); events.ForEach(e => writer.WriteTo(sut, e)); var writtenFeeds = storage.Feeds.Select(ParseAtomFeed); var firstPage = FindFirstPage(writtenFeeds, sut.Id); var nextPage = FindNextPage(firstPage, writtenFeeds); nextPage = FindNextPage(nextPage, writtenFeeds); var expectedPage = new AtomFeedLikeness( before, nextPage.Id, events.AsEnumerable().Reverse().First()); Assert.True( expectedPage.Equals(nextPage), "Expected feed must match actual feed."); }
public void AppendAsyncCorrectlyStoresFeed( [Frozen(As = typeof(IAtomEventStorage))] AtomEventsInMemory storage, AtomFeedParser <XmlContentSerializer> parser, AtomEventStream <XmlAttributedTestEventX> sut, XmlAttributedTestEventX expectedEvent) { var before = DateTimeOffset.Now; sut.AppendAsync(expectedEvent).Wait(); var writtenFeed = storage.Feeds.Select(parser.Parse).Single(); var expectedFeed = new AtomFeedLikeness(before, sut.Id, expectedEvent); Assert.True( expectedFeed.Equals(writtenFeed), "Expected feed must match actual feed."); }
public void AppendAsyncPageSizeEventsSavesAllEntriesInIndex( [Frozen(As = typeof(IAtomEventStorage))] AtomEventsInMemory storage, AtomFeedParser <XmlContentSerializer> parser, AtomEventStream <XmlAttributedTestEventX> sut, Generator <XmlAttributedTestEventX> eventGenerator) { var before = DateTimeOffset.Now; var events = eventGenerator.Take(sut.PageSize).ToList(); events.ForEach(e => sut.AppendAsync(e).Wait()); var writtenFeed = storage.Feeds.Select(parser.Parse).Single(); var expectedFeed = new AtomFeedLikeness( before, sut.Id, events.AsEnumerable().Reverse().ToArray()); Assert.True( expectedFeed.Equals(writtenFeed), "Expected feed must match actual feed."); }
public void WriteCorrectlyStoresFeed( AtomEventWriteUsage usage, [Frozen(As = typeof(ITypeResolver))] TestEventTypeResolver dummyResolver, [Frozen(As = typeof(IContentSerializer))] XmlContentSerializer dummySerializer, [Frozen(As = typeof(IAtomEventStorage))] AtomEventsInMemory storage, AtomEventWriterFactory <XmlAttributedTestEventX> writerFactory, AtomEventObserver <XmlAttributedTestEventX> sut, XmlAttributedTestEventX expectedEvent) { var before = DateTimeOffset.Now; writerFactory.Create(usage).WriteTo(sut, expectedEvent); var writtenFeeds = storage.Feeds.Select(ParseAtomFeed); var actual = FindFirstPage(writtenFeeds, sut.Id); var expectedFeed = new AtomFeedLikeness(before, actual.Id, expectedEvent); Assert.True( expectedFeed.Equals(actual), "Expected feed must match actual feed."); }
public void AppendAsyncMoreThanPageSizeEventsOnlyStoresOverflowingEvent( [Frozen(As = typeof(IAtomEventStorage))] AtomEventsInMemory storage, AtomFeedParser <XmlContentSerializer> parser, AtomEventStream <XmlAttributedTestEventX> sut, Generator <XmlAttributedTestEventX> eventGenerator) { var before = DateTimeOffset.Now; var events = eventGenerator.Take(sut.PageSize + 1).ToList(); events.ForEach(e => sut.AppendAsync(e).Wait()); var writtenIndex = storage.Feeds .Select(parser.Parse) .Single(f => f.Id == sut.Id); var expectedIndex = new AtomFeedLikeness( before, sut.Id, events.AsEnumerable().Reverse().First()); Assert.True( expectedIndex.Equals(writtenIndex), "Expected feed must match actual feed."); }