public ReplaceWordOperationTests()
        {
            var mockFileManager = new Mock <IFileManager>();
            var mockLogger      = new Mock <ILogger>();

            replaceWordOperation = new ReplaceWordOperation(
                mockFileManager.Object,
                mockLogger.Object
                );
        }
        public void Process()
        {
            // Arrange
            var text     = "123 456 123 456 789 123";
            var filePath = "File.txt";

            var replaceWordData = new ReplaceWordData
            {
                FilePath        = filePath,
                SearchWord      = "123",
                ReplaceableWord = "abc"
            };

            var expectedMessage = $"The word {replaceWordData.SearchWord} was changed on {replaceWordData.ReplaceableWord}";

            var fileManagerMock = new Mock <IFileManager>();

            fileManagerMock
            .Setup(m => m.ReadText(filePath))
            .Returns(text);

            var actualMessage = string.Empty;

            var loggerMock = new Mock <ILogger>();

            loggerMock
            .Setup(l => l.LogInformation(It.IsAny <string>()))
            .Callback <string>(message => actualMessage = message);

            var operation = new ReplaceWordOperation(
                fileManagerMock.Object,
                loggerMock.Object
                );

            // Act
            operation.Process(replaceWordData);

            // Assert
            Assert.Equal(expectedMessage, actualMessage);
        }