From 56fb3fb2fca8b44b71a89c248631c18737d3a306 Mon Sep 17 00:00:00 2001 From: Pierre Ducroquet Date: Tue, 5 Mar 2024 11:14:06 +0100 Subject: [PATCH] sql: test purge of search tokens (#86527) --- tests/test_sql.py | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/tests/test_sql.py b/tests/test_sql.py index 75fa27dda..c5fea5625 100644 --- a/tests/test_sql.py +++ b/tests/test_sql.py @@ -1183,6 +1183,45 @@ def test_sql_criteria_fts(pub): assert data_class.select([st.FtsMatch(formdata1.id_display)])[0].id_display == formdata1.id_display +def test_search_tokens_purge(pub): + _, cur = sql.get_connection_and_cursor() + + # purge garbage from other tests + sql.purge_obsolete_search_tokens() + + cur.execute('SELECT count(*) FROM wcs_search_tokens;') + start = cur.fetchone()[0] + + # define a new table + test_formdef = FormDef() + test_formdef.name = 'tableSelectFTStokens' + test_formdef.fields = [fields.StringField(id='3', label='string')] + test_formdef.store() + data_class = test_formdef.data_class(mode='sql') + + cur.execute('SELECT count(*) FROM wcs_search_tokens;') + assert cur.fetchone()[0] == start + 1 + + t = data_class() + t.data = {'3': 'foofortokensofcourse'} + t.just_created() + t.store() + + cur.execute('SELECT count(*) FROM wcs_search_tokens;') + assert cur.fetchone()[0] == start + 2 + + t.data = {'3': 'chaussettefortokensofcourse'} + t.store() + + cur.execute('SELECT count(*) FROM wcs_search_tokens;') + assert cur.fetchone()[0] == start + 3 + + sql.purge_obsolete_search_tokens() + + cur.execute('SELECT count(*) FROM wcs_search_tokens;') + assert cur.fetchone()[0] == start + 2 + + def table_exists(cur, table_name): cur.execute( '''SELECT COUNT(*) FROM information_schema.tables