Skip to content

Commit ac5ba6b

Browse files
committed
Assert against full SQL output
1 parent a988135 commit ac5ba6b

1 file changed

Lines changed: 26 additions & 6 deletions

File tree

spec/index_dsl_unit_spec.rb

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,12 @@
4040

4141
assert_equal "archived_at IS NULL", compiled.where
4242
sql = ActiveRecord::Base.connection.send(:build_create_sql, compiled, if_not_exists: false)
43-
assert_includes sql, "WHERE archived_at IS NULL"
43+
assert_sql_equal <<~SQL, sql
44+
CREATE INDEX products_bm25_idx ON products
45+
USING bm25 (id, (description::pdb.simple))
46+
WITH (key_field='id')
47+
WHERE archived_at IS NULL
48+
SQL
4449
end
4550

4651
it "renders concurrent create index SQL" do
@@ -54,7 +59,11 @@
5459
end
5560

5661
sql = ActiveRecord::Base.connection.send(:build_create_sql, klass.compiled_definition, if_not_exists: true, concurrently: true)
57-
assert_includes sql, "CREATE INDEX CONCURRENTLY IF NOT EXISTS"
62+
assert_sql_equal <<~SQL, sql
63+
CREATE INDEX CONCURRENTLY IF NOT EXISTS products_bm25_idx ON products
64+
USING bm25 (id, (description::pdb.simple))
65+
WITH (key_field='id')
66+
SQL
5867
end
5968

6069
it "rejects mixing tokenizers with single tokenizer keys" do
@@ -170,7 +179,11 @@
170179
end
171180

172181
sql = ActiveRecord::Base.connection.send(:build_create_sql, klass.compiled_definition, if_not_exists: false)
173-
assert_includes sql, "pdb.ngram(2, 5)"
182+
assert_sql_equal <<~SQL, sql
183+
CREATE INDEX products_bm25_idx ON products
184+
USING bm25 (id, (description::pdb.ngram(2, 5)))
185+
WITH (key_field='id')
186+
SQL
174187
end
175188

176189
it "rejects partial ngram bounds in named_args" do
@@ -217,8 +230,11 @@
217230
end
218231

219232
sql = ActiveRecord::Base.connection.send(:build_create_sql, klass.compiled_definition, if_not_exists: false)
220-
assert_includes sql, "::pdb::xyz"
221-
assert_includes sql, "::pdb::abc(12, \"fafda\")"
233+
assert_sql_equal <<~SQL, sql
234+
CREATE INDEX products_bm25_idx ON products
235+
USING bm25 (id, (description::pdb::xyz), ((metadata->>'title')::pdb::abc(12, "fafda")))
236+
WITH (key_field='id')
237+
SQL
222238
end
223239

224240
it "prefixes unqualified inline tokenizers with pdb namespace" do
@@ -232,7 +248,11 @@
232248
end
233249

234250
sql = ActiveRecord::Base.connection.send(:build_create_sql, klass.compiled_definition, if_not_exists: false)
235-
assert_includes sql, "::pdb.ngram(2, 5)"
251+
assert_sql_equal <<~SQL, sql
252+
CREATE INDEX products_bm25_idx ON products
253+
USING bm25 (id, (description::pdb.ngram(2, 5)))
254+
WITH (key_field='id')
255+
SQL
236256
end
237257

238258
it "round-trips tokenizer args through schema ruby" do

0 commit comments

Comments
 (0)