Fix for issue #7 (Enable key lookup after the key is found)
This commit is contained in:
parent
395ee0185b
commit
de3630f0f3
3 changed files with 70 additions and 8 deletions
|
|
@ -1,7 +1,7 @@
|
|||
nested_lookup
|
||||
#############
|
||||
|
||||
.. image:: https://img.shields.io/badge/pypi-0.1.5-green.svg
|
||||
.. image:: https://img.shields.io/badge/pypi-0.1.7-green.svg
|
||||
:target: https://pypi.python.org/pypi/nested-lookup
|
||||
|
||||
A small Python library which enables:
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ def _nested_lookup(key, document, wild=False, with_keys=False):
|
|||
yield k, v
|
||||
else:
|
||||
yield v
|
||||
elif isinstance(v, dict):
|
||||
if isinstance(v, dict):
|
||||
for result in _nested_lookup(key, v, wild=wild, with_keys=with_keys):
|
||||
yield result
|
||||
elif isinstance(v, list):
|
||||
|
|
|
|||
|
|
@ -17,6 +17,27 @@ class TestNestedLookup(TestCase):
|
|||
"email_address": "test4@example.com",
|
||||
},
|
||||
}
|
||||
self.subject_dict3 = {
|
||||
"build_version": {
|
||||
"model_name": "MacBook Pro",
|
||||
"build_version": {
|
||||
"processor_name": "Intel Core i7",
|
||||
"processor_speed": "2.7 GHz",
|
||||
"core_details": {
|
||||
"build_version": "4",
|
||||
"l2_cache(per_core)": "256 KB"
|
||||
}
|
||||
},
|
||||
"number_of_cores": "4",
|
||||
"memory": "256 KB",
|
||||
},
|
||||
"os_details": {
|
||||
"product_version": "10.13.6",
|
||||
"build_version": "17G65"
|
||||
},
|
||||
"name": "Test",
|
||||
"date": "YYYY-MM-DD HH:MM:SS"
|
||||
}
|
||||
|
||||
def test_nested_lookup(self):
|
||||
results = nested_lookup("d", self.subject_dict)
|
||||
|
|
@ -47,7 +68,8 @@ class TestNestedLookup(TestCase):
|
|||
self.assertSetEqual({100, 200}, set(results))
|
||||
|
||||
def test_wild_nested_lookup(self):
|
||||
results = nested_lookup(key="mail", document=self.subject_dict2, wild=True)
|
||||
results = nested_lookup(
|
||||
key="mail", document=self.subject_dict2, wild=True)
|
||||
self.assertEqual(4, len(results))
|
||||
self.assertIn("test1@example.com", results)
|
||||
self.assertIn("test2@example.com", results)
|
||||
|
|
@ -61,8 +83,9 @@ class TestNestedLookup(TestCase):
|
|||
self.assertIn("email_address", matches)
|
||||
self.assertIn("secondary_email", matches)
|
||||
self.assertIn("EMAIL_RECOVERY", matches)
|
||||
self.assertSetEqual(
|
||||
{"test1@example.com", "test4@example.com"}, set(matches["email_address"])
|
||||
self.assertSetEqual({
|
||||
"test1@example.com", "test4@example.com"},
|
||||
set(matches["email_address"])
|
||||
)
|
||||
self.assertIn("test2@example.com", matches["secondary_email"])
|
||||
|
||||
|
|
@ -72,6 +95,37 @@ class TestNestedLookup(TestCase):
|
|||
self.assertEqual(2, len(matches["d"]))
|
||||
self.assertSetEqual({100, 200}, set(matches["d"]))
|
||||
|
||||
def test_after_key_is_found(self):
|
||||
result = nested_lookup(
|
||||
key='build_version', document=self.subject_dict3
|
||||
)
|
||||
self.assertEqual(4, len(result))
|
||||
self.assertIn('4', result)
|
||||
self.assertIn('17G65', result)
|
||||
match1 = {
|
||||
'processor_name': 'Intel Core i7',
|
||||
'processor_speed': '2.7 GHz',
|
||||
'core_details': {
|
||||
'build_version': '4',
|
||||
'l2_cache(per_core)': '256 KB'
|
||||
}
|
||||
}
|
||||
self.assertIn(match1, result)
|
||||
match2 = {
|
||||
'build_version': {
|
||||
'processor_name': 'Intel Core i7',
|
||||
'processor_speed': '2.7 GHz',
|
||||
'core_details': {
|
||||
'build_version': '4',
|
||||
'l2_cache(per_core)': '256 KB'
|
||||
}
|
||||
},
|
||||
'memory': '256 KB',
|
||||
'model_name': 'MacBook Pro',
|
||||
'number_of_cores': '4'
|
||||
}
|
||||
self.assertIn(match2, result)
|
||||
|
||||
|
||||
class TestGetAllKeys(TestCase):
|
||||
|
||||
|
|
@ -90,7 +144,9 @@ class TestGetAllKeys(TestCase):
|
|||
"total_number_of_cores": "4",
|
||||
"memory": "16 GB",
|
||||
},
|
||||
"os_details": {"product_version": "10.13.6", "build_version": "17G65"},
|
||||
"os_details": {
|
||||
"product_version": "10.13.6", "build_version": "17G65"
|
||||
},
|
||||
"name": "Test",
|
||||
"date": "YYYY-MM-DD HH:MM:SS",
|
||||
}
|
||||
|
|
@ -115,8 +171,14 @@ class TestGetAllKeys(TestCase):
|
|||
"hardware_details": {
|
||||
"model_name": "MacBook Pro",
|
||||
"processor_details": [
|
||||
{"processor_name": "Intel Core i7", "processor_speed": "2.7 GHz"},
|
||||
{"total_numberof_cores": "4", "l2_cache(per_core)": "256 KB"},
|
||||
{
|
||||
"processor_name": "Intel Core i7",
|
||||
"processor_speed": "2.7 GHz"
|
||||
},
|
||||
{
|
||||
"total_numberof_cores": "4",
|
||||
"l2_cache(per_core)": "256 KB"
|
||||
},
|
||||
],
|
||||
"total_number_of_cores": "4",
|
||||
"memory": "16 GB",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue