|
62 | 62 | HistoricalPoll,
|
63 | 63 | HistoricalPollWithHistoricalIPAddress,
|
64 | 64 | HistoricalState,
|
| 65 | + OverrideModelNameAsCallable, |
| 66 | + OverrideModelNameUsingBaseModel1, |
| 67 | + MyOverrideModelNameRegisterMethod1, |
65 | 68 | Library,
|
66 | 69 | ModelWithFkToModelWithHistoryUsingBaseModelDb,
|
67 | 70 | ModelWithHistoryInDifferentDb,
|
@@ -711,17 +714,72 @@ def test_create_history_model_with_multiple_one_to_ones(self):
|
711 | 714 | "exception."
|
712 | 715 | )
|
713 | 716 |
|
714 |
| - def test_instantiate_history_model_with_custom_model_name(self): |
| 717 | + |
| 718 | +class CustomModelNameTests(unittest.TestCase): |
| 719 | + def verify_custom_model_name_feature( |
| 720 | + self, model, expected_class_name, expected_table_name |
| 721 | + ): |
| 722 | + history_model = model.history.model |
| 723 | + self.assertEqual(history_model.__name__, expected_class_name) |
| 724 | + self.assertEqual(history_model._meta.db_table, expected_table_name) |
| 725 | + |
| 726 | + def test_instantiate_history_model_with_custom_model_name_as_string(self): |
715 | 727 | try:
|
716 |
| - from ..models import MyHistoricalCustomNameModel |
| 728 | + from ..models import OverrideModelNameAsString |
717 | 729 | except ImportError:
|
718 |
| - self.fail("MyHistoricalCustomNameModel is in wrong module") |
719 |
| - historical_model = MyHistoricalCustomNameModel() |
720 |
| - self.assertEqual( |
721 |
| - historical_model.__class__.__name__, "MyHistoricalCustomNameModel" |
| 730 | + self.fail("{}OverrideModelNameAsString is in wrong module") |
| 731 | + expected_cls_name = "MyHistoricalCustomNameModel" |
| 732 | + self.verify_custom_model_name_feature( |
| 733 | + OverrideModelNameAsString(), |
| 734 | + expected_cls_name, |
| 735 | + "tests_{}".format(expected_cls_name.lower()), |
722 | 736 | )
|
723 |
| - self.assertEqual( |
724 |
| - historical_model._meta.db_table, "tests_myhistoricalcustomnamemodel" |
| 737 | + |
| 738 | + def test_register_history_model_with_custom_model_name_override(self): |
| 739 | + try: |
| 740 | + from ..models import OverrideModelNameRegisterMethod1 |
| 741 | + except ImportError: |
| 742 | + self.fail("OverrideModelNameRegisterMethod1 is in wrong module") |
| 743 | + |
| 744 | + cls = OverrideModelNameRegisterMethod1() |
| 745 | + expected_cls_name = "MyOverrideModelNameRegisterMethod1" |
| 746 | + self.verify_custom_model_name_feature( |
| 747 | + cls, expected_cls_name, "tests_{}".format(expected_cls_name.lower()) |
| 748 | + ) |
| 749 | + |
| 750 | + from simple_history import register |
| 751 | + from ..models import OverrideModelNameRegisterMethod2 |
| 752 | + |
| 753 | + try: |
| 754 | + register( |
| 755 | + OverrideModelNameRegisterMethod2, |
| 756 | + custom_model_name=lambda x: "{}".format(x), |
| 757 | + ) |
| 758 | + except ValueError: |
| 759 | + self.assertRaises(ValueError) |
| 760 | + |
| 761 | + def test_register_history_model_with_custom_model_name_from_abstract_model(self): |
| 762 | + cls = OverrideModelNameUsingBaseModel1 |
| 763 | + expected_cls_name = "Audit{}".format(cls.__name__) |
| 764 | + self.verify_custom_model_name_feature( |
| 765 | + cls, expected_cls_name, "tests_" + expected_cls_name.lower() |
| 766 | + ) |
| 767 | + |
| 768 | + def test_register_history_model_with_custom_model_name_from_external_model(self): |
| 769 | + from ..models import OverrideModelNameUsingExternalModel1 |
| 770 | + |
| 771 | + cls = OverrideModelNameUsingExternalModel1 |
| 772 | + expected_cls_name = "Audit{}".format(cls.__name__) |
| 773 | + self.verify_custom_model_name_feature( |
| 774 | + cls, expected_cls_name, "tests_" + expected_cls_name.lower() |
| 775 | + ) |
| 776 | + |
| 777 | + from ..models import OverrideModelNameUsingExternalModel2 |
| 778 | + |
| 779 | + cls = OverrideModelNameUsingExternalModel2 |
| 780 | + expected_cls_name = "Audit{}".format(cls.__name__) |
| 781 | + self.verify_custom_model_name_feature( |
| 782 | + cls, expected_cls_name, "external_" + expected_cls_name.lower() |
725 | 783 | )
|
726 | 784 |
|
727 | 785 |
|
|
0 commit comments