public async Task HandleRequestAsync_NonNullOriginalTextEdit_DoesNotRemapTextEdit()
        {
            // Arrange
            var originalEdit = new TextEdit()
            {
                NewText = "original"
            };
            var mappedEdit = new TextEdit()
            {
                NewText = "mapped"
            };

            DocumentMappingProvider.AddMapping(originalEdit, mappedEdit);

            var requestedCompletionItem = new CompletionItem()
            {
                TextEdit = originalEdit,
            };

            AssociateRequest(LanguageServerKind.CSharp, requestedCompletionItem, CompletionRequestContextCache, LoggerProvider);
            var resolvedCompletionItem = new CompletionItem()
            {
                InsertText = "DateTime",
                TextEdit   = originalEdit,
            };
            var requestInvoker = CreateRequestInvoker((method, serverContentType, completionItem) => resolvedCompletionItem);
            var handler        = new CompletionResolveHandler(requestInvoker, DocumentMappingProvider, FormattingOptionsProvider, CompletionRequestContextCache, LoggerProvider);

            // Act
            var result = await handler.HandleRequestAsync(requestedCompletionItem, new ClientCapabilities(), CancellationToken.None).ConfigureAwait(false);

            // Assert
            Assert.Same(originalEdit, result.TextEdit);
        }
        public async Task HandleRequestAsync_NullInsertTextAndTextEdit_RemapsAdditionalTextEdits()
        {
            // Arrange
            var originalEdit = new TextEdit()
            {
                NewText = "original"
            };
            var mappedEdit = new TextEdit()
            {
                NewText = "mapped"
            };

            DocumentMappingProvider.AddMapping(originalEdit, mappedEdit);
            var requestedCompletionItem = new CompletionItem();

            AssociateRequest(LanguageServerKind.CSharp, requestedCompletionItem, CompletionRequestContextCache, LoggerProvider);
            var resolvedCompletionItem = new CompletionItem()
            {
                AdditionalTextEdits = new[] { originalEdit },
            };
            var requestInvoker = CreateRequestInvoker((method, languageServerName, completionItem) => resolvedCompletionItem);
            var handler        = new CompletionResolveHandler(requestInvoker, DocumentManager, DocumentMappingProvider, FormattingOptionsProvider, CompletionRequestContextCache, LoggerProvider);

            // Act
            var result = await handler.HandleRequestAsync(requestedCompletionItem, new ClientCapabilities(), CancellationToken.None).ConfigureAwait(false);

            // Assert
            Assert.Equal(new[] { mappedEdit }, result.AdditionalTextEdits);
        }