Finish trigger tests

This commit is contained in:
Kovid Goyal 2022-02-08 06:33:49 +05:30
parent 1dd710991f
commit 2ecdbfb194
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
3 changed files with 19 additions and 5 deletions

View File

@ -4,8 +4,8 @@ CREATE TEMP TRIGGER fts_db_book_deleted_trg AFTER DELETE ON main.books BEGIN
END;
CREATE TEMP TRIGGER fts_db_format_deleted_trg AFTER DELETE ON main.data BEGIN
DELETE FROM books_text WHERE book=OLD.id AND format=OLD.format;
DELETE FROM dirtied_formats WHERE book=OLD.id AND format=OLD.format;
DELETE FROM books_text WHERE book=OLD.book AND format=OLD.format;
DELETE FROM dirtied_formats WHERE book=OLD.book AND format=OLD.format;
END;
CREATE TEMP TRIGGER fts_db_format_added_trg AFTER INSERT ON main.data BEGIN

View File

@ -39,3 +39,7 @@ class FTS:
def all_currently_dirty(self):
conn = self.get_connection()
return conn.get('''SELECT book, format from fts_db.dirtied_formats''', all=True)
def clear_all_dirty(self):
conn = self.get_connection()
conn.execute('DELETE FROM fts_db.dirtied_formats')

View File

@ -4,6 +4,7 @@
import builtins
import sys
from io import BytesIO
from calibre.db.tests.base import BaseTest
@ -29,10 +30,19 @@ class FTSAPITest(BaseTest):
def test_fts_triggers(self):
cache = self.init_cache()
fts = cache.backend.enable_fts()
cd = fts.all_currently_dirty()
self.ae(len(cd), 3)
self.ae(fts.all_currently_dirty(), [(1, 'FMT1'), (1, 'FMT2'), (2, 'FMT1')])
fts.dirty_existing()
self.ae(len(cd), 3)
self.ae(fts.all_currently_dirty(), [(1, 'FMT1'), (1, 'FMT2'), (2, 'FMT1')])
cache.remove_formats({2: ['FMT1']})
self.ae(fts.all_currently_dirty(), [(1, 'FMT1'), (1, 'FMT2')])
cache.remove_books((1,))
self.ae(fts.all_currently_dirty(), [])
cache.add_format(2, 'ADDED', BytesIO(b'data'))
self.ae(fts.all_currently_dirty(), [(2, 'ADDED')])
fts.clear_all_dirty()
self.ae(fts.all_currently_dirty(), [])
cache.add_format(2, 'ADDED', BytesIO(b'data2'))
self.ae(fts.all_currently_dirty(), [(2, 'ADDED')])
def find_tests():