@@ -25,16 +25,25 @@ def _getTargetClass(self):
2525 def _makeOne (self , * args , ** kwargs ):
2626 return self ._getTargetClass ()(* args , ** kwargs )
2727
28- def test_constructor (self ):
28+ def _constructor_test_helper (self , cluster = None ):
2929 import datetime
3030 op_type = 'fake-op'
3131 op_id = 8915
3232 begin = datetime .datetime (2015 , 10 , 22 , 1 , 1 )
33- operation = self ._makeOne (op_type , op_id , begin )
33+ operation = self ._makeOne (op_type , op_id , begin , cluster = cluster )
3434
3535 self .assertEqual (operation .op_type , op_type )
3636 self .assertEqual (operation .op_id , op_id )
3737 self .assertEqual (operation .begin , begin )
38+ self .assertEqual (operation ._cluster , cluster )
39+ self .assertFalse (operation ._complete )
40+
41+ def test_constructor_defaults (self ):
42+ self ._constructor_test_helper ()
43+
44+ def test_constructor_explicit_cluster (self ):
45+ cluster = object ()
46+ self ._constructor_test_helper (cluster = cluster )
3847
3948 def test___eq__ (self ):
4049 import datetime
@@ -65,6 +74,66 @@ def test___ne__(self):
6574 operation2 = self ._makeOne ('bar' , 456 , None )
6675 self .assertNotEqual (operation1 , operation2 )
6776
77+ def test_finished_without_operation (self ):
78+ operation = self ._makeOne (None , None , None )
79+ operation ._complete = True
80+ with self .assertRaises (ValueError ):
81+ operation .finished ()
82+
83+ def _finished_helper (self , done ):
84+ import datetime
85+ from gcloud .bigtable ._generated import operations_pb2
86+ from gcloud .bigtable ._testing import _FakeStub
87+ from gcloud .bigtable .cluster import Cluster
88+
89+ project = 'PROJECT'
90+ zone = 'zone'
91+ cluster_id = 'cluster-id'
92+ op_type = 'fake-op'
93+ op_id = 789
94+ begin = datetime .datetime (2015 , 10 , 22 , 1 , 1 )
95+ timeout_seconds = 1
96+
97+ client = _Client (project , timeout_seconds = timeout_seconds )
98+ cluster = Cluster (zone , cluster_id , client )
99+ operation = self ._makeOne (op_type , op_id , begin , cluster = cluster )
100+
101+ # Create request_pb
102+ op_name = ('operations/projects/' + project + '/zones/' +
103+ zone + '/clusters/' + cluster_id +
104+ '/operations/%d' % (op_id ,))
105+ request_pb = operations_pb2 .GetOperationRequest (name = op_name )
106+
107+ # Create response_pb
108+ response_pb = operations_pb2 .Operation (done = done )
109+
110+ # Patch the stub used by the API method.
111+ client ._operations_stub = stub = _FakeStub (response_pb )
112+
113+ # Create expected_result.
114+ expected_result = done
115+
116+ # Perform the method and check the result.
117+ result = operation .finished ()
118+
119+ self .assertEqual (result , expected_result )
120+ self .assertEqual (stub .method_calls , [(
121+ 'GetOperation' ,
122+ (request_pb , timeout_seconds ),
123+ {},
124+ )])
125+
126+ if done :
127+ self .assertTrue (operation ._complete )
128+ else :
129+ self .assertFalse (operation ._complete )
130+
131+ def test_finished (self ):
132+ self ._finished_helper (done = True )
133+
134+ def test_finished_not_done (self ):
135+ self ._finished_helper (done = False )
136+
68137
69138class TestCluster (unittest2 .TestCase ):
70139
0 commit comments