I wanted to check from the response format if status=AVAILABLE then arrayElement should return with roomTypeId else roomTypeId should not return for other status.

[
    {
        "status": "SOLDOUT",
        "propertyId": "dc00e77f",
        "Fee": 0,
        "isComp": false
    },
    {
        "roomTypeId": "c5730b9e",
        "status": "AVAILABLE",
        "propertyId": "dc00e77f",
        "price": {
            "baseAveragePrice": 104.71,
            "discountedAveragePrice": 86.33
        },
        "Fee": 37,
        "isComp": false
    },
    
]

[ { "status": "SOLDOUT", "propertyId": "773000cc-468a-4d86-a38f-7ae78ecfa6aa", "resortFee": 0, "isComp": false }, { "roomTypeId": "c5730b9e-78d1-4c1c-a429-06ae279e6d4d", "status": "AVAILABLE", "propertyId": "dc00e77f-d6bb-4dd7-a8ea-dc33ee9675ad", "price": { "baseAveragePrice": 104.71, "discountedAveragePrice": 86.33 }, "resortFee": 37, "isComp": false },

]

I tried to check this from below;

pm.test("Verify if Status is SOLDOUT, roomTypeId and price information is not returned ", () => {
    var jsonData = pm.response.json();
    jsonData.forEach(function(arrayElement) {
      if (arrayElement.status == "SOLDOUT") 
              { 
                 pm.expect(arrayElement).to.not.include("roomTypeId");
              }
              else if (arrayElement.status == "AVAILABLE") 
              { 
                 pm.expect(arrayElement).to.include("roomTypeId");
              }
          });
});

1 Answers

3
Sivcan Singh On

You need to check if the property exists or not.

With the have.property syntax you can do that.

You can read the Postman API reference docs and also Postman uses a fork of chai internally, so ChaiJS docs should also help you.

Updated script:

pm.test("Verify if Status is SOLDOUT, roomTypeId and price information is not returned ", () => {
    var jsonData = pm.response.json();
    jsonData.forEach(function(arrayElement) {
        if (arrayElement.status === "SOLDOUT") {
            pm.expect(arrayElement).to.not.have.property("roomTypeId");
        } else if (arrayElement.status === "AVAILABLE") {
            pm.expect(arrayElement).to.have.property("roomTypeId");
        }
    });
});