public void RetrieveImagShouldReturnImage()
        {
            const string storageDirectory = @"Storage\Images";

            var data = File.ReadAllBytes("Koala.jpg");

            var directoryFunctions = new Mock<IDirectoryFunctions>();
            directoryFunctions.Setup(d => d.Exists(It.IsAny<string>())).Returns(true);

            var fileFunctions = new Mock<IFileFunctions>();
            fileFunctions.Setup(f => f.Read(It.IsAny<string>())).Returns(data);

            var configuration = new Mock<IFileStorageConfiguration>();
            configuration.Setup(c => c.StorageDirectory).Returns(storageDirectory);

            var storage = new FileSystemImageStorage(configuration.Object, directoryFunctions.Object, fileFunctions.Object);

            var result = storage.Retrieve("");

            Assert.IsNotNull(result);
            Assert.IsTrue(data.Length == result.Length);

            var index = 0;
            foreach (var @byte in data)
            {
                Assert.IsTrue(@byte == result[index]);
                index++;
            }
        }
        public void DeleteImagShouldReturnTrue()
        {
            const string storageDirectory = @"Storage\Images";

            var directoryFunctions = new Mock<IDirectoryFunctions>();
            directoryFunctions.Setup(d => d.Exists(It.IsAny<string>())).Returns(true);

            var fileFunctions = new Mock<IFileFunctions>();
            fileFunctions.Setup(f => f.DeleteIfExists(It.IsAny<string>())).Returns(true);

            var configuration = new Mock<IFileStorageConfiguration>();
            configuration.Setup(c => c.StorageDirectory).Returns(storageDirectory);

            var storage = new FileSystemImageStorage(configuration.Object, directoryFunctions.Object, fileFunctions.Object);

            var result = storage.Delete("someKey");

            Assert.IsTrue(result);
        }
        public void SaveImageShouldReturnImageSource()
        {
            const string storageDirectory = @"Storage\Images";

            var directoryFunctions = new Mock<IDirectoryFunctions>();
            directoryFunctions.Setup(d => d.Exists(It.IsAny<string>())).Returns(true);

            var fileFunctions = new Mock<IFileFunctions>();
            fileFunctions.Setup(f => f.Write(It.IsAny<string>(), It.IsAny<byte[]>()));

            var configuration = new Mock<IFileStorageConfiguration>();
            configuration.Setup(c => c.StorageDirectory).Returns(storageDirectory);

            var storage = new FileSystemImageStorage(configuration.Object, directoryFunctions.Object, fileFunctions.Object);

            var result = storage.Save(new byte[] {});

            Assert.IsNotNull(result);
            Assert.IsTrue(result.Source.Contains(storageDirectory));
            Assert.IsTrue(result.Thumbnail.Contains(storageDirectory));
        }