public void FileCreation_UserIsEnteringWrongPath_DisplaysExceptionMessage()
        {
            var MockOfConsole = new Mock <IFakeConsole>();

            MockOfConsole.Setup(m => m.ReadLine()).Returns("file");

            var Output = new StringWriter();

            Console.SetOut(Output);

            string FileNameRequest = "Podaj nazwę pliku (plik będzie w ścieżce " +
                                     "programu, lub można użyć ścieżki względnej): ";

            string ExceptionMessage = "exception message";

            string ExpectedOutput = FileNameRequest + Environment.NewLine +
                                    ExceptionMessage + Environment.NewLine;

            var MockOfFile = new Mock <FilesEncryptor.IFakeFile>();

            MockOfFile.Setup(m => m.Exists("file.txt")).Returns(false);
            MockOfFile.Setup(m => m.CreateText("file.txt")).Throws(new Exception(ExceptionMessage));

            var Creator = new FilesEncryptor.FileCreator(MockOfFile.Object, MockOfConsole.Object);

            Creator.FileCreation();

            Assert.AreEqual(ExpectedOutput, Output.ToString());
        }
        public void FileCreation_UserProvidesPathToFileThatDoesNotYetExist_DisplaysRightContent()
        {
            var MockOfConsole = new Mock <IFakeConsole>();

            MockOfConsole.Setup(m => m.ReadLine()).Returns("file");

            var MockOfFile = new Mock <FilesEncryptor.IFakeFile>();

            MockOfFile.Setup(m => m.Exists("file.txt")).Returns(false);

            var Output = new StringWriter();

            Console.SetOut(Output);

            // between the request for the file name and the message about the file created,
            // the console should be cleared. I decided not to check if the console is being cleaned
            string FileNameRequest = "Podaj nazwę pliku (plik będzie w ścieżce " +
                                     "programu, lub można użyć ścieżki względnej): ";

            string MessageAboutProperlyCreatedFile = "Utworzono nowy plik!";

            string ExpectedOutput = FileNameRequest + Environment.NewLine +
                                    MessageAboutProperlyCreatedFile + Environment.NewLine;

            var Creator = new FilesEncryptor.FileCreator(MockOfFile.Object, MockOfConsole.Object);

            Creator.FileCreation();

            Assert.AreEqual(ExpectedOutput, Output.ToString());
        }
        public void FileCreation_UserProvidesPathToExistingFile_DisplaysRightContent()
        {
            var MockOfConsole = new Mock <IFakeConsole>();

            MockOfConsole.Setup(m => m.ReadLine()).Returns("file");

            var MockOfFile = new Mock <FilesEncryptor.IFakeFile>();

            MockOfFile.Setup(m => m.Exists("file.txt")).Returns(true);

            var Output = new StringWriter();

            Console.SetOut(Output);

            string FileNameRequest = "Podaj nazwę pliku (plik będzie w ścieżce " +
                                     "programu, lub można użyć ścieżki względnej): ";

            string MessageThatFileExists = "Ten plik już istnieje (w danej ścieżce)!";

            string ExpectedOutput = FileNameRequest + Environment.NewLine +
                                    MessageThatFileExists + Environment.NewLine;

            var Creator = new FilesEncryptor.FileCreator(MockOfFile.Object, MockOfConsole.Object);

            Creator.FileCreation();

            Assert.AreEqual(ExpectedOutput, Output.ToString());
        }
        public void FileCreation_MethodCalls_CreatesFile()
        {
            string FileName      = "file";
            var    MockOfConsole = new Mock <IFakeConsole>();

            MockOfConsole.Setup(m => m.ReadLine()).Returns(FileName);

            var MockOfFile = new Mock <FilesEncryptor.IFakeFile>();

            MockOfFile.Setup(m => m.Exists("file.txt")).Returns(false);

            var Creator = new FilesEncryptor.FileCreator(MockOfFile.Object, MockOfConsole.Object);

            Creator.FileCreation();

            MockOfFile.Verify(m => m.CreateText(FileName + ".txt"), Times.Once());
        }