From 9a5256e2261b64bad41b0d1e3871fd3019deb073 Mon Sep 17 00:00:00 2001 From: Simon Willison Date: Sat, 23 Nov 2024 12:27:08 -0800 Subject: [PATCH] Test for .search(include_rank) Refs https://github.com/simonw/sqlite-utils/pull/628#issuecomment-2495644255 --- tests/test_fts.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/tests/test_fts.py b/tests/test_fts.py index ecfcff9db..a35b9eef1 100644 --- a/tests/test_fts.py +++ b/tests/test_fts.py @@ -1,6 +1,7 @@ import pytest from sqlite_utils import Database from sqlite_utils.utils import sqlite3 +from unittest.mock import ANY search_records = [ { @@ -126,6 +127,32 @@ def test_search_where_args_disallows_query(fresh_db): ) +def test_search_include_rank(fresh_db): + table = fresh_db["t"] + table.insert_all(search_records) + table.enable_fts(["text", "country"], fts_version="FTS5") + results = list(table.search("are", include_rank=True)) + assert results == [ + { + "rowid": 1, + "text": "tanuki are running tricksters", + "country": "Japan", + "not_searchable": "foo", + "rank": ANY, + }, + { + "rowid": 2, + "text": "racoons are biting trash pandas", + "country": "USA", + "not_searchable": "bar", + "rank": ANY, + }, + ] + assert isinstance(results[0]["rank"], float) + assert isinstance(results[1]["rank"], float) + assert results[0]["rank"] < results[1]["rank"] + + def test_enable_fts_table_names_containing_spaces(fresh_db): table = fresh_db["test"] table.insert({"column with spaces": "in its name"})