|
1 | 1 | import pickle |
| 2 | +from abc import abstractmethod |
2 | 3 | from datetime import timedelta |
| 4 | +from typing import Any, Dict |
3 | 5 |
|
4 | 6 | import pytest |
| 7 | +from typing_extensions import override |
5 | 8 |
|
6 | 9 | from dbt.artifacts.resources import ( |
7 | 10 | ExposureType, |
@@ -883,9 +886,62 @@ def test_bad_tags(self): |
883 | 886 | self.assert_fails_validation(tst) |
884 | 887 |
|
885 | 888 |
|
886 | | -class TestUnparsedMetric(ContractTestCase): |
| 889 | +class BaseTestUnparsedMetric: |
| 890 | + |
| 891 | + @abstractmethod |
| 892 | + def get_ok_dict(self) -> Dict[str, Any]: |
| 893 | + raise NotImplementedError() |
| 894 | + |
| 895 | + def test_bad_metric_no_type_params(self): |
| 896 | + tst = self.get_ok_dict() |
| 897 | + del tst["type_params"] |
| 898 | + self.assert_fails_validation(tst) |
| 899 | + |
| 900 | + def test_bad_tags(self): |
| 901 | + tst = self.get_ok_dict() |
| 902 | + tst["tags"] = [123] |
| 903 | + self.assert_fails_validation(tst) |
| 904 | + |
| 905 | + def test_bad_metric_name_with_spaces(self): |
| 906 | + tst = self.get_ok_dict() |
| 907 | + tst["name"] = "metric name with spaces" |
| 908 | + self.assert_fails_validation(tst) |
| 909 | + |
| 910 | + def test_bad_metric_name_too_long(self): |
| 911 | + tst = self.get_ok_dict() |
| 912 | + tst["name"] = "a" * 251 |
| 913 | + self.assert_fails_validation(tst) |
| 914 | + |
| 915 | + def test_bad_metric_name_does_not_start_with_letter(self): |
| 916 | + tst = self.get_ok_dict() |
| 917 | + tst["name"] = "123metric" |
| 918 | + self.assert_fails_validation(tst) |
| 919 | + |
| 920 | + tst["name"] = "_metric" |
| 921 | + self.assert_fails_validation(tst) |
| 922 | + |
| 923 | + def test_bad_metric_name_contains_special_characters(self): |
| 924 | + tst = self.get_ok_dict() |
| 925 | + tst["name"] = "metric!name" |
| 926 | + self.assert_fails_validation(tst) |
| 927 | + |
| 928 | + tst["name"] = "metric@name" |
| 929 | + self.assert_fails_validation(tst) |
| 930 | + |
| 931 | + tst["name"] = "metric#name" |
| 932 | + self.assert_fails_validation(tst) |
| 933 | + |
| 934 | + tst["name"] = "metric$name" |
| 935 | + self.assert_fails_validation(tst) |
| 936 | + |
| 937 | + tst["name"] = "metric-name" |
| 938 | + self.assert_fails_validation(tst) |
| 939 | + |
| 940 | + |
| 941 | +class TestUnparsedMetric(BaseTestUnparsedMetric, ContractTestCase): |
887 | 942 | ContractType = UnparsedMetric |
888 | 943 |
|
| 944 | + @override |
889 | 945 | def get_ok_dict(self): |
890 | 946 | return { |
891 | 947 | "name": "new_customers", |
@@ -923,50 +979,50 @@ def test_ok(self): |
923 | 979 | self.assert_symmetric(metric, dct) |
924 | 980 | pickle.loads(pickle.dumps(metric)) |
925 | 981 |
|
926 | | - def test_bad_metric_no_type_params(self): |
927 | | - tst = self.get_ok_dict() |
928 | | - del tst["type_params"] |
929 | | - self.assert_fails_validation(tst) |
| 982 | + # def test_bad_metric_no_type_params(self): |
| 983 | + # tst = self.get_ok_dict() |
| 984 | + # del tst["type_params"] |
| 985 | + # self.assert_fails_validation(tst) |
930 | 986 |
|
931 | | - def test_bad_tags(self): |
932 | | - tst = self.get_ok_dict() |
933 | | - tst["tags"] = [123] |
934 | | - self.assert_fails_validation(tst) |
| 987 | + # def test_bad_tags(self): |
| 988 | + # tst = self.get_ok_dict() |
| 989 | + # tst["tags"] = [123] |
| 990 | + # self.assert_fails_validation(tst) |
935 | 991 |
|
936 | | - def test_bad_metric_name_with_spaces(self): |
937 | | - tst = self.get_ok_dict() |
938 | | - tst["name"] = "metric name with spaces" |
939 | | - self.assert_fails_validation(tst) |
| 992 | + # def test_bad_metric_name_with_spaces(self): |
| 993 | + # tst = self.get_ok_dict() |
| 994 | + # tst["name"] = "metric name with spaces" |
| 995 | + # self.assert_fails_validation(tst) |
940 | 996 |
|
941 | | - def test_bad_metric_name_too_long(self): |
942 | | - tst = self.get_ok_dict() |
943 | | - tst["name"] = "a" * 251 |
944 | | - self.assert_fails_validation(tst) |
| 997 | + # def test_bad_metric_name_too_long(self): |
| 998 | + # tst = self.get_ok_dict() |
| 999 | + # tst["name"] = "a" * 251 |
| 1000 | + # self.assert_fails_validation(tst) |
945 | 1001 |
|
946 | | - def test_bad_metric_name_does_not_start_with_letter(self): |
947 | | - tst = self.get_ok_dict() |
948 | | - tst["name"] = "123metric" |
949 | | - self.assert_fails_validation(tst) |
| 1002 | + # def test_bad_metric_name_does_not_start_with_letter(self): |
| 1003 | + # tst = self.get_ok_dict() |
| 1004 | + # tst["name"] = "123metric" |
| 1005 | + # self.assert_fails_validation(tst) |
950 | 1006 |
|
951 | | - tst["name"] = "_metric" |
952 | | - self.assert_fails_validation(tst) |
| 1007 | + # tst["name"] = "_metric" |
| 1008 | + # self.assert_fails_validation(tst) |
953 | 1009 |
|
954 | | - def test_bad_metric_name_contains_special_characters(self): |
955 | | - tst = self.get_ok_dict() |
956 | | - tst["name"] = "metric!name" |
957 | | - self.assert_fails_validation(tst) |
| 1010 | + # def test_bad_metric_name_contains_special_characters(self): |
| 1011 | + # tst = self.get_ok_dict() |
| 1012 | + # tst["name"] = "metric!name" |
| 1013 | + # self.assert_fails_validation(tst) |
958 | 1014 |
|
959 | | - tst["name"] = "metric@name" |
960 | | - self.assert_fails_validation(tst) |
| 1015 | + # tst["name"] = "metric@name" |
| 1016 | + # self.assert_fails_validation(tst) |
961 | 1017 |
|
962 | | - tst["name"] = "metric#name" |
963 | | - self.assert_fails_validation(tst) |
| 1018 | + # tst["name"] = "metric#name" |
| 1019 | + # self.assert_fails_validation(tst) |
964 | 1020 |
|
965 | | - tst["name"] = "metric$name" |
966 | | - self.assert_fails_validation(tst) |
| 1021 | + # tst["name"] = "metric$name" |
| 1022 | + # self.assert_fails_validation(tst) |
967 | 1023 |
|
968 | | - tst["name"] = "metric-name" |
969 | | - self.assert_fails_validation(tst) |
| 1024 | + # tst["name"] = "metric-name" |
| 1025 | + # self.assert_fails_validation(tst) |
970 | 1026 |
|
971 | 1027 |
|
972 | 1028 | class TestUnparsedVersion(ContractTestCase): |
|
0 commit comments