public void List_ReturnsItem_IfInnerStoreReturnsItem()
        {
            // Arrange
            string expectedPrefix = "Prefix";
            string expectedId = "Id";
            string expectedETag = "ETag";
            IDictionary<string, string> expectedMetadata = new Dictionary<string, string>();
            DateTimeOffset expectedVersion = DateTimeOffset.Now;

            Mock<IConcurrentMetadataTextStore> innerStoreMock =
                new Mock<IConcurrentMetadataTextStore>(MockBehavior.Strict);
            innerStoreMock.Setup(s => s.List(expectedPrefix)).Returns(new ConcurrentMetadata[] {
                new ConcurrentMetadata(expectedId, expectedETag, expectedMetadata) });
            IConcurrentMetadataTextStore innerStore = innerStoreMock.Object;
            IVersionMetadataMapper versionMapper = CreateMapper(expectedMetadata, expectedVersion);

            IVersionedMetadataTextStore product = CreateProductUnderTest(innerStore, versionMapper);

            // Act
            IEnumerable<VersionedMetadata> results = product.List(expectedPrefix);

            // Assert
            VersionedMetadata expectedItem = new VersionedMetadata(expectedId, expectedETag, expectedMetadata,
                expectedVersion);
            Assert.NotNull(results);
            Assert.Equal(1, results.Count());
            VersionedMetadata result = results.First();
            AssertEqual(expectedItem, result);
        }
        public IEnumerable <VersionedMetadata> List(string prefix)
        {
            IEnumerable <ConcurrentMetadata> innerResults = _innerStore.List(prefix);

            if (innerResults == null)
            {
                return(null);
            }

            List <VersionedMetadata> results = new List <VersionedMetadata>();

            foreach (ConcurrentMetadata innerResult in innerResults)
            {
                IDictionary <string, string> metadata = innerResult.Metadata;
                DateTimeOffset    version             = _versionMapper.GetVersion(metadata);
                VersionedMetadata result = new VersionedMetadata(innerResult.Id, innerResult.ETag, metadata, version);
                results.Add(result);
            }

            return(results);
        }
        public IEnumerable<VersionedMetadata> List(string prefix)
        {
            IEnumerable<ConcurrentMetadata> innerResults = _innerStore.List(prefix);

            if (innerResults == null)
            {
                return null;
            }

            List<VersionedMetadata> results = new List<VersionedMetadata>();

            foreach (ConcurrentMetadata innerResult in innerResults)
            {
                IDictionary<string, string> metadata = innerResult.Metadata;
                DateTimeOffset version = _versionMapper.GetVersion(metadata);
                VersionedMetadata result = new VersionedMetadata(innerResult.Id, innerResult.ETag, metadata, version);
                results.Add(result);
            }

            return results;
        }
        private static void AssertEqual(VersionedMetadata expected, VersionedMetadata actual)
        {
            if (expected == null)
            {
                Assert.Null(actual);
                return;
            }

            Assert.NotNull(actual);
            Assert.Equal(expected.Id, actual.Id);
            Assert.Equal(expected.ETag, actual.ETag);
            Assert.Equal(expected.Metadata, actual.Metadata);
            Assert.Equal(expected.Version, actual.Version);
        }