[
{
"fixtureId": "1",
"fixtureStatus": {
"displayed": false,
"suspended": true
},
"footballFullState": {
"homeTeam": "Dagenham & Redbridge",
"awayTeam": "Österreich",
"finished": false,
"gameTimeInSeconds": 2656,
"goals": [
{
"clockTime": 640,
"confirmed": true,
"id": 678606,
"ownGoal": false,
"penalty": false,
"period": "FIRST_HALF",
"playerId": 560617,
"teamId": "1"
},
{
"clockTime": 864,
"confirmed": true,
"id": 164002,
"ownGoal": false,
"penalty": false,
"period": "FIRST_HALF",
"playerId": 60817,
"teamId": "2"
},
{
"clockTime": 1312,
"confirmed": true,
"id": 267245,
"ownGoal": false,
"penalty": false,
"period": "FIRST_HALF",
"playerId": 136629,
"teamId": "1"
},
{
"clockTime": 1760,
"confirmed": true,
"id": 758030,
"ownGoal": false,
"penalty": false,
"period": "FIRST_HALF",
"playerId": 131840,
"teamId": "2"
}
],
"period": "SECOND_HALF",
"possibles": [],
"corners": [],
"redCards": [],
"yellowCards": [],
"startDateTime": "2018-03-20T10:49:38.655Z",
"started": true,
"teams": [
{
"association": "HOME",
"name": "Dagenham-&-Redbridge",
"teamId": "HOME"
},
{
"association": "AWAY",
"name": "Österreich",
"teamId": "AWAY"
}
]
}
},
{
"fixtureId": "2",
"fixtureStatus": {
"displayed": true,
"suspended": false
},
"footballFullState": {
"homeTeam": "Manchester United",
"awayTeam": "Leeds United",
"finished": false,
"gameTimeInSeconds": 900,
"goals": [
{
"clockTime": 640,
"confirmed": true,
"id": 678606,
"ownGoal": false,
"penalty": false,
"period": "FIRST_HALF",
"playerId": 560617,
"teamId": "1"
},
{
"clockTime": 864,
"confirmed": true,
"id": 164002,
"ownGoal": false,
"penalty": false,
"period": "FIRST_HALF",
"playerId": 60817,
"teamId": "2"
}
],
"period": "FIRST_HALF",
"possibles": [],
"corners": [],
"redCards": [],
"yellowCards": [],
"startDateTime": "2018-03-20T10:49:38.655Z",
"started": true,
"teams": [
{
"association": "HOME",
"name": "Manchester-United",
"teamId": "HOME"
},
{
"association": "AWAY",
"name": "Leeds-United",
"teamId": "AWAY"
}
]
}
},
{
"fixtureId": "3",
"fixtureStatus": {
"displayed": false,
"suspended": true
},
"footballFullState": {
"homeTeam": "Garforth FC",
"awayTeam": "York FC",
"finished": false,
"gameTimeInSeconds": 950,
"goals": [
{
"clockTime": 640,
"confirmed": true,
"id": 678606,
"ownGoal": false,
"penalty": false,
"period": "FIRST_HALF",
"playerId": 560617,
"teamId": "1"
}
],
"period": "FIRST_HALF",
"possibles": [],
"corners": [],
"redCards": [],
"yellowCards": [],
"startDateTime": "2018-03-20T10:49:38.655Z",
"started": true,
"teams": [
{
"association": "HOME",
"name": "Garforth-FC",
"teamId": "HOME"
},
{
"association": "AWAY",
"name": "York-FC",
"teamId": "AWAY"
}
]
}
},
]
Hey @seyous,
It looks like that’s an array of 3 objects, I’m guessing that’s the 3 fixtures you want to test for?
Something simple like this could do that:
pm.test("Should be 3 fixtures", () => {
pm.expect(pm.response.json().length).to.eql(3)
})
More information about working with JSON responses can be found here:
Thanks @dannydaiton you are a genius.
How can I Assert that each of the 3 fixtures has a fixtureId value?
I would suggest taking a look through the link I posted and trying to figure that out.
If I, or others on here just give you a single answers each time, there isn’t any real learning on.
If you give it a go and you end up getting stuck, post your code on here and I will be happy to take a look and give you some pointers.
I tried something like this:
json_response = JSON.parse(responseBody)
x = json_response.fixtureId
pm.expect(x).to.equal(1)
I get this error:
AssertionError: expected undefined to equal 1
Awesome - So at least you gave it a go, which is
You were on the right track for checking the first fixtureId
value, just needed a slight change:
pm.test("Check the fixtureId value", () => {
// You needed to add the [0] at the end to get the first object
let json_response = JSON.parse(responseBody)[0]
let x = json_response.fixtureId
// The value is a string and not an integer so you needed to wrap the number in quotes
pm.expect(x).to.equal("1")
})
To answer your question:
How can I Assert that each of the 3 fixtures has a fixtureId value?
As the objects (**{..}**)
are wrapped in an array(**[]**)
you would need to loop through them, I’m using the lodash .each()
function but you could use the native JS .forEach()
function to do the same thing. It’s setting each of the objects as arrItem
so that you can then access each of the properties within the object.
To do the check to see if that key
is in each of the objects
, I’m using .to.have.own.property('key_name')
from the Chaijs in the pm.expect()
function and to check if the value is a string
, I’m using .to.be.a('string')
.
pm.test("The fixtureId property is in the object and is a string", () => {
_.each(pm.response.json(), (arrItem) => {
// The property is in the object
pm.expect(arrItem).to.have.own.property('fixtureId')
// The value is a string
pm.expect(arrItem.fixtureId).to.be.a('string')
// If you wanted to do some additional checks
pm.expect(arrItem.fixtureId).to.not.be.null
pm.expect(arrItem.fixtureId).to.not.be.undefined
pm.expect(arrItem.fixtureId).to.not.be.empty
})
})
Hope that helps you out
You are great Man.