public void WhenDeserializeItWillReturnProjectRead()
        {
            var deserializerStub = new StubIXmlDeserializer();
            deserializerStub.DeserializeOf1String(contents => new ProjectSerializable(Project));

            var project = BuildProjectDeserializer(deserializerStub).Deserialize("C:\\TestFilePath");

            Assert.IsNotNull(project);
            Assert.AreEqual(Project.Name, project.Name);
            Assert.AreEqual(Project.Path, project.Path);
        }
        public void WhenDependenciesAreInvalidItWillFail()
        {
            Action<Action, string> assert = TestExpectedArgumentException<ArgumentNullException>;
            var pathFacade = new StubIPathFacade();
            var objectDumper = new StubIObjectDumper();
            var editorLogger = new StubIEditorLogger();
            var projectLoader = new StubIProjectLoader();
            var xmlDeserializer = new StubIXmlDeserializer();

            assert(() => SetupClass(), "pathFacade");
            assert(() => SetupClass(pathFacade), "logger");
            assert(() => SetupClass(pathFacade, editorLogger), "projectLoader");
            assert(() => SetupClass(pathFacade, editorLogger, projectLoader), "objectDumper");
            assert(() => SetupClass(pathFacade, editorLogger, projectLoader, objectDumper), "xmlDeserializer");
            assert(() => SetupClass(pathFacade, editorLogger, projectLoader, objectDumper, xmlDeserializer), "fileReader");
        }
        public void WhenProjectIsLoadedWillReturnItemsCollection()
        {
            var project = new StubIProject();
            var projectLoader = new StubIProjectLoader
            {
                CurrentProjectGet = () => project
            };

            var itemsCollection = new List<IItem> {new StubIItem()};
            var serializableItemCollection = new SerializableItemCollection(itemsCollection);

            var xmlDeserializer = new StubIXmlDeserializer();
            xmlDeserializer.DeserializeOf1String(s => serializableItemCollection);

            var deserializedCollection = SetupClassWithDefaults(projectLoader, xmlDeserializer).Deserialize();

            Assert.AreEqual(itemsCollection.Count, deserializedCollection.Count());
        }
        private static ProjectDeserializer BuildProjectDeserializer(StubIXmlDeserializer deserializerStub = null)
        {
            deserializerStub = deserializerStub ?? new StubIXmlDeserializer();

            return new ProjectDeserializer(deserializerStub, new StubIFileReader());
        }