diff options
Diffstat (limited to 'crates/assists/src/tests.rs')
-rw-r--r-- | crates/assists/src/tests.rs | 38 |
1 files changed, 26 insertions, 12 deletions
diff --git a/crates/assists/src/tests.rs b/crates/assists/src/tests.rs index 21e448fb8..a4c6a7570 100644 --- a/crates/assists/src/tests.rs +++ b/crates/assists/src/tests.rs | |||
@@ -1,15 +1,29 @@ | |||
1 | mod generated; | 1 | mod generated; |
2 | 2 | ||
3 | use hir::Semantics; | 3 | use hir::Semantics; |
4 | use ide_db::base_db::{fixture::WithFixture, FileId, FileRange, SourceDatabaseExt}; | 4 | use ide_db::{ |
5 | use ide_db::source_change::FileSystemEdit; | 5 | base_db::{fixture::WithFixture, FileId, FileRange, SourceDatabaseExt}, |
6 | use ide_db::RootDatabase; | 6 | helpers::{insert_use::MergeBehavior, SnippetCap}, |
7 | source_change::FileSystemEdit, | ||
8 | RootDatabase, | ||
9 | }; | ||
7 | use syntax::TextRange; | 10 | use syntax::TextRange; |
8 | use test_utils::{assert_eq_text, extract_offset, extract_range}; | 11 | use test_utils::{assert_eq_text, extract_offset, extract_range}; |
9 | 12 | ||
10 | use crate::{handlers::Handler, Assist, AssistConfig, AssistContext, AssistKind, Assists}; | 13 | use crate::{ |
14 | handlers::Handler, Assist, AssistConfig, AssistContext, AssistKind, Assists, InsertUseConfig, | ||
15 | }; | ||
11 | use stdx::{format_to, trim_indent}; | 16 | use stdx::{format_to, trim_indent}; |
12 | 17 | ||
18 | pub(crate) const TEST_CONFIG: AssistConfig = AssistConfig { | ||
19 | snippet_cap: SnippetCap::new(true), | ||
20 | allowed: None, | ||
21 | insert_use: InsertUseConfig { | ||
22 | merge: Some(MergeBehavior::Full), | ||
23 | prefix_kind: hir::PrefixKind::Plain, | ||
24 | }, | ||
25 | }; | ||
26 | |||
13 | pub(crate) fn with_single_file(text: &str) -> (RootDatabase, FileId) { | 27 | pub(crate) fn with_single_file(text: &str) -> (RootDatabase, FileId) { |
14 | RootDatabase::with_single_file(text) | 28 | RootDatabase::with_single_file(text) |
15 | } | 29 | } |
@@ -48,14 +62,14 @@ fn check_doc_test(assist_id: &str, before: &str, after: &str) { | |||
48 | let before = db.file_text(file_id).to_string(); | 62 | let before = db.file_text(file_id).to_string(); |
49 | let frange = FileRange { file_id, range: selection.into() }; | 63 | let frange = FileRange { file_id, range: selection.into() }; |
50 | 64 | ||
51 | let assist = Assist::get(&db, &AssistConfig::default(), true, frange) | 65 | let assist = Assist::get(&db, &TEST_CONFIG, true, frange) |
52 | .into_iter() | 66 | .into_iter() |
53 | .find(|assist| assist.id.0 == assist_id) | 67 | .find(|assist| assist.id.0 == assist_id) |
54 | .unwrap_or_else(|| { | 68 | .unwrap_or_else(|| { |
55 | panic!( | 69 | panic!( |
56 | "\n\nAssist is not applicable: {}\nAvailable assists: {}", | 70 | "\n\nAssist is not applicable: {}\nAvailable assists: {}", |
57 | assist_id, | 71 | assist_id, |
58 | Assist::get(&db, &AssistConfig::default(), false, frange) | 72 | Assist::get(&db, &TEST_CONFIG, false, frange) |
59 | .into_iter() | 73 | .into_iter() |
60 | .map(|assist| assist.id.0) | 74 | .map(|assist| assist.id.0) |
61 | .collect::<Vec<_>>() | 75 | .collect::<Vec<_>>() |
@@ -89,7 +103,7 @@ fn check(handler: Handler, before: &str, expected: ExpectedResult, assist_label: | |||
89 | let frange = FileRange { file_id: file_with_caret_id, range: range_or_offset.into() }; | 103 | let frange = FileRange { file_id: file_with_caret_id, range: range_or_offset.into() }; |
90 | 104 | ||
91 | let sema = Semantics::new(&db); | 105 | let sema = Semantics::new(&db); |
92 | let config = AssistConfig::default(); | 106 | let config = TEST_CONFIG; |
93 | let ctx = AssistContext::new(sema, &config, frange); | 107 | let ctx = AssistContext::new(sema, &config, frange); |
94 | let mut acc = Assists::new(&ctx, true); | 108 | let mut acc = Assists::new(&ctx, true); |
95 | handler(&mut acc, &ctx); | 109 | handler(&mut acc, &ctx); |
@@ -156,7 +170,7 @@ fn assist_order_field_struct() { | |||
156 | let (before_cursor_pos, before) = extract_offset(before); | 170 | let (before_cursor_pos, before) = extract_offset(before); |
157 | let (db, file_id) = with_single_file(&before); | 171 | let (db, file_id) = with_single_file(&before); |
158 | let frange = FileRange { file_id, range: TextRange::empty(before_cursor_pos) }; | 172 | let frange = FileRange { file_id, range: TextRange::empty(before_cursor_pos) }; |
159 | let assists = Assist::get(&db, &AssistConfig::default(), false, frange); | 173 | let assists = Assist::get(&db, &TEST_CONFIG, false, frange); |
160 | let mut assists = assists.iter(); | 174 | let mut assists = assists.iter(); |
161 | 175 | ||
162 | assert_eq!(assists.next().expect("expected assist").label, "Change visibility to pub(crate)"); | 176 | assert_eq!(assists.next().expect("expected assist").label, "Change visibility to pub(crate)"); |
@@ -176,7 +190,7 @@ fn assist_order_if_expr() { | |||
176 | let (range, before) = extract_range(before); | 190 | let (range, before) = extract_range(before); |
177 | let (db, file_id) = with_single_file(&before); | 191 | let (db, file_id) = with_single_file(&before); |
178 | let frange = FileRange { file_id, range }; | 192 | let frange = FileRange { file_id, range }; |
179 | let assists = Assist::get(&db, &AssistConfig::default(), false, frange); | 193 | let assists = Assist::get(&db, &TEST_CONFIG, false, frange); |
180 | let mut assists = assists.iter(); | 194 | let mut assists = assists.iter(); |
181 | 195 | ||
182 | assert_eq!(assists.next().expect("expected assist").label, "Extract into variable"); | 196 | assert_eq!(assists.next().expect("expected assist").label, "Extract into variable"); |
@@ -198,7 +212,7 @@ fn assist_filter_works() { | |||
198 | let frange = FileRange { file_id, range }; | 212 | let frange = FileRange { file_id, range }; |
199 | 213 | ||
200 | { | 214 | { |
201 | let mut cfg = AssistConfig::default(); | 215 | let mut cfg = TEST_CONFIG; |
202 | cfg.allowed = Some(vec![AssistKind::Refactor]); | 216 | cfg.allowed = Some(vec![AssistKind::Refactor]); |
203 | 217 | ||
204 | let assists = Assist::get(&db, &cfg, false, frange); | 218 | let assists = Assist::get(&db, &cfg, false, frange); |
@@ -209,7 +223,7 @@ fn assist_filter_works() { | |||
209 | } | 223 | } |
210 | 224 | ||
211 | { | 225 | { |
212 | let mut cfg = AssistConfig::default(); | 226 | let mut cfg = TEST_CONFIG; |
213 | cfg.allowed = Some(vec![AssistKind::RefactorExtract]); | 227 | cfg.allowed = Some(vec![AssistKind::RefactorExtract]); |
214 | let assists = Assist::get(&db, &cfg, false, frange); | 228 | let assists = Assist::get(&db, &cfg, false, frange); |
215 | assert_eq!(assists.len(), 1); | 229 | assert_eq!(assists.len(), 1); |
@@ -219,7 +233,7 @@ fn assist_filter_works() { | |||
219 | } | 233 | } |
220 | 234 | ||
221 | { | 235 | { |
222 | let mut cfg = AssistConfig::default(); | 236 | let mut cfg = TEST_CONFIG; |
223 | cfg.allowed = Some(vec![AssistKind::QuickFix]); | 237 | cfg.allowed = Some(vec![AssistKind::QuickFix]); |
224 | let assists = Assist::get(&db, &cfg, false, frange); | 238 | let assists = Assist::get(&db, &cfg, false, frange); |
225 | assert!(assists.is_empty(), "All asserts but quickfixes should be filtered out"); | 239 | assert!(assists.is_empty(), "All asserts but quickfixes should be filtered out"); |