public void IdIsCorrect( [Frozen] UuidIri expected, AtomEventStream <DataContractTestEventX> sut) { UuidIri actual = sut.Id; Assert.Equal(expected, actual); }
public void AppendAsyncMoreThanTwicePageSizeEventsCreatesThreeFeedPages( [Frozen(As = typeof(IAtomEventStorage))] AtomEventsInMemory storage, AtomEventStream <XmlAttributedTestEventX> sut, Generator <XmlAttributedTestEventX> eventGenerator) { var events = eventGenerator.Take(sut.PageSize * 2 + 1).ToList(); events.ForEach(e => sut.AppendAsync(e).Wait()); Assert.Equal(3, storage.Feeds.Count()); }
public void IsPreviousFeedLinkReturnsFalseForLinkNotUuid( int number) { var uri = new Uri(number.ToString(), UriKind.Relative); var link = AtomLink.CreatePreviousLink(uri); var actual = AtomEventStream.IsPreviousFeedLink(link); Assert.False(actual); }
public void IsPreviousFeedLinkReturnsFalseForLinkWithAbsoluteUri( Uri uri) { Assert.True(uri.IsAbsoluteUri); var link = AtomLink.CreatePreviousLink(uri); var actual = AtomEventStream.IsPreviousFeedLink(link); Assert.False(actual); }
public void CreatePreviousLinkFromReturnsCorrectResult( UuidIri id) { AtomLink actual = AtomEventStream.CreatePreviousLinkFrom(id); var expected = AtomLink.CreatePreviousLink( new Uri( ((Guid)id).ToString(), UriKind.Relative)); Assert.Equal(expected, actual); }
public void SutCanAppendAndYieldPolymorphicEvents( [Frozen(As = typeof(IAtomEventStorage))] AtomEventsInMemory dummyInjectedIntoSut, AtomEventStream <IXmlAttributedTestEvent> sut, XmlAttributedTestEventX tex, XmlAttributedTestEventY tey) { sut.AppendAsync(tex).Wait(); sut.AppendAsync(tey).Wait(); var expected = new IXmlAttributedTestEvent[] { tey, tex }; Assert.True(expected.SequenceEqual(sut)); }
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 SutYieldsCorrectEvents( [Frozen(As = typeof(IAtomEventStorage))] AtomEventsInMemory dummyInjectedIntoSut, AtomEventStream <XmlAttributedTestEventX> sut, List <XmlAttributedTestEventX> events) { events.ForEach(e => sut.AppendAsync(e).Wait()); var expected = events.AsEnumerable().Reverse(); Assert.True( expected.SequenceEqual(sut), "Events should be yielded in a FILO order"); Assert.True( expected.Cast <object>().SequenceEqual(sut.OfType <object>()), "Events should be yielded in a FILO order"); }
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 AppendAsyncLessThanPageSizeEventsDoesNotAddLinkToPreviousPageToIndex( [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 writtenIndex = storage.Feeds .Select(parser.Parse) .Single(f => f.Id == sut.Id); Assert.Equal( 0, writtenIndex.Links.Count(AtomEventStream.IsPreviousFeedLink)); }
public void SutCanAppendAndYieldEnclosedPolymorphicEvents( [Frozen(As = typeof(IAtomEventStorage))] AtomEventsInMemory dummyInjectedIntoSut, AtomEventStream <DataContractEnvelope <IDataContractTestEvent> > sut, DataContractEnvelope <DataContractTestEventX> texEnvelope, DataContractEnvelope <DataContractTestEventY> teyEnvelope) { var texA = texEnvelope.Cast <IDataContractTestEvent>(); var teyA = teyEnvelope.Cast <IDataContractTestEvent>(); sut.AppendAsync(texA).Wait(); sut.AppendAsync(teyA).Wait(); var expected = new DataContractEnvelope <IDataContractTestEvent>[] { teyA, texA }; Assert.True(expected.SequenceEqual(sut)); }
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 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."); }
public void SutIsEnumerable(AtomEventStream <DataContractTestEventY> sut) { Assert.IsAssignableFrom <IEnumerable <DataContractTestEventY> >(sut); }
public void OnCompletedDoesNotThrow( AtomEventStream <DataContractTestEventY> sut) { Assert.DoesNotThrow(() => sut.OnCompleted()); }
public void OnErrorDoesNotThrow( AtomEventStream <DataContractTestEventY> sut, Exception e) { Assert.DoesNotThrow(() => sut.OnError(e)); }
public void SutIsObserver(AtomEventStream <DataContractTestEventX> sut) { Assert.IsAssignableFrom <IObserver <DataContractTestEventX> >(sut); }