Fix handling of metadatas that are set to None or False
Change-Id: I19bd14f57d925319a220fa7e2b8b492f29e1b8ed
This commit is contained in:
parent
e3f4be6487
commit
76d373b1e6
|
@ -117,8 +117,8 @@ class PollsterSampleExtractor(object):
|
||||||
for k in pollster_definitions['metadata_fields']:
|
for k in pollster_definitions['metadata_fields']:
|
||||||
val = self.retrieve_attribute_nested_value(pollster_sample, k)
|
val = self.retrieve_attribute_nested_value(pollster_sample, k)
|
||||||
|
|
||||||
if val:
|
LOG.debug("Assigning value [%s] to metadata key [%s].", val, k)
|
||||||
metadata[k] = val
|
metadata[k] = val
|
||||||
|
|
||||||
self.generate_new_metadata_fields(
|
self.generate_new_metadata_fields(
|
||||||
metadata=metadata, pollster_definitions=pollster_definitions)
|
metadata=metadata, pollster_definitions=pollster_definitions)
|
||||||
|
|
|
@ -935,3 +935,65 @@ class TestDynamicPollster(base.BaseTestCase):
|
||||||
.get_request_linked_samples_url(kwargs)
|
.get_request_linked_samples_url(kwargs)
|
||||||
|
|
||||||
self.assertEqual(expected_url, url)
|
self.assertEqual(expected_url, url)
|
||||||
|
|
||||||
|
def test_generate_sample_and_extract_metadata(self):
|
||||||
|
definition = self.pollster_definition_only_required_fields.copy()
|
||||||
|
definition['metadata_fields'] = ["metadata1", 'metadata2']
|
||||||
|
|
||||||
|
pollster = dynamic_pollster.DynamicPollster(definition)
|
||||||
|
|
||||||
|
pollster_sample = {'metadata1': 'metadata1',
|
||||||
|
'metadata2': 'metadata2',
|
||||||
|
'value': 1}
|
||||||
|
|
||||||
|
sample = pollster.definitions.sample_extractor.generate_sample(
|
||||||
|
pollster_sample)
|
||||||
|
|
||||||
|
self.assertEqual(1, sample.volume)
|
||||||
|
self.assertEqual(2, len(sample.resource_metadata))
|
||||||
|
self.assertEqual('metadata1', sample.resource_metadata['metadata1'])
|
||||||
|
self.assertEqual('metadata2', sample.resource_metadata['metadata2'])
|
||||||
|
|
||||||
|
def test_generate_sample_and_extract_metadata_false_value(self):
|
||||||
|
definition = self.pollster_definition_only_required_fields.copy()
|
||||||
|
definition['metadata_fields'] = ["metadata1",
|
||||||
|
'metadata2',
|
||||||
|
'metadata3_false']
|
||||||
|
|
||||||
|
pollster = dynamic_pollster.DynamicPollster(definition)
|
||||||
|
|
||||||
|
pollster_sample = {'metadata1': 'metadata1',
|
||||||
|
'metadata2': 'metadata2',
|
||||||
|
'metadata3_false': False,
|
||||||
|
'value': 1}
|
||||||
|
|
||||||
|
sample = pollster.definitions.sample_extractor.generate_sample(
|
||||||
|
pollster_sample)
|
||||||
|
|
||||||
|
self.assertEqual(1, sample.volume)
|
||||||
|
self.assertEqual(3, len(sample.resource_metadata))
|
||||||
|
self.assertEqual('metadata1', sample.resource_metadata['metadata1'])
|
||||||
|
self.assertEqual('metadata2', sample.resource_metadata['metadata2'])
|
||||||
|
self.assertIs(False, sample.resource_metadata['metadata3_false'])
|
||||||
|
|
||||||
|
def test_generate_sample_and_extract_metadata_none_value(self):
|
||||||
|
definition = self.pollster_definition_only_required_fields.copy()
|
||||||
|
definition['metadata_fields'] = ["metadata1",
|
||||||
|
'metadata2',
|
||||||
|
'metadata3']
|
||||||
|
|
||||||
|
pollster = dynamic_pollster.DynamicPollster(definition)
|
||||||
|
|
||||||
|
pollster_sample = {'metadata1': 'metadata1',
|
||||||
|
'metadata2': 'metadata2',
|
||||||
|
'metadata3': None,
|
||||||
|
'value': 1}
|
||||||
|
|
||||||
|
sample = pollster.definitions.sample_extractor.generate_sample(
|
||||||
|
pollster_sample)
|
||||||
|
|
||||||
|
self.assertEqual(1, sample.volume)
|
||||||
|
self.assertEqual(3, len(sample.resource_metadata))
|
||||||
|
self.assertEqual('metadata1', sample.resource_metadata['metadata1'])
|
||||||
|
self.assertEqual('metadata2', sample.resource_metadata['metadata2'])
|
||||||
|
self.assertIsNone(sample.resource_metadata['metadata3'])
|
||||||
|
|
Loading…
Reference in New Issue