@@ -98,19 +98,31 @@ def test_ctor(self):
98
98
(["d" , "c" , "b" , "a" ], "b" , ["d" , "c" ]),
99
99
],
100
100
)
101
- def test_revise_request_rowset_keys (self , in_keys , last_key , expected ):
101
+ @pytest .mark .parametrize ("with_range" , [True , False ])
102
+ def test_revise_request_rowset_keys_with_range (
103
+ self , in_keys , last_key , expected , with_range
104
+ ):
102
105
from google .cloud .bigtable_v2 .types import RowSet as RowSetPB
103
106
from google .cloud .bigtable_v2 .types import RowRange as RowRangePB
107
+ from google .cloud .bigtable .data .exceptions import _RowSetComplete
104
108
105
109
in_keys = [key .encode ("utf-8" ) for key in in_keys ]
106
110
expected = [key .encode ("utf-8" ) for key in expected ]
107
111
last_key = last_key .encode ("utf-8" )
108
112
109
- sample_range = RowRangePB (start_key_open = last_key )
110
- row_set = RowSetPB (row_keys = in_keys , row_ranges = [sample_range ])
111
- revised = self ._get_target_class ()._revise_request_rowset (row_set , last_key )
112
- assert revised .row_keys == expected
113
- assert revised .row_ranges == [sample_range ]
113
+ if with_range :
114
+ sample_range = [RowRangePB (start_key_open = last_key )]
115
+ else :
116
+ sample_range = []
117
+ row_set = RowSetPB (row_keys = in_keys , row_ranges = sample_range )
118
+ if not with_range and expected == []:
119
+ # expect exception if we are revising to an empty rowset
120
+ with pytest .raises (_RowSetComplete ):
121
+ self ._get_target_class ()._revise_request_rowset (row_set , last_key )
122
+ else :
123
+ revised = self ._get_target_class ()._revise_request_rowset (row_set , last_key )
124
+ assert revised .row_keys == expected
125
+ assert revised .row_ranges == sample_range
114
126
115
127
@pytest .mark .parametrize (
116
128
"in_ranges,last_key,expected" ,
@@ -157,9 +169,13 @@ def test_revise_request_rowset_keys(self, in_keys, last_key, expected):
157
169
),
158
170
],
159
171
)
160
- def test_revise_request_rowset_ranges (self , in_ranges , last_key , expected ):
172
+ @pytest .mark .parametrize ("with_key" , [True , False ])
173
+ def test_revise_request_rowset_ranges (
174
+ self , in_ranges , last_key , expected , with_key
175
+ ):
161
176
from google .cloud .bigtable_v2 .types import RowSet as RowSetPB
162
177
from google .cloud .bigtable_v2 .types import RowRange as RowRangePB
178
+ from google .cloud .bigtable .data .exceptions import _RowSetComplete
163
179
164
180
# convert to protobuf
165
181
next_key = (last_key + "a" ).encode ("utf-8" )
@@ -172,10 +188,20 @@ def test_revise_request_rowset_ranges(self, in_ranges, last_key, expected):
172
188
RowRangePB (** {k : v .encode ("utf-8" ) for k , v in r .items ()}) for r in expected
173
189
]
174
190
175
- row_set = RowSetPB (row_ranges = in_ranges , row_keys = [next_key ])
176
- revised = self ._get_target_class ()._revise_request_rowset (row_set , last_key )
177
- assert revised .row_keys == [next_key ]
178
- assert revised .row_ranges == expected
191
+ if with_key :
192
+ row_keys = [next_key ]
193
+ else :
194
+ row_keys = []
195
+
196
+ row_set = RowSetPB (row_ranges = in_ranges , row_keys = row_keys )
197
+ if not with_key and expected == []:
198
+ # expect exception if we are revising to an empty rowset
199
+ with pytest .raises (_RowSetComplete ):
200
+ self ._get_target_class ()._revise_request_rowset (row_set , last_key )
201
+ else :
202
+ revised = self ._get_target_class ()._revise_request_rowset (row_set , last_key )
203
+ assert revised .row_keys == row_keys
204
+ assert revised .row_ranges == expected
179
205
180
206
@pytest .mark .parametrize ("last_key" , ["a" , "b" , "c" ])
181
207
def test_revise_request_full_table (self , last_key ):
0 commit comments