Пример #1
0
    def test_dir_repo(self):
        with TempDir() as tmpdir:
            db_fn = os.path.join(tmpdir.name, 'files.sdb')
            repo = Database(db_fn, verbose=0).dir

            obj1 = Dir("foo")
            self.assertEqual(obj1, Dir("foo"))
            repo.save(obj1)
            self.assertEqual(obj1.id, 1)
            self.assertEqual(obj1, Dir("foo", id=1))
            self.assertEqual(repo.load(1), obj1)

            obj2 = Dir("bar")
            repo.save(obj2)
            self.assertEqual(obj2.id, 2)

            self.assert_lists_have_same_items(repo.find_ids(), [1, 2])
            self.assert_lists_have_same_items(repo.find_ids(name="foo"), [1])
            self.assert_lists_have_same_items(repo.find_ids(id=2), [2])
            self.assert_lists_have_same_items(repo.find_ids(name="hello"), [])

            self.assert_lists_have_same_items(repo.find(), [obj1, obj2])
            self.assert_lists_have_same_items(repo.find(name="foo"), [obj1])
            self.assert_lists_have_same_items(repo.find(name="hello"), [])
            self.assert_lists_have_same_items(repo.find(id=In([1, 2])), [obj1, obj2])

            obj1.name = "new"
            repo.save(obj1)

            self.assertEqual(repo.load(1), obj1)

            repo.delete(obj1)
            self.assert_lists_have_same_items(repo.find_ids(), [2])
Пример #2
0
    def test_imagehash_repo(self):
        with TempDir() as tmpdir:
            db_fn = os.path.join(tmpdir.name, 'files.sdb')
            repo = Database(db_fn, verbose=0).imagehash

            obj1 = ImageHash(3, 4, "hash1")
            self.assertEqual(obj1, ImageHash(3, 4, "hash1"))
            repo.save(obj1)
            self.assertEqual(obj1.id, 1)
            self.assertEqual(obj1, ImageHash(3, 4, "hash1", id=1))
            self.assertEqual(repo.load(1), obj1)

            obj2 = ImageHash(5, 6, None)
            repo.save(obj2)
            self.assertEqual(obj2.id, 2)

            self.assert_lists_have_same_items(repo.find_ids(hash=Null), [2])
            self.assert_lists_have_same_items(repo.find_ids(hash=Null()), [2])
Пример #3
0
    def test_file_repo(self):
        with TempDir() as tmpdir:
            db_fn = os.path.join(tmpdir.name, 'files.sdb')
            repo = Database(db_fn, verbose=0).file

            obj1 = File(1, "foo", 102, 3)
            self.assertEqual(obj1, File(1, "foo", 102, 3))
            repo.save(obj1)
            self.assertEqual(obj1.id, 1)
            self.assertEqual(obj1, File(1, "foo", 102, 3, id=1))
            self.assertEqual(repo.load(1), obj1)

            obj2 = File(1, "bar", 100, 5)
            repo.save(obj2)
            self.assertEqual(obj2.id, 2)

            obj3 = File(6, "foo", 101, 5)
            repo.save(obj3)
            self.assertEqual(obj3.id, 3)

            self.assert_lists_have_same_items(repo.find_ids(), [1, 2, 3])
            self.assert_lists_have_same_items(repo.find_ids(name="foo"), [1, 3])
            self.assert_lists_have_same_items(repo.find_ids(id=2), [2])
            self.assert_lists_have_same_items(repo.find_ids(dirid=1), [1, 2])
            self.assert_lists_have_same_items(repo.find_ids(contentid=5), [2, 3])
            self.assert_lists_have_same_items(repo.find_ids(name="hello"), [])

            self.assert_lists_have_same_items(repo.find(), [obj1, obj2, obj3])
            self.assert_lists_have_same_items(repo.find(name="foo"), [obj1, obj3])
            self.assert_lists_have_same_items(repo.find(id=2), [obj2])
            self.assert_lists_have_same_items(repo.find(id=In([1, 2])), [obj1, obj2])
            self.assert_lists_have_same_items(repo.find(dirid=1), [obj1, obj2])
            self.assert_lists_have_same_items(repo.find(contentid=5), [obj2, obj3])
            self.assert_lists_have_same_items(repo.find(name="hello"), [])

            self.assert_lists_have_same_items(repo.find_ids(sort="id asc"), [1, 2, 3])
            self.assert_lists_have_same_items(repo.find_ids(sort="id desc"), [3, 2, 1])
            self.assert_lists_have_same_items(repo.find(sort="mtime asc"), [obj2, obj3, obj1])
            self.assert_lists_have_same_items(repo.find(sort="mtime desc"), [obj1, obj3, obj2])

            obj1.name = "new"
            obj1.dirid = 20
            obj1.contentid = 21
            repo.save(obj1)

            self.assertEqual(repo.load(1), obj1)

            repo.delete(obj1)
            self.assert_lists_have_same_items(repo.find_ids(), [2, 3])