public void GetCommandListTask_TargetDoesNotExistSourceIsFile_FileLinkCreated()
        {
            String nonExistentPath = "testFile";
            String targetPath = "target";

            IFileFactoryForPath fileFactory = GetFileFactoryThatReturnsExistsFor(targetPath);
            IFolderFactoryForPath folderFactory = (s) => new FakeFolder(s);

            var factory = MockRepository.GenerateMock<ICommandFactory>();
            var commandDiscovery = new CommandDiscovery(factory, fileFactory, folderFactory);

            commandDiscovery.GetCommandListTask(nonExistentPath, targetPath, false, false);

            factory.AssertWasCalled(f => f.CreateFileLinkCommand(Arg<IFile>.Matches(file => file.FullFilePath.Equals(nonExistentPath)),
                                                                 Arg<IFile>.Matches(file => file.FullFilePath.Equals(targetPath))));
        }
        public void GetCommandListTask_TargetDoesNotExistSourceIsFolder_FolderLinkCreated()
        {
            String nonExistentPath = "testFile";
            String folderTarget = @"c:\testFolder";

            IFileFactoryForPath fileFactory = (s) => new FakeFile(s);
            var folderFactory = GetFolderFactoryThatReturnsExistsFor(folderTarget);

            var factory = MockRepository.GenerateMock<ICommandFactory>();
            var commandDiscovery = new CommandDiscovery(factory, fileFactory, folderFactory);

            commandDiscovery.GetCommandListTask(nonExistentPath, folderTarget, false, false);
            factory.AssertWasCalled(f => f.CreateFolderLinkCommand(Arg<IFolder>.Matches(folder => folder.FolderPath.Equals(nonExistentPath)),
                                                                   Arg<IFolder>.Matches(folder => folder.FolderPath.Equals(folderTarget))));
        }
        public void GetCommandListTask_LinkAtIsFile_TargetIsFolderExceptionThrown()
        {
            String linkToFile = "testFile";
            String folderTarget = @"c:\testFolder";

            var folderFactory = GetFolderFactoryThatReturnsExistsFor(linkToFile);
            var fileFactory = GetFileFactoryThatReturnsExistsFor(folderTarget);

            var factory = MockRepository.GenerateMock<ICommandFactory>();
            var commandDiscovery = new CommandDiscovery(factory, fileFactory, folderFactory);

            Assert.Throws<InvalidOperationException>(() => commandDiscovery.GetCommandListTask(linkToFile, folderTarget, false, false));
        }
        public void GetCommandListTask_File_TargetIsFolderFileNameIsAppended()
        {
            String linkToFile = "testFile";
            String folderTarget = @"c:\testFolder";
            String expectedTarget = @"c:\testFolder\testFile";

            var fileFactory = GetFileFactoryThatReturnsExistsFor(linkToFile);
            var folderFactory = GetFolderFactoryThatReturnsExistsFor(folderTarget);

            var factory = MockRepository.GenerateMock<ICommandFactory>();
            var commandDiscovery = new CommandDiscovery(factory, fileFactory, folderFactory);

            commandDiscovery.GetCommandListTask(linkToFile, folderTarget, false, false);

            factory.AssertWasCalled(f => f.CreateFileLinkCommand(Arg<IFile>.Matches(linkTo => linkTo.FullFilePath.Equals(linkToFile)),
                                                                 Arg<IFile>.Matches(linkFrom => linkFrom.FullFilePath.Equals(expectedTarget))));
        }
        public void GetCommandListTask_Folder_ReturnedCommandListContainsFolderLink()
        {
            var factory = MockRepository.GenerateMock<ICommandFactory>();
            var commandDiscovery = new CommandDiscovery(factory, f => new FakeFile(f), f => new FakeFolder(f));

            commandDiscovery.GetCommandListTask("testFile", "", false, false);

            factory.AssertWasCalled(f => f.CreateFolderLinkCommand(Arg<IFolder>.Matches(folder => folder.FolderPath.Equals("testFile")), Arg<IFolder>.Is.Anything));
        }
        public void GetCommandListTask_File_ReturnedCommandListContainsFileLink()
        {
          
            var factory = MockRepository.GenerateMock<ICommandFactory>();
            var commandDiscovery = new CommandDiscovery(factory, f => new FakeFile(f) { ExistsReturnValue = true}, f => new FakeFolder(f));

            commandDiscovery.GetCommandListTask("testFile", "", false, false);

            factory.AssertWasCalled(f => f.CreateFileLinkCommand(Arg<IFile>.Matches(file => file.FullFilePath.Equals("testFile")), Arg<IFile>.Is.Anything));
        }