Inject information regarding parent and grandparent

This commit is contained in:
Alexandru Coman 2017-02-13 18:02:34 +02:00
parent 854dded6fb
commit c90d01e72e
No known key found for this signature in database
GPG Key ID: A7B6A9021F704507
2 changed files with 12 additions and 8 deletions

View File

@ -108,7 +108,6 @@ class _BaseHNVModel(model.Model):
# pylint: disable=no-member
# Reset the model to the initial state
self._data = self._meta.get_defaults()
self._provision_done = False # Set back the provision flag
self._changes.clear() # Clear the changes
@ -138,10 +137,12 @@ class _BaseHNVModel(model.Model):
grandparent_id=grandparent_id or "")
resources = []
while True:
raw_data = client.get_resource(endpoint)
for item in raw_data.get("value", []):
resources.append(cls.from_raw_data(item))
endpoint = raw_data.get("nextLink")
response = client.get_resource(endpoint)
for raw_data in response.get("value", []):
raw_data["parentResourceID"] = parent_id
raw_data["grandParentResourceID"] = grandparent_id
resources.append(cls.from_raw_data(raw_data))
endpoint = response.get("nextLink")
if not endpoint:
break
return resources
@ -154,6 +155,8 @@ class _BaseHNVModel(model.Model):
parent_id=parent_id or "",
grandparent_id=grandparent_id or "")
raw_data = client.get_resource(endpoint)
raw_data["parentResourceID"] = parent_id
raw_data["grandParentResourceID"] = grandparent_id
return cls.from_raw_data(raw_data)
@classmethod

View File

@ -55,6 +55,7 @@ class TestBaseHNVModel(unittest.TestCase):
mock_from_raw_data.return_value = mock.sentinel.resource
http_client = mock_get_client.return_value = mock.Mock()
get_resource = http_client.get_resource = mock.Mock()
get_resource.return_value = {}
resource = client._BaseHNVModel.get(resource_id="hnv-client-test")
@ -64,16 +65,16 @@ class TestBaseHNVModel(unittest.TestCase):
@mock.patch("hnv.client._BaseHNVModel.from_raw_data")
@mock.patch("hnv.client._BaseHNVModel._get_client")
def test_get_all(self, mock_get_client, mock_from_raw_data):
mock_from_raw_data.side_effect = range(10)
mock_from_raw_data.side_effect = [{} for index in range(10)]
http_client = mock_get_client.return_value = mock.Mock()
get_resource = http_client.get_resource = mock.Mock()
get_resource.return_value = {"value": range(10)}
get_resource.return_value = {"value": [{} for _ in range(10)]}
resources = client._BaseHNVModel.get()
get_resource.assert_called_once_with("/")
self.assertEqual(resources, range(10))
self.assertEqual(resources, [{} for _ in range(10)])
@mock.patch("time.sleep")
@mock.patch("hnv.client._BaseHNVModel._get_client")