@@ -1106,6 +1106,69 @@ def test_update_segment_delete_existing_rule(project, client, segment, segment_r
11061106 assert segment_rule .conditions .count () == 0
11071107
11081108
1109+ @pytest .mark .parametrize (
1110+ "client" ,
1111+ [lazy_fixture ("admin_master_api_key_client" ), lazy_fixture ("admin_client" )],
1112+ )
1113+ def test_update_segment_metadata_create_correct_number_of_metadata (
1114+ project : Project ,
1115+ client : APIClient ,
1116+ required_a_segment_metadata_field : MetadataModelField ,
1117+ ) -> None :
1118+ # Given
1119+ url = reverse ("api-v1:projects:project-segments-list" , args = [project .id ])
1120+ description = "This is the description"
1121+ field_value = 10
1122+ first_segment_data = {
1123+ "name" : "Test Segment" ,
1124+ "description" : description ,
1125+ "project" : project .id ,
1126+ "rules" : [{"type" : "ALL" , "rules" : [], "conditions" : []}],
1127+ "metadata" : [
1128+ {
1129+ "model_field" : required_a_segment_metadata_field .id ,
1130+ "field_value" : field_value ,
1131+ },
1132+ ],
1133+ }
1134+ second_segment_data = {
1135+ "name" : "Test Segment" ,
1136+ "description" : description ,
1137+ "project" : project .id ,
1138+ "rules" : [{"type" : "ALL" , "rules" : [], "conditions" : []}],
1139+ "metadata" : [
1140+ {
1141+ "model_field" : required_a_segment_metadata_field .id ,
1142+ "field_value" : field_value ,
1143+ },
1144+ ],
1145+ }
1146+
1147+ # When
1148+ response_first = client .post (
1149+ url , data = json .dumps (first_segment_data ), content_type = "application/json"
1150+ )
1151+ response_second = client .post (
1152+ url , data = json .dumps (second_segment_data ), content_type = "application/json"
1153+ )
1154+ # Then
1155+ assert response_first .status_code == status .HTTP_201_CREATED
1156+ assert response_second .status_code == status .HTTP_201_CREATED
1157+ assert (
1158+ response_first .json ()["metadata" ][0 ]["model_field" ]
1159+ == required_a_segment_metadata_field .id
1160+ )
1161+ assert (
1162+ response_second .json ()["metadata" ][0 ]["model_field" ]
1163+ == required_a_segment_metadata_field .id
1164+ )
1165+
1166+ metadata = Metadata .objects .filter (
1167+ model_field = required_a_segment_metadata_field .id
1168+ ).all ()
1169+ assert metadata .count () == 2
1170+
1171+
11091172@pytest .mark .parametrize (
11101173 "client" ,
11111174 [lazy_fixture ("admin_master_api_key_client" ), lazy_fixture ("admin_client" )],
0 commit comments