[SQL-CVS] r1201 - in SQLObject/trunk/sqlobject: . tests
SQLObject is a Python ORM.
Brought to you by:
ianbicking,
phd
|
From: <sub...@co...> - 2005-11-03 08:17:18
|
Author: ianb
Date: 2005-11-03 08:17:07 +0000 (Thu, 03 Nov 2005)
New Revision: 1201
Modified:
SQLObject/trunk/sqlobject/main.py
SQLObject/trunk/sqlobject/tests/test_events.py
Log:
Some more tests and a fix (last test is broken, but disabled)
Modified: SQLObject/trunk/sqlobject/main.py
===================================================================
--- SQLObject/trunk/sqlobject/main.py 2005-11-03 08:06:05 UTC (rev 1200)
+++ SQLObject/trunk/sqlobject/main.py 2005-11-03 08:17:07 UTC (rev 1201)
@@ -297,6 +297,7 @@
def addColumn(cls, columnDef, changeSchema=False, connection=None):
post_funcs = []
+ print "Send on", cls.soClass, columnDef.name
cls.send(events.AddColumnSignal, cls.soClass, connection,
columnDef.name, columnDef, changeSchema, post_funcs)
sqlmeta = cls
@@ -1060,7 +1061,8 @@
# the parts are set. So we just keep them in a
# dictionary until later:
d = {name: value}
- self.sqlmeta.send(events.RowUpdateSignal, self, d)
+ if not self.sqlmeta._creating:
+ self.sqlmeta.send(events.RowUpdateSignal, self, d)
if len(d) != 1 or name not in d:
return self.set(**d)
value = d[name]
@@ -1084,7 +1086,8 @@
setattr(self, instanceName(name), value)
def set(self, **kw):
- self.sqlmeta.send(events.RowUpdateSignal, self, kw)
+ if not self.sqlmeta._creating:
+ self.sqlmeta.send(events.RowUpdateSignal, self, kw)
# set() is used to update multiple values at once,
# potentially with one SQL statement if possible.
Modified: SQLObject/trunk/sqlobject/tests/test_events.py
===================================================================
--- SQLObject/trunk/sqlobject/tests/test_events.py 2005-11-03 08:06:05 UTC (rev 1200)
+++ SQLObject/trunk/sqlobject/tests/test_events.py 2005-11-03 08:17:07 UTC (rev 1201)
@@ -13,9 +13,15 @@
watch.log = log
return watch
+def make_listen(signal, cls=None):
+ if cls is None:
+ cls = EventTester
+ watcher = make_watcher()
+ events.listen(watcher, cls, signal)
+ return watcher
+
def test_create():
- watcher = make_watcher()
- events.listen(watcher, EventTester, events.ClassCreateSignal)
+ watcher = make_listen(events.ClassCreateSignal)
class EventTesterSub1(EventTester):
pass
class EventTesterSub2(EventTesterSub1):
@@ -27,3 +33,40 @@
assert isinstance(watcher.log[0][2], dict)
assert isinstance(watcher.log[0][3], list)
+def test_row_create():
+ setupClass(EventTester)
+ watcher = make_listen(events.RowCreateSignal)
+ EventTester(name='foo')
+ EventTester(name='bar')
+ assert len(watcher.log) == 2
+ assert watcher.log[0] == ({'name': 'foo'}, [])
+
+def test_row_destrow():
+ setupClass(EventTester)
+ watcher = make_listen(events.RowDestroySignal)
+ f = EventTester(name='foo')
+ assert not watcher.log
+ f.destroySelf()
+ assert watcher.log == [(f,)]
+
+def test_row_update():
+ setupClass(EventTester)
+ watcher = make_listen(events.RowUpdateSignal)
+ f = EventTester(name='bar')
+ assert not watcher.log
+ f.name = 'bar2'
+ f.set(name='bar3')
+ assert watcher.log == [
+ (f, {'name': 'bar2'}),
+ (f, {'name': 'bar3'})]
+
+def disbaled_test_add_column():
+ setupClass(EventTester)
+ watcher = make_listen(events.RowUpdateSignal)
+ class NewEventTester(EventTester):
+ name2 = StringCol()
+ assert watcher.log == [
+ (NewEventTester, NewEventTester._connection,
+ 'name2', NewEventTester.sqlmeta.columns['name2'],
+ True, [])]
+
|