I'm working with cucumber js and I want to fill out some fields in an application, so i'm using a for-in to get the data from the rowHash but i'm getting the error message "The body of a for-in should be wrapped in an if statement to filter unwanted properties from the prototype guard-for-in" i'm not sure how I should code my for-in with the if inside the for.
this is my code:
this.fillRequiredfields = function(dataTable){
var rows = dataTable.rowsHash();
for (var row in rows) {
var val = rows[row];
if (row === 'firstname') {
element(by.name('firstName')).sendKeys(val).isPresent();
}
if (row === 'lastname') {
element(by.name('lastName')).sendKeys(val).isPresent();
}
if (row === 'emailaddress') {
element(by.name('emailAddress')).sendKeys(val).isPresent();
}
if (row === 'displayname') {
element(by.name('displayName')).sendKeys(val).isPresent();
}
if (row === 'password') {
element(by.name('newPassword')).sendKeys(val).isPresent();
}
}
};
So when I try to do the commit in git i'm getting the "guard-for-in" from eslint. If somebody can explain me how I should do the if in the for-in that could be good.
Hope you can help me.
I already solve this, in my case the solution was:
instead of
var val = rows[row];
I add the if with the hasOwnProperty(), like this:
if (rows.hasOwnProperty(row))
So the code is like this:
for (var row in rows) {
if (rows.hasOwnProperty(row)){
if (row === 'firstname') {
element(by.name('firstName')).sendKeys(rows[row]).isPresent();
}
if (row === 'lastname') {
element(by.name('lastName')).sendKeys(rows[row]).isPresent();
}
if (row === 'emailaddress') {
element(by.name('emailAddress')).sendKeys(rows[row]).isPresent();
}
if (row === 'displayname') {
element(by.name('displayName')).sendKeys(rows[row]).isPresent();
}
if (row === 'password') {
element(by.name('newPassword')).sendKeys(rows[row]).isPresent();
}
}
}
Hope can help to somebody else.