Skip to content

Commit f8423e3

Browse files
authored
Merge pull request #79 from cloudblue/lite-29138-fix-resourceset-bool
LITE-29138 Fix bool method for ResourceSe
2 parents e6ba1ce + d66eec2 commit f8423e3

2 files changed

Lines changed: 5 additions & 71 deletions

File tree

connect/client/models/resourceset.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -312,8 +312,11 @@ def __iter__(self):
312312
return iter(self._results)
313313

314314
def __bool__(self):
315-
self._fetch_all()
316-
return bool(self._results)
315+
if self._results is not None:
316+
return bool(self._results)
317+
copy = self._copy()
318+
copy._fetch_all()
319+
return bool(copy._results)
317320

318321
def __getitem__(self, key): # noqa: CCR001
319322
self._validate_key(key)

tests/client/test_models.py

Lines changed: 0 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -917,37 +917,6 @@ def test_rs_values_list(mocker, rs_factory):
917917
assert list(rs) == expected
918918

919919

920-
def test_rs_values_list_evaluated(mocker, rs_factory):
921-
mocker.patch(
922-
'connect.client.models.resourceset.parse_content_range',
923-
return_value=ContentRange(0, 9, 10),
924-
)
925-
return_value = [
926-
{
927-
'id': i,
928-
'name': f'name {i}',
929-
'inner': {
930-
'title': f'title {i}',
931-
},
932-
}
933-
for i in range(10)
934-
]
935-
expected = [
936-
{
937-
'id': i,
938-
'inner.title': f'title {i}',
939-
}
940-
for i in range(10)
941-
]
942-
rs = rs_factory()
943-
rs._client.get = mocker.MagicMock(return_value=return_value)
944-
945-
bool(rs)
946-
values = rs.values_list('id', 'inner.title')
947-
948-
assert values == expected
949-
950-
951920
def test_rs_pagination(mocker, rs_factory):
952921
mocker.patch(
953922
'connect.client.models.iterators.parse_content_range',
@@ -1127,20 +1096,6 @@ def test_rs_help(rs_factory):
11271096
assert rs2 == rs
11281097

11291098

1130-
def test_rs_bool_truthy_already_evaluated(mocker, rs_factory):
1131-
mocker.patch(
1132-
'connect.client.models.resourceset.parse_content_range',
1133-
return_value=ContentRange(0, 9, 10),
1134-
)
1135-
expected = [{'id': i} for i in range(10)]
1136-
rs = rs_factory()
1137-
mocked = mocker.patch.object(ResourceSet, '_execute_request', wraps=rs._execute_request)
1138-
rs._client.get = mocker.MagicMock(return_value=expected)
1139-
assert bool(rs) is True
1140-
assert bool(rs) is True
1141-
mocked.assert_called_once()
1142-
1143-
11441099
def test_rs_count_already_evaluated(mocker, rs_factory):
11451100
mocker.patch(
11461101
'connect.client.models.resourceset.parse_content_range',
@@ -1162,27 +1117,3 @@ def test_rs_slice_single_bound(mocker, rs_factory):
11621117
with pytest.raises(ValueError) as cv:
11631118
rs[:1]
11641119
assert str(cv.value) == 'Both start and stop indexes must be specified.'
1165-
1166-
1167-
def test_rs_slice_already_evaluated(mocker, rs_factory):
1168-
mocker.patch(
1169-
'connect.client.models.resourceset.parse_content_range',
1170-
return_value=ContentRange(0, 9, 10),
1171-
)
1172-
expected = [{'id': i} for i in range(10)]
1173-
rs = rs_factory()
1174-
rs._client.get = mocker.MagicMock(return_value=expected)
1175-
assert bool(rs) is True
1176-
assert rs[0:2] == expected[0:2]
1177-
1178-
1179-
def test_rs_iterate_already_evaluated(mocker, rs_factory):
1180-
mocker.patch(
1181-
'connect.client.models.resourceset.parse_content_range',
1182-
return_value=ContentRange(0, 9, 10),
1183-
)
1184-
expected = [{'id': i} for i in range(10)]
1185-
rs = rs_factory()
1186-
rs._client.get = mocker.MagicMock(return_value=expected)
1187-
assert bool(rs) is True
1188-
assert [item for item in rs] == expected

0 commit comments

Comments
 (0)