alecxe/eslint-plugin-protractor

View on GitHub
lib/rules/no-array-finder-methods.js

Summary

Maintainability
A
25 mins
Test Coverage
'use strict'

/**
 * @fileoverview Disallow using `ElementArrayFinder` methods on `ElementFinder`
 * @author Alexander Afanasyev
 */

var isElementFinder = require('../is-element-finder')
var elementArrayFinderMethods = [
  'first',
  'last',
  'get',
  'filter',
  'map',
  'each',
  'reduce',
  'count'
]

module.exports = {
  meta: {
    schema: []
  },

  create: function (context) {
    return {
      MemberExpression: function (node) {
        var property = node.property

        if (property && elementArrayFinderMethods.indexOf(property.name) > -1) {
          if (isElementFinder(node.object)) {
            context.report({
              node: node,
              message: 'Unexpected "' + property.name + '()" call on ElementFinder'
            })
          }
        }
      }
    }
  }
}