Пример #1
0
        public void When_saving_media_item_should_write_file_to_library_directory()
        {
            var persistence = new Mock <IPersistence>();
            var persister   = new MediaItemPersister(persistence.Object);

            var mediaItem = new MediaItem {
                Id = "test1", Name = "test-1", IsAvailable = true, DataStream = () => new MemoryStream()
            };

            persister.Save(mediaItem);

            persistence.Verify(p => p.WriteTextFile("library", "test1", It.Is <string>(xml => MediaItemXml(mediaItem, xml))));
            persistence.Verify(p => p.WriteBinaryFile("library.data", "test1", It.IsAny <Stream>()));
        }
Пример #2
0
        public void Given_media_binary_already_exists_when_saving_media_item_should_not_write_file_to_library_directory()
        {
            var persistence = new Mock <IPersistence>(MockBehavior.Strict);
            var persister   = new MediaItemPersister(persistence.Object);

            persistence.Setup(p => p.Filenames("library.data")).Returns(new[] { "test1" });
            persistence.Setup(p => p.WriteTextFile(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>()));

            var mediaItem = new MediaItem {
                Id = "test1", Name = "test-1", IsAvailable = true, DataStream = () => new MemoryStream()
            };

            persister.Save(mediaItem);

            persistence.Verify(p => p.WriteTextFile("library", "test1", It.Is <string>(xml => MediaItemXml(mediaItem, xml))));
        }
Пример #3
0
        public void When_loading_media_item_should_deserialize_from_xml()
        {
            var persistence = new Mock <IPersistence>();
            var persister   = new MediaItemPersister(persistence.Object);

            persistence.Setup(p => p.Filenames("library")).Returns(new[] { "test1", "test2" });
            persistence.Setup(p => p.ReadTextFile("library", "test1")).Returns(@"<?xml version=""1.0"" encoding=""utf-16""?>
<MediaItem Name=""test-1"" Deleted=""false"" MediaPosition=""0"" UtcDateAddedToLibrary=""2011-09-08 13:30:55Z"">
  <ExtendedProperties />
</MediaItem>");
            persistence.Setup(p => p.ReadTextFile("library", "test2")).Returns(@"<?xml version=""1.0"" encoding=""utf-16""?>
<MediaItem Name=""test-2"" Deleted=""true"" MediaPosition=""0"" UtcDateAddedToLibrary=""2011-09-07 06:01:00Z"">
  <ExtendedProperties>
    <Prop1>Prop1Value</Prop1>
    <NoValueProp />
  </ExtendedProperties>
</MediaItem>");

            var allMedia = persister.LoadAll();

            Assert.AreEqual(2, allMedia.Count());

            var media = allMedia.ElementAt(0);

            Assert.AreEqual("test1", media.Id);
            Assert.AreEqual("test-1", media.Name);
            Assert.IsFalse(media.IsDeleted);
            Assert.AreEqual(0, media.MediaPosition, 0.01);
            Assert.AreEqual("2011-09-08 13:30:55Z", media.UtcDateAddedToLibrary.ToString("u"));

            media = allMedia.ElementAt(1);
            Assert.AreEqual("test2", media.Id);
            Assert.AreEqual("test-2", media.Name);
            Assert.IsTrue(media.IsDeleted);
            Assert.AreEqual(0, media.MediaPosition, 0.01);
            Assert.AreEqual("2011-09-07 06:01:00Z", media.UtcDateAddedToLibrary.ToString("u"));
            Assert.AreEqual("Prop1Value", media.ExtendedProperties["Prop1"]);
            Assert.AreEqual("", media.ExtendedProperties["NoValueProp"]);
        }