Skip to content

Commit 1fd51cc

Browse files
add alphanumeric test
1 parent aaae3fa commit 1fd51cc

File tree

1 file changed

+60
-0
lines changed

1 file changed

+60
-0
lines changed

crates/pg_completions/src/complete.rs

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,66 @@ mod tests {
8484
)
8585
}
8686

87+
#[tokio::test]
88+
async fn autocompletes_table_alphanumerically() {
89+
let test_db = get_new_test_db().await;
90+
91+
let setup = r#"
92+
create table addresses (
93+
id serial primary key
94+
);
95+
96+
create table users (
97+
id serial primary key
98+
);
99+
100+
create table emails (
101+
id serial primary key
102+
);
103+
"#;
104+
105+
test_db
106+
.execute(setup)
107+
.await
108+
.expect("Failed to execute setup query");
109+
110+
let schema_cache = SchemaCache::load(&test_db).await;
111+
112+
let mut parser = tree_sitter::Parser::new();
113+
parser
114+
.set_language(tree_sitter_sql::language())
115+
.expect("Error loading sql language");
116+
117+
let test_cases = vec![
118+
("select * from us", "users"),
119+
("select * from em", "emails"),
120+
("select * from ", "addresses"),
121+
];
122+
123+
for (input, expected_label) in test_cases {
124+
let tree = parser.parse(input, None).unwrap();
125+
126+
let p = CompletionParams {
127+
position: ((input.len() - 1) as u32).into(),
128+
schema: &schema_cache,
129+
text: input,
130+
tree: Some(&tree),
131+
};
132+
133+
let result = complete(p);
134+
135+
assert!(result.items.len() > 0);
136+
137+
let best_match = &result.items[0];
138+
139+
assert_eq!(
140+
best_match.label, expected_label,
141+
"Does not return the expected table to autocomplete: {}",
142+
best_match.label
143+
)
144+
}
145+
}
146+
87147
#[tokio::test]
88148
async fn autocompletes_table_with_schema() {
89149
let test_db = get_new_test_db().await;

0 commit comments

Comments
 (0)