@@ -15,6 +15,7 @@ import {
1515 consumesOptionsFor ,
1616 taggedOperations ,
1717 isMediaTypeSchemaPropertiesEqual ,
18+ getOAS3RequiredRequestBodyContentType ,
1819 validationErrors
1920} from "core/plugins/spec/selectors"
2021
@@ -1239,6 +1240,83 @@ describe("taggedOperations", function () {
12391240 expect ( result . toJS ( ) ) . toEqual ( [ ] )
12401241 } )
12411242} )
1243+ describe ( "getOAS3RequiredRequestBodyContentType" , ( ) => {
1244+ const pathMethod = [ "/test" , "post" ]
1245+
1246+ it ( "should return default requiredObj when requestBody is missing" , ( ) => {
1247+ const state = fromJS ( {
1248+ resolvedSubtrees : {
1249+ paths : {
1250+ "/test" : {
1251+ post : { }
1252+ }
1253+ }
1254+ }
1255+ } )
1256+
1257+ const result = getOAS3RequiredRequestBodyContentType ( state , pathMethod )
1258+
1259+ expect ( result ) . toEqual ( {
1260+ requestBody : false ,
1261+ requestContentType : { }
1262+ } )
1263+ } )
1264+
1265+ it ( "should not crash and return requiredObj when requestBody has no content" , ( ) => {
1266+ const state = fromJS ( {
1267+ resolvedSubtrees : {
1268+ paths : {
1269+ "/test" : {
1270+ post : {
1271+ requestBody : {
1272+ required : true
1273+ }
1274+ }
1275+ }
1276+ }
1277+ }
1278+ } )
1279+
1280+ const result = getOAS3RequiredRequestBodyContentType ( state , pathMethod )
1281+
1282+ expect ( result ) . toEqual ( {
1283+ requestBody : true ,
1284+ requestContentType : { }
1285+ } )
1286+ } )
1287+
1288+ it ( "should collect required schema fields per content type when content is present" , ( ) => {
1289+ const state = fromJS ( {
1290+ resolvedSubtrees : {
1291+ paths : {
1292+ "/test" : {
1293+ post : {
1294+ requestBody : {
1295+ required : true ,
1296+ content : {
1297+ "application/json" : {
1298+ schema : {
1299+ required : [ "name" , "email" ]
1300+ }
1301+ }
1302+ }
1303+ }
1304+ }
1305+ }
1306+ }
1307+ }
1308+ } )
1309+
1310+ const result = getOAS3RequiredRequestBodyContentType ( state , pathMethod )
1311+
1312+ expect ( result ) . toEqual ( {
1313+ requestBody : true ,
1314+ requestContentType : {
1315+ "application/json" : [ "name" , "email" ]
1316+ }
1317+ } )
1318+ } )
1319+ } )
12421320describe ( "isMediaTypeSchemaPropertiesEqual" , ( ) => {
12431321 const stateSingleMediaType = fromJS ( {
12441322 resolvedSubtrees : {
0 commit comments