def test_get_objects_by_filter_with_multiple_filters( self, send_request_mock, fetch_system_info_mock, connection_mock): objects = [{ 'name': 'obj1', 'type': 1, 'foo': { 'bar': 'buzz' } }, { 'name': 'obj2', 'type': 1, 'foo': { 'bar': 'buz' } }, { 'name': 'obj3', 'type': 2, 'foo': { 'bar': 'buzz' } }] fetch_system_info_mock.return_value = { 'databaseInfo': { 'buildVersion': '6.3.0' } } connection_mock.get_operation_spec.return_value = { 'method': HTTPMethod.GET, 'url': '/object/' } resource = BaseConfigurationResource(connection_mock, False) send_request_mock.side_effect = [{'items': objects}, {'items': []}] # resource.get_objects_by_filter returns generator so to be able compare generated list with expected list # we need evaluate it. assert objects == list(resource.get_objects_by_filter('test', {})) send_request_mock.assert_has_calls( [mock.call('/object/', 'get', {}, {}, { 'limit': 10, 'offset': 0 })]) send_request_mock.reset_mock() send_request_mock.side_effect = [{'items': objects}, {'items': []}] # resource.get_objects_by_filter returns generator so to be able compare generated list with expected list # we need evaluate it. assert [objects[0]] == list( resource.get_objects_by_filter( 'test', {ParamName.FILTERS: { 'name': 'obj1' }})) send_request_mock.assert_has_calls([ mock.call('/object/', 'get', {}, {}, { QueryParams.FILTER: 'name:obj1', 'limit': 10, 'offset': 0 }) ]) send_request_mock.reset_mock() send_request_mock.side_effect = [{'items': objects}, {'items': []}] # resource.get_objects_by_filter returns generator so to be able compare generated list with expected list # we need evaluate it. assert [objects[1]] == list( resource.get_objects_by_filter( 'test', { ParamName.FILTERS: { 'name': 'obj2', 'type': 1, 'foo': { 'bar': 'buz' } } })) send_request_mock.assert_has_calls([ mock.call('/object/', 'get', {}, {}, { QueryParams.FILTER: 'name:obj2', 'limit': 10, 'offset': 0 }) ])
def test_get_objects_by_filter_with_multiple_responses( self, send_request_mock, fetch_system_info_mock, connection_mock): send_request_mock.side_effect = [{ 'items': [{ 'name': 'obj1', 'type': 'foo' }, { 'name': 'obj2', 'type': 'bar' }] }, { 'items': [{ 'name': 'obj3', 'type': 'foo' }] }, { 'items': [] }] fetch_system_info_mock.return_value = { 'databaseInfo': { 'buildVersion': '6.3.0' } } connection_mock.get_operation_spec.return_value = { 'method': HTTPMethod.GET, 'url': '/object/' } resource = BaseConfigurationResource(connection_mock, False) assert [{ 'name': 'obj1', 'type': 'foo' }] == list( resource.get_objects_by_filter( 'test', {ParamName.FILTERS: { 'type': 'foo' }})) send_request_mock.assert_has_calls( [mock.call('/object/', 'get', {}, {}, { 'limit': 10, 'offset': 0 })]) send_request_mock.reset_mock() send_request_mock.side_effect = [{ 'items': [{ 'name': 'obj1', 'type': 'foo' }, { 'name': 'obj2', 'type': 'bar' }] }, { 'items': [{ 'name': 'obj3', 'type': 'foo' }] }, { 'items': [] }] resp = list( resource.get_objects_by_filter( 'test', { ParamName.FILTERS: { 'type': 'foo' }, ParamName.QUERY_PARAMS: { 'limit': 2 } })) assert [{ 'name': 'obj1', 'type': 'foo' }, { 'name': 'obj3', 'type': 'foo' }] == resp send_request_mock.assert_has_calls([ mock.call('/object/', 'get', {}, {}, { 'limit': 2, 'offset': 0 }), mock.call('/object/', 'get', {}, {}, { 'limit': 2, 'offset': 2 }) ])