public void WriteMoreThanPageSizeEventsWritesInCorrectOrder( AtomEventWriteUsage usage, [Frozen(As = typeof(ITypeResolver))] TestEventTypeResolver dummyResolver, [Frozen(As = typeof(IContentSerializer))] XmlContentSerializer dummySerializer, [Frozen(As = typeof(IAtomEventStorage))] SpyAtomEventStore spyStore, AtomEventWriterFactory <XmlAttributedTestEventX> writerFactory, AtomEventObserver <XmlAttributedTestEventX> sut, Generator <XmlAttributedTestEventX> eventGenerator) { var events = eventGenerator.Take(sut.PageSize + 1).ToList(); var writer = writerFactory.Create(usage); events.ForEach(e => writer.WriteTo(sut, e)); var writtenFeeds = spyStore.Feeds.Select(ParseAtomFeed); var firstPage = FindFirstPage(writtenFeeds, sut.Id); var nextPage = FindNextPage(firstPage, writtenFeeds); var expected = new[] { nextPage.Id, firstPage.Id, sut.Id }; var actual = spyStore .ObservedArguments .OfType <AtomFeed>() .Select(f => f.Id) .Reverse() .Take(3) .Reverse(); Assert.Equal(expected, actual); }
public void AppendAsyncWritesPreviousPageBeforeIndex( [Frozen(As = typeof(IAtomEventStorage))] SpyAtomEventStore spyStore, AtomEventStream <XmlAttributedTestEventX> sut, Generator <XmlAttributedTestEventX> eventGenerator) { var events = eventGenerator.Take(sut.PageSize + 1).ToList(); events.ForEach(e => sut.AppendAsync(e).Wait()); var feed = Assert.IsAssignableFrom <AtomFeed>( spyStore.ObservedArguments.Last()); Assert.Equal(sut.Id, feed.Id); }
public void WriteFirstEventWritesPageBeforeIndex( AtomEventWriteUsage usage, [Frozen(As = typeof(ITypeResolver))] TestEventTypeResolver dummyResolver, [Frozen(As = typeof(IContentSerializer))] XmlContentSerializer dummySerializer, [Frozen(As = typeof(IAtomEventStorage))] SpyAtomEventStore spyStore, AtomEventWriterFactory <XmlAttributedTestEventX> writerFactory, AtomEventObserver <XmlAttributedTestEventX> sut, XmlAttributedTestEventX @event) { writerFactory.Create(usage).WriteTo(sut, @event); var feed = Assert.IsAssignableFrom <AtomFeed>( spyStore.ObservedArguments.Last()); Assert.Equal(sut.Id, feed.Id); }
public void WriteTwoEventsOnlyWritesIndexOnce( AtomEventWriteUsage usage, [Frozen(As = typeof(ITypeResolver))] TestEventTypeResolver dummyResolver, [Frozen(As = typeof(IContentSerializer))] XmlContentSerializer dummySerializer, [Frozen(As = typeof(IAtomEventStorage))] SpyAtomEventStore spyStore, AtomEventWriterFactory <XmlAttributedTestEventX> writerFactory, AtomEventObserver <XmlAttributedTestEventX> sut, Generator <XmlAttributedTestEventX> eventGenerator) { var events = eventGenerator.Take(2).ToList(); var writer = writerFactory.Create(usage); events.ForEach(e => writer.WriteTo(sut, e)); var writtenIds = spyStore.ObservedArguments .OfType <AtomFeed>() .Select(f => f.Id); Assert.Equal(1, writtenIds.Count(id => sut.Id == id)); }