def test_reindex(db): with transaction.manager: page = Page( title="hello", text="Quick0 brown lazy fox jumps over lorem ipsum dolor sit amet" ) docid = db.add(page) assert len(db[Page].query(Contains("text", "quick0"))) == 1 # DbModel, by ID with transaction.manager: page.text = "Quick1 brown lazy fox jumps over well, you know" db[Page].reindex(docid) assert len(db[Page].query(Contains("text", "quick0"))) == 0 assert len(db[Page].query(Contains("text", "quick1"))) == 1 # DbModel, by obj with transaction.manager: page.text = "quick2 brown lazy fox jumps over well, you know" db[Page].reindex(page) assert len(db[Page].query(Contains("text", "quick1"))) == 0 assert len(db[Page].query(Contains("text", "quick2"))) == 1 # DB, by obj with transaction.manager: page.text = "quick3 brown lazy fox jumps over well, you know" db[Page].reindex(page) assert len(db[Page].query(Contains("text", "quick2"))) == 0 assert len(db[Page].query(Contains("text", "quick3"))) == 1 # DB, multiple objects with transaction.manager: page2 = Page( title="hello", text="Quick4 brown lazy fox jumps over lorem ipsum dolor sit amet" ) db.add(page2) with transaction.manager: page.text = "quick5 brown lazy fox jumps over well, you know" page2.text = "quick5 brown lazy fox jumps over well, you know" db.reindex([page, page2]) assert len(db[Page].query( Contains("text", "quick3") | Contains("text", "quick4"))) == 0 assert len(db[Page].query(Contains("text", "quick5"))) == 2
def test_reindex(db): with transaction.manager: page = Page(title="hello", text="Quick0 brown lazy fox jumps over lorem ipsum dolor sit amet") docid = db.add(page) assert len(db[Page].query(Contains("text", "quick0"))) == 1 # DbModel, by ID with transaction.manager: page.text = "Quick1 brown lazy fox jumps over well, you know" db[Page].reindex(docid) assert len(db[Page].query(Contains("text", "quick0"))) == 0 assert len(db[Page].query(Contains("text", "quick1"))) == 1 # DbModel, by obj with transaction.manager: page.text = "quick2 brown lazy fox jumps over well, you know" db[Page].reindex(page) assert len(db[Page].query(Contains("text", "quick1"))) == 0 assert len(db[Page].query(Contains("text", "quick2"))) == 1 # DB, by obj with transaction.manager: page.text = "quick3 brown lazy fox jumps over well, you know" db[Page].reindex(page) assert len(db[Page].query(Contains("text", "quick2"))) == 0 assert len(db[Page].query(Contains("text", "quick3"))) == 1 # DB, multiple objects with transaction.manager: page2 = Page(title="hello", text="Quick4 brown lazy fox jumps over lorem ipsum dolor sit amet") db.add(page2) with transaction.manager: page.text = "quick5 brown lazy fox jumps over well, you know" page2.text = "quick5 brown lazy fox jumps over well, you know" db.reindex([page, page2]) assert len(db[Page].query(Contains("text", "quick3") | Contains("text", "quick4"))) == 0 assert len(db[Page].query(Contains("text", "quick5"))) == 2
def test_auto_reindex(db): with transaction.manager: page = Page(title="hello", text="autoreindex0, test whether to work") db.add(page) assert len(db[Page].query(Contains("text", "autoreindex0"))) == 1 with transaction.manager: page.text = "autoreindex1, test whether to work" assert len(db[Page].query(Contains("text", "autoreindex0"))) == 0 assert len(db[Page].query(Contains("text", "autoreindex1"))) == 1 with transaction.manager: page2 = Page(title="hello", text="autoreindex2, test whether to work") db.add(page2) with transaction.manager: page.text = "autoreindex3, test whether to work" page2.text = "autoreindex3, test whether to work" assert len(db[Page].query(Contains("text", "autoreindex1") | Contains("text", "autoreindex2"))) == 0 assert len(db[Page].query(Contains("text", "autoreindex3"))) == 2 with mock.patch("zerodb.db.DbModel.reindex_one") as reindex_mock: with transaction.manager: page.text = "autoreindex3, test whether to work1" page.text = "autoreindex3, test whether to work2" page.text = "autoreindex3, test whether to work3" assert reindex_mock.call_count == 1 db.enableAutoReindex(False) with transaction.manager: page.text = "autoreindex4, test whether to work" assert len(db[Page].query(Contains("text", "autoreindex3"))) == 2 assert len(db[Page].query(Contains("text", "autoreindex4"))) == 0 db.enableAutoReindex(True) with transaction.manager: # should not throw ModleException page3 = Page(title="helloworld", text="autoreindex5, test whether to work") page3.title = "helloworld1" assert len(db[Page].query(Eq("title", "helloworld"))) == 0 assert len(db[Page].query(Eq("title", "helloworld1"))) == 0 with mock.patch("zerodb.db.DbModel.reindex_one") as reindex_mock: with transaction.manager: # should not reindex page3 = Page(title="helloworld", text="autoreindex5, test whether to work") page3.title = "helloworld1" db.add(page3) assert reindex_mock.call_count == 0 with transaction.manager: # should reindex page3 = Page(title="helloworld", text="autoreindex6, test whether to work") db.add(page3) page3.title = "helloworld1" page3.text = "autoreindex7, test whether to work" assert len(db[Page].query(Eq("title", "helloworld"))) == 0 assert len(db[Page].query(Eq("title", "helloworld1"))) == 2 assert len(db[Page].query(Contains("text", "autoreindex6"))) == 0 assert len(db[Page].query(Contains("text", "autoreindex7"))) == 1 with mock.patch("zerodb.db.DbModel.reindex_one") as reindex_mock: with transaction.manager: # should reindex page3 = Page(title="helloworld", text="autoreindex6, test whether to work") db.add(page3) page3.title = "helloworld1" page3.text = "autoreindex7, test whether to work" assert reindex_mock.call_count == 1