private JsonFileWriter CreateTestee(string sourcePath = TheSourcePath, string targetPath = TheTargetPath)
        {
            var jsonFactoryMock = A.Fake <IJsonFactory>();

            A.CallTo(() => jsonFactoryMock.GetRootToken(A <string> .Ignored)).Returns(_rootTokenMock);

            var filePropertiesMock           = A.Fake <IFileProperties>();
            var fileConversionPropertiesMock = A.Fake <IPersistentFileConversionProperties>();
            var proposedFileInfoMock         = A.Fake <IOutputFileInfo>();

            var paragraphUnitPropertiesMock = A.Fake <IParagraphUnitProperties>();
            var contextPropertiesMock       = A.Fake <IContextProperties>();
            var fieldContextInfoMock        = A.Fake <IContextInfo>();
            var locationContextInfoMock     = A.Fake <IContextInfo>();

            A.CallTo(() => paragraphUnitPropertiesMock.Contexts).Returns(contextPropertiesMock);
            A.CallTo(() => contextPropertiesMock.Contexts[0]).Returns(fieldContextInfoMock);
            A.CallTo(() => contextPropertiesMock.Contexts[1]).Returns(locationContextInfoMock);
            A.CallTo(() => locationContextInfoMock.GetMetaData(ContextKeys.TargetPath)).Returns(targetPath);
            A.CallTo(() => locationContextInfoMock.GetMetaData(ContextKeys.SourcePath)).Returns(sourcePath);
            A.CallTo(() => _paragraphUnitMock.Properties).Returns(paragraphUnitPropertiesMock);

            var sourceTokenMock = A.Fake <IJToken>();

            A.CallTo(() => _rootTokenMock.SelectToken(sourcePath)).Returns(sourceTokenMock);
            A.CallTo(() => sourceTokenMock.Type).Returns(JTokenType.String);
            A.CallTo(() => sourceTokenMock.Value).Returns(_sourceValueMock);

            var targetTokenMock = A.Fake <IJToken>();

            A.CallTo(() => _rootTokenMock.SelectToken(targetPath)).Returns(targetTokenMock);
            A.CallTo(() => targetTokenMock.Type).Returns(JTokenType.String);
            A.CallTo(() => targetTokenMock.Value).Returns(_targetValueMock);

            var segmentReaderMock = A.Fake <ISegmentReader>();

            A.CallTo(() => segmentReaderMock.GetText(_paragraphUnitMock.Target)).Returns(TheTargetText);

            var testee = new JsonFileWriter(jsonFactoryMock, _fileHelperMock, segmentReaderMock);

            testee.GetProposedOutputFileInfo(fileConversionPropertiesMock, proposedFileInfoMock);
            testee.SetFileProperties(filePropertiesMock);

            return(testee);
        }