summaryrefslogtreecommitdiff
path: root/support/texlab/tests/lsp/text_document/rename.rs
diff options
context:
space:
mode:
Diffstat (limited to 'support/texlab/tests/lsp/text_document/rename.rs')
-rw-r--r--support/texlab/tests/lsp/text_document/rename.rs106
1 files changed, 106 insertions, 0 deletions
diff --git a/support/texlab/tests/lsp/text_document/rename.rs b/support/texlab/tests/lsp/text_document/rename.rs
new file mode 100644
index 0000000000..183443809a
--- /dev/null
+++ b/support/texlab/tests/lsp/text_document/rename.rs
@@ -0,0 +1,106 @@
+use std::collections::HashMap;
+
+use lsp_types::{request::Rename, ClientCapabilities, RenameParams, TextEdit, Url, WorkspaceEdit};
+
+use crate::fixture::TestBed;
+
+fn check(fixture: &str, new_name: &str) {
+ let test_bed = TestBed::new(fixture).unwrap();
+
+ test_bed.initialize(ClientCapabilities::default()).unwrap();
+
+ let mut expected_changes: HashMap<Url, Vec<TextEdit>> = HashMap::new();
+ for location in test_bed.locations() {
+ expected_changes
+ .entry(location.uri.clone())
+ .or_default()
+ .push(TextEdit::new(location.range, new_name.to_string()));
+ }
+
+ let text_document_position = test_bed.cursor().unwrap();
+ let actual_edit = test_bed
+ .client()
+ .send_request::<Rename>(RenameParams {
+ text_document_position,
+ new_name: new_name.to_string(),
+ work_done_progress_params: Default::default(),
+ })
+ .unwrap()
+ .unwrap_or_default();
+
+ assert_eq!(actual_edit, WorkspaceEdit::new(expected_changes));
+}
+
+#[test]
+fn command() {
+ check(
+ r#"
+%! foo.tex
+\baz
+ |
+ ^^^
+\include{bar.tex}
+
+%! bar.tex
+\baz
+ ^^^
+"#,
+ "qux",
+ )
+}
+
+#[test]
+fn entry() {
+ check(
+ r#"
+%! main.bib
+@article{foo, bar = baz}
+ |
+ ^^^
+
+%! main.tex
+\addbibresource{main.bib}
+\cite{foo}
+ ^^^
+"#,
+ "qux",
+ )
+}
+
+#[test]
+fn citation() {
+ check(
+ r#"
+%! main.bib
+@article{foo, bar = baz}
+ ^^^
+
+%! main.tex
+\addbibresource{main.bib}
+\cite{foo}
+ |
+ ^^^
+"#,
+ "qux",
+ )
+}
+
+#[test]
+fn label() {
+ check(
+ r#"
+%! foo.tex
+\label{foo}\include{bar}
+ |
+ ^^^
+
+%! bar.tex
+\ref{foo}
+ ^^^
+
+%! baz.tex
+\ref{foo}
+"#,
+ "bar",
+ )
+}