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"]); }