diff options
Diffstat (limited to 'crates/ra_assists/src/tests.rs')
-rw-r--r-- | crates/ra_assists/src/tests.rs | 45 |
1 files changed, 44 insertions, 1 deletions
diff --git a/crates/ra_assists/src/tests.rs b/crates/ra_assists/src/tests.rs index 858f5ca80..18fcb9049 100644 --- a/crates/ra_assists/src/tests.rs +++ b/crates/ra_assists/src/tests.rs | |||
@@ -6,7 +6,7 @@ use ra_ide_db::RootDatabase; | |||
6 | use ra_syntax::TextRange; | 6 | use ra_syntax::TextRange; |
7 | use test_utils::{assert_eq_text, extract_offset, extract_range}; | 7 | use test_utils::{assert_eq_text, extract_offset, extract_range}; |
8 | 8 | ||
9 | use crate::{handlers::Handler, Assist, AssistConfig, AssistContext, Assists}; | 9 | use crate::{handlers::Handler, Assist, AssistConfig, AssistContext, AssistKind, Assists}; |
10 | use stdx::trim_indent; | 10 | use stdx::trim_indent; |
11 | 11 | ||
12 | pub(crate) fn with_single_file(text: &str) -> (RootDatabase, FileId) { | 12 | pub(crate) fn with_single_file(text: &str) -> (RootDatabase, FileId) { |
@@ -134,3 +134,46 @@ fn assist_order_if_expr() { | |||
134 | assert_eq!(assists.next().expect("expected assist").assist.label, "Extract into variable"); | 134 | assert_eq!(assists.next().expect("expected assist").assist.label, "Extract into variable"); |
135 | assert_eq!(assists.next().expect("expected assist").assist.label, "Replace with match"); | 135 | assert_eq!(assists.next().expect("expected assist").assist.label, "Replace with match"); |
136 | } | 136 | } |
137 | |||
138 | #[test] | ||
139 | fn assist_filter_works() { | ||
140 | let before = " | ||
141 | pub fn test_some_range(a: int) -> bool { | ||
142 | if let 2..6 = <|>5<|> { | ||
143 | true | ||
144 | } else { | ||
145 | false | ||
146 | } | ||
147 | }"; | ||
148 | let (range, before) = extract_range(before); | ||
149 | let (db, file_id) = with_single_file(&before); | ||
150 | let frange = FileRange { file_id, range }; | ||
151 | |||
152 | { | ||
153 | let mut cfg = AssistConfig::default(); | ||
154 | cfg.allowed = Some(vec![AssistKind::Refactor]); | ||
155 | |||
156 | let assists = Assist::resolved(&db, &cfg, frange); | ||
157 | let mut assists = assists.iter(); | ||
158 | |||
159 | assert_eq!(assists.next().expect("expected assist").assist.label, "Extract into variable"); | ||
160 | assert_eq!(assists.next().expect("expected assist").assist.label, "Replace with match"); | ||
161 | } | ||
162 | |||
163 | { | ||
164 | let mut cfg = AssistConfig::default(); | ||
165 | cfg.allowed = Some(vec![AssistKind::RefactorExtract]); | ||
166 | let assists = Assist::resolved(&db, &cfg, frange); | ||
167 | assert_eq!(assists.len(), 1); | ||
168 | |||
169 | let mut assists = assists.iter(); | ||
170 | assert_eq!(assists.next().expect("expected assist").assist.label, "Extract into variable"); | ||
171 | } | ||
172 | |||
173 | { | ||
174 | let mut cfg = AssistConfig::default(); | ||
175 | cfg.allowed = Some(vec![AssistKind::QuickFix]); | ||
176 | let assists = Assist::resolved(&db, &cfg, frange); | ||
177 | assert!(assists.is_empty(), "All asserts but quickfixes should be filtered out"); | ||
178 | } | ||
179 | } | ||