⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 base.py

📁 Python的一个ORM,现在很火
💻 PY
📖 第 1 页 / 共 5 页
字号:
    def test_update_checkpoints(self):        bar = self.store.get(Bar, 200)        bar.title = u"Title 400"        self.store.flush()        self.store.execute("UPDATE bar SET title='Title 500' "                           "WHERE id=200")        bar.foo_id = 40        # When not checkpointing, this flush will set title again.        self.store.flush()        self.store.reload(bar)        self.assertEquals(bar.title, "Title 500")    def test_update_primary_key(self):        foo = self.store.get(Foo, 20)        foo.id = 25        self.store.commit()        self.assertEquals(self.get_committed_items(), [                          (10, "Title 30"),                          (25, "Title 20"),                          (30, "Title 10"),                         ])        # Update twice to see if the notion of primary key for the        # existent object was updated as well.                foo.id = 27        self.store.commit()        self.assertEquals(self.get_committed_items(), [                          (10, "Title 30"),                          (27, "Title 20"),                          (30, "Title 10"),                         ])        # Ensure only the right ones are there.        self.assertTrue(self.store.get(Foo, 27) is foo)        self.assertTrue(self.store.get(Foo, 25) is None)        self.assertTrue(self.store.get(Foo, 20) is None)    def test_update_primary_key_exchange(self):        foo1 = self.store.get(Foo, 10)        foo2 = self.store.get(Foo, 30)        foo1.id = 40        self.store.flush()        foo2.id = 10        self.store.flush()        foo1.id = 30        self.assertTrue(self.store.get(Foo, 30) is foo1)        self.assertTrue(self.store.get(Foo, 10) is foo2)        self.store.commit()        self.assertEquals(self.get_committed_items(), [                          (10, "Title 10"),                          (20, "Title 20"),                          (30, "Title 30"),                         ])    def test_wb_update_not_dirty_after_flush(self):        foo = self.store.get(Foo, 20)        foo.title = u"Title 200"        self.store.flush()        # If changes get committed even with the notification disabled,        # it means the dirty flag isn't being cleared.        self.store._disable_change_notification(get_obj_info(foo))        foo.title = u"Title 2000"        self.store.flush()        self.assertEquals(self.get_items(), [                          (10, "Title 30"),                          (20, "Title 200"),                          (30, "Title 10"),                         ])    def test_update_find(self):        foo = self.store.get(Foo, 20)        foo.title = u"Title 200"                result = self.store.find(Foo, Foo.title == u"Title 200")        self.assertTrue(result.one() is foo)    def test_update_get(self):        foo = self.store.get(Foo, 20)        foo.id = 200        self.assertTrue(self.store.get(Foo, 200) is foo)    def test_add_update(self):        foo = Foo()        foo.id = 40        foo.title = u"Title 40"        self.store.add(foo)        foo.title = u"Title 400"        self.store.flush()        self.assertEquals(self.get_items(), [                          (10, "Title 30"),                          (20, "Title 20"),                          (30, "Title 10"),                          (40, "Title 400"),                         ])    def test_add_remove_add(self):        foo = Foo()        foo.id = 40        foo.title = u"Title 40"        self.store.add(foo)        self.store.remove(foo)        self.assertEquals(Store.of(foo), None)        foo.title = u"Title 400"        self.store.add(foo)        foo.id = 400        self.store.commit()        self.assertEquals(Store.of(foo), self.store)        self.assertEquals(self.get_items(), [                          (10, "Title 30"),                          (20, "Title 20"),                          (30, "Title 10"),                          (400, "Title 400"),                         ])        self.assertTrue(self.store.get(Foo, 400) is foo)    def test_wb_add_remove_add(self):        foo = Foo()        obj_info = get_obj_info(foo)        self.store.add(foo)        self.assertTrue(obj_info in self.store._dirty)        self.store.remove(foo)        self.assertTrue(obj_info not in self.store._dirty)        self.store.add(foo)        self.assertTrue(obj_info in self.store._dirty)        self.assertTrue(Store.of(foo) is self.store)    def test_wb_update_remove_add(self):        foo = self.store.get(Foo, 20)        foo.title = u"Title 200"        obj_info = get_obj_info(foo)        self.store.remove(foo)        self.store.add(foo)        self.assertTrue(obj_info in self.store._dirty)    def test_commit_autoreloads(self):        foo = self.store.get(Foo, 20)        self.assertEquals(foo.title, "Title 20")        self.store.execute("UPDATE foo SET title='New Title' WHERE id=20")        self.assertEquals(foo.title, "Title 20")        self.store.commit()        self.assertEquals(foo.title, "New Title")    def test_commit_invalidates(self):        foo = self.store.get(Foo, 20)        self.assertTrue(foo)        self.store.execute("DELETE FROM foo WHERE id=20")        self.assertEquals(self.store.get(Foo, 20), foo)        self.store.commit()        self.assertEquals(self.store.get(Foo, 20), None)    def test_rollback_autoreloads(self):        foo = self.store.get(Foo, 20)        self.assertEquals(foo.title, "Title 20")        self.store.rollback()        self.store.execute("UPDATE foo SET title='New Title' WHERE id=20")        self.assertEquals(foo.title, "New Title")    def test_rollback_invalidates(self):        foo = self.store.get(Foo, 20)        self.assertTrue(foo)        self.assertEquals(self.store.get(Foo, 20), foo)        self.store.rollback()        self.store.execute("DELETE FROM foo WHERE id=20")        self.assertEquals(self.store.get(Foo, 20), None)    def test_sub_class(self):        class SubFoo(Foo):            id = Float(primary=True)        foo1 = self.store.get(Foo, 20)        foo2 = self.store.get(SubFoo, 20)        self.assertEquals(foo1.id, 20)        self.assertEquals(foo2.id, 20)        self.assertEquals(type(foo1.id), int)        self.assertEquals(type(foo2.id), float)    def test_join(self):        class Bar(object):            __storm_table__ = "bar"            id = Int(primary=True)            title = Unicode()        bar = Bar()        bar.id = 40        bar.title = u"Title 20"        self.store.add(bar)        # Add anbar object with the same title to ensure DISTINCT        # is in place.        bar = Bar()        bar.id = 400        bar.title = u"Title 20"        self.store.add(bar)        result = self.store.find(Foo, Foo.title == Bar.title)        self.assertEquals([(foo.id, foo.title) for foo in result], [                          (20, "Title 20"),                          (20, "Title 20"),                         ])    def test_join_distinct(self):        class Bar(object):            __storm_table__ = "bar"            id = Int(primary=True)            title = Unicode()        bar = Bar()        bar.id = 40        bar.title = u"Title 20"        self.store.add(bar)        # Add a bar object with the same title to ensure DISTINCT        # is in place.        bar = Bar()        bar.id = 400        bar.title = u"Title 20"        self.store.add(bar)        result = self.store.find(Foo, Foo.title == Bar.title)        result.config(distinct=True)        # Make sure that it won't unset it, and that it's returning itself.        config = result.config()        self.assertEquals([(foo.id, foo.title) for foo in result], [                          (20, "Title 20"),                         ])    def test_sub_select(self):        foo = self.store.find(Foo, Foo.id == Select(SQL("20"))).one()        self.assertTrue(foo)        self.assertEquals(foo.id, 20)        self.assertEquals(foo.title, "Title 20")    def test_cache_has_improper_object(self):        foo = self.store.get(Foo, 20)        self.store.remove(foo)        self.store.commit()        self.store.execute("INSERT INTO foo VALUES (20, 'Title 20')")        self.assertTrue(self.store.get(Foo, 20) is not foo)    def test_cache_has_improper_object_readded(self):        foo = self.store.get(Foo, 20)        self.store.remove(foo)        self.store.flush()        old_foo = foo # Keep a reference.        foo = Foo()        foo.id = 20        foo.title = u"Readded"        self.store.add(foo)        self.store.commit()        self.assertTrue(self.store.get(Foo, 20) is foo)    def test_loaded_hook(self):        loaded = []        class MyFoo(Foo):            def __init__(self):                loaded.append("NO!")            def __storm_loaded__(self):                loaded.append((self.id, self.title))                self.title = u"Title 200"                self.some_attribute = 1        foo = self.store.get(MyFoo, 20)        self.assertEquals(loaded, [(20, "Title 20")])        self.assertEquals(foo.title, "Title 200")        self.assertEquals(foo.some_attribute, 1)        foo.some_attribute = 2        self.store.flush()        self.assertEquals(self.get_items(), [                          (10, "Title 30"),                          (20, "Title 200"),                          (30, "Title 10"),                         ])        self.store.rollback()        self.assertEquals(foo.title, "Title 20")        self.assertEquals(foo.some_attribute, 2)    def test_flushed_hook(self):        class MyFoo(Foo):            done = False            def __storm_flushed__(self):                if not self.done:                    self.done = True                    self.title = u"Flushed: %s" % self.title        foo = self.store.get(MyFoo, 20)        self.assertEquals(foo.title, "Title 20")        self.store.flush()        self.assertEquals(foo.title, "Title 20") # It wasn't dirty.        foo.title = u"Something"        self.store.flush()        self.assertEquals(foo.title, "Flushed: Something")        # It got in the database, because it was flushed *twice* (the        # title was changed after flushed, and thus the object got dirty        # again).        self.assertEquals(self.get_items(), [                          (10, "Title 30"),                          (20, "Flushed: Something"),                          (30, "Title 10"),                         ])        # This shouldn't do anything, because the object is clean again.        foo.done = False        self.store.flush()        self.assertEquals(foo.title, "Flushed: Something")    def test_retrieve_default_primary_key(self):        foo = Foo()        foo.title = u"Title 40"        self.store.add(foo)        self.store.flush()        self.assertNotEquals(foo.id, None)        self.assertTrue(self.store.get(Foo, foo.id) is foo)    def test_retrieve_default_value(self):        foo = Foo()        foo.id = 40        self.store.add(foo)        self.store.flush()        self.assertEquals(foo.title, "Default Title")    def test_wb_remove_prop_not_dirty(self):        foo = self.store.get(Foo, 20)        obj_info = get_obj_info(foo)        del foo.title        self.assertTrue(obj_info not in self.store._dirty)    def test_flush_with_removed_prop(self):        foo = self.store.get(Foo, 20)        del foo.title        self.store.flush()        self.assertEquals(self.get_items(), [                          (10, "Title 30"),                          (20, "Title 20"),                          (30, "Title 10"),                         ])    def test_flush_with_removed_prop_forced_dirty(self):        foo = self.store.get(Foo, 20)        del foo.title

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -