@@ -62,134 +62,6 @@ async def test_create_simple_object_with_ok_return(db: InfrahubDatabase, default
6262 assert result .data ["TestPersonCreate" ]["ok" ] is True
6363
6464
65- @pytest .mark .parametrize (
66- "graphql_enums_on,enum_value,response_value" , [(True , "MANUAL" , "MANUAL" ), (False , '"manual"' , "manual" )]
67- )
68- async def test_create_simple_object_with_enum (
69- db : InfrahubDatabase ,
70- default_branch ,
71- person_john_main ,
72- car_person_schema ,
73- graphql_enums_on ,
74- enum_value ,
75- response_value ,
76- ):
77- config .SETTINGS .experimental_features .graphql_enums = graphql_enums_on
78- query = """
79- mutation {
80- TestCarCreate(data: {
81- name: { value: "JetTricycle"},
82- nbr_seats: { value: 1 },
83- is_electric: { value: false },
84- transmission: { value: %s },
85- owner: { id: "John" }
86- }) {
87- ok
88- object {
89- id
90- transmission {
91- value
92- }
93- }
94- }
95- }
96- """ % (enum_value )
97- gql_params = prepare_graphql_params (db = db , include_subscription = False , branch = default_branch )
98- result = await graphql (
99- schema = gql_params .schema ,
100- source = query ,
101- context_value = gql_params .context ,
102- root_value = None ,
103- variable_values = {},
104- )
105-
106- assert result .errors is None
107- assert result .data ["TestCarCreate" ]["ok" ] is True
108- assert result .data ["TestCarCreate" ]["object" ]["transmission" ]["value" ] == response_value
109-
110- car_id = result .data ["TestCarCreate" ]["object" ]["id" ]
111- database_car = await NodeManager .get_one (db = db , id = car_id )
112- assert database_car .transmission .value .value == "manual"
113-
114-
115- async def test_create_enum_when_enums_off_fails (
116- db : InfrahubDatabase ,
117- default_branch ,
118- person_john_main ,
119- car_person_schema ,
120- ):
121- config .SETTINGS .experimental_features .graphql_enums = False
122- query = """
123- mutation {
124- TestCarCreate(data: {
125- name: { value: "JetTricycle"},
126- nbr_seats: { value: 1 },
127- is_electric: { value: false },
128- transmission: { value: MANUAL },
129- owner: { id: "John" }
130- }) {
131- ok
132- object {
133- id
134- transmission {
135- value
136- }
137- }
138- }
139- }
140- """
141- gql_params = prepare_graphql_params (db = db , include_subscription = False , branch = default_branch )
142- result = await graphql (
143- schema = gql_params .schema ,
144- source = query ,
145- context_value = gql_params .context ,
146- root_value = None ,
147- variable_values = {},
148- )
149-
150- assert len (result .errors ) == 1
151- assert "String cannot represent a non string value" in result .errors [0 ].message
152-
153-
154- async def test_create_string_when_enums_on_fails (
155- db : InfrahubDatabase ,
156- default_branch ,
157- person_john_main ,
158- car_person_schema ,
159- ):
160- config .SETTINGS .experimental_features .graphql_enums = True
161- query = """
162- mutation {
163- TestCarCreate(data: {
164- name: { value: "JetTricycle"},
165- nbr_seats: { value: 1 },
166- is_electric: { value: false },
167- transmission: { value: "manual" },
168- owner: { id: "John" }
169- }) {
170- ok
171- object {
172- id
173- transmission {
174- value
175- }
176- }
177- }
178- }
179- """
180- gql_params = prepare_graphql_params (db = db , include_subscription = False , branch = default_branch )
181- result = await graphql (
182- schema = gql_params .schema ,
183- source = query ,
184- context_value = gql_params .context ,
185- root_value = None ,
186- variable_values = {},
187- )
188-
189- assert len (result .errors ) == 1
190- assert "'TestCarTransmissionValue' cannot represent non-enum value" in result .errors [0 ].message
191-
192-
19365async def test_create_with_id (db : InfrahubDatabase , default_branch , car_person_schema ):
19466 uuid1 = "79c83773-6b23-4537-a3ce-b214b625ff1d"
19567 query = (
@@ -1141,3 +1013,134 @@ async def test_create_valid_datetime_failure(db: InfrahubDatabase, default_branc
11411013 )
11421014 assert result .errors [0 ].args [0 ] == "10:1010 is not a valid DateTime at time"
11431015 assert result .data ["TestCriticalityCreate" ] is None
1016+
1017+
1018+ # These tests have been moved at the end of the file to avoid colliding with other and breaking them
1019+
1020+
1021+ @pytest .mark .parametrize (
1022+ "graphql_enums_on,enum_value,response_value" , [(True , "MANUAL" , "MANUAL" ), (False , '"manual"' , "manual" )]
1023+ )
1024+ async def test_create_simple_object_with_enum (
1025+ db : InfrahubDatabase ,
1026+ default_branch ,
1027+ person_john_main ,
1028+ car_person_schema ,
1029+ graphql_enums_on ,
1030+ enum_value ,
1031+ response_value ,
1032+ ):
1033+ config .SETTINGS .experimental_features .graphql_enums = graphql_enums_on
1034+ query = """
1035+ mutation {
1036+ TestCarCreate(data: {
1037+ name: { value: "JetTricycle"},
1038+ nbr_seats: { value: 1 },
1039+ is_electric: { value: false },
1040+ transmission: { value: %s },
1041+ owner: { id: "John" }
1042+ }) {
1043+ ok
1044+ object {
1045+ id
1046+ transmission {
1047+ value
1048+ }
1049+ }
1050+ }
1051+ }
1052+ """ % (enum_value )
1053+ gql_params = prepare_graphql_params (db = db , include_subscription = False , branch = default_branch )
1054+ result = await graphql (
1055+ schema = gql_params .schema ,
1056+ source = query ,
1057+ context_value = gql_params .context ,
1058+ root_value = None ,
1059+ variable_values = {},
1060+ )
1061+
1062+ assert result .errors is None
1063+ assert result .data ["TestCarCreate" ]["ok" ] is True
1064+ assert result .data ["TestCarCreate" ]["object" ]["transmission" ]["value" ] == response_value
1065+
1066+ car_id = result .data ["TestCarCreate" ]["object" ]["id" ]
1067+ database_car = await NodeManager .get_one (db = db , id = car_id )
1068+ assert database_car .transmission .value .value == "manual"
1069+
1070+
1071+ async def test_create_enum_when_enums_off_fails (
1072+ db : InfrahubDatabase ,
1073+ default_branch ,
1074+ person_john_main ,
1075+ car_person_schema ,
1076+ ):
1077+ config .SETTINGS .experimental_features .graphql_enums = False
1078+ query = """
1079+ mutation {
1080+ TestCarCreate(data: {
1081+ name: { value: "JetTricycle"},
1082+ nbr_seats: { value: 1 },
1083+ is_electric: { value: false },
1084+ transmission: { value: MANUAL },
1085+ owner: { id: "John" }
1086+ }) {
1087+ ok
1088+ object {
1089+ id
1090+ transmission {
1091+ value
1092+ }
1093+ }
1094+ }
1095+ }
1096+ """
1097+ gql_params = prepare_graphql_params (db = db , include_subscription = False , branch = default_branch )
1098+ result = await graphql (
1099+ schema = gql_params .schema ,
1100+ source = query ,
1101+ context_value = gql_params .context ,
1102+ root_value = None ,
1103+ variable_values = {},
1104+ )
1105+
1106+ assert len (result .errors ) == 1
1107+ assert "String cannot represent a non string value" in result .errors [0 ].message
1108+
1109+
1110+ async def test_create_string_when_enums_on_fails (
1111+ db : InfrahubDatabase ,
1112+ default_branch ,
1113+ person_john_main ,
1114+ car_person_schema ,
1115+ ):
1116+ config .SETTINGS .experimental_features .graphql_enums = True
1117+ query = """
1118+ mutation {
1119+ TestCarCreate(data: {
1120+ name: { value: "JetTricycle"},
1121+ nbr_seats: { value: 1 },
1122+ is_electric: { value: false },
1123+ transmission: { value: "manual" },
1124+ owner: { id: "John" }
1125+ }) {
1126+ ok
1127+ object {
1128+ id
1129+ transmission {
1130+ value
1131+ }
1132+ }
1133+ }
1134+ }
1135+ """
1136+ gql_params = prepare_graphql_params (db = db , include_subscription = False , branch = default_branch )
1137+ result = await graphql (
1138+ schema = gql_params .schema ,
1139+ source = query ,
1140+ context_value = gql_params .context ,
1141+ root_value = None ,
1142+ variable_values = {},
1143+ )
1144+
1145+ assert len (result .errors ) == 1
1146+ assert "'TestCarTransmissionValue' cannot represent non-enum value" in result .errors [0 ].message
0 commit comments