Beispiel #1
0
        /// <summary>
        /// Creates an <see cref="XmlReader" /> for reading an Atom feed from
        /// the provided <see cref="Uri" />.
        /// </summary>
        /// <param name="href">
        /// The relative <see cref="Uri" /> of the Atom feed to read.
        /// </param>
        /// <returns>
        /// An <see cref="XmlReader" /> over the Atom feed identified by
        /// <paramref name="href" />.
        /// </returns>
        /// <remarks>
        /// <para>
        /// This method attempts to find a BLOB corresponding to
        /// <paramref name="href" />. If the BLOB is found, an
        /// <see cref="XmlReader" /> over that BLOB is created and returned. If
        /// the BLOB isn't found, an XmlReader over an empty Atom Feed is
        /// returned. In this case, no BLOB is created for the empty Atom Feed.
        /// In other words: this method has no observable side-effects.
        /// </para>
        /// </remarks>
        public XmlReader CreateFeedReaderFor(Uri href)
        {
            var blobRef = this.CreateBlobReference(href);

            if (blobRef.Exists())
            {
                return(XmlReader.Create(
                           blobRef.OpenRead(),
                           new XmlReaderSettings {
                    CloseInput = true
                }));
            }

            return(AtomEventStorage.CreateNewFeed(href));
        }
        public void CreateNewFeedReturnsCorrectResult(
            Guid id,
            IContentSerializer dummySerializer)
        {
            var href   = new Uri(id.ToString(), UriKind.Relative);
            var before = DateTimeOffset.Now;

            XmlReader actual = AtomEventStorage.CreateNewFeed(href);

            var actualFeed = AtomFeed.ReadFrom(actual, dummySerializer);

            Assert.Equal <Guid>(id, actualFeed.Id);
            Assert.True(before <= actualFeed.Updated);
            Assert.True(actualFeed.Updated <= DateTimeOffset.Now);
            Assert.Empty(actualFeed.Entries);
            Assert.Contains(AtomLink.CreateSelfLink(href), actualFeed.Links);
        }