1
"""Test database sanity checking. Right now this is pretty short
2
because we don't do that much sanity checking.
9
from miro import iconcache
12
from miro import databasesanity
13
from miro import database
15
from miro.plat.utils import FilenameType
17
from miro.test.framework import MiroTestCase
19
class SanityCheckingTest(MiroTestCase):
21
MiroTestCase.setUp(self)
22
self.save_path = tempfile.mktemp()
26
os.unlink(self.save_path)
29
MiroTestCase.tearDown(self)
31
def check_object_list_fails_test(self, object_list):
32
self.assertRaises(databasesanity.DatabaseInsaneError,
33
databasesanity.check_sanity, object_list, False)
35
def check_fix_if_possible(self, start_list, fixed_list):
36
self.error_signal_okay = True
37
rv = databasesanity.check_sanity(start_list)
38
self.assertEquals(start_list, fixed_list)
39
self.assertEquals(rv, False)
40
self.assertEquals(self.saw_error, True)
42
def check_object_list_passes_test(self, object_list):
43
databasesanity.check_sanity(object_list)
45
def test_phantom_feed_checking(self):
46
f = feed.Feed(u"http://feed.uk")
47
i = item.Item(item.FeedParserValues({}), feed_id=f.id)
48
i2 = item.FileItem(FilenameType('/foo/bar.txt'), feed_id=f.id)
49
self.check_object_list_fails_test([i])
50
self.check_fix_if_possible([i, i2], [])
51
self.check_object_list_passes_test([i, f])
52
self.check_object_list_passes_test([])
54
def test_manual_feed_checking(self):
55
f = feed.Feed(u"dtv:manualFeed")
56
f2 = feed.Feed(u"dtv:manualFeed")
57
f3 = feed.Feed(u"dtv:manualFeed")
58
self.check_object_list_passes_test([f])
59
self.check_object_list_fails_test([f, f2])
60
self.error_signal_okay = True
61
test_list = [f, f2, f3]
62
databasesanity.check_sanity(test_list)
63
self.assertEquals(len(test_list), 1)
64
self.assertEquals(self.saw_error, True)