public void WhenProjectIsLoadedWillSerialize()
        {
            var project = new StubIProject { PathGet = () => @"C:\\" };
            var projectLoader = new StubIProjectLoader { CurrentProjectGet = () => project };
            var spyIXmlSerializer = new SpyIXmlSerializer();
            SetupClass(projectLoader: projectLoader, xmlSerializer: spyIXmlSerializer).Serialize(new List<IItem>());

            Assert.IsTrue(spyIXmlSerializer.SerializeHasBeenCalled);
        }
        public void WhenCreateProjectItWillLoadedIt()
        {
            var projectLoadHasBeenCalled = false;
            var projectLoader = new StubIProjectLoader
            {
                LoadIProject = project => projectLoadHasBeenCalled = true
            };

            BuildProjectCreator(projectLoader: projectLoader).Create(new StubIProject());

            Assert.IsTrue(projectLoadHasBeenCalled);
        }
        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());
        }