|
8 | 8 | # |
9 | 9 |
|
10 | 10 | import json |
| 11 | +from collections.abc import Mapping |
11 | 12 | from datetime import datetime |
12 | 13 |
|
13 | 14 | from django.test import TestCase |
@@ -381,7 +382,10 @@ def test_todo_conflict_details_partial_curation(self): |
381 | 382 | result_partial_curation = issue_details["partial_curation_advisory"] |
382 | 383 | self.assertEqual(1, AdvisoryToDoV2.objects.count()) |
383 | 384 | self.assertEqual("CONFLICTING_FIXED_BY_PACKAGES", todo.issue_type) |
384 | | - self.assertDictEqual(expected_partial_curation_advisory, result_partial_curation) |
| 385 | + self.assertEqual( |
| 386 | + normalize(expected_partial_curation_advisory), |
| 387 | + normalize(result_partial_curation), |
| 388 | + ) |
385 | 389 |
|
386 | 390 | def test_todo_conflict_details_partial_curation_unpaired_purl_and_conflicting_affected_and_fixed( |
387 | 391 | self, |
@@ -513,7 +517,10 @@ def test_todo_conflict_details_partial_curation_unpaired_purl_and_conflicting_fi |
513 | 517 | result_partial_curation = issue_details["partial_curation_advisory"] |
514 | 518 | self.assertEqual(1, AdvisoryToDoV2.objects.count()) |
515 | 519 | self.assertEqual("CONFLICTING_FIXED_BY_PACKAGES", todo.issue_type) |
516 | | - self.assertDictEqual(expected_partial_curation_advisory, result_partial_curation) |
| 520 | + self.assertEqual( |
| 521 | + normalize(expected_partial_curation_advisory), |
| 522 | + normalize(result_partial_curation), |
| 523 | + ) |
517 | 524 |
|
518 | 525 | def test_todo_conflict_details_partial_curation_unpaired_purl_and_conflicting_affected(self): |
519 | 526 | expected_partial_curation_advisory = { |
@@ -586,3 +593,18 @@ def test_todo_conflict_details_partial_curation_unpaired_purl_and_conflicting_af |
586 | 593 | self.assertEqual(1, AdvisoryToDoV2.objects.count()) |
587 | 594 | self.assertEqual("CONFLICTING_AFFECTED_PACKAGES", todo.issue_type) |
588 | 595 | self.assertDictEqual(expected_partial_curation_advisory, result_partial_curation) |
| 596 | + |
| 597 | + |
| 598 | +def normalize(obj): |
| 599 | + if isinstance(obj, Mapping): |
| 600 | + return {k: normalize(v) for k, v in sorted(obj.items())} |
| 601 | + |
| 602 | + if isinstance(obj, list): |
| 603 | + normalized = [normalize(item) for item in obj] |
| 604 | + |
| 605 | + return sorted( |
| 606 | + normalized, |
| 607 | + key=lambda x: repr(x), |
| 608 | + ) |
| 609 | + |
| 610 | + return obj |
0 commit comments