11import unittest2
22
33
4- class _FactoryBase ( object ):
4+ class Test_FactoryRegistry ( unittest2 . TestCase ):
55
66 def setUp (self ):
7- from gcloud .datastore ._helpers import _FACTORIES
8-
9- self ._before = _FACTORIES .copy ()
7+ self ._widget = object ()
8+ self ._called_with = []
109
11- def tearDown (self ):
10+ def _makeOne (self ):
1211 from gcloud .datastore ._helpers import _FACTORIES
12+ return type (_FACTORIES )()
1313
14- _FACTORIES .clear ()
15- _FACTORIES .update (self ._before )
16-
17-
18- class Test__register_factory (_FactoryBase , unittest2 .TestCase ):
19-
20- def _callFUT (self , name , factory ):
21- from gcloud .datastore ._helpers import _register_factory
22-
23- return _register_factory (name , factory )
14+ def _factory (self , * args , ** kw ): # pragma: NO COVER
15+ self ._called_with .append ((args , kw ))
16+ return self ._widget
2417
25- def test_it (self ):
26- from gcloud .datastore ._helpers import _FACTORIES
18+ def test_register (self ):
2719
2820 class _Foo (object ):
2921 pass
3022
31- self ._callFUT ('Foo' , _Foo )
32- self .assertTrue (_FACTORIES ['Foo' ] is _Foo )
23+ factories = self ._makeOne ()
24+ factories .register ('Foo' , _Foo )
25+ self .assertTrue (factories .get ('Foo' ) is _Foo )
3326
34- def test_duplicate_exact (self ):
35- from gcloud .datastore ._helpers import _FACTORIES
27+ def test_register_duplicate_exact (self ):
3628
3729 class _Foo (object ):
3830 pass
3931
40- self ._callFUT ('Foo' , _Foo )
41- self ._callFUT ('Foo' , _Foo )
42- self .assertTrue (_FACTORIES ['Foo' ] is _Foo )
32+ factories = self ._makeOne ()
33+ factories .register ('Foo' , _Foo )
34+ factories .register ('Foo' , _Foo )
35+ self .assertTrue (factories .get ('Foo' ) is _Foo )
4336
44- def test_duplicate_conflict (self ):
37+ def test_register_duplicate_conflict (self ):
4538 from gcloud .datastore ._helpers import DuplicateFactory
4639
4740 class _Foo (object ):
@@ -50,70 +43,48 @@ class _Foo(object):
5043 class _Bar (object ):
5144 pass
5245
53- self ._callFUT ('Foo' , _Foo )
54- self .assertRaises (DuplicateFactory , self ._callFUT , 'Foo' , _Bar )
55-
56-
57- class Test__get_factory (_FactoryBase , unittest2 .TestCase ):
58-
59- def setUp (self ):
60- from gcloud .datastore ._helpers import _FACTORIES
61-
62- super (Test__get_factory , self ).setUp ()
63- _FACTORIES ['Widget' ] = self ._factory
64-
65- def _callFUT (self , name , * args , ** kw ):
66- from gcloud .datastore ._helpers import _get_factory
67-
68- return _get_factory (name , * args , ** kw )
69-
70- @staticmethod
71- def _factory (* args , ** kw ): # pragma: NO COVER
72- pass
46+ factories = self ._makeOne ()
47+ factories .register ('Foo' , _Foo )
48+ self .assertRaises (DuplicateFactory , factories .register , 'Foo' , _Bar )
7349
74- def test_miss (self ):
50+ def test_get_miss (self ):
7551 from gcloud .datastore ._helpers import InvalidFactory
7652
77- self .assertRaises (InvalidFactory , self ._callFUT , 'Nonesuch' )
53+ factories = self ._makeOne ()
54+ self .assertRaises (InvalidFactory , factories .get , 'Nonesuch' )
7855
79- def test_hit (self ):
80- self . assertTrue ( self . _callFUT ( 'Widget' ) is self ._factory )
56+ def test_get_hit (self ):
57+ factories = self ._makeOne ( )
8158
59+ # Use a bare function to avoid method wrappers for testing.
60+ def _bare_factory (): # pragma: NO COVER
61+ pass
8262
83- class Test__invoke_factory (_FactoryBase , unittest2 .TestCase ):
84-
85- def setUp (self ):
86- from gcloud .datastore ._helpers import _FACTORIES
87-
88- super (Test__invoke_factory , self ).setUp ()
89- self ._called_with = []
90- self ._widget = object ()
91- _FACTORIES ['Widget' ] = self ._factory
92-
93- def _callFUT (self , name , * args , ** kw ):
94- from gcloud .datastore ._helpers import _invoke_factory
95-
96- return _invoke_factory (name , * args , ** kw )
97-
98- def _factory (self , * args , ** kw ):
99- self ._called_with .append ((args , kw ))
100- return self ._widget
63+ factories .register ('Widget' , _bare_factory )
64+ self .assertTrue (factories .get ('Widget' ) is _bare_factory )
10165
102- def test_missing_registration (self ):
66+ def test_invoke_miss (self ):
10367 from gcloud .datastore ._helpers import InvalidFactory
10468
105- self .assertRaises (InvalidFactory , self ._callFUT , 'Nonesuch' )
69+ factories = self ._makeOne ()
70+ self .assertRaises (InvalidFactory , factories .invoke , 'Nonesuch' )
10671
107- def test_wo_args_or_kw (self ):
108- self .assertTrue (self ._callFUT ('Widget' ) is self ._widget )
72+ def test_invoke_wo_args_or_kw (self ):
73+ factories = self ._makeOne ()
74+ factories .register ('Widget' , self ._factory )
75+ self .assertTrue (factories .invoke ('Widget' ) is self ._widget )
10976 self .assertEqual (self ._called_with , [((), {})])
11077
111- def test_w_args (self ):
112- self .assertTrue (self ._callFUT ('Widget' , 'foo' , 42 ) is self ._widget )
78+ def test_invoke_w_args (self ):
79+ factories = self ._makeOne ()
80+ factories .register ('Widget' , self ._factory )
81+ self .assertTrue (factories .invoke ('Widget' , 'foo' , 42 ) is self ._widget )
11382 self .assertEqual (self ._called_with , [(('foo' , 42 ), {})])
11483
115- def test_w_kw (self ):
116- self .assertTrue (self ._callFUT ('Widget' , foo = 42 ) is self ._widget )
84+ def test_invoke_w_kw (self ):
85+ factories = self ._makeOne ()
86+ factories .register ('Widget' , self ._factory )
87+ self .assertTrue (factories .invoke ('Widget' , foo = 42 ) is self ._widget )
11788 self .assertEqual (self ._called_with , [((), {'foo' : 42 })])
11889
11990
0 commit comments