The type of the attrib object wasn't actually a dict.
It was an internal class that we can't easily compare to. So I'm opting to just make the xml output be more consistent and ordered. I was hoping to avoid this since the order shouldn't matter but the juggling we have to do to validate the unorderd data is more complication than it's worth.
This commit is contained in:
@@ -222,21 +222,8 @@ class VideoBlockTestBase(unittest.TestCase):
|
||||
for attr in ['tag', 'attrib', 'text', 'tail']:
|
||||
expected_attr = getattr(expected, attr)
|
||||
actual_attr = getattr(xml, attr)
|
||||
|
||||
# This is to deal with a special issue in the video descriptor xml output.
|
||||
# The value of the transcript attribute of the video tag is a serialized
|
||||
# json string. This can have comparison problems in python3 where the order
|
||||
# of the dictionary output is not gauranteed to be the same. So the strings
|
||||
# don't match equally. We convert the parsed json instead so that the
|
||||
# comparison can be correct.
|
||||
if isinstance(expected_attr, dict) and \
|
||||
isinstance(actual_attr, dict) and \
|
||||
'transcripts' in expected_attr and \
|
||||
'transcripts' in actual_attr:
|
||||
expected_attr['transcripts'] = json.loads(expected_attr['transcripts'])
|
||||
actual_attr['transcripts'] = json.loads(actual_attr['transcripts'])
|
||||
|
||||
self.assertEqual(expected_attr, actual_attr)
|
||||
|
||||
self.assertEqual(get_child_tags(expected), get_child_tags(xml))
|
||||
for left, right in zip(expected, xml):
|
||||
self.assertXmlEqual(left, right)
|
||||
|
||||
@@ -745,7 +745,7 @@ class VideoBlock(
|
||||
xml.set('sub', '')
|
||||
|
||||
# Update `transcripts` attribute in the xml
|
||||
xml.set('transcripts', json.dumps(transcripts))
|
||||
xml.set('transcripts', json.dumps(transcripts, sort_keys=True))
|
||||
|
||||
except edxval_api.ValVideoNotFoundError:
|
||||
pass
|
||||
|
||||
Reference in New Issue
Block a user