[SQL-CVS] r1200 - in SQLObject/trunk/sqlobject: . tests
SQLObject is a Python ORM.
Brought to you by:
ianbicking,
phd
|
From: <sub...@co...> - 2005-11-03 08:06:15
|
Author: ianb
Date: 2005-11-03 08:06:05 +0000 (Thu, 03 Nov 2005)
New Revision: 1200
Added:
SQLObject/trunk/sqlobject/tests/test_events.py
Modified:
SQLObject/trunk/sqlobject/events.py
Log:
Started event testing; fixed bug with inheriting listeners
Modified: SQLObject/trunk/sqlobject/events.py
===================================================================
--- SQLObject/trunk/sqlobject/events.py 2005-11-03 02:14:20 UTC (rev 1199)
+++ SQLObject/trunk/sqlobject/events.py 2005-11-03 08:06:05 UTC (rev 1200)
@@ -14,9 +14,8 @@
an event is fired on any subclass.
"""
dispatcher.connect(receiver, signal=signal, sender=soClass)
- weakSOClass = ref(soClass)
weakReceiver = ref(receiver)
- subclassClones.setdefault(weakSOClass, []).append((weakReceiver, signal))
+ subclassClones.setdefault(soClass, []).append((weakReceiver, signal))
# We export this function:
send = dispatcher.send
@@ -53,7 +52,7 @@
receiver = weakReceiver()
if not receiver:
continue
- dispatcher.connect(receiver, signal=signal, sender=new_class)
+ listen(receiver, new_class, signal)
dispatcher.connect(_makeSubclassConnections, signal=ClassCreateSignal)
Added: SQLObject/trunk/sqlobject/tests/test_events.py
===================================================================
--- SQLObject/trunk/sqlobject/tests/test_events.py 2005-11-03 02:14:20 UTC (rev 1199)
+++ SQLObject/trunk/sqlobject/tests/test_events.py 2005-11-03 08:06:05 UTC (rev 1200)
@@ -0,0 +1,29 @@
+from sqlobject import *
+from sqlobject.tests.dbtest import *
+from sqlobject import events
+import sys
+
+class EventTester(SQLObject):
+ name = StringCol()
+
+def make_watcher():
+ log = []
+ def watch(*args):
+ log.append(args)
+ watch.log = log
+ return watch
+
+def test_create():
+ watcher = make_watcher()
+ events.listen(watcher, EventTester, events.ClassCreateSignal)
+ class EventTesterSub1(EventTester):
+ pass
+ class EventTesterSub2(EventTesterSub1):
+ pass
+ assert len(watcher.log) == 2
+ assert len(watcher.log[0]) == 4
+ assert watcher.log[0][0] == 'EventTesterSub1'
+ assert watcher.log[0][1] == (EventTester,)
+ assert isinstance(watcher.log[0][2], dict)
+ assert isinstance(watcher.log[0][3], list)
+
|