mediawiki/extensions/MediaSearch: main (log #965956)

sourcepatches

This run took 86 seconds.

$ date
--- stdout ---
Wed Mar 22 20:23:58 UTC 2023

--- end ---
$ git clone file:///srv/git/mediawiki-extensions-MediaSearch.git repo --depth=1 -b master
--- stderr ---
Cloning into 'repo'...
--- stdout ---

--- end ---
$ git config user.name libraryupgrader
--- stdout ---

--- end ---
$ git config user.email tools.libraryupgrader@tools.wmflabs.org
--- stdout ---

--- end ---
$ git submodule update --init
--- stdout ---

--- end ---
$ grr init
--- stdout ---
Installed commit-msg hook.

--- end ---
$ git show-ref refs/heads/master
--- stdout ---
24ce9d1b2106fa7f961b4b03d1b64980b9cd3e12 refs/heads/master

--- end ---
$ /usr/bin/npm audit --json --legacy-peer-deps
--- stdout ---
{
  "auditReportVersion": 2,
  "vulnerabilities": {
    "babel-core": {
      "name": "babel-core",
      "severity": "high",
      "isDirect": true,
      "via": [
        "babel-register",
        "json5"
      ],
      "effects": [
        "babel-register"
      ],
      "range": "5.8.20 - 7.0.0-beta.3",
      "nodes": [
        "node_modules/babel-core"
      ],
      "fixAvailable": {
        "name": "babel-core",
        "version": "4.7.16",
        "isSemVerMajor": true
      }
    },
    "babel-register": {
      "name": "babel-register",
      "severity": "high",
      "isDirect": false,
      "via": [
        "babel-core"
      ],
      "effects": [
        "babel-core"
      ],
      "range": "*",
      "nodes": [
        "node_modules/babel-register"
      ],
      "fixAvailable": {
        "name": "babel-core",
        "version": "4.7.16",
        "isSemVerMajor": true
      }
    },
    "decode-uri-component": {
      "name": "decode-uri-component",
      "severity": "low",
      "isDirect": false,
      "via": [
        {
          "source": 1088828,
          "name": "decode-uri-component",
          "dependency": "decode-uri-component",
          "title": "decode-uri-component vulnerable to Denial of Service (DoS)",
          "url": "https://github.com/advisories/GHSA-w573-4hg7-7wgq",
          "severity": "low",
          "cwe": [
            "CWE-20"
          ],
          "cvss": {
            "score": 0,
            "vectorString": null
          },
          "range": "<0.2.1"
        }
      ],
      "effects": [],
      "range": "<0.2.1",
      "nodes": [
        "node_modules/decode-uri-component"
      ],
      "fixAvailable": true
    },
    "grunt": {
      "name": "grunt",
      "severity": "high",
      "isDirect": true,
      "via": [
        {
          "source": 1088711,
          "name": "grunt",
          "dependency": "grunt",
          "title": "Path Traversal in Grunt",
          "url": "https://github.com/advisories/GHSA-j383-35pm-c5h4",
          "severity": "moderate",
          "cwe": [
            "CWE-22"
          ],
          "cvss": {
            "score": 5.5,
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N"
          },
          "range": "<1.5.2"
        },
        {
          "source": 1089539,
          "name": "grunt",
          "dependency": "grunt",
          "title": "Race Condition in Grunt",
          "url": "https://github.com/advisories/GHSA-rm36-94g8-835r",
          "severity": "high",
          "cwe": [
            "CWE-367"
          ],
          "cvss": {
            "score": 7,
            "vectorString": "CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H"
          },
          "range": "<1.5.3"
        }
      ],
      "effects": [],
      "range": "<=1.5.2",
      "nodes": [
        "node_modules/grunt"
      ],
      "fixAvailable": {
        "name": "grunt",
        "version": "1.6.1",
        "isSemVerMajor": false
      }
    },
    "json5": {
      "name": "json5",
      "severity": "high",
      "isDirect": false,
      "via": [
        {
          "source": 1091147,
          "name": "json5",
          "dependency": "json5",
          "title": "Prototype Pollution in JSON5 via Parse Method",
          "url": "https://github.com/advisories/GHSA-9c47-m6qq-7p4h",
          "severity": "high",
          "cwe": [
            "CWE-1321"
          ],
          "cvss": {
            "score": 7.1,
            "vectorString": "CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:L/A:H"
          },
          "range": "<1.0.2"
        },
        {
          "source": 1091148,
          "name": "json5",
          "dependency": "json5",
          "title": "Prototype Pollution in JSON5 via Parse Method",
          "url": "https://github.com/advisories/GHSA-9c47-m6qq-7p4h",
          "severity": "high",
          "cwe": [
            "CWE-1321"
          ],
          "cvss": {
            "score": 7.1,
            "vectorString": "CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:L/A:H"
          },
          "range": ">=2.0.0 <2.2.2"
        }
      ],
      "effects": [
        "babel-core"
      ],
      "range": "<1.0.2 || >=2.0.0 <2.2.2",
      "nodes": [
        "node_modules/babel-core/node_modules/json5",
        "node_modules/json5"
      ],
      "fixAvailable": {
        "name": "babel-core",
        "version": "4.7.16",
        "isSemVerMajor": true
      }
    }
  },
  "metadata": {
    "vulnerabilities": {
      "info": 0,
      "low": 1,
      "moderate": 0,
      "high": 4,
      "critical": 0,
      "total": 5
    },
    "dependencies": {
      "prod": 1,
      "dev": 971,
      "optional": 1,
      "peer": 0,
      "peerOptional": 0,
      "total": 971
    }
  }
}

--- end ---
$ /usr/bin/composer install
--- stderr ---
No lock file found. Updating dependencies instead of installing from lock file. Use composer update over composer install if you do not have a lock file.
Loading composer repositories with package information
Info from https://repo.packagist.org: #StandWithUkraine
Updating dependencies
Lock file operations: 36 installs, 0 updates, 0 removals
  - Locking composer/pcre (3.1.0)
  - Locking composer/semver (3.3.2)
  - Locking composer/spdx-licenses (1.5.7)
  - Locking composer/xdebug-handler (3.0.3)
  - Locking doctrine/deprecations (v1.0.0)
  - Locking felixfbecker/advanced-json-rpc (v3.2.1)
  - Locking mediawiki/mediawiki-codesniffer (v41.0.0)
  - Locking mediawiki/mediawiki-phan-config (0.12.0)
  - Locking mediawiki/minus-x (1.1.1)
  - Locking mediawiki/phan-taint-check-plugin (4.0.0)
  - Locking microsoft/tolerant-php-parser (v0.1.1)
  - Locking netresearch/jsonmapper (v4.1.0)
  - Locking phan/phan (5.4.1)
  - Locking php-parallel-lint/php-console-color (v1.0.1)
  - Locking php-parallel-lint/php-console-highlighter (v1.0.0)
  - Locking php-parallel-lint/php-parallel-lint (v1.3.2)
  - Locking phpdocumentor/reflection-common (2.2.0)
  - Locking phpdocumentor/reflection-docblock (5.3.0)
  - Locking phpdocumentor/type-resolver (1.7.0)
  - Locking phpstan/phpdoc-parser (1.16.1)
  - Locking psr/container (1.1.2)
  - Locking psr/log (1.1.4)
  - Locking sabre/event (5.1.4)
  - Locking squizlabs/php_codesniffer (3.7.2)
  - Locking symfony/console (v5.4.21)
  - Locking symfony/deprecation-contracts (v2.5.2)
  - Locking symfony/polyfill-ctype (v1.27.0)
  - Locking symfony/polyfill-intl-grapheme (v1.27.0)
  - Locking symfony/polyfill-intl-normalizer (v1.27.0)
  - Locking symfony/polyfill-mbstring (v1.27.0)
  - Locking symfony/polyfill-php73 (v1.27.0)
  - Locking symfony/polyfill-php80 (v1.27.0)
  - Locking symfony/service-contracts (v2.5.2)
  - Locking symfony/string (v5.4.21)
  - Locking tysonandre/var_representation_polyfill (0.1.3)
  - Locking webmozart/assert (1.11.0)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 36 installs, 0 updates, 0 removals
    0 [>---------------------------]    0 [->--------------------------]    0 [--->------------------------]  - Installing composer/pcre (3.1.0): Extracting archive
  - Installing symfony/polyfill-php80 (v1.27.0): Extracting archive
  - Installing squizlabs/php_codesniffer (3.7.2): Extracting archive
  - Installing symfony/polyfill-mbstring (v1.27.0): Extracting archive
  - Installing composer/spdx-licenses (1.5.7): Extracting archive
  - Installing composer/semver (3.3.2): Extracting archive
  - Installing mediawiki/mediawiki-codesniffer (v41.0.0): Extracting archive
  - Installing tysonandre/var_representation_polyfill (0.1.3): Extracting archive
  - Installing symfony/polyfill-intl-normalizer (v1.27.0): Extracting archive
  - Installing symfony/polyfill-intl-grapheme (v1.27.0): Extracting archive
  - Installing symfony/polyfill-ctype (v1.27.0): Extracting archive
  - Installing symfony/string (v5.4.21): Extracting archive
  - Installing symfony/deprecation-contracts (v2.5.2): Extracting archive
  - Installing psr/container (1.1.2): Extracting archive
  - Installing symfony/service-contracts (v2.5.2): Extracting archive
  - Installing symfony/polyfill-php73 (v1.27.0): Extracting archive
  - Installing symfony/console (v5.4.21): Extracting archive
  - Installing sabre/event (5.1.4): Extracting archive
  - Installing netresearch/jsonmapper (v4.1.0): Extracting archive
  - Installing microsoft/tolerant-php-parser (v0.1.1): Extracting archive
  - Installing webmozart/assert (1.11.0): Extracting archive
  - Installing phpstan/phpdoc-parser (1.16.1): Extracting archive
  - Installing phpdocumentor/reflection-common (2.2.0): Extracting archive
  - Installing doctrine/deprecations (v1.0.0): Extracting archive
  - Installing phpdocumentor/type-resolver (1.7.0): Extracting archive
  - Installing phpdocumentor/reflection-docblock (5.3.0): Extracting archive
  - Installing felixfbecker/advanced-json-rpc (v3.2.1): Extracting archive
  - Installing psr/log (1.1.4): Extracting archive
  - Installing composer/xdebug-handler (3.0.3): Extracting archive
  - Installing phan/phan (5.4.1): Extracting archive
  - Installing mediawiki/phan-taint-check-plugin (4.0.0): Extracting archive
  - Installing mediawiki/mediawiki-phan-config (0.12.0): Extracting archive
  - Installing mediawiki/minus-x (1.1.1): Extracting archive
  - Installing php-parallel-lint/php-console-color (v1.0.1): Extracting archive
  - Installing php-parallel-lint/php-console-highlighter (v1.0.0): Extracting archive
  - Installing php-parallel-lint/php-parallel-lint (v1.3.2): Extracting archive
  0/27 [>---------------------------]   0%
 10/27 [==========>-----------------]  37%
 20/27 [====================>-------]  74%
 27/27 [============================] 100%4 package suggestions were added by new dependencies, use `composer suggest` to see details.
Generating autoload files
14 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
--- stdout ---

--- end ---
Upgrading n:eslint-config-wikimedia from 0.22.1 -> 0.24.0
Upgrading n:grunt from 1.4.0 -> 1.6.1
Upgrading n:grunt-banana-checker from 0.9.0 -> 0.10.0
Upgrading n:vue from 3.2.23 -> 3.2.37
Upgrading n:@vue/compat from 3.2.23 -> 3.2.37
Upgrading n:@vue/compiler-sfc from 3.2.23 -> 3.2.37
$ /usr/bin/npm install
--- stderr ---
npm WARN deprecated source-map-url@0.4.1: See https://github.com/lydell/source-map-url#deprecated
npm WARN deprecated urix@0.1.0: Please see https://github.com/lydell/urix#deprecated
npm WARN deprecated resolve-url@0.2.1: https://github.com/lydell/resolve-url#deprecated
npm WARN deprecated source-map-resolve@0.5.3: See https://github.com/lydell/source-map-resolve#deprecated
npm WARN deprecated sourcemap-codec@1.4.8: Please use @jridgewell/sourcemap-codec instead
npm WARN deprecated core-js@2.6.12: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.
--- stdout ---

added 967 packages, and audited 968 packages in 9s

89 packages are looking for funding
  run `npm fund` for details

4 vulnerabilities (1 low, 3 high)

To address issues that do not require attention, run:
  npm audit fix

To address all issues (including breaking changes), run:
  npm audit fix --force

Run `npm audit` for details.

--- end ---
$ package-lock-lint package-lock.json
--- stdout ---
Checking package-lock.json

--- end ---
$ /usr/bin/npm install grunt-eslint@24.0.0 --save-exact
--- stdout ---

up to date, audited 968 packages in 2s

89 packages are looking for funding
  run `npm fund` for details

4 vulnerabilities (1 low, 3 high)

To address issues that do not require attention, run:
  npm audit fix

To address all issues (including breaking changes), run:
  npm audit fix --force

Run `npm audit` for details.

--- end ---
$ package-lock-lint package-lock.json
--- stdout ---
Checking package-lock.json

--- end ---
$ ./node_modules/.bin/eslint i18n/lb.json tests/jest/mocks/EventListener.js i18n/om.json composer.json tests/jest/store/mutations.test.js i18n/sr-el.json resources/components/NamespaceFilterDialog.vue tests/jest/components/base/image.test.js i18n/uk.json tests/jest/store/store.test.js resources/components/results/AudioResult.vue resources/components/base/mixins/observer.js resources/components/base/SelectMenu.vue resources/components/base/Button.vue resources/components/UserNotice.vue resources/store/actions.js i18n/es.json i18n/ro.json i18n/yue.json i18n/fa.json i18n/id.json resources/components/DidYouMean.vue resources/components/SearchFilters.vue i18n/cs.json i18n/mrh.json i18n/eo.json tests/jest/components/QuickView.test.js Gruntfile.js i18n/cy.json i18n/jv.json tests/jest/components/base/radio.test.js i18n/dag.json i18n/ko.json tests/jest/store/getters.test.js resources/components/base/Player.vue i18n/hil.json resources/components/results/OtherResult.vue i18n/ha.json i18n/ar.json i18n/ban.json resources/mixins/autocompleteLookupHandler.js i18n/bn.json i18n/tl.json resources/mixins/restoreHistoryHandler.js resources/components/base/CopyTextLayout.vue resources/components/base/AutocompleteSearchInput.vue resources/components/App.vue i18n/br.json resources/components/base/Checkbox.vue i18n/fr.json resources/components/base/Tabs.vue i18n/vi.json i18n/he.json i18n/be-tarask.json i18n/it.json resources/mixins/searchResultTimeBased.js resources/components/base/Observer.vue resources/components/base/Select.vue i18n/zh-hant.json i18n/se.json i18n/nn.json tests/jest/components/NoResults.test.js resources/components/base/Dialog.vue i18n/xmf.json i18n/zgh.json i18n/smn.json extension.json tests/jest/components/base/dialog.test.js resources/components/base/Tab.vue i18n/kk-cyrl.json tests/jest/components/results/ImageResult.test.js i18n/vec.json i18n/my.json tests/jest/components/EmptyState.test.js tests/jest/components/base/copyTextLayout.test.js i18n/de.json i18n/pt-br.json i18n/hi.json i18n/kcg.json resources/components/base/mixins/binaryInput.js i18n/ce.json tests/jest/components/NamespaceFilterDialog.test.js tests/jest/components/SearchFilters.test.js tests/jest/components/results/audioResult.test.js tests/jest/components/app.test.js i18n/roa-tara.json lib/icons.js i18n/ksw.json tests/jest/components/base/icon.test.js i18n/ja.json i18n/pt.json resources/components/base/Radio.vue tests/jest/components/DidYouMean.test.js resources/components/QuickView.vue i18n/el.json i18n/lmo.json i18n/bg.json i18n/bto.json tests/jest/mixins/observer.test.js i18n/gur.json i18n/blk.json i18n/sv.json i18n/sl.json resources/store/getters.js i18n/pnb.json resources/store/state.js resources/components/base/Icon.vue resources/components/results/VideoResult.vue resources/components/base/Image.vue resources/components/EndOfResults.vue i18n/qqq.json i18n/ba.json tests/jest/mocks/history.js i18n/pwn.json i18n/ia.json i18n/sr-ec.json tests/jest/components/base/selectMenu.test.js resources/components/Spinner.vue i18n/lij.json i18n/pl.json tests/jest/components/UserNotice.test.js tests/jest/mocks/ExecCommand.js i18n/ca.json i18n/skr-arab.json resources/mixins/searchResult.js tests/jest/components/base/autocompleteSearchInput.test.js i18n/tr.json i18n/te.json i18n/da.json i18n/yi.json tests/jest/components/base/player.test.js i18n/as.json i18n/ug-arab.json i18n/ru.json i18n/de-formal.json i18n/diq.json i18n/hsb.json tests/jest/components/Spinner.test.js resources/components/base/Message.vue i18n/th.json i18n/bpy.json i18n/hu.json tests/jest/mocks/Performance.js i18n/guw.json tests/jest/components/SearchResults.test.js i18n/io.json tests/jest/components/base/checkbox.test.js i18n/nb.json i18n/nqo.json i18n/ann.json i18n/scn.json resources/ensureArray.js resources/components/EmptyState.vue i18n/bs.json resources/constants.js i18n/mk.json i18n/hyw.json tests/jest/store/actions.test.js i18n/sms.json tests/jest/components/results/videoResult.test.js resources/store/index.js i18n/syl.json resources/store/mutations.js resources/plugins/eventLogger.js i18n/en.json resources/components/NoResults.vue i18n/lv.json tests/jest/mixins/autocompleteLookupHandler.test.js i18n/gld.json tests/jest/ignore/ensureArray.test.js tests/jest/mocks/IntersectionObserver.js i18n/ms.json i18n/en-gb.json i18n/nl.json i18n/et.json resources/components/SearchError.vue tests/jest/components/base/select.test.js i18n/zh-hans.json package.json tests/jest/components/EndOfResults.test.js i18n/ku-latn.json i18n/hr.json i18n/sw.json tests/jest/mixins/restoreHistoryHandler.test.js i18n/ti.json tests/jest/components/base/button.test.js tests/jest/components/base/message.test.js tests/jest/components/results/otherResult.test.js i18n/brh.json resources/init.js resources/components/results/PageResult.vue resources/models/SearchFilter.js resources/components/results/ImageResult.vue resources/getLocationAgnosticMwApi.js resources/components/SearchResults.vue i18n/hy.json package-lock.json i18n/rue.json tests/jest/components/results/pageResult.test.js i18n/fi.json i18n/ast.json --fix
--- stdout ---

/src/repo/resources/components/App.vue
  365:16  error  ES2015 'Array.prototype.find' method is forbidden  es-x/no-array-prototype-find

/src/repo/resources/components/NamespaceFilterDialog.vue
  136:5   error  ES2015 'Array.prototype.keys' method is forbidden  es-x/no-array-prototype-keys
  146:11  error  ES2015 'Array.prototype.keys' method is forbidden  es-x/no-array-prototype-keys

/src/repo/resources/components/SearchFilters.vue
  169:4   error  ES2015 'Array.prototype.keys' method is forbidden  es-x/no-array-prototype-keys
  189:11  error  ES2015 'Array.prototype.keys' method is forbidden  es-x/no-array-prototype-keys
  266:11  error  ES2015 'Array.prototype.find' method is forbidden  es-x/no-array-prototype-find
  286:21  error  ES2015 'Array.prototype.find' method is forbidden  es-x/no-array-prototype-find

/src/repo/resources/components/SearchResults.vue
  319:6  error  ES2015 'Array.prototype.keys' method is forbidden  es-x/no-array-prototype-keys

/src/repo/resources/components/base/Select.vue
  372:21  error  ES2015 'Array.prototype.findIndex' method is forbidden  es-x/no-array-prototype-findindex

/src/repo/resources/components/base/SelectMenu.vue
  196:12  error  ES2015 'Array.prototype.keys' method is forbidden  es-x/no-array-prototype-keys

/src/repo/resources/components/base/Tabs.vue
  123:61  error  ES2015 'Array.prototype.keys' method is forbidden  es-x/no-array-prototype-keys
  178:19  error  ES2015 'Array.prototype.keys' method is forbidden  es-x/no-array-prototype-keys
  186:20  error  ES2015 'Array.prototype.keys' method is forbidden  es-x/no-array-prototype-keys
  193:19  error  ES2015 'Array.prototype.keys' method is forbidden  es-x/no-array-prototype-keys
  209:18  error  ES2015 'Array.prototype.keys' method is forbidden  es-x/no-array-prototype-keys

/src/repo/resources/components/results/PageResult.vue
  108:11  error  ES2015 'Array.prototype.keys' method is forbidden  es-x/no-array-prototype-keys

/src/repo/resources/mixins/autocompleteLookupHandler.js
   64:33  error  ES2015 RegExp 'u' flag is forbidden                            es-x/no-regexp-u-flag
   64:33  error  ES2018 RegExp Unicode property escape sequences are forbidden  es-x/no-regexp-unicode-property-escapes
   65:18  error  ES2015 RegExp 'u' flag is forbidden                            es-x/no-regexp-u-flag
  108:21  error  ES2015 RegExp 'u' flag is forbidden                            es-x/no-regexp-u-flag
  108:21  error  ES2018 RegExp Unicode property escape sequences are forbidden  es-x/no-regexp-unicode-property-escapes

/src/repo/tests/jest/components/DidYouMean.test.js
   1:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   2:2  error  ES2015 destructuring is forbidden            es-x/no-destructuring
   6:2  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  38:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  44:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  51:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  57:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  63:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables

/src/repo/tests/jest/components/EmptyState.test.js
   1:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   1:7  error  ES2015 destructuring is forbidden            es-x/no-destructuring
   4:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   6:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  19:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  20:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  28:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  29:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  35:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  36:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  42:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  43:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables

/src/repo/tests/jest/components/EndOfResults.test.js
   1:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   1:7  error  ES2015 destructuring is forbidden            es-x/no-destructuring
   5:2  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   8:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  12:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables

/src/repo/tests/jest/components/NamespaceFilterDialog.test.js
    1:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
    1:7  error  ES2015 destructuring is forbidden            es-x/no-destructuring
    8:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   17:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   23:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   39:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   55:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   67:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   82:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   94:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  111:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  129:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  149:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  164:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  176:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  188:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  204:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  218:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  226:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  232:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  240:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  248:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  262:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  276:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  291:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  309:6  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  323:6  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  339:6  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  353:6  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  373:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  387:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables

/src/repo/tests/jest/components/NoResults.test.js
   1:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   5:2  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   8:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  12:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  16:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  20:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables

/src/repo/tests/jest/components/QuickView.test.js
     1:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
     1:7  error  ES2015 destructuring is forbidden            es-x/no-destructuring
     2:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
     4:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
     5:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
     8:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
     9:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
    11:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
    20:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
    25:2  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
    37:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
    51:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
    61:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
    66:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
    76:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
    77:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
    78:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
    86:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
    96:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   106:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   116:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   126:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   136:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   146:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   156:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   161:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   171:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   176:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   186:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   191:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   201:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   206:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   216:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   221:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   234:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   239:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   249:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   254:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   264:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   269:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   279:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   284:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   294:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   299:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   309:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   314:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   324:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   333:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   347:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   361:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   378:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   398:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   430:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   444:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   445:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   464:6  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   465:6  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   482:6  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   483:6  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   505:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   506:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   525:6  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   526:6  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   543:6  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   544:6  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   561:6  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   577:6  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   593:6  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   611:6  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   626:6  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   635:6  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   642:6  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   648:6  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   665:6  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   680:6  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   690:6  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   699:6  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   700:6  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   725:6  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   740:6  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   750:6  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   759:6  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   778:6  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   800:6  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   816:6  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   821:6  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   840:6  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   857:6  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   873:6  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   889:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   904:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   917:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   938:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   965:6  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   976:6  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   984:6  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   995:6  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  1005:6  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  1022:6  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  1031:6  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  1035:6  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  1044:6  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  1050:6  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  1059:6  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  1063:6  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  1072:6  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  1078:6  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  1087:6  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  1099:6  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  1123:6  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  1146:6  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  1162:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  1177:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  1196:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  1215:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  1237:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables

/src/repo/tests/jest/components/SearchFilters.test.js
    1:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
    2:2  error  ES2015 destructuring is forbidden            es-x/no-destructuring
    6:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
    7:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   23:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   38:2  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   57:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   65:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   67:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   79:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   81:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   92:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   94:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   97:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  111:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  125:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  127:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  135:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  137:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  149:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  151:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  168:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  183:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  196:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  227:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  240:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  271:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  288:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  290:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  306:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  308:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables

/src/repo/tests/jest/components/SearchResults.test.js
    1:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
    2:2  error  ES2015 destructuring is forbidden            es-x/no-destructuring
   11:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   52:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   53:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   54:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   70:2  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  128:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  129:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  141:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  143:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  154:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  156:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  165:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  167:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  182:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  184:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  192:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  194:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  205:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  207:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  222:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  224:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  231:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  233:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  245:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  253:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  276:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  277:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  278:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  327:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  336:6  error  ES2015 computed properties are forbidden     es-x/no-computed-properties
  339:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  340:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  351:6  error  ES2015 computed properties are forbidden     es-x/no-computed-properties
  354:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  356:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  372:6  error  ES2015 computed properties are forbidden     es-x/no-computed-properties
  375:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  377:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  389:6  error  ES2015 computed properties are forbidden     es-x/no-computed-properties
  392:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  394:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  406:6  error  ES2015 computed properties are forbidden     es-x/no-computed-properties
  409:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  411:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  424:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  425:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  428:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  438:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  451:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  471:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  473:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  482:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  483:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  499:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  509:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  521:6  error  ES2015 computed properties are forbidden     es-x/no-computed-properties
  524:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  538:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  540:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  558:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  572:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  575:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  589:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  597:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  625:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables

/src/repo/tests/jest/components/Spinner.test.js
  1:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  7:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  9:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables

/src/repo/tests/jest/components/UserNotice.test.js
   1:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   1:7  error  ES2015 destructuring is forbidden            es-x/no-destructuring
  16:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  17:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  22:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  23:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  28:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  29:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  39:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  40:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  46:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  47:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  55:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  56:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  61:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  64:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  73:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  80:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  87:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables

/src/repo/tests/jest/components/app.test.js
    1:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
    2:2  error  ES2015 destructuring is forbidden            es-x/no-destructuring
   27:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   39:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   41:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   67:2  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  127:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  133:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  139:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  145:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  146:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  152:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  158:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  164:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  171:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  179:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  187:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  194:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  201:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  209:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  221:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  228:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  234:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  243:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  246:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  256:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  271:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  274:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  291:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  346:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  356:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  366:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  396:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  423:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  463:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  516:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  524:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  530:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  537:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  543:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  548:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  554:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  555:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables

/src/repo/tests/jest/components/base/autocompleteSearchInput.test.js
    1:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   10:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   17:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   27:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   34:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   47:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   48:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   56:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   59:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   73:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   74:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   83:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   86:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   99:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  104:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  117:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  126:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  134:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  143:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  151:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  154:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  163:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  171:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  174:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  186:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  194:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  195:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  206:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  215:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  223:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  224:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  235:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  247:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  255:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  256:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  267:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  276:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  284:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  285:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  296:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  309:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  314:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  328:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  339:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  344:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  345:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  360:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  371:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  379:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  380:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  393:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  406:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  411:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  412:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  427:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  443:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  448:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  462:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  475:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  480:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables

/src/repo/tests/jest/components/base/button.test.js
    1:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
    2:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
    3:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
    4:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
    5:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   12:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   21:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   28:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   47:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   59:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   71:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   83:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   95:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  106:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  118:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  130:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables

/src/repo/tests/jest/components/base/checkbox.test.js
   1:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   2:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   3:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   9:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  16:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  21:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  28:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  33:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  39:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  48:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  54:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  63:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  69:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables

/src/repo/tests/jest/components/base/copyTextLayout.test.js
    1:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
    2:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
    3:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
    7:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   11:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   17:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   22:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   28:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   33:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   40:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   55:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   56:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   64:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   74:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   75:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   86:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  101:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  112:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables

/src/repo/tests/jest/components/base/dialog.test.js
    1:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
    2:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
    3:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
    7:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   13:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   18:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   24:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   29:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   35:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   40:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   46:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   56:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   62:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   74:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   90:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  102:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  120:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  139:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  146:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  158:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  164:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables

/src/repo/tests/jest/components/base/icon.test.js
    1:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
    2:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
    3:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
    7:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   13:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   18:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   19:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   26:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   33:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   40:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   47:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   50:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   57:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   66:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   70:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   76:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   85:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   90:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  105:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  113:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  120:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  128:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  132:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  138:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  145:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  149:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables

/src/repo/tests/jest/components/base/image.test.js
   1:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   2:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   3:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   4:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   8:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  19:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  23:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  30:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  31:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  46:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  56:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  61:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  78:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables

/src/repo/tests/jest/components/base/message.test.js
   1:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  10:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  14:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  23:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  29:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  36:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  48:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  58:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  59:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  71:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  72:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  84:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  85:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  97:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  98:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables

/src/repo/tests/jest/components/base/player.test.js
   1:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  28:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  32:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  40:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  41:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  47:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  54:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  57:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  63:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  70:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  82:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  83:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables

/src/repo/tests/jest/components/base/radio.test.js
   1:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   8:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  14:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  19:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  26:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  31:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  38:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  44:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  50:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  52:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables

/src/repo/tests/jest/components/base/select.test.js
    1:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
    2:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
    3:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
    5:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   22:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   23:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   34:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   35:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   48:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   49:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   50:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   64:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   65:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   66:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   83:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   84:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   85:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  100:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  101:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  116:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  131:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  146:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  161:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  162:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  178:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  179:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  195:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  196:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  215:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  232:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  233:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  245:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  251:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  252:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  263:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  274:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  275:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  286:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  298:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  299:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  309:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  321:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  322:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  336:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  341:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  351:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  352:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  365:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables

/src/repo/tests/jest/components/base/selectMenu.test.js
    1:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   24:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   25:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   41:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   42:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   43:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   63:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   64:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   65:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   85:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   86:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  100:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  101:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  116:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  145:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  146:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  152:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  166:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  167:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables

/src/repo/tests/jest/components/results/ImageResult.test.js
    1:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
    2:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
    3:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
    4:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
    5:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
    9:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   10:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   11:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   12:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   14:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   31:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   46:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   57:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   62:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   78:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   97:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  107:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  112:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  131:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables

/src/repo/tests/jest/components/results/audioResult.test.js
    1:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
    2:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
    3:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
    4:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
    8:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
    9:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   10:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   11:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   13:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   30:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   41:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   46:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   56:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   61:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   71:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   76:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   86:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   91:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  110:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables

/src/repo/tests/jest/components/results/otherResult.test.js
    1:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
    2:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
    3:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
    4:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
    8:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
    9:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   10:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   11:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   13:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   30:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   39:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   44:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   53:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   58:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   66:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   71:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   84:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   92:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   97:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  111:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  120:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  125:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  134:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  139:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  148:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables

/src/repo/tests/jest/components/results/pageResult.test.js
    1:1   error  ES2015 block-scoped variables are forbidden       es-x/no-block-scoped-variables
    2:1   error  ES2015 block-scoped variables are forbidden       es-x/no-block-scoped-variables
    3:1   error  ES2015 block-scoped variables are forbidden       es-x/no-block-scoped-variables
    7:1   error  ES2015 block-scoped variables are forbidden       es-x/no-block-scoped-variables
    8:1   error  ES2015 block-scoped variables are forbidden       es-x/no-block-scoped-variables
    9:1   error  ES2015 block-scoped variables are forbidden       es-x/no-block-scoped-variables
   10:1   error  ES2015 block-scoped variables are forbidden       es-x/no-block-scoped-variables
   13:1   error  ES2015 block-scoped variables are forbidden       es-x/no-block-scoped-variables
   13:83  error  This line has 2 statements. Maximum allowed is 1  max-statements-per-line
   14:1   error  ES2015 block-scoped variables are forbidden       es-x/no-block-scoped-variables
   15:1   error  ES2015 block-scoped variables are forbidden       es-x/no-block-scoped-variables
   17:1   error  ES2015 block-scoped variables are forbidden       es-x/no-block-scoped-variables
   34:3   error  ES2015 block-scoped variables are forbidden       es-x/no-block-scoped-variables
   43:3   error  ES2015 block-scoped variables are forbidden       es-x/no-block-scoped-variables
   48:3   error  ES2015 block-scoped variables are forbidden       es-x/no-block-scoped-variables
   55:3   error  ES2015 block-scoped variables are forbidden       es-x/no-block-scoped-variables
   61:3   error  ES2015 block-scoped variables are forbidden       es-x/no-block-scoped-variables
   62:3   error  ES2015 block-scoped variables are forbidden       es-x/no-block-scoped-variables
   70:3   error  ES2015 block-scoped variables are forbidden       es-x/no-block-scoped-variables
   75:3   error  ES2015 block-scoped variables are forbidden       es-x/no-block-scoped-variables
   83:3   error  ES2015 block-scoped variables are forbidden       es-x/no-block-scoped-variables
   88:3   error  ES2015 block-scoped variables are forbidden       es-x/no-block-scoped-variables
   96:3   error  ES2015 block-scoped variables are forbidden       es-x/no-block-scoped-variables
  101:3   error  ES2015 block-scoped variables are forbidden       es-x/no-block-scoped-variables
  109:3   error  ES2015 block-scoped variables are forbidden       es-x/no-block-scoped-variables
  114:3   error  ES2015 block-scoped variables are forbidden       es-x/no-block-scoped-variables
  121:3   error  ES2015 block-scoped variables are forbidden       es-x/no-block-scoped-variables
  126:3   error  ES2015 block-scoped variables are forbidden       es-x/no-block-scoped-variables

/src/repo/tests/jest/components/results/videoResult.test.js
    1:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
    2:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
    3:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
    4:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
    8:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
    9:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   10:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   11:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   13:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   30:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   41:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   46:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   56:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   61:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   71:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   76:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   86:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   91:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  101:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  106:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  125:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables

/src/repo/tests/jest/ignore/ensureArray.test.js
   1:1   error  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   2:1   error  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   3:1   error  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   4:1   error  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   5:1   error  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  25:3   error  Definition for rule 'es/no-object-values' was not found  es/no-object-values
  26:42  error  ES2017 'Object.values' method is forbidden               es-x/no-object-values
  27:54  error  ES2017 'Object.values' method is forbidden               es-x/no-object-values
  28:3   error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/tests/jest/mixins/autocompleteLookupHandler.test.js
    1:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
    2:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
    3:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
    7:2  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
    8:2  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   23:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   28:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   50:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   51:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   56:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   58:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   75:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   76:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   81:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   97:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   98:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  103:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  105:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  120:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  122:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  127:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  129:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  130:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  144:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  146:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  151:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  158:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  159:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  173:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  175:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  180:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  182:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  185:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  190:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  204:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  206:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  211:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  213:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  216:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  220:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  225:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  248:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  249:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  252:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  260:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  265:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  275:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  277:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  282:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  284:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  295:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  310:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  323:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  325:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  330:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  336:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  347:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  365:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  368:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  374:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  379:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  386:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  396:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  399:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  405:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  410:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  417:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  431:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  432:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  434:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  439:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  444:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  446:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  454:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  455:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  457:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  462:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  467:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  469:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables

/src/repo/tests/jest/mixins/observer.test.js
    2:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
    3:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
    4:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
    5:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
    8:2  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   14:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   18:3  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   27:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   32:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   37:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   48:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   55:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   62:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   67:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   76:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   84:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   91:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  105:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  122:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  126:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  141:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  145:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  150:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  163:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  167:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  171:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  178:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  182:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  186:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  193:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  197:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  201:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  208:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  212:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  216:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  223:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  227:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  231:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables

/src/repo/tests/jest/mixins/restoreHistoryHandler.test.js
    1:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
    2:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
    3:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
    7:2  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   23:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   41:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   59:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   77:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   96:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  111:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  123:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  141:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  142:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  147:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  160:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  162:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  167:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  188:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  190:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  195:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  202:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  209:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  214:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  222:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  229:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  234:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  242:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  249:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  257:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  274:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  281:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  289:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  306:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  313:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  318:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  325:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  332:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  337:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  347:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  356:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  373:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables

/src/repo/tests/jest/mocks/Performance.js
   2:1   error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   6:1   error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   6:46  error  ES2015 default parameters are forbidden      es-x/no-default-parameters
  14:1   error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  14:56  error  ES2015 default parameters are forbidden      es-x/no-default-parameters
  21:1   error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables

/src/repo/tests/jest/store/actions.test.js
    1:1    error  ES2015 block-scoped variables are forbidden       es-x/no-block-scoped-variables
   11:1    error  ES2015 block-scoped variables are forbidden       es-x/no-block-scoped-variables
   12:1    error  ES2015 block-scoped variables are forbidden       es-x/no-block-scoped-variables
   89:4    error  ES2015 block-scoped variables are forbidden       es-x/no-block-scoped-variables
  222:4    error  ES2015 block-scoped variables are forbidden       es-x/no-block-scoped-variables
  222:79   error  This line has 2 statements. Maximum allowed is 1  max-statements-per-line
  250:5    error  ES2015 block-scoped variables are forbidden       es-x/no-block-scoped-variables
  250:79   error  This line has 2 statements. Maximum allowed is 1  max-statements-per-line
  268:5    error  ES2015 block-scoped variables are forbidden       es-x/no-block-scoped-variables
  268:77   error  This line has 2 statements. Maximum allowed is 1  max-statements-per-line
  269:5    error  ES2015 block-scoped variables are forbidden       es-x/no-block-scoped-variables
  277:4    error  ES2015 block-scoped variables are forbidden       es-x/no-block-scoped-variables
  314:5    error  ES2015 block-scoped variables are forbidden       es-x/no-block-scoped-variables
  314:77   error  This line has 2 statements. Maximum allowed is 1  max-statements-per-line
  315:5    error  ES2015 block-scoped variables are forbidden       es-x/no-block-scoped-variables
  435:5    error  ES2015 block-scoped variables are forbidden       es-x/no-block-scoped-variables
  435:108  error  This line has 2 statements. Maximum allowed is 1  max-statements-per-line
  464:2    error  ES2015 block-scoped variables are forbidden       es-x/no-block-scoped-variables
  618:3    error  ES2015 block-scoped variables are forbidden       es-x/no-block-scoped-variables
  667:2    error  ES2015 block-scoped variables are forbidden       es-x/no-block-scoped-variables
  679:3    error  ES2015 block-scoped variables are forbidden       es-x/no-block-scoped-variables
  679:98   error  This line has 2 statements. Maximum allowed is 1  max-statements-per-line
  688:4    error  ES2015 block-scoped variables are forbidden       es-x/no-block-scoped-variables
  688:83   error  This line has 2 statements. Maximum allowed is 1  max-statements-per-line
  695:4    error  ES2015 block-scoped variables are forbidden       es-x/no-block-scoped-variables
  695:83   error  This line has 2 statements. Maximum allowed is 1  max-statements-per-line
  710:4    error  ES2015 block-scoped variables are forbidden       es-x/no-block-scoped-variables
  710:83   error  This line has 2 statements. Maximum allowed is 1  max-statements-per-line

/src/repo/tests/jest/store/mutations.test.js
    1:1  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
    5:2  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   19:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   45:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   46:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   57:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   58:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   59:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   82:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   83:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
   84:5  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  108:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  120:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  132:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  144:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  156:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  167:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  168:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  169:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  185:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  186:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  187:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  188:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  189:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  221:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  222:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  223:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  224:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  225:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  226:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  255:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  308:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  345:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  423:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  438:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  454:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  470:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  489:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  504:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  522:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  537:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  545:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  558:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables
  567:4  error  ES2015 block-scoped variables are forbidden  es-x/no-block-scoped-variables

/src/repo/tests/jest/store/store.test.js
   12:1   error  ES2015 block-scoped variables are forbidden       es-x/no-block-scoped-variables
   16:1   error  ES2015 block-scoped variables are forbidden       es-x/no-block-scoped-variables
   19:8   error  ES2015 block-scoped variables are forbidden       es-x/no-block-scoped-variables
   22:64  error  This line has 2 statements. Maximum allowed is 1  max-statements-per-line
   83:4   error  ES2015 block-scoped variables are forbidden       es-x/no-block-scoped-variables
  100:4   error  ES2015 block-scoped variables are forbidden       es-x/no-block-scoped-variables
  198:4   error  ES2015 block-scoped variables are forbidden       es-x/no-block-scoped-variables
  209:4   error  ES2015 block-scoped variables are forbidden       es-x/no-block-scoped-variables

✖ 998 problems (998 errors, 0 warnings)


--- end ---
$ ./node_modules/.bin/eslint i18n/lb.json tests/jest/mocks/EventListener.js i18n/om.json composer.json tests/jest/store/mutations.test.js i18n/sr-el.json resources/components/NamespaceFilterDialog.vue tests/jest/components/base/image.test.js i18n/uk.json tests/jest/store/store.test.js resources/components/results/AudioResult.vue resources/components/base/mixins/observer.js resources/components/base/SelectMenu.vue resources/components/base/Button.vue resources/components/UserNotice.vue resources/store/actions.js i18n/es.json i18n/ro.json i18n/yue.json i18n/fa.json i18n/id.json resources/components/DidYouMean.vue resources/components/SearchFilters.vue i18n/cs.json i18n/mrh.json i18n/eo.json tests/jest/components/QuickView.test.js Gruntfile.js i18n/cy.json i18n/jv.json tests/jest/components/base/radio.test.js i18n/dag.json i18n/ko.json tests/jest/store/getters.test.js resources/components/base/Player.vue i18n/hil.json resources/components/results/OtherResult.vue i18n/ha.json i18n/ar.json i18n/ban.json resources/mixins/autocompleteLookupHandler.js i18n/bn.json i18n/tl.json resources/mixins/restoreHistoryHandler.js resources/components/base/CopyTextLayout.vue resources/components/base/AutocompleteSearchInput.vue resources/components/App.vue i18n/br.json resources/components/base/Checkbox.vue i18n/fr.json resources/components/base/Tabs.vue i18n/vi.json i18n/he.json i18n/be-tarask.json i18n/it.json resources/mixins/searchResultTimeBased.js resources/components/base/Observer.vue resources/components/base/Select.vue i18n/zh-hant.json i18n/se.json i18n/nn.json tests/jest/components/NoResults.test.js resources/components/base/Dialog.vue i18n/xmf.json i18n/zgh.json i18n/smn.json extension.json tests/jest/components/base/dialog.test.js resources/components/base/Tab.vue i18n/kk-cyrl.json tests/jest/components/results/ImageResult.test.js i18n/vec.json i18n/my.json tests/jest/components/EmptyState.test.js tests/jest/components/base/copyTextLayout.test.js i18n/de.json i18n/pt-br.json i18n/hi.json i18n/kcg.json resources/components/base/mixins/binaryInput.js i18n/ce.json tests/jest/components/NamespaceFilterDialog.test.js tests/jest/components/SearchFilters.test.js tests/jest/components/results/audioResult.test.js tests/jest/components/app.test.js i18n/roa-tara.json lib/icons.js i18n/ksw.json tests/jest/components/base/icon.test.js i18n/ja.json i18n/pt.json resources/components/base/Radio.vue tests/jest/components/DidYouMean.test.js resources/components/QuickView.vue i18n/el.json i18n/lmo.json i18n/bg.json i18n/bto.json tests/jest/mixins/observer.test.js i18n/gur.json i18n/blk.json i18n/sv.json i18n/sl.json resources/store/getters.js i18n/pnb.json resources/store/state.js resources/components/base/Icon.vue resources/components/results/VideoResult.vue resources/components/base/Image.vue resources/components/EndOfResults.vue i18n/qqq.json i18n/ba.json tests/jest/mocks/history.js i18n/pwn.json i18n/ia.json i18n/sr-ec.json tests/jest/components/base/selectMenu.test.js resources/components/Spinner.vue i18n/lij.json i18n/pl.json tests/jest/components/UserNotice.test.js tests/jest/mocks/ExecCommand.js i18n/ca.json i18n/skr-arab.json resources/mixins/searchResult.js tests/jest/components/base/autocompleteSearchInput.test.js i18n/tr.json i18n/te.json i18n/da.json i18n/yi.json tests/jest/components/base/player.test.js i18n/as.json i18n/ug-arab.json i18n/ru.json i18n/de-formal.json i18n/diq.json i18n/hsb.json tests/jest/components/Spinner.test.js resources/components/base/Message.vue i18n/th.json i18n/bpy.json i18n/hu.json tests/jest/mocks/Performance.js i18n/guw.json tests/jest/components/SearchResults.test.js i18n/io.json tests/jest/components/base/checkbox.test.js i18n/nb.json i18n/nqo.json i18n/ann.json i18n/scn.json resources/ensureArray.js resources/components/EmptyState.vue i18n/bs.json resources/constants.js i18n/mk.json i18n/hyw.json tests/jest/store/actions.test.js i18n/sms.json tests/jest/components/results/videoResult.test.js resources/store/index.js i18n/syl.json resources/store/mutations.js resources/plugins/eventLogger.js i18n/en.json resources/components/NoResults.vue i18n/lv.json tests/jest/mixins/autocompleteLookupHandler.test.js i18n/gld.json tests/jest/ignore/ensureArray.test.js tests/jest/mocks/IntersectionObserver.js i18n/ms.json i18n/en-gb.json i18n/nl.json i18n/et.json resources/components/SearchError.vue tests/jest/components/base/select.test.js i18n/zh-hans.json package.json tests/jest/components/EndOfResults.test.js i18n/ku-latn.json i18n/hr.json i18n/sw.json tests/jest/mixins/restoreHistoryHandler.test.js i18n/ti.json tests/jest/components/base/button.test.js tests/jest/components/base/message.test.js tests/jest/components/results/otherResult.test.js i18n/brh.json resources/init.js resources/components/results/PageResult.vue resources/models/SearchFilter.js resources/components/results/ImageResult.vue resources/getLocationAgnosticMwApi.js resources/components/SearchResults.vue i18n/hy.json package-lock.json i18n/rue.json tests/jest/components/results/pageResult.test.js i18n/fi.json i18n/ast.json -f json
--- stdout ---
[{"filePath":"/src/repo/Gruntfile.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/composer.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/extension.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ann.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ar.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/as.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ast.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ba.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ban.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/be-tarask.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/bg.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/blk.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/bn.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/bpy.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/br.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/brh.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/bs.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/bto.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ca.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ce.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/cs.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/cy.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/da.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/dag.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/de-formal.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/de.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/diq.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/el.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/en-gb.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/en.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/eo.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/es.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/et.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/fa.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/fi.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/fr.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/gld.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/gur.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/guw.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ha.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/he.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/hi.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/hil.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/hr.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/hsb.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/hu.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/hy.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/hyw.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ia.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/id.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/io.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/it.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ja.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/jv.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/kcg.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/kk-cyrl.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ko.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ksw.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ku-latn.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/lb.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/lij.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/lmo.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/lv.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/mk.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/mrh.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ms.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/my.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/nb.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/nl.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/nn.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/nqo.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/om.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/pl.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/pnb.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/pt-br.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/pt.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/pwn.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/qqq.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ro.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/roa-tara.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ru.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/rue.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/scn.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/se.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/skr-arab.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/sl.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/smn.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/sms.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/sr-ec.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/sr-el.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/sv.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/sw.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/syl.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/te.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/th.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ti.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/tl.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/tr.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ug-arab.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/uk.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/vec.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/vi.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/xmf.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/yi.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/yue.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/zgh.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/zh-hans.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/zh-hant.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/lib/icons.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/package-lock.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/package.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/components/App.vue","messages":[{"ruleId":"es-x/no-array-prototype-find","severity":2,"message":"ES2015 'Array.prototype.find' method is forbidden.","line":365,"column":16,"nodeType":"MemberExpression","messageId":"forbidden","endLine":365,"endColumn":31}],"suppressedMessages":[{"ruleId":"camelcase","severity":2,"message":"Identifier 'search_query' is not in camel case.","line":192,"column":5,"nodeType":"Identifier","messageId":"notCamelCase","endLine":192,"endColumn":17,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'search_media_type' is not in camel case.","line":193,"column":5,"nodeType":"Identifier","messageId":"notCamelCase","endLine":193,"endColumn":22,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'search_query' is not in camel case.","line":248,"column":6,"nodeType":"Identifier","messageId":"notCamelCase","endLine":248,"endColumn":18,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'search_media_type' is not in camel case.","line":249,"column":6,"nodeType":"Identifier","messageId":"notCamelCase","endLine":249,"endColumn":23,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'search_result_count' is not in camel case.","line":250,"column":6,"nodeType":"Identifier","messageId":"notCamelCase","endLine":250,"endColumn":25,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'search_query' is not in camel case.","line":261,"column":6,"nodeType":"Identifier","messageId":"notCamelCase","endLine":261,"endColumn":18,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'search_media_type' is not in camel case.","line":262,"column":6,"nodeType":"Identifier","messageId":"notCamelCase","endLine":262,"endColumn":23,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'search_result_count' is not in camel case.","line":263,"column":6,"nodeType":"Identifier","messageId":"notCamelCase","endLine":263,"endColumn":25,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'search_query' is not in camel case.","line":298,"column":6,"nodeType":"Identifier","messageId":"notCamelCase","endLine":298,"endColumn":18,"suppressions":[{"kind":"directive","justification":""},{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'search_media_type' is not in camel case.","line":299,"column":6,"nodeType":"Identifier","messageId":"notCamelCase","endLine":299,"endColumn":23,"suppressions":[{"kind":"directive","justification":""},{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'search_result_count' is not in camel case.","line":300,"column":6,"nodeType":"Identifier","messageId":"notCamelCase","endLine":300,"endColumn":25,"suppressions":[{"kind":"directive","justification":""},{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'search_query' is not in camel case.","line":352,"column":5,"nodeType":"Identifier","messageId":"notCamelCase","endLine":352,"endColumn":17,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'search_media_type' is not in camel case.","line":353,"column":5,"nodeType":"Identifier","messageId":"notCamelCase","endLine":353,"endColumn":22,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'search_result_count' is not in camel case.","line":354,"column":5,"nodeType":"Identifier","messageId":"notCamelCase","endLine":354,"endColumn":24,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-jquery/no-global-selector","severity":2,"message":"Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible.","line":362,"column":20,"nodeType":"CallExpression","endLine":362,"endColumn":36,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<template>\n\t<div>\n\t\t<search-user-notice>\n\t\t</search-user-notice>\n\n\t\t<sd-autocomplete-search-input\n\t\t\tclass=\"sdms-search-input\"\n\t\t\tname=\"sdms-search-input\"\n\t\t\t:label=\"$i18n( 'mediasearch-input-label' ).text()\"\n\t\t\t:initial-value=\"currentSearchTerm\"\n\t\t\t:placeholder=\"$i18n( 'mediasearch-input-placeholder' ).text()\"\n\t\t\t:clear-title=\"$i18n( 'mediasearch-clear-title' ).text()\"\n\t\t\t:button-label=\"$i18n( 'searchbutton' ).text()\"\n\t\t\t:lookup-results=\"lookupResults\"\n\t\t\t:lookup-disabled=\"lookupDisabled\"\n\t\t\t@input=\"getDebouncedLookupResults\"\n\t\t\t@submit=\"onUpdateTerm\"\n\t\t\t@clear=\"onClear\"\n\t\t\t@clear-lookup-results=\"clearLookupResults\"\n\t\t>\n\t\t</sd-autocomplete-search-input>\n\n\t\t<!-- Generate a tab for each key in the \"results\" object. Data types,\n\t\tmessages, and loading behavior are bound to this key. -->\n\t\t<sd-tabs :active=\"currentType\" @tab-change=\"onTabChange\">\n\t\t\t<sd-tab\n\t\t\t\tv-for=\"tab in tabs\"\n\t\t\t\t:key=\"tab\"\n\t\t\t\t:name=\"tab\"\n\t\t\t\t:title=\"tabNames[ tab ]\"\n\t\t\t>\n\t\t\t\t<!-- Display search filters for each tab. -->\n\t\t\t\t<search-filters :media-type=\"tab\" @filter-change=\"onFilterChange\">\n\t\t\t\t</search-filters>\n\n\t\t\t\t<did-you-mean>\n\t\t\t\t</did-you-mean>\n\n\t\t\t\t<div :key=\"'tab-content-' + tab\">\n\t\t\t\t\t<!-- Display the available results for each tab -->\n\t\t\t\t\t<search-results\n\t\t\t\t\t\t:ref=\"tab\"\n\t\t\t\t\t\t:media-type=\"tab\"\n\t\t\t\t\t\t@load-more=\"resetCountAndLoadMore\">\n\t\t\t\t\t</search-results>\n\t\t\t\t</div>\n\n\t\t\t\t<!-- Auto-load more results when user scrolls to the end of the list/grid,\n\t\t\t\tas long as the \"autoload counter\" for the tab has not reached zero -->\n\t\t\t\t<observer\n\t\t\t\t\tv-if=\"autoloadCounter[ tab ] > 0 && results[ tab ].length > 0\"\n\t\t\t\t\t@intersect=\"getMoreResultsForTabIfAvailable\"\n\t\t\t\t>\n\t\t\t\t</observer>\n\t\t\t</sd-tab>\n\t\t</sd-tabs>\n\t</div>\n</template>\n\n<script>\n/**\n * @file App.vue\n *\n * Top-level component for the Special:MediaSearch JS UI.\n * Contains two major elements:\n * - autocomplete search input\n * - tabs to display search results (one for each media type)\n *\n * Search query and search result data lives in Vuex, but this component\n * responds to user interactions like changes in query or tab, dispatches\n * Vuex actions to make API requests, and ensures that the URL parameters\n * remain in sync with the current search term and active tab (this is done\n * using history.replaceState)\n *\n * Autocomplete lookups are handled by a mixin. When new search input is\n * emitted from the AutocompleteSearchInput, the mixin handles the lookup\n * request and this component passes an array of string lookup results to the\n * AutocompleteSearchInput for display.\n */\nvar MEDIASEARCH_TABS = mw.config.get( 'sdmsInitialSearchResults' ).tabs,\n\tmapState = require( 'vuex' ).mapState,\n\tmapGetters = require( 'vuex' ).mapGetters,\n\tmapMutations = require( 'vuex' ).mapMutations,\n\tmapActions = require( 'vuex' ).mapActions,\n\tSdAutocompleteSearchInput = require( './base/AutocompleteSearchInput.vue' ),\n\tSdTab = require( './base/Tab.vue' ),\n\tSdTabs = require( './base/Tabs.vue' ),\n\tSearchResults = require( './SearchResults.vue' ),\n\tSearchFilters = require( './SearchFilters.vue' ),\n\tDidYouMean = require( './DidYouMean.vue' ),\n\tObserver = require( './base/Observer.vue' ),\n\tUserNotice = require( './UserNotice.vue' ),\n\tautocompleteLookupHandler = require( './../mixins/autocompleteLookupHandler.js' ),\n\trestoreHistoryHandler = require( './../mixins/restoreHistoryHandler.js' );\n\n// @vue/component\nmodule.exports = exports = {\n\tname: 'MediaSearch',\n\n\tcomponents: {\n\t\t'sd-tabs': SdTabs,\n\t\t'sd-tab': SdTab,\n\t\t'sd-autocomplete-search-input': SdAutocompleteSearchInput,\n\t\t'search-results': SearchResults,\n\t\t'search-filters': SearchFilters,\n\t\t'did-you-mean': DidYouMean,\n\t\t'search-user-notice': UserNotice,\n\t\tobserver: Observer\n\t},\n\n\tmixins: [\n\t\tautocompleteLookupHandler,\n\t\trestoreHistoryHandler\n\t],\n\n\t// The App.vue file contains no local state. An empty object is returned as\n\t// a placeholder for ease of unit-testing. When the time comes to migrate\n\t// the MediaSearch front-end to Vue 3, this file could be re-written using\n\t// the composition API or even <script setup> to eliminate this redundant\n\t// option.\n\tdata: function () {\n\t\treturn {};\n\t},\n\n\tcomputed: $.extend( {}, mapState( [\n\t\t'autoloadCounter',\n\t\t'results'\n\t] ), mapGetters( [\n\t\t'allActiveFilters',\n\t\t'currentType',\n\t\t'currentSearchTerm'\n\n\t] ), {\n\t\t/**\n\t\t * @return {string[]} [  'image', 'video', 'audio', 'page', 'other'  ]\n\t\t */\n\t\ttabs: function () {\n\t\t\treturn MEDIASEARCH_TABS.map( function ( tab ) {\n\t\t\t\treturn tab.type;\n\t\t\t} );\n\t\t},\n\n\t\t/**\n\t\t * @return {Object} { image: 'Images', video: 'Video', page: 'Categories and Pages'... }\n\t\t */\n\t\ttabNames: function () {\n\t\t\tvar names = {},\n\t\t\t\tprefix = 'mediasearch-tab-';\n\n\t\t\t// Get the i18n message for each tab title and assign to appropriate\n\t\t\t// key in returned object\n\t\t\tthis.tabs.forEach(\n\t\t\t\tfunction ( tab ) {\n\t\t\t\t\tnames[ tab ] = this.$i18n( prefix + tab ).text();\n\t\t\t\t}.bind( this )\n\t\t\t);\n\n\t\t\treturn names;\n\t\t}\n\t} ),\n\n\tmethods: $.extend( {}, mapMutations( [\n\t\t'clearDidYouMean',\n\t\t'resetResults',\n\t\t'resetAutoLoadForAllMediaType',\n\t\t'setHasError',\n\t\t'setPending',\n\t\t'setSearchTerm',\n\t\t'updateOrDeleteQueryParam'\n\t] ), mapActions( [\n\t\t'clear',\n\t\t'syncActiveTypeAndQueryType',\n\t\t'pushQueryToHistoryState',\n\t\t'performNewSearch',\n\t\t'searchMore',\n\t\t'updateCurrentType',\n\t\t'ready'\n\t] ), {\n\t\t/**\n\t\t * Keep UI state, URL, and history in sync as the user changes tabs\n\t\t * Filter and sort preferences are tab-specific, so they need to be\n\t\t * re-created every time the current tab changes.\n\t\t *\n\t\t * @param {string} newTabName\n\t\t */\n\t\tonTabChange: function ( newTabName ) {\n\t\t\tthis.updateCurrentType( newTabName );\n\t\t\tthis.pushQueryToHistoryState();\n\t\t\t/* eslint-disable camelcase */\n\t\t\tthis.$log( {\n\t\t\t\taction: 'tab_change',\n\t\t\t\tsearch_query: this.currentSearchTerm,\n\t\t\t\tsearch_media_type: this.currentType\n\t\t\t} );\n\t\t\t/* eslint-enable camelcase */\n\t\t},\n\n\t\t/**\n\t\t * @param {Object} data\n\t\t * @param {string} data.mediaType\n\t\t * @param {string} data.filterType\n\t\t * @param {string} [data.value]\n\t\t */\n\t\tonFilterChange: function ( data ) {\n\t\t\t// the new search (with updated filter params) is handled\n\t\t\t// by the allActiveFilters watcher\n\t\t\t// VUE 3 MIGRATION: these refs are arrays in Vue 2 but not in Vue 3\n\t\t\t( this.$refs[ data.mediaType ][ 0 ] || this.$refs[ data.mediaType ] ).hideDetails();\n\n\t\t\tthis.updateOrDeleteQueryParam( { key: data.filterType, value: data.value } );\n\t\t\tthis.pushQueryToHistoryState();\n\t\t},\n\t\t/**\n\t\t * Keep the UI state, URL, and history in sync as the user changes\n\t\t * search queries\n\t\t *\n\t\t * @param {string} newTerm\n\t\t */\n\t\tonUpdateTerm: function ( newTerm ) {\n\t\t\tthis.setSearchTerm( newTerm );\n\t\t\tthis.pushQueryToHistoryState();\n\t\t},\n\t\t/**\n\t\t * Dispatch Vuex actions to clear existing term and results whenever a\n\t\t * \"clear\" event is detected. Update the URL and history as well.\n\t\t * Also resets the autoload counter to clear any \"load more\" buttons\n\t\t * that may have previously been visible in any of the tabs.\n\t\t */\n\t\tonClear: function () {\n\t\t\tthis.clear( this.currentType );\n\t\t\tthis.clearLookupResults();\n\t\t\tthis.setPending( { type: this.currentType, pending: false } );\n\t\t\tthis.setHasError( false );\n\n\t\t\tthis.resetAutoLoadForAllMediaType();\n\n\t\t\tthis.$log( { action: 'search_clear' } );\n\t\t},\n\n\t\t/**\n\t\t * Trigger an action to search for more result if available and log the action\n\t\t */\n\t\tgetMoreResultsForTabIfAvailable: function () {\n\t\t\tthis.searchMore().then( function () {\n\t\t\t\t/* eslint-disable camelcase */\n\t\t\t\tthis.$log( {\n\t\t\t\t\taction: 'search_load_more',\n\t\t\t\t\tsearch_query: this.currentSearchTerm,\n\t\t\t\t\tsearch_media_type: this.currentType,\n\t\t\t\t\tsearch_result_count: this.results[ this.currentType ].length\n\t\t\t\t} );\n\t\t\t\t/* eslint-enable camelcase */\n\t\t\t}.bind( this ) );\n\t\t},\n\n\t\tresetCountAndLoadMore: function () {\n\t\t\tthis.searchMore( true ).then( function () {\n\t\t\t\t/* eslint-disable camelcase */\n\t\t\t\tthis.$log( {\n\t\t\t\t\taction: 'search_load_more',\n\t\t\t\t\tsearch_query: this.currentSearchTerm,\n\t\t\t\t\tsearch_media_type: this.currentType,\n\t\t\t\t\tsearch_result_count: this.results[ this.currentType ].length\n\t\t\t\t} );\n\t\t\t}.bind( this ) );\n\t\t},\n\n\t\t/**\n\t\t * Dispatch Vuex actions to clear existing results and fetch new ones.\n\t\t * Also resets the autoload counter for all tabs for semi-infinite\n\t\t * scroll behavior.\n\t\t *\n\t\t * @param {string} mediaType If provided, only reset results for this type\n\t\t */\n\t\tonTermOrFilterChange: function ( mediaType ) {\n\t\t\tthis.resetResults( mediaType );\n\t\t\tthis.clearDidYouMean();\n\t\t\tthis.resetAutoLoadForAllMediaType();\n\n\t\t\t// Clear any delayed/debounced lookup requests that may still be\n\t\t\t// pending once a new search is submitted, ex. if the user rapidly\n\t\t\t// types a result and hits enter; timeout ID is set by the\n\t\t\t// autocompleteLookupHandler mixin\n\t\t\tif ( this.debounceTimeoutId ) {\n\t\t\t\tclearTimeout( this.debounceTimeoutId );\n\t\t\t}\n\n\t\t\t// Abort in-flight lookup promises to ensure the results provided\n\t\t\t// are for the most recent search input.\n\t\t\tif ( this.lookupPromises ) {\n\t\t\t\tthis.lookupPromises.abort();\n\t\t\t}\n\n\t\t\tthis.performNewSearch().then( function () {\n\t\t\t\t/* eslint-disable camelcase */\n\t\t\t\tthis.$log( {\n\t\t\t\t\taction: 'search_new',\n\t\t\t\t\tsearch_query: this.currentSearchTerm,\n\t\t\t\t\tsearch_media_type: this.currentType,\n\t\t\t\t\tsearch_result_count: this.results[ this.currentType ].length\n\t\t\t\t} );\n\t\t\t\t/* eslint-enable camelcase */\n\t\t\t}.bind( this ) );\n\t\t}\n\t} ),\n\n\twatch: {\n\t\t/**\n\t\t * When the currentType changes, fetch more results for the new tab if\n\t\t * available\n\t\t *\n\t\t * @param {string} newTab image, audio, etc.\n\t\t * @param {string} oldTab image, audio, etc.\n\t\t */\n\t\tcurrentType: function ( newTab, oldTab ) {\n\t\t\tif ( newTab && newTab !== oldTab && this.currentSearchTerm !== '' ) {\n\t\t\t\tthis.getMoreResultsForTabIfAvailable();\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * If the new term does not match what previously existed here, perform\n\t\t * a new search.\n\t\t *\n\t\t * @param {string} newTerm\n\t\t * @param {string} oldTerm\n\t\t */\n\t\tcurrentSearchTerm: function ( newTerm, oldTerm ) {\n\t\t\tif ( newTerm === '' ) {\n\t\t\t\tthis.onClear();\n\t\t\t} else if ( newTerm !== oldTerm ) {\n\t\t\t\tthis.onTermOrFilterChange();\n\t\t\t}\n\t\t},\n\n\t\tallActiveFilters: function ( newVal, oldVal ) {\n\t\t\tif ( newVal !== oldVal && this.currentSearchTerm !== '' ) {\n\t\t\t\tthis.onTermOrFilterChange( this.currentType );\n\t\t\t}\n\t\t}\n\t},\n\n\tcreated: function () {\n\t\tthis.syncActiveTypeAndQueryType();\n\t\t// If a search term was already present when the user arrives on the page,\n\t\t// log the results of the initial server-rendered search query regardless\n\t\t// of whether any results were found\n\t\tif ( this.currentSearchTerm && this.currentType ) {\n\t\t\t/* eslint-disable camelcase */\n\t\t\tthis.$log( {\n\t\t\t\taction: 'search_new',\n\t\t\t\tsearch_query: this.currentSearchTerm,\n\t\t\t\tsearch_media_type: this.currentType,\n\t\t\t\tsearch_result_count: this.results[ this.currentType ].length\n\t\t\t} );\n\t\t\t/* eslint-enable camelcase */\n\t\t}\n\t},\n\n\tmounted: function () {\n\t\t// eslint-disable-next-line no-jquery/no-global-selector\n\t\tvar $container = $( '#sdms-app' );\n\t\tthis.$nextTick( function () {\n\t\t\tvar readyDeferred = $.Deferred(),\n\t\t\t\tpromises = $container.find( 'img' ).get().map( function ( image ) {\n\t\t\t\t\t// We start out with an initial serverside DOM that we'll swap out as\n\t\t\t\t\t// soon as the Vue components are mounted\n\t\t\t\t\t// Images, however, are not loaded until they become visible (their src\n\t\t\t\t\t// will not be set until they enter the viewport - see Image.vue\n\t\t\t\t\t// intersection observer), so we're going to see a FOUC when we replace\n\t\t\t\t\t// the initial existing content (which may have painted these images\n\t\t\t\t\t// already) with the new set of image nodes (that were not yet visible,\n\t\t\t\t\t// so have not been loaded)\n\t\t\t\t\t// We'll make sure to set the src attribute of all initial images ahead\n\t\t\t\t\t// of time and allow the images to load (this should be fast, given that\n\t\t\t\t\t// they've started loaded already in the serverside render) before we\n\t\t\t\t\t// empty the exiting content and replace it with the new JS components\n\t\t\t\t\tif ( !image.src && image.dataset && image.dataset.src ) {\n\t\t\t\t\t\timage.src = image.dataset.src;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( typeof image.decode !== 'function' ) {\n\t\t\t\t\t\t// If image.decode() isn't supported (e.g. IE) just return\n\t\t\t\t\t\t// a resolved promise.\n\t\t\t\t\t\treturn $.Deferred().resolve().promise();\n\t\t\t\t\t}\n\n\t\t\t\t\treturn image.decode().then( null, function () {\n\t\t\t\t\t\t// turn rejected promises into successful resolves, so that below\n\t\t\t\t\t\t// $.when can act as `allSettled` (it otherwise short-circuits as\n\t\t\t\t\t\t// as soon as one of the promises fails)\n\t\t\t\t\t\treturn $.Deferred().resolve().promise();\n\t\t\t\t\t} );\n\t\t\t\t} );\n\n\t\t\t// When above image-loading has completed, we're allowed to proceed & swap out\n\t\t\t// the existing DOM with the new components. It may not complete or take awhile,\n\t\t\t// though (e.g. many images, poor bandwidth, other issues), in which case we\n\t\t\t// won't let that prevent us from taking over the content: the FOUC becomes\n\t\t\t// a non-issue at this point because the image likely had not loaded in the\n\t\t\t// initial render anyway\n\t\t\t// We'll replace the existing render by Vue components when either of these happen:\n\t\t\t// - all images of the Vue render have been loaded (or confirmed to have failed)\n\t\t\t// - 1 second has passed\n\t\t\t$.when.apply( $, promises ).then( readyDeferred.resolve );\n\t\t\tsetTimeout( readyDeferred.resolve, 1000 );\n\t\t\treadyDeferred.promise().then( function () {\n\t\t\t\t// only replace serverside render once entire view has rendered\n\t\t\t\t// and images are settled, ensuring a smooth transition\n\t\t\t\t$container.show().siblings().remove();\n\t\t\t\tthis.ready();\n\n\t\t\t\t// Restore the user's previous session from localstorage if necessary\n\t\t\t\tthis.restorePageStateIfNecessary();\n\t\t\t}.bind( this ) );\n\t\t}.bind( this ) );\n\t}\n};\n</script>\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/components/DidYouMean.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/components/EmptyState.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/components/EndOfResults.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/components/NamespaceFilterDialog.vue","messages":[{"ruleId":"es-x/no-array-prototype-keys","severity":2,"message":"ES2015 'Array.prototype.keys' method is forbidden.","line":136,"column":5,"nodeType":"MemberExpression","messageId":"forbidden","endLine":136,"endColumn":16},{"ruleId":"es-x/no-array-prototype-keys","severity":2,"message":"ES2015 'Array.prototype.keys' method is forbidden.","line":146,"column":11,"nodeType":"MemberExpression","messageId":"forbidden","endLine":146,"endColumn":22}],"suppressedMessages":[{"ruleId":"vue/no-computed-properties-in-data","severity":2,"message":"The computed property cannot be used in `data()` because it is before initialization.","line":110,"column":19,"nodeType":"MemberExpression","messageId":"cannotBeUsed","endLine":110,"endColumn":36,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"vue/no-computed-properties-in-data","severity":2,"message":"The computed property cannot be used in `data()` because it is before initialization.","line":112,"column":20,"nodeType":"MemberExpression","messageId":"cannotBeUsed","endLine":112,"endColumn":38,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"vue/no-unused-properties","severity":2,"message":"'select' of method found, but never used.","line":207,"column":3,"nodeType":"Identifier","messageId":"unused","endLine":207,"endColumn":9,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"vue/no-unused-properties","severity":2,"message":"'reset' of method found, but never used.","line":224,"column":3,"nodeType":"Identifier","messageId":"unused","endLine":224,"endColumn":8,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":2,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<template>\n\t<sd-dialog\n\t\tclass=\"sdms-namespace-dialog\"\n\t\t:active=\"active\"\n\t\t:title=\"dialogTitle\"\n\t\t:progressive-action=\"dialogAction\"\n\t\t:progressive-action-disabled=\"disableDialogAction\"\n\t\t@progress=\"onProgress\"\n\t\t@close=\"cancel\"\n\t>\n\t\t<div>\n\t\t\t<div class=\"sdms-namespace-dialog__radios\">\n\t\t\t\t<sd-radio\n\t\t\t\t\tv-for=\"item in items\"\n\t\t\t\t\t:key=\"item.value\"\n\t\t\t\t\tv-model=\"selectedRadio\"\n\t\t\t\t\tname=\"namespaces\"\n\t\t\t\t\t:input-value=\"item.value\"\n\t\t\t\t>\n\t\t\t\t\t{{ item.label }}\n\t\t\t\t</sd-radio>\n\t\t\t</div>\n\n\t\t\t<div class=\"sdms-namespace-dialog__custom\">\n\t\t\t\t<sd-checkbox\n\t\t\t\t\tv-for=\"namespace in formattedNamespaces\"\n\t\t\t\t\t:key=\"namespace.value\"\n\t\t\t\t\tv-model=\"selectedCustom\"\n\t\t\t\t\t:input-value=\"namespace.value\"\n\t\t\t\t\t:disabled=\"!isCustom\"\n\t\t\t\t>\n\t\t\t\t\t{{ namespace.label }}\n\t\t\t\t</sd-checkbox>\n\t\t\t</div>\n\t\t</div>\n\t</sd-dialog>\n</template>\n\n<script>\nvar sdDialog = require( './base/Dialog.vue' ),\n\tsdRadio = require( './base/Radio.vue' ),\n\tsdCheckbox = require( './base/Checkbox.vue' );\n\n/**\n * @file NamespaceFilterDialog.vue\n *\n * This component consists of a dialog that contains namespace filter options.\n * Data—both the filter keyword and a custom list of selected namespaces—is\n * handled via v-model and emitted up to the SearchFilters component.\n */\n// @vue/component\nmodule.exports = exports = {\n\tname: 'NamespaceFilterDialog',\n\n\tcompatConfig: {\n\t\tCOMPONENT_V_MODEL: false\n\t},\n\n\tcomponents: {\n\t\t'sd-dialog': sdDialog,\n\t\t'sd-radio': sdRadio,\n\t\t'sd-checkbox': sdCheckbox\n\t},\n\n\tprops: {\n\t\t/**\n\t\t * Options for the filter.\n\t\t */\n\t\titems: {\n\t\t\ttype: Array,\n\t\t\trequired: true\n\t\t},\n\n\t\t/**\n\t\t * A list of all namespaces keyed on their namespace ID.\n\t\t */\n\t\tnamespaces: {\n\t\t\ttype: Object,\n\t\t\trequired: true\n\t\t},\n\n\t\t/**\n\t\t * A list of all supported namespace groups as well as the namespace\n\t\t * IDs they contain\n\t\t */\n\t\tnamespaceGroups: {\n\t\t\ttype: Object,\n\t\t\trequired: true\n\t\t},\n\n\t\t/**\n\t\t * Whether or not the dialog should appear.\n\t\t */\n\t\tactive: {\n\t\t\ttype: Boolean\n\t\t},\n\n\t\t/**\n\t\t * Initial value of the filter (defaults to 'all' in the parent).\n\t\t */\n\t\tinitialValue: {\n\t\t\ttype: String,\n\t\t\trequired: true\n\t\t}\n\t},\n\n\tdata: function () {\n\t\treturn {\n\t\t\t// eslint-disable-next-line vue/no-computed-properties-in-data\n\t\t\tselectedRadio: this.initialRadio,\n\t\t\t// eslint-disable-next-line vue/no-computed-properties-in-data\n\t\t\tselectedCustom: this.initialCustom,\n\t\t\tdialogTitle: this.$i18n( 'mediasearch-filter-namespace-dialog-title' ).text(),\n\t\t\tdialogAction: this.$i18n( 'mediasearch-filter-namespace-dialog-progressive-action' ).text()\n\t\t};\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * The initially selected namespace keyword.\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tinitialRadio: function () {\n\t\t\treturn this.initialValue in this.namespaceGroups ?\n\t\t\t\tthis.initialValue : 'all';\n\t\t},\n\n\t\t/**\n\t\t * The initially selected custom namespace(s).\n\t\t *\n\t\t * @return {Array}\n\t\t */\n\t\tinitialCustom: function () {\n\t\t\treturn this.initialValue in this.namespaceGroups ?\n\t\t\t\tObject.keys( this.namespaceGroups.custom ) : this.initialValue.split( '|' );\n\t\t},\n\n\t\t/**\n\t\t * An array of objects with namespace data for display, including a\n\t\t * label (human-readable namespace prefix) and a value (namespace id).\n\t\t *\n\t\t * @return {Array}\n\t\t */\n\t\tformattedNamespaces: function () {\n\t\t\treturn Object.keys( this.namespaces ).map( function ( id ) {\n\t\t\t\treturn {\n\t\t\t\t\tlabel: id === '0' ?\n\t\t\t\t\t\t// Main namespace, Gallery, without the parentheses\n\t\t\t\t\t\tmw.msg( 'blanknamespace' ).replace( /^[(]?/, '' ).replace( /[)]?$/, '' ) :\n\t\t\t\t\t\t// Namespace prefix, with space instead of underscore\n\t\t\t\t\t\tthis.namespaces[ id ].replace( /_/g, ' ' ),\n\t\t\t\t\tvalue: id\n\t\t\t\t};\n\t\t\t}, this );\n\t\t},\n\n\t\t/**\n\t\t * Whether the custom radio is selected.\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisCustom: function () {\n\t\t\treturn this.selectedRadio === 'custom';\n\t\t},\n\n\t\t/**\n\t\t * If \"custom\" is selected with no checkboxes, disable Submit button.\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tdisableDialogAction: function () {\n\t\t\treturn this.isCustom && this.selectedCustom.length === 0;\n\t\t}\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * When the user closes the dialog without submitting.\n\t\t */\n\t\tcancel: function () {\n\t\t\t// Close the dialog.\n\t\t\tthis.$emit( 'close' );\n\n\t\t\t// Reset to the last submitted values (or default).\n\t\t\tthis.selectedRadio = this.initialRadio;\n\t\t\tthis.selectedCustom = this.initialCustom;\n\t\t},\n\n\t\t/**\n\t\t * Submit the namespace group to be stored in state, or, if a custom\n\t\t * list of namespaces is selected, submit a pipe-separated list of\n\t\t * namespace IDs.\n\t\t */\n\t\tonProgress: function () {\n\t\t\tvar value = this.isCustom ? this.selectedCustom.join( '|' ) : this.selectedRadio;\n\t\t\tthis.$emit( 'submit', value );\n\t\t\tthis.$emit( 'close' );\n\t\t},\n\n\t\t/**\n\t\t * Select a value (and custom namespaces, if provided).\n\t\t *\n\t\t * @param {string} selection\n\t\t */\n\t\t// eslint-disable-next-line vue/no-unused-properties\n\t\tselect: function ( selection ) {\n\t\t\tif ( this.namespaceGroups[ selection ] ) {\n\t\t\t\t// selection matches one of the pre-defined namespace groups\n\t\t\t\tthis.selectedRadio = selection;\n\t\t\t\tthis.selectedCustom = this.initialCustom;\n\t\t\t} else {\n\t\t\t\t// selection is a string of arbitrary namespace IDs and\n\t\t\t\t// needs to be parsed\n\t\t\t\tthis.selectedRadio = 'custom';\n\t\t\t\tthis.selectedCustom = selection.split( '|' );\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Reset to the default values.\n\t\t */\n\t\t// eslint-disable-next-line vue/no-unused-properties\n\t\treset: function () {\n\t\t\tthis.selectedRadio = this.initialRadio;\n\t\t\tthis.selectedCustom = this.initialCustom;\n\t\t}\n\t}\n};\n</script>\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/components/NoResults.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/components/QuickView.vue","messages":[],"suppressedMessages":[{"ruleId":"vue/no-unused-properties","severity":2,"message":"'focus' of method found, but never used.","line":608,"column":3,"nodeType":"Identifier","messageId":"unused","endLine":608,"endColumn":8,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'search_result_page_title' is not in camel case.","line":679,"column":5,"nodeType":"Identifier","messageId":"notCamelCase","endLine":679,"endColumn":29,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'search_media_type' is not in camel case.","line":688,"column":5,"nodeType":"Identifier","messageId":"notCamelCase","endLine":688,"endColumn":22,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/components/SearchError.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/components/SearchFilters.vue","messages":[{"ruleId":"es-x/no-array-prototype-keys","severity":2,"message":"ES2015 'Array.prototype.keys' method is forbidden.","line":169,"column":4,"nodeType":"MemberExpression","messageId":"forbidden","endLine":169,"endColumn":15},{"ruleId":"es-x/no-array-prototype-keys","severity":2,"message":"ES2015 'Array.prototype.keys' method is forbidden.","line":189,"column":11,"nodeType":"MemberExpression","messageId":"forbidden","endLine":189,"endColumn":22},{"ruleId":"es-x/no-array-prototype-find","severity":2,"message":"ES2015 'Array.prototype.find' method is forbidden.","line":266,"column":11,"nodeType":"MemberExpression","messageId":"forbidden","endLine":266,"endColumn":34},{"ruleId":"es-x/no-array-prototype-find","severity":2,"message":"ES2015 'Array.prototype.find' method is forbidden.","line":286,"column":21,"nodeType":"MemberExpression","messageId":"forbidden","endLine":286,"endColumn":44}],"suppressedMessages":[{"ruleId":"vue/no-unused-properties","severity":2,"message":"'observerOptions' of data found, but never used.","line":110,"column":4,"nodeType":"Identifier","messageId":"unused","endLine":110,"endColumn":19,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"vue/no-unused-properties","severity":2,"message":"'observerElement' of data found, but never used.","line":114,"column":4,"nodeType":"Identifier","messageId":"unused","endLine":114,"endColumn":19,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'search_media_type' is not in camel case.","line":304,"column":6,"nodeType":"Identifier","messageId":"notCamelCase","endLine":304,"endColumn":23,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'search_filter_type' is not in camel case.","line":305,"column":6,"nodeType":"Identifier","messageId":"notCamelCase","endLine":305,"endColumn":24,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'search_filter_value' is not in camel case.","line":306,"column":6,"nodeType":"Identifier","messageId":"notCamelCase","endLine":306,"endColumn":25,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'prior_search_filter_type' is not in camel case.","line":307,"column":6,"nodeType":"Identifier","messageId":"notCamelCase","endLine":307,"endColumn":30,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'prior_search_filter_value' is not in camel case.","line":308,"column":6,"nodeType":"Identifier","messageId":"notCamelCase","endLine":308,"endColumn":31,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'search_media_type' is not in camel case.","line":324,"column":6,"nodeType":"Identifier","messageId":"notCamelCase","endLine":324,"endColumn":23,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'search_filter_type' is not in camel case.","line":325,"column":6,"nodeType":"Identifier","messageId":"notCamelCase","endLine":325,"endColumn":24,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'search_filter_value' is not in camel case.","line":326,"column":6,"nodeType":"Identifier","messageId":"notCamelCase","endLine":326,"endColumn":25,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'prior_search_filter_type' is not in camel case.","line":327,"column":6,"nodeType":"Identifier","messageId":"notCamelCase","endLine":327,"endColumn":30,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'prior_search_filter_value' is not in camel case.","line":328,"column":6,"nodeType":"Identifier","messageId":"notCamelCase","endLine":328,"endColumn":31,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<template>\n\t<div class=\"sdms-search-filters-wrapper\" :class=\"rootClasses\">\n\t\t<div\n\t\t\tref=\"filters\"\n\t\t\tclass=\"sdms-search-filters\"\n\t\t\trole=\"group\"\n\t\t\t:aria-label=\"filtersLabel\"\n\t\t\t:aria-describedby=\"searchCountId\"\n\t\t\ttabindex=\"0\"\n\t\t\t@scroll.passive=\"onScroll\"\n\t\t>\n\t\t\t<div v-for=\"( filter, index ) in searchFilters\" :key=\"'filter-' + index\">\n\t\t\t\t<!-- Namespace filter requires special treatment; see below. -->\n\t\t\t\t<!-- Sort filter has slightly different behavior from other\n\t\t\t\tnon-namespace filters because one of the two options\n\t\t\t\t(relevance or recency) must always be selected. For other\n\t\t\t\tfilters, a generic label must be shown whenever their value\n\t\t\t\tis un-set. See T285349 for more context. -->\n\t\t\t\t<sd-select\n\t\t\t\t\tv-if=\"filter.type !== 'namespace'\"\n\t\t\t\t\t:ref=\"filter.type\"\n\t\t\t\t\t:class=\"getFilterClasses( filter.type )\"\n\t\t\t\t\t:name=\"filter.type\"\n\t\t\t\t\t:items=\"filter.items\"\n\t\t\t\t\t:label=\"getFilterDefaultLabel( filter.type )\"\n\t\t\t\t\t:initial-selected-item-index=\"filter.type === 'sort' ? 0 : -1\"\n\t\t\t\t\t:prefix=\"getFilterPrefix( filter.type )\"\n\t\t\t\t\t@select=\"onSelect( $event, filter.type )\"\n\t\t\t\t>\n\t\t\t\t</sd-select>\n\n\t\t\t\t<!-- Namespace filter is represented as a button that\n\t\t\t\tlaunches a modal -->\n\t\t\t\t<sd-button\n\t\t\t\t\tv-else\n\t\t\t\t\t:key=\"'filter-namespace-' + index\"\n\t\t\t\t\tclass=\"sdms-search-filters__namespace\"\n\t\t\t\t\t:class=\"namespaceFilterClasses\"\n\t\t\t\t\t@click=\"namespaceFilterDialogActive = true\"\n\t\t\t\t>\n\t\t\t\t\t{{ namespaceFilterLabel }}\n\t\t\t\t</sd-button>\n\t\t\t</div>\n\n\t\t\t<div class=\"sdms-search-results-count\">\n\t\t\t\t<span v-if=\"showResultsCount\" :id=\"searchCountId\">\n\t\t\t\t\t{{ resultsCount }}\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<namespace-filter-dialog\n\t\t\tv-if=\"namespaceFilter\"\n\t\t\tref=\"namespace\"\n\t\t\t:items=\"namespaceFilter.items\"\n\t\t\t:namespaces=\"namespaceFilter.data.namespaceGroups.all_incl_file\"\n\t\t\t:namespace-groups=\"namespaceFilter.data.namespaceGroups\"\n\t\t\t:active=\"namespaceFilterDialogActive\"\n\t\t\t:initial-value=\"namespaceFilterValue\"\n\t\t\t@submit=\"onSelect( $event, 'namespace' )\"\n\t\t\t@close=\"namespaceFilterDialogActive = false\"\n\t\t>\n\t\t</namespace-filter-dialog>\n\t</div>\n</template>\n\n<script>\n/**\n * @file SearchFilters.vue\n *\n * Container for the search filters for a tab. Displays the filters and handles\n * change in filter value. When a filter value changes, the Vuex state is\n * updated with the new filter value, and a new-search event is emitted so the\n * parent App component can dispatch the search action.\n */\nvar mapState = require( 'vuex' ).mapState,\n\tmapMutations = require( 'vuex' ).mapMutations,\n\tSdSelect = require( './base/Select.vue' ),\n\tSdButton = require( './base/Button.vue' ),\n\tNamespaceFilterDialog = require( './NamespaceFilterDialog.vue' ),\n\tSearchFilter = require( '../models/SearchFilter.js' ),\n\tsearchOptions = require( './../data/searchOptions.json' ),\n\tobserver = require( './base/mixins/observer.js' );\n\n// @vue/component\nmodule.exports = exports = {\n\tname: 'SearchFilters',\n\n\tcomponents: {\n\t\t'sd-select': SdSelect,\n\t\t'sd-button': SdButton,\n\t\t'namespace-filter-dialog': NamespaceFilterDialog\n\t},\n\n\tmixins: [ observer ],\n\n\tprops: {\n\t\tmediaType: {\n\t\t\ttype: String,\n\t\t\trequired: true\n\t\t}\n\t},\n\n\tdata: function () {\n\t\treturn {\n\t\t\thasOverflow: false,\n\t\t\tisScrolledToEnd: false,\n\t\t\tnamespaceFilterDialogActive: false,\n\t\t\t// eslint-disable-next-line vue/no-unused-properties\n\t\t\tobserverOptions: {\n\t\t\t\tthreshold: 1\n\t\t\t},\n\t\t\t// eslint-disable-next-line vue/no-unused-properties\n\t\t\tobserverElement: '.sdms-search-results-count'\n\t\t};\n\t},\n\n\tcomputed: $.extend( {}, mapState( [\n\t\t'totalHits',\n\t\t'filterValues'\n\t] ), {\n\t\t/**\n\t\t * Due to this component being used multiple times,\n\t\t * we need to ensure the ID is unique\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tsearchCountId: function () {\n\t\t\treturn this.mediaType + '-count';\n\t\t},\n\n\t\t/**\n\t\t * @return {string}\n\t\t */\n\t\tfiltersLabel: function () {\n\t\t\treturn this.mediaType + ' filters';\n\t\t},\n\n\t\t/**\n\t\t * @return {Object}\n\t\t */\n\t\trootClasses: function () {\n\t\t\treturn {\n\t\t\t\t'sdms-search-filters-wrapper--gradient': this.showGradient\n\t\t\t};\n\t\t},\n\n\t\tshowGradient: function () {\n\t\t\treturn this.hasOverflow && !this.isScrolledToEnd;\n\t\t},\n\n\t\t/**\n\t\t * @return {Object}\n\t\t */\n\t\tnamespaceFilterClasses: function () {\n\t\t\tvar selected = ( 'namespace' in this.filterValues[ this.mediaType ] );\n\t\t\treturn {\n\t\t\t\t'sdms-search-filters__namespace--selected': selected\n\t\t\t};\n\t\t},\n\n\t\t/**\n\t\t * @return {Array} SearchFilter objects for this media type.\n\t\t */\n\t\tsearchFilters: function () {\n\t\t\tvar optionsForType = searchOptions[ this.mediaType ],\n\t\t\t\tfilters = [];\n\n\t\t\tObject.keys( optionsForType ).forEach( function ( filterName ) {\n\t\t\t\tvar filterData = optionsForType[ filterName ],\n\t\t\t\t\tfilter = new SearchFilter(\n\t\t\t\t\t\tfilterName,\n\t\t\t\t\t\tfilterData.items,\n\t\t\t\t\t\tfilterData.data\n\t\t\t\t\t);\n\t\t\t\tfilters.push( filter );\n\t\t\t} );\n\t\t\treturn filters;\n\t\t},\n\n\t\t/**\n\t\t * Key names (not values) of all active filters for the given tab;\n\t\t * Having a shorthand computed property for this makes it easier to\n\t\t * watch for changes.\n\t\t *\n\t\t * @return {Array} Empty array or [ \"imageres\", \"filemime\" ], etc\n\t\t */\n\t\tcurrentActiveFilters: function () {\n\t\t\treturn Object.keys( this.filterValues[ this.mediaType ] );\n\t\t},\n\n\t\t/**\n\t\t * Number of results should only display if results exist.\n\t\t *\n\t\t * @return {boolean} Whether to display the results count\n\t\t */\n\t\tshowResultsCount: function () {\n\t\t\treturn this.totalHits[ this.mediaType ] > 0;\n\t\t},\n\n\t\t/**\n\t\t * String representing the number of search results.\n\t\t *\n\t\t * @return {Object} Message object\n\t\t */\n\t\tresultsCount: function () {\n\t\t\treturn this.$i18n(\n\t\t\t\t'mediasearch-results-count',\n\t\t\t\tmw.language.convertNumber( this.totalHits[ this.mediaType ] )\n\t\t\t).text();\n\t\t},\n\n\t\t/**\n\t\t * Get a human-readable label for the namespace filter button.\n\t\t *\n\t\t * @return {Object}\n\t\t */\n\t\tnamespaceFilterLabel: function () {\n\t\t\tvar namespaceGroups = this.namespaceFilter.data.namespaceGroups,\n\t\t\t\tmessageKey,\n\t\t\t\tfilterValue = 'all';\n\n\t\t\t// If there is a namespace filter value...\n\t\t\tif ( 'namespace' in this.filterValues[ this.mediaType ] ) {\n\t\t\t\t// If the filter value is one of the namespace groups, use that.\n\t\t\t\t// Otherwise, it's a string of custom namespaces, so use the\n\t\t\t\t// 'custom' label.\n\t\t\t\tfilterValue = namespaceGroups[ this.filterValues[ this.mediaType ].namespace ] ?\n\t\t\t\t\tthis.filterValues[ this.mediaType ].namespace : 'custom';\n\t\t\t}\n\n\t\t\tmessageKey = 'mediasearch-filter-namespace-' + filterValue;\n\n\t\t\t// Return the label message, which takes the filter value as a\n\t\t\t// param and will return something like \"Namespace: Discussion\".\n\t\t\t// The following messages are used here:\n\t\t\t// * mediasearch-filter-namespace-all\n\t\t\t// * mediasearch-filter-namespace-discussion\n\t\t\t// * mediasearch-filter-namespace-help\n\t\t\t// * mediasearch-filter-namespace-custom\n\t\t\treturn this.$i18n(\n\t\t\t\t'mediasearch-filter-namespace-label',\n\t\t\t\tthis.$i18n( messageKey )\n\t\t\t).text();\n\t\t},\n\n\t\t/**\n\t\t * Current value of the namespace filter (defaults to 'all').\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tnamespaceFilterValue: function () {\n\t\t\treturn 'namespace' in this.filterValues[ this.mediaType ] ?\n\t\t\t\tthis.filterValues[ this.mediaType ].namespace : 'all';\n\t\t},\n\n\t\t/**\n\t\t * Get the namespace search filter, if it exists.\n\t\t *\n\t\t * @return {Object|undefined}\n\t\t */\n\t\tnamespaceFilter: function () {\n\t\t\t// Array.prototype.find is polyfilled so we can use this\n\t\t\t// ES6 array method here\n\n\t\t\treturn this.searchFilters.find( function ( filter ) {\n\t\t\t\treturn filter.type === 'namespace';\n\t\t\t} );\n\t\t}\n\t} ),\n\n\tmethods: $.extend( {}, mapMutations( [\n\t\t'addFilterValue',\n\t\t'removeFilterValue'\n\t] ), {\n\t\t/**\n\t\t * Handle filter change.\n\t\t *\n\t\t * @param {string|Object} value The new filter value; namespace filter values are objects\n\t\t * @param {string} filterType\n\t\t * @fires filter-change\n\t\t */\n\t\tonSelect: function ( value, filterType ) {\n\t\t\tvar oldValue = this.filterValues[ this.mediaType ][ filterType ] || '',\n\n\t\t\t\tcurrentFilter = this.searchFilters.find( function ( filter ) {\n\t\t\t\t\treturn filter.type === filterType;\n\t\t\t\t} );\n\n\t\t\t// for logging purposes, we only want a simple string value\n\t\t\tfunction normalizedValue( v ) {\n\t\t\t\treturn v.value ? v.value : v;\n\t\t\t}\n\n\t\t\tif ( value ) {\n\t\t\t\tthis.addFilterValue( {\n\t\t\t\t\tmediaType: this.mediaType,\n\t\t\t\t\tfilterType: filterType,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t\t/* eslint-disable camelcase */\n\t\t\t\tthis.$log( {\n\t\t\t\t\taction: 'filter_change',\n\t\t\t\t\tsearch_media_type: this.mediaType,\n\t\t\t\t\tsearch_filter_type: filterType,\n\t\t\t\t\tsearch_filter_value: normalizedValue( value ),\n\t\t\t\t\tprior_search_filter_type: filterType,\n\t\t\t\t\tprior_search_filter_value: normalizedValue( oldValue )\n\t\t\t\t} );\n\t\t\t\t/* eslint-enable camelcase */\n\t\t\t} else {\n\t\t\t\tthis.removeFilterValue( {\n\t\t\t\t\tmediaType: this.mediaType,\n\t\t\t\t\tfilterType: filterType\n\t\t\t\t} );\n\n\t\t\t\t// Un-set the filter so that the initial label is displayed\n\t\t\t\t// when an \"empty value\" option is selected\n\t\t\t\tthis.getRef( currentFilter ).reset();\n\n\t\t\t\t/* eslint-disable camelcase */\n\t\t\t\tthis.$log( {\n\t\t\t\t\taction: 'filter_change',\n\t\t\t\t\tsearch_media_type: this.mediaType,\n\t\t\t\t\tsearch_filter_type: filterType,\n\t\t\t\t\tsearch_filter_value: '',\n\t\t\t\t\tprior_search_filter_type: filterType,\n\t\t\t\t\tprior_search_filter_value: normalizedValue( oldValue )\n\t\t\t\t} );\n\t\t\t\t/* eslint-enable camelcase */\n\t\t\t}\n\n\t\t\t// Tell the App component to do a new search and update the URL\n\t\t\t// params\n\t\t\tthis.$emit( 'filter-change', {\n\t\t\t\tmediaType: this.mediaType,\n\t\t\t\tfilterType: filterType,\n\t\t\t\tvalue: value\n\t\t\t} );\n\t\t},\n\n\t\t/**\n\t\t * We need a class for select lists where a non-default item is selected.\n\t\t *\n\t\t * @param {string} filterType\n\t\t * @return {Object}\n\t\t */\n\t\tgetFilterClasses: function ( filterType ) {\n\t\t\treturn {\n\t\t\t\t'sdms-search-filter--selected': this.currentActiveFilters.indexOf( filterType ) !== -1\n\t\t\t};\n\t\t},\n\n\t\t/**\n\t\t * Add select list prefixes per filter type.\n\t\t *\n\t\t * @param {string} filterType\n\t\t * @return {mw.Message} message object\n\t\t */\n\t\tgetFilterPrefix: function ( filterType ) {\n\t\t\tif ( filterType === 'sort' ) {\n\t\t\t\treturn this.$i18n( 'mediasearch-filter-sort-label' ).text();\n\t\t\t}\n\n\t\t\treturn '';\n\t\t},\n\n\t\t/**\n\t\t * @param {string} filterType\n\t\t * @return {mw.Message} message object\n\t\t */\n\t\tgetFilterDefaultLabel: function ( filterType ) {\n\t\t\tswitch ( filterType ) {\n\t\t\t\tcase 'filemime':\n\t\t\t\t\treturn this.$i18n( 'mediasearch-filter-file-type' ).text();\n\t\t\t\tcase 'fileres':\n\t\t\t\t\treturn this.$i18n( 'mediasearch-filter-size' ).text();\n\t\t\t\tcase 'assessment':\n\t\t\t\t\treturn this.$i18n( 'mediasearch-filter-assessment' ).text();\n\t\t\t\tcase 'haslicense':\n\t\t\t\t\treturn this.$i18n( 'mediasearch-filter-license' ).text();\n\t\t\t\tdefault:\n\t\t\t\t\treturn;\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Get the ref for a filter.\n\t\t *\n\t\t * Because the namespace filter is handled outside the v-for loop that\n\t\t * creates the other filter elements, we need to access its ref a little\n\t\t * differently.\n\t\t *\n\t\t * @param {Object} filter A search filter object\n\t\t * @return {Object}\n\t\t */\n\t\tgetRef: function ( filter ) {\n\t\t\treturn filter.type === 'namespace' ?\n\t\t\t\tthis.$refs[ filter.type ] :\n\t\t\t\t// VUE 3 MIGRATION: these refs are arrays in Vue 2 but not in Vue 3\n\t\t\t\tthis.$refs[ filter.type ][ 0 ] || this.$refs[ filter.type ];\n\t\t},\n\n\t\tresetAllFilters: function () {\n\t\t\tthis.searchFilters.forEach( function ( filter ) {\n\t\t\t\tthis.getRef( filter ).reset();\n\t\t\t}.bind( this ) );\n\t\t},\n\n\t\t/**\n\t\t * Set each filter component's state to match the appropriate\n\t\t * value in Vuex\n\t\t */\n\t\tsynchronizeFilters: function () {\n\t\t\tthis.searchFilters.forEach( function ( filter ) {\n\t\t\t\tvar currentValue = this.filterValues[ this.mediaType ][ filter.type ],\n\t\t\t\t\tref = this.getRef( filter );\n\n\t\t\t\tif ( currentValue ) {\n\t\t\t\t\t// Attempt to set each filter to the specified value in\n\t\t\t\t\t// Vuex.  If the value doesn't exist, remove the value from\n\t\t\t\t\t// the Vuex store and emit a filter-change event so that the\n\t\t\t\t\t// page and URL get updated.\n\t\t\t\t\ttry {\n\t\t\t\t\t\tref.select( currentValue );\n\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\tthis.removeFilterValue( {\n\t\t\t\t\t\t\tmediaType: this.mediaType,\n\t\t\t\t\t\t\tfilterType: filter.type\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tthis.$emit( 'filter-change', {\n\t\t\t\t\t\t\tmediaType: this.mediaType,\n\t\t\t\t\t\t\tfilterType: filter.type\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tref.reset();\n\t\t\t\t}\n\t\t\t}.bind( this ) );\n\t\t},\n\n\t\t/**\n\t\t * Handle horizontal scrolling events in the filters bar when they\n\t\t * must overflow (smaller screens only), to determine whether or not\n\t\t * the user has scrolled to the end (plus or minus 1 pixel) of the\n\t\t * content.\n\t\t *\n\t\t * @param {Event} e\n\t\t */\n\t\tonScroll: function ( e ) {\n\t\t\tvar el = e.target,\n\t\t\t\tscrollMax = el.scrollWidth - el.clientWidth;\n\n\t\t\t// Allow a margin of error of 1px due to JS rounding weirdness;\n\t\t\tif ( scrollMax - el.scrollLeft <= 1 ) {\n\t\t\t\tthis.isScrolledToEnd = true;\n\t\t\t} else {\n\t\t\t\tthis.isScrolledToEnd = false;\n\t\t\t}\n\t\t}\n\t} ),\n\n\twatch: {\n\t\t/**\n\t\t * Programmatically set or reset filters if Vuex state changes for\n\t\t * reasons other than the user setting filters manually (clicking the\n\t\t * clear button, URL filter params, popstate, etc)\n\t\t */\n\t\tcurrentActiveFilters: {\n\t\t\thandler: function () {\n\t\t\t\tthis.synchronizeFilters();\n\t\t\t},\n\t\t\tdeep: true\n\t\t},\n\n\t\tobserverIntersecting: {\n\t\t\thandler: function ( intersecting ) {\n\t\t\t\tthis.hasOverflow = !intersecting;\n\t\t\t},\n\t\t\timmediate: true\n\t\t}\n\t},\n\n\t/**\n\t * If filters have already been set at the time of page initialization\n\t * via URL params, update the relevant Select child component with\n\t * the appropriate value\n\t */\n\tmounted: function () {\n\t\tthis.synchronizeFilters();\n\t}\n};\n</script>\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/components/SearchResults.vue","messages":[{"ruleId":"es-x/no-array-prototype-keys","severity":2,"message":"ES2015 'Array.prototype.keys' method is forbidden.","line":319,"column":6,"nodeType":"MemberExpression","messageId":"forbidden","endLine":319,"endColumn":17}],"suppressedMessages":[{"ruleId":"camelcase","severity":2,"message":"Identifier 'search_media_type' is not in camel case.","line":344,"column":7,"nodeType":"Identifier","messageId":"notCamelCase","endLine":344,"endColumn":24,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'search_result_page_title' is not in camel case.","line":345,"column":7,"nodeType":"Identifier","messageId":"notCamelCase","endLine":345,"endColumn":31,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'search_result_position' is not in camel case.","line":346,"column":7,"nodeType":"Identifier","messageId":"notCamelCase","endLine":346,"endColumn":29,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'search_result_has_quickview' is not in camel case.","line":347,"column":7,"nodeType":"Identifier","messageId":"notCamelCase","endLine":347,"endColumn":34,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-unused-vars","severity":2,"message":"'title' is defined but never used.","line":545,"column":29,"nodeType":"Identifier","messageId":"unusedVar","endLine":545,"endColumn":34,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-unused-vars","severity":2,"message":"'index' is defined but never used.","line":545,"column":36,"nodeType":"Identifier","messageId":"unusedVar","endLine":545,"endColumn":41,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<template>\n\t<div class=\"sdms-search-results\">\n\t\t<div class=\"sdms-search-results__list-wrapper\" :class=\"listWrapperClasses\">\n\t\t\t<div\n\t\t\t\tref=\"list\"\n\t\t\t\tclass=\"sdms-search-results__list\"\n\t\t\t\t:class=\"listClasses\"\n\t\t\t>\n\t\t\t\t<!-- Appending 'parent-' to class and style so we can access\n\t\t\t\tthem in the component and prevent vue from throwing a warning,\n\t\t\t\twhen migration to vue 3 is completed we can safely remove 'parent-' from this file and all the -results.vue files -->\n\t\t\t\t<component\n\t\t\t\t\t:is=\"resultComponent\"\n\t\t\t\t\tv-for=\"( result, index ) in results[ mediaType ]\"\n\t\t\t\t\tv-bind=\"result\"\n\t\t\t\t\t:ref=\"result.title\"\n\t\t\t\t\t:key=\"index\"\n\t\t\t\t\t:parent-class=\"getResultClass( result.title )\"\n\t\t\t\t\t:parent-style=\"resultStyle\"\n\t\t\t\t\t@click=\"onResultClick( result.title, index )\"\n\t\t\t\t\t@show-details=\"showDetails( $event, index )\"\n\t\t\t\t>\n\t\t\t\t</component>\n\t\t\t</div>\n\n\t\t\t<!-- Loading indicator if results are still pending -->\n\t\t\t<spinner v-if=\"pending[ mediaType ]\" class=\"sdms-search-results__pending\"></spinner>\n\n\t\t\t<!-- When the autoload counter for a given tab reaches zero,\n\t\t\tdon't load more results until user explicitly clicks on a\n\t\t\t\"load more\" button; this resets the autoload count -->\n\t\t\t<sd-button\n\t\t\t\tv-else-if=\"hasMoreResults\"\n\t\t\t\tclass=\"sdms-load-more\"\n\t\t\t\t:progressive=\"true\"\n\t\t\t\t@click=\"$emit( 'load-more' )\"\n\t\t\t>\n\t\t\t\t{{ $i18n( 'mediasearch-load-more-results' ).text() }}\n\t\t\t</sd-button>\n\n\t\t\t<!-- If an invalid search has been detected, don't display\n\t\t\tanything else until it has been cleared -->\n\t\t\t<search-error v-if=\"hasError\"></search-error>\n\n\t\t\t<!-- No results message if search has completed and come back empty -->\n\t\t\t<no-results v-else-if=\"hasNoResults\"></no-results>\n\n\t\t\t<!-- End of results message if query can no longer be continued -->\n\t\t\t<end-of-results v-else-if=\"endOfResults\"></end-of-results>\n\n\t\t\t<!-- Empty-state encouraging user to search if they have not done so yet -->\n\t\t\t<empty-state v-else-if=\"shouldShowEmptyState\"></empty-state>\n\t\t</div>\n\n\t\t<!-- QuickView dialog for mobile skin. -->\n\t\t<template v-if=\"isMobileSkin\">\n\t\t\t<sd-dialog\n\t\t\t\tclass=\"sdms-search-results__details-dialog\"\n\t\t\t\t:active=\"!!details[ mediaType ]\"\n\t\t\t\t:headless=\"true\"\n\t\t\t\t@close=\"hideDetails\"\n\t\t\t\t@key=\"onDialogKeyup\"\n\t\t\t>\n\t\t\t\t<quick-view\n\t\t\t\t\tv-if=\"details[ mediaType ]\"\n\t\t\t\t\tv-bind=\"details[ mediaType ]\"\n\t\t\t\t\tref=\"quickview\"\n\t\t\t\t\t:key=\"details[ mediaType ].title\"\n\t\t\t\t\t:media-type=\"mediaType\"\n\t\t\t\t\t:is-dialog=\"true\"\n\t\t\t\t\t@close=\"hideDetails\"\n\t\t\t\t\t@previous=\"changeQuickViewResult( $event, -1 )\"\n\t\t\t\t\t@next=\"changeQuickViewResult( $event, 1 )\"\n\t\t\t\t></quick-view>\n\t\t\t</sd-dialog>\n\t\t</template>\n\n\t\t<!-- QuickView panel for desktop skin. -->\n\t\t<aside\n\t\t\tv-else\n\t\t\tref=\"aside\"\n\t\t\tclass=\"sdms-search-results__details\"\n\t\t\t:class=\"{ 'sdms-search-results__details--expanded': !!showQuickView }\"\n\t\t\t:hidden=\"!showQuickView\"\n\t\t>\n\t\t\t<quick-view\n\t\t\t\tv-if=\"details[ mediaType ]\"\n\t\t\t\tv-bind=\"details[ mediaType ]\"\n\t\t\t\tref=\"quickview\"\n\t\t\t\t:key=\"details[ mediaType ].title\"\n\t\t\t\t:media-type=\"mediaType\"\n\t\t\t\t@close=\"hideDetails\"\n\t\t\t\t@previous=\"changeQuickViewResult( $event, -1 )\"\n\t\t\t\t@next=\"changeQuickViewResult( $event, 1 )\"\n\t\t\t>\n\t\t\t</quick-view>\n\n\t\t\t<div v-else class=\"sdms-search-results__quickview-placeholder\">\n\t\t\t\t<spinner></spinner>\n\t\t\t</div>\n\t\t</aside>\n\t</div>\n</template>\n\n<script>\n/**\n * @file SearchResults.vue\n *\n * The SearchResults component is responsible for displaying a list or grid of\n * search results, regardless of media type. Appearance and behavior will vary\n * depending on the value of the mediaType prop.\n *\n * This component can also display a \"quickview\" preview element for a given\n * result, including some additional data fetched from the API.\n */\nvar mapState = require( 'vuex' ).mapState,\n\tmapMutations = require( 'vuex' ).mapMutations,\n\tmapGetters = require( 'vuex' ).mapGetters,\n\tmapActions = require( 'vuex' ).mapActions,\n\tImageResult = require( './results/ImageResult.vue' ),\n\tAudioResult = require( './results/AudioResult.vue' ),\n\tVideoResult = require( './results/VideoResult.vue' ),\n\tPageResult = require( './results/PageResult.vue' ),\n\tOtherResult = require( './results/OtherResult.vue' ),\n\tSdDialog = require( './base/Dialog.vue' ),\n\tSdButton = require( './base/Button.vue' ),\n\tSpinner = require( './Spinner.vue' ),\n\tQuickView = require( './QuickView.vue' ),\n\tNoResults = require( './NoResults.vue' ),\n\tEndOfResults = require( './EndOfResults.vue' ),\n\tEmptyState = require( './EmptyState.vue' ),\n\tSearchError = require( './SearchError.vue' );\n\n// @vue/component\nmodule.exports = exports = {\n\tname: 'SearchResults',\n\n\tcomponents: {\n\t\t'image-result': ImageResult,\n\t\t'video-result': VideoResult,\n\t\t'audio-result': AudioResult,\n\t\t'page-result': PageResult,\n\t\t'other-result': OtherResult,\n\t\t'quick-view': QuickView,\n\t\t'sd-dialog': SdDialog,\n\t\t'sd-button': SdButton,\n\t\tspinner: Spinner,\n\t\t'empty-state': EmptyState,\n\t\t'no-results': NoResults,\n\t\t'end-of-results': EndOfResults,\n\t\t'search-error': SearchError\n\t},\n\n\tprops: {\n\t\tmediaType: {\n\t\t\ttype: String,\n\t\t\trequired: true\n\t\t}\n\t},\n\n\tdata: function () {\n\t\treturn {\n\t\t\t// Whether to show the QuickView panel.\n\t\t\tshowQuickView: false,\n\t\t\t// Which quickview control to focus on when the panel opens.\n\t\t\tfocusOn: 'close',\n\t\t\t// Computed style attribute for results.\n\t\t\tresultStyle: null\n\t\t};\n\t},\n\n\tcomputed: $.extend( {}, mapState( [\n\t\t'continue',\n\t\t'details',\n\t\t'hasError',\n\t\t'initialized',\n\t\t'pending',\n\t\t'results'\n\t] ), mapGetters( [\n\t\t'allActiveDetails',\n\t\t'currentSearchTerm'\n\t] ), {\n\t\t/**\n\t\t * Which component should be used to display individual search results\n\t\t *\n\t\t * @return {string} image-result|video-result|page-result\n\t\t */\n\t\tresultComponent: function () {\n\t\t\tif ( this.mediaType === 'image' ) {\n\t\t\t\treturn 'image-result';\n\t\t\t} else {\n\t\t\t\treturn this.mediaType + '-result';\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * @return {Object} Dynamic classes for the \"list\" element's wrapper div\n\t\t */\n\t\tlistWrapperClasses: function () {\n\t\t\treturn {\n\t\t\t\t'sdms-search-results__list-wrapper--collapsed': !!this.showQuickView && !this.isMobileSkin\n\t\t\t};\n\t\t},\n\n\t\t/**\n\t\t * @return {Object} Dynamic classes for the \"list\" element\n\t\t */\n\t\tlistClasses: function () {\n\t\t\tvar listTypeModifier = 'sdms-search-results__list--' + this.mediaType,\n\t\t\t\tclassObject = {\n\t\t\t\t\t'sdms-search-results__list--collapsed': !!this.showQuickView && !this.isMobileSkin\n\t\t\t\t};\n\n\t\t\t// Without ES6 string interpolation generating a dynamic classname\n\t\t\t// as a key requires an extra step;\n\t\t\tclassObject[ listTypeModifier ] = true;\n\n\t\t\treturn classObject;\n\t\t},\n\n\t\t/**\n\t\t * @return {boolean}\n\t\t */\n\t\tisMobileSkin: function () {\n\t\t\treturn mw.config.get( 'skin' ) === 'minerva';\n\t\t},\n\n\t\t/**\n\t\t * @return {boolean}\n\t\t */\n\t\thasMoreResults: function () {\n\t\t\treturn !!this.continue[ this.mediaType ]; // we have a value for continue\n\t\t},\n\n\t\t/**\n\t\t * @return {boolean}\n\t\t */\n\t\thasNoResults: function () {\n\t\t\treturn this.currentSearchTerm.length > 0 && // user has entered a search term\n\t\t\t\tthis.results[ this.mediaType ].length === 0 && // tab has no results\n\t\t\t\t( this.continue[ this.mediaType ] === null ); // query cannot be continued\n\t\t},\n\n\t\t/**\n\t\t * @return {boolean}\n\t\t */\n\t\tendOfResults: function () {\n\t\t\treturn this.currentSearchTerm.length > 0 && // user has entered a search term\n\t\t\t\tthis.results[ this.mediaType ].length > 0 && // tab has some results\n\t\t\t\t( this.continue[ this.mediaType ] === null ); // query cannot be continued\n\t\t},\n\n\t\t/**\n\t\t * Whether to show the pre-search empty state; show this whenever a\n\t\t * search term is not present and there are no results to display\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tshouldShowEmptyState: function () {\n\t\t\treturn this.currentSearchTerm.length === 0 &&\n\t\t\t\tthis.results[ this.mediaType ] &&\n\t\t\t\tthis.results[ this.mediaType ].length === 0;\n\t\t}\n\t} ),\n\n\tmethods: $.extend( {}, mapMutations( [\n\t\t'setDetails',\n\t\t'clearDetails'\n\t] ), mapActions( [\n\t\t'fetchDetails'\n\t] ), {\n\t\t/**\n\t\t * Store the results of the fetchDetails API request as `this.details`\n\t\t * so that it can be passed to the QuickView component.\n\t\t *\n\t\t * This method also handles some UX nuances of opening the QuickView\n\t\t * panel and showing a placeholder UI while data is loading.\n\t\t *\n\t\t * @param {string} title\n\t\t * @param {number} index\n\t\t */\n\t\tshowDetails: function ( title, index ) {\n\t\t\tvar detailsTimeout;\n\n\t\t\t// Immediately open the QuickView aside. If the details haven't been\n\t\t\t// retrieved yet, a placeholder UI will display.\n\t\t\tthis.showQuickView = true;\n\n\t\t\tthis.$nextTick(\n\t\t\t\tfunction () {\n\t\t\t\t\t// Scroll the window to the top of the QuickView aside\n\t\t\t\t\t// (only happens on desktop skin)\n\t\t\t\t\tif ( this.$refs.aside ) {\n\t\t\t\t\t\tthis.$refs.aside.scrollIntoView();\n\t\t\t\t\t}\n\n\t\t\t\t\t// Scroll search results to the selected result, if needed\n\t\t\t\t\t// (e.g. if the user is scrolling through results via\n\t\t\t\t\t// keyboard nav or the QuickView nav buttons).\n\t\t\t\t\tthis.scrollIntoViewIfNeeded( title );\n\t\t\t\t}.bind( this )\n\t\t\t);\n\n\t\t\t// In cases where the details panel is already open and the user\n\t\t\t// opens a new result, we want to show the spinner while data is\n\t\t\t// loading, but only if it takes longer than half a second. That\n\t\t\t// way, for fast connections, the loading state will be less\n\t\t\t// noticeable.\n\t\t\tdetailsTimeout = setTimeout( function () {\n\t\t\t\tthis.clearDetails( { mediaType: this.mediaType } );\n\t\t\t}.bind( this ), 500 );\n\n\t\t\t// Get data for the item opened in QuickView.\n\t\t\tthis.fetchDetails( { title: title, mediaType: this.mediaType } ).then(\n\t\t\t\tfunction ( response ) {\n\t\t\t\t\tclearTimeout( detailsTimeout );\n\t\t\t\t\tvar searchedItemDetails;\n\n\t\t\t\t\tObject.keys( response.query.pages ).forEach(\n\t\t\t\t\t\tfunction ( key ) {\n\t\t\t\t\t\t\tif ( response.query.pages[ key ].title === title ) {\n\t\t\t\t\t\t\t\tsearchedItemDetails = response.query.pages[ key ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\n\t\t\t\t\tthis.setDetails( {\n\t\t\t\t\t\tmediaType: this.mediaType,\n\t\t\t\t\t\tdetails: searchedItemDetails\n\t\t\t\t\t} );\n\n\t\t\t\t\t// Let the QuickView component programatically manage focus\n\t\t\t\t\t// once it is displayed\n\t\t\t\t\tthis.$nextTick(\n\t\t\t\t\t\tfunction () {\n\t\t\t\t\t\t\tthis.$refs.quickview.focus( this.focusOn );\n\t\t\t\t\t\t}.bind( this )\n\t\t\t\t\t);\n\n\t\t\t\t\t// Updated from ID to Title for new schema T297400\n\t\t\t\t\t/* eslint-disable camelcase */\n\t\t\t\t\tthis.$log( {\n\t\t\t\t\t\taction: 'result_click',\n\t\t\t\t\t\tsearch_media_type: this.mediaType,\n\t\t\t\t\t\tsearch_result_page_title: title,\n\t\t\t\t\t\tsearch_result_position: index,\n\t\t\t\t\t\tsearch_result_has_quickview: true\n\t\t\t\t\t} );\n\t\t\t\t\t/* eslint-enable camelcase */\n\t\t\t\t}.bind( this )\n\t\t\t);\n\t\t},\n\n\t\t/**\n\t\t * Reset details data to null. Restores focus to the originating result\n\t\t * if an optional argument is provided.\n\t\t *\n\t\t * @param {boolean} restoreFocus\n\t\t */\n\t\thideDetails: function ( restoreFocus ) {\n\t\t\tif ( !this.details[ this.mediaType ] ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar originatingResultTitle = this.details[ this.mediaType ].title;\n\n\t\t\tif ( restoreFocus ) {\n\t\t\t\t// VUE 3 MIGRATION: these refs are arrays in Vue 2 but not in Vue 3\n\t\t\t\tvar result = this.$refs[ originatingResultTitle ][ 0 ] ||\n\t\t\t\t\tthis.$refs[ originatingResultTitle ];\n\t\t\t\tresult.focus();\n\t\t\t}\n\n\t\t\tthis.showQuickView = false;\n\t\t\tthis.clearDetails( { mediaType: this.mediaType } );\n\t\t\tthis.focusOn = 'close';\n\n\t\t\tthis.$log( {\n\t\t\t\taction: 'quickview_hide'\n\t\t\t} );\n\n\t\t\tthis.$nextTick(\n\t\t\t\tfunction () {\n\t\t\t\t\tthis.scrollIntoViewIfNeeded( originatingResultTitle );\n\t\t\t\t}.bind( this )\n\t\t\t);\n\t\t},\n\n\t\t/**\n\t\t * Scroll through results in QuickView via arrow keys.\n\t\t *\n\t\t * @param {boolean} shouldChangeFocus\n\t\t * @param {number} addend 1 for next, -1 for previous\n\t\t */\n\t\tchangeQuickViewResult: function ( shouldChangeFocus, addend ) {\n\t\t\tvar tabResults = this.results[ this.mediaType ],\n\t\t\t\tcurrentItem = tabResults.filter(\n\t\t\t\t\tfunction ( result ) {\n\t\t\t\t\t\treturn result.title === this.details[ this.mediaType ].title;\n\t\t\t\t\t}.bind( this )\n\t\t\t\t),\n\t\t\t\tcurrentIndex = tabResults.indexOf( currentItem[ 0 ] ),\n\t\t\t\tnextIndex = currentIndex + addend;\n\n\t\t\t// If we're not surpassing either end of the results array, go to\n\t\t\t// the previous or next item.\n\t\t\tif ( nextIndex >= 0 && nextIndex < tabResults.length ) {\n\t\t\t\tthis.showDetails( tabResults[ nextIndex ].title );\n\t\t\t}\n\n\t\t\t// When the user navigates between results via keyboard, we want the\n\t\t\t// new QuickView panel to focus on the just-pressed button when it\n\t\t\t// opens. Otherwise, we should remove focus from the close button\n\t\t\t// to avoid confusion for mouse-users.\n\t\t\tif ( shouldChangeFocus ) {\n\t\t\t\tthis.focusOn = addend === 1 ? 'next' : 'previous';\n\t\t\t} else {\n\t\t\t\tthis.focusOn = null;\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Scroll current QuickView result into view if it's not fully visible.\n\t\t *\n\t\t * @param {string} title\n\t\t */\n\t\tscrollIntoViewIfNeeded: function ( title ) {\n\t\t\t// VUE 3 MIGRATION: these refs are arrays in Vue 2 but not in Vue 3\n\t\t\tvar ref = Array.isArray( this.$refs[ title ] ) ?\n\t\t\t\tthis.$refs[ title ][ 0 ] :\n\t\t\t\tthis.$refs[ title ];\n\n\t\t\tif ( !ref ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar element = ref.$el,\n\t\t\t\tbounds = element.getBoundingClientRect(),\n\t\t\t\tviewportHeight = window.innerHeight || document.documentElement.clientHeight,\n\t\t\t\tisAboveViewport = bounds.top < 0 || bounds.bottom < 0,\n\t\t\t\tisBelowViewport = bounds.top > viewportHeight || bounds.bottom > viewportHeight;\n\n\t\t\tif ( isAboveViewport ) {\n\t\t\t\t// Scroll into view and align to top.\n\t\t\t\telement.scrollIntoView();\n\t\t\t}\n\n\t\t\tif ( isBelowViewport ) {\n\t\t\t\t// Scroll into view and align to bottom.\n\t\t\t\telement.scrollIntoView( false );\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Look for arrow keyups on dialog.\n\t\t *\n\t\t * @param {string} code KeyboardEvent.code\n\t\t */\n\t\tonDialogKeyup: function ( code ) {\n\t\t\tif ( code === 'ArrowRight' ) {\n\t\t\t\tthis.changeQuickViewResult( true, 1 );\n\t\t\t}\n\n\t\t\tif ( code === 'ArrowLeft' ) {\n\t\t\t\tthis.changeQuickViewResult( true, -1 );\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * @param {string} title\n\t\t * @return {Object}\n\t\t */\n\t\tgetResultClass: function ( title ) {\n\t\t\treturn {\n\t\t\t\t// Visual indication that result is currently displayed in QuickView\n\t\t\t\t'sdms-search-result--highlighted': this.details[ this.mediaType ] && this.details[ this.mediaType ].title === title,\n\t\t\t\t// If there are 3 or fewer image results, we'll limit their\n\t\t\t\t// growth to avoid having one overly-stretched image in the grid.\n\t\t\t\t'sdms-image-result--limit-size': this.mediaType === 'image' && this.results[ this.mediaType ].length <= 3\n\t\t\t};\n\t\t},\n\n\t\t/**\n\t\t * Get style attribute for components.\n\t\t */\n\t\tgetResultStyle: function () {\n\t\t\tvar rowWidth, rowItemCount, maxWidth;\n\n\t\t\t// Do nothing if the app isn't displayed yet, or if this isn't the\n\t\t\t// video tab.\n\t\t\tif ( !this.initialized || this.mediaType !== 'video' ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Get the current width of the search results list.\n\t\t\trowWidth = this.$refs.list.offsetWidth;\n\t\t\tif ( rowWidth === 0 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Divide row width by the min size of a result (flex-basis of 260\n\t\t\t// plus 16px of horizontal margin) to find the current number of\n\t\t\t// items per row.\n\t\t\trowItemCount = Math.floor( ( rowWidth - 20 ) / 272 );\n\n\t\t\t// If this number is greater than the number of results, set\n\t\t\t// max-width to the natural max-width in this particular flex layout\n\t\t\t// to avoid overly-stretching the components. Note that this value\n\t\t\t// is also set in the CSS so that the PHP version of these\n\t\t\t// components aren't too wide, helping to avoid a layout jump when\n\t\t\t// the JS UI loads.\n\t\t\tif ( rowItemCount > this.results[ this.mediaType ].length ) {\n\t\t\t\tmaxWidth = 401.5;\n\t\t\t} else {\n\t\t\t\t// Find the current width of each item in a full row, and\n\t\t\t\t// account for the 16 px of negative horizontal margin.\n\t\t\t\tmaxWidth = ( rowWidth / rowItemCount ) - 16;\n\t\t\t}\n\n\t\t\tthis.resultStyle = {\n\t\t\t\t'max-width': maxWidth.toString() + 'px'\n\t\t\t};\n\t\t},\n\n\t\t/**\n\t\t * Debounced version of getResultStyle for use in a resize listener\n\t\t */\n\t\tgetDebouncedResultStyle: function () {\n\t\t\tclearTimeout( this.debounceTimeoutId );\n\t\t\tthis.debounceTimeoutId = setTimeout(\n\t\t\t\tthis.getResultStyle.bind( this ),\n\t\t\t\t250\n\t\t\t);\n\t\t},\n\n\t\t/**\n\t\t * Clicks on results that do not display a quickview should still be\n\t\t * logged for analytics purposes.\n\t\t *\n\t\t * @param {string} title\n\t\t * @param {number} index\n\t\t * @todo reimplement logging once an updated event schema is available\n\t\t */\n\t\t// eslint-disable-next-line no-unused-vars\n\t\tonResultClick: function ( title, index ) {\n\t\t\t// Logging code temporariliy removed due to T297400\n\t\t\t// Restore when an updated event schema is available\n\t\t}\n\t} ),\n\n\twatch: {\n\t\t// if search term changes, immediately discard any expanded detail view\n\t\tcurrentSearchTerm: function ( /* newTerm */ ) {\n\t\t\tthis.showQuickView = false;\n\t\t\tthis.clearDetails( { mediaType: this.mediaType } );\n\t\t},\n\n\t\tinitialized: function () {\n\t\t\tthis.getResultStyle();\n\t\t},\n\n\t\tallActiveDetails: function ( newVal ) {\n\t\t\tvar currentDetails = JSON.parse( newVal );\n\n\t\t\tif ( currentDetails[ this.mediaType ] && !this.showQuickView ) {\n\t\t\t\tthis.showQuickView = true;\n\t\t\t}\n\n\t\t\tthis.$nextTick().then( this.getResultStyle.bind( this ) );\n\t\t}\n\t},\n\n\tcreated: function () {\n\t\twindow.addEventListener( 'resize', this.getDebouncedResultStyle );\n\t},\n\n\tunmounted: function () {\n\t\twindow.removeEventListener( 'resize', this.getDebouncedResultStyle );\n\t}\n};\n</script>\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/components/Spinner.vue","messages":[],"suppressedMessages":[{"ruleId":"vue/multi-word-component-names","severity":2,"message":"Component name \"Spinner\" should always be multi-word.","line":11,"column":8,"nodeType":"Literal","messageId":"unexpected","endLine":11,"endColumn":17,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/components/UserNotice.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/components/base/AutocompleteSearchInput.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/components/base/Button.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/components/base/Checkbox.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/components/base/CopyTextLayout.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/components/base/Dialog.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/components/base/Icon.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/components/base/Image.vue","messages":[],"suppressedMessages":[{"ruleId":"vue/no-unused-properties","severity":2,"message":"'observerOptions' of data found, but never used.","line":50,"column":4,"nodeType":"Identifier","messageId":"unused","endLine":50,"endColumn":19,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/components/base/Message.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/components/base/Observer.vue","messages":[],"suppressedMessages":[{"ruleId":"vue/require-default-prop","severity":1,"message":"Prop 'options' requires default value to be set.","line":35,"column":3,"nodeType":"Property","messageId":"missingDefault","endLine":35,"endColumn":18,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"vue/no-unused-properties","severity":2,"message":"'observerOptions' of data found, but never used.","line":40,"column":4,"nodeType":"Identifier","messageId":"unused","endLine":40,"endColumn":19,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/components/base/Player.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/components/base/Radio.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/components/base/Select.vue","messages":[{"ruleId":"es-x/no-array-prototype-findindex","severity":2,"message":"ES2015 'Array.prototype.findIndex' method is forbidden.","line":372,"column":21,"nodeType":"MemberExpression","messageId":"forbidden","endLine":372,"endColumn":41}],"suppressedMessages":[{"ruleId":"vue/no-unused-properties","severity":2,"message":"'select' of method found, but never used.","line":369,"column":3,"nodeType":"Identifier","messageId":"unused","endLine":369,"endColumn":9,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"vue/no-unused-properties","severity":2,"message":"'reset' of method found, but never used.","line":389,"column":3,"nodeType":"Identifier","messageId":"unused","endLine":389,"endColumn":8,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<template>\n\t<div class=\"sd-select\" :class=\"rootClasses\">\n\t\t<label :id=\"listboxId\" class=\"sd-select__sr-only\">{{ selectLabel }}</label>\n\t\t<button\n\t\t\tref=\"sdSelectButton\"\n\t\t\tclass=\"sd-select__content\"\n\t\t\ttabindex=\"0\"\n\t\t\taria-autocomplete=\"list\"\n\t\t\taria-haspopup=\"listbox\"\n\t\t\t:aria-owns=\"listboxId\"\n\t\t\t:aria-labelledby=\"listboxId + ' ' + textboxId\"\n\t\t\t:aria-expanded=\"isExpanded\"\n\t\t\t:aria-activedescendant=\"activeItemId || null\"\n\t\t\t:aria-disabled=\"disabled || null\"\n\t\t\t@click=\"onClick\"\n\t\t\t@blur=\"onBlur\"\n\t\t\t@mousedown=\"isMouseDown = true\"\n\t\t\t@mouseup=\"isMouseDown = false\"\n\t\t\t@keydown.enter.prevent\n\t\t\t@keyup.enter=\"onEnter\"\n\t\t\t@keydown.up.prevent=\"onArrowUp\"\n\t\t\t@keydown.down.prevent=\"onArrowDown\"\n\t\t>\n\t\t\t<span\n\t\t\t\t:id=\"textboxId\"\n\t\t\t\tclass=\"sd-select__current-selection\"\n\t\t\t\trole=\"textbox\"\n\t\t\t\taria-readonly=\"true\"\n\t\t\t>\n\t\t\t\t<template v-if=\"isListItemSelected\">\n\t\t\t\t\t{{ prefix }}\n\t\t\t\t</template>\n\t\t\t\t{{ currentSelection }}\n\t\t\t</span>\n\t\t\t<sd-icon class=\"sd-select__handle\" :icon=\"icons.sdIconExpand\">\n\t\t\t</sd-icon>\n\t\t</button>\n\t\t<sd-select-menu\n\t\t\tv-if=\"showMenu\"\n\t\t\t:items=\"items\"\n\t\t\t:active-item-index=\"activeItemIndex\"\n\t\t\t:selected-item-index=\"selectedItemIndex\"\n\t\t\t:listbox-id=\"listboxId\"\n\t\t\t@select=\"onSelect\"\n\t\t\t@active-item-change=\"onActiveItemChange\"\n\t\t>\n\t\t</sd-select-menu>\n\t</div>\n</template>\n\n<script>\nvar Icon = require( './Icon.vue' ),\n\tSelectMenu = require( './SelectMenu.vue' ),\n\ticons = require( '../../../lib/icons.js' );\n\n/**\n * @file Select\n *\n * Select component with SelectMenu dropdown.\n *\n * This component takes a set of items as a prop and passes those items to the\n * SelectMenu component for display. This component controls when the menu is\n * shown, shows the selected item if there is one, and emits the selected item\n * value to the parent.\n */\n// @vue/component\nmodule.exports = exports = {\n\tname: 'SdSelect',\n\n\tcompatConfig: {\n\t\tATTR_FALSE_VALUE: true\n\t},\n\n\tcomponents: {\n\t\t'sd-icon': Icon,\n\t\t'sd-select-menu': SelectMenu\n\t},\n\n\tprops: {\n\t\t/**\n\t\t * Name must be provided to ensure unique aria attributes. Should be a\n\t\t * valid as a CSS id.\n\t\t */\n\t\tname: {\n\t\t\ttype: String,\n\t\t\trequired: true\n\t\t},\n\n\t\t/**\n\t\t * Displayed when no item is selected. If omitted, the first item will\n\t\t * be selected and displayed initially (or the selected item is one is\n\t\t * provided as a prop). MW Message objects are allowed.\n\t\t */\n\t\tlabel: {\n\t\t\ttype: [ String, Object ],\n\t\t\tdefault: null\n\t\t},\n\n\t\t/** Items should be an array of objects with \"label\" and \"value\" properties */\n\t\titems: {\n\t\t\ttype: [ Array ],\n\t\t\trequired: true\n\t\t},\n\n\t\t/**\n\t\t * If an item should be selected on component mount, the selected item\n\t\t * index can be included via this prop.\n\t\t */\n\t\tinitialSelectedItemIndex: {\n\t\t\ttype: Number,\n\t\t\tdefault: -1\n\t\t},\n\n\t\tdisabled: {\n\t\t\ttype: Boolean\n\t\t},\n\n\t\t/**\n\t\t * Prefix will be shown before the selected value, e.g. \"Sort by:\"\n\t\t * MW Message objects are allowed.\n\t\t */\n\t\tprefix: {\n\t\t\ttype: [ String, Object ],\n\t\t\tdefault: ''\n\t\t}\n\t},\n\n\tdata: function () {\n\t\treturn {\n\t\t\tshowMenu: false,\n\t\t\tisMouseDown: false,\n\t\t\ticons: icons,\n\t\t\tactiveItemIndex: this.initialSelectedItemIndex,\n\t\t\tselectedItemIndex: this.initialSelectedItemIndex\n\t\t};\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * @return {boolean}\n\t\t */\n\t\tisListItemSelected: function () {\n\t\t\treturn this.selectedItemIndex > -1;\n\t\t},\n\n\t\t/**\n\t\t * This helps to figure out what text to show as label for accessibility\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tselectLabel: function () {\n\t\t\t// We show the label, if an item is selected,\n\t\t\t// because it would be label will removed from the button\n\t\t\tif ( this.isListItemSelected ) {\n\t\t\t\treturn this.label;\n\t\t\t} else if ( !this.label ) {\n\t\t\t\t// We show the prefix as the label,\n\t\t\t\t// if no label is passed and no item is selected\n\t\t\t\treturn this.prefix;\n\t\t\t}\n\n\t\t\treturn '';\n\t\t},\n\n\t\t/**\n\t\t * @return {string} The user-visible label for the current selection\n\t\t */\n\t\tcurrentSelection: function () {\n\t\t\tif ( this.selectedItemIndex === -1 ) {\n\t\t\t\treturn this.label;\n\t\t\t} else {\n\t\t\t\treturn this.items[ this.selectedItemIndex ].label;\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * @return {Object}\n\t\t */\n\t\trootClasses: function () {\n\t\t\treturn {\n\t\t\t\t'sd-select--open': this.showMenu,\n\t\t\t\t'sd-select--disabled': this.disabled,\n\t\t\t\t// This class can be used by other components (e.g. Tabs) to\n\t\t\t\t// style component differently depending on whether or not a\n\t\t\t\t// value has been selected.\n\t\t\t\t'sd-select--value-selected': this.selectedItemIndex > -1\n\t\t\t};\n\t\t},\n\n\t\t/**\n\t\t * For the aria-expanded attribute of the input, we need to use strings\n\t\t * instead of booleans so that aria-expanded will be set to \"false\" when\n\t\t * appropriate rather than the attribute being omitted, which is what\n\t\t * would happen if we used a boolean false.\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tisExpanded: function () {\n\t\t\treturn this.showMenu ? 'true' : 'false';\n\t\t},\n\n\t\t/**\n\t\t * @return {string}\n\t\t */\n\t\ttextboxId: function () {\n\t\t\treturn this.name + '__textbox';\n\t\t},\n\n\t\t/**\n\t\t * @return {string}\n\t\t */\n\t\tlistboxId: function () {\n\t\t\treturn this.name + '__listbox';\n\t\t},\n\n\t\t/**\n\t\t * The ID of the element of the active menu item.\n\t\t *\n\t\t * @return {string|boolean}\n\t\t */\n\t\tactiveItemId: function () {\n\t\t\treturn this.activeItemIndex > -1 ?\n\t\t\t\tthis.listboxId + '-item-' + this.activeItemIndex :\n\t\t\t\tfalse;\n\t\t},\n\n\t\t/**\n\t\t * @return {number} Number of items\n\t\t */\n\t\titemsLength: function () {\n\t\t\treturn this.items.length;\n\t\t}\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Toggle menu state on click.\n\t\t */\n\t\tonClick: function () {\n\t\t\tthis.toggleMenu( !this.showMenu );\n\t\t\tthis.restoreActiveItemIndex();\n\t\t\tif ( this.showMenu ) {\n\t\t\t\tthis.$refs.sdSelectButton.focus();\n\t\t\t}\n\t\t},\n\n\t\tonBlur: function () {\n\t\t\t/**\n\t\t\t * Check if the blur event isn't triggered by a click on the menu, because it breaks on Safari\n\t\t\t */\n\t\t\tif ( !this.isMouseDown ) {\n\t\t\t\tthis.toggleMenu( false );\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Handle enter keypress.\n\t\t *\n\t\t * @fires select\n\t\t * @return {void}\n\t\t */\n\t\tonEnter: function () {\n\t\t\tvar value;\n\n\t\t\t// If the menu is hidden, show it.\n\t\t\tif ( !this.showMenu ) {\n\t\t\t\tthis.toggleMenu( true );\n\t\t\t\tthis.restoreActiveItemIndex();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If the menu is showing but there's no active item, close the menu.\n\t\t\tif ( this.activeItemIndex < 0 ) {\n\t\t\t\tthis.toggleMenu( false );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Otherwise:\n\t\t\t// - Show the selected item in the content box\n\t\t\t// - Store the selected item index so it can be styled as such if\n\t\t\t//   the menu is reopened\n\t\t\t// - Emit the selected item to the parent\n\t\t\t// - Hide the menu\n\t\t\tvalue = this.items[ this.activeItemIndex ].value;\n\t\t\tthis.selectedItemIndex = this.activeItemIndex;\n\t\t\tthis.$emit( 'select', value );\n\t\t\tthis.toggleMenu( false );\n\t\t},\n\n\t\t/**\n\t\t * Handle item click.\n\t\t *\n\t\t * @param {number} index\n\t\t * @param {Object} item\n\t\t * @param {string} item.label Selected item's human-readable label\n\t\t * @param {string} item.value Selected item's value\n\t\t * @fires submit\n\t\t */\n\t\tonSelect: function ( index, item ) {\n\t\t\tthis.activeItemIndex = index;\n\t\t\tthis.selectedItemIndex = index;\n\t\t\tthis.$emit( 'select', item.value );\n\t\t\tthis.toggleMenu( false );\n\t\t},\n\n\t\t/**\n\t\t * Move to the next item.\n\t\t * If we're at the end go back to the first item.\n\t\t * if activeItem is -1 go to second item (this is because we pre-select the first item )\n\t\t */\n\t\tonArrowDown: function () {\n\t\t\tvar index = this.activeItemIndex,\n\t\t\t\tisNotLastItem = this.itemsLength > index + 1,\n\t\t\t\tisUnselectedMenu = index === -1;\n\n\t\t\tif ( isUnselectedMenu ) {\n\t\t\t\tthis.activeItemIndex = 1;\n\t\t\t} else if ( isNotLastItem ) {\n\t\t\t\tthis.activeItemIndex = index + 1;\n\t\t\t} else {\n\t\t\t\tthis.activeItemIndex = 0;\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Move to the previous item. If we're at the beginning, go to\n\t\t * the last item.\n\t\t */\n\t\tonArrowUp: function () {\n\t\t\tvar index = this.activeItemIndex;\n\t\t\t// Do nothing if there is no active item yet.\n\t\t\tif ( index > -1 ) {\n\t\t\t\tthis.activeItemIndex = index === 0 ? this.itemsLength - 1 : index - 1;\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Change the active item index based on mouseover or mouseleave.\n\t\t *\n\t\t * @param {number} index\n\t\t */\n\t\tonActiveItemChange: function ( index ) {\n\t\t\tthis.activeItemIndex = index;\n\t\t},\n\n\t\t/**\n\t\t * Set menu visibility.\n\t\t *\n\t\t * @param {boolean} show\n\t\t * @return {void}\n\t\t */\n\t\ttoggleMenu: function ( show ) {\n\t\t\tif ( this.disabled ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.showMenu = show;\n\t\t},\n\n\t\t/**\n\t\t * Programmatically set the selection if it has been changed by means\n\t\t * other than direct user interaction. Changes made in this way should\n\t\t * never emit \"select\" events.\n\t\t *\n\t\t * @param {string} selection value of the item to be selected\n\t\t * @throws error if specified value does not exist\n\t\t */\n\t\t// eslint-disable-next-line vue/no-unused-properties\n\t\tselect: function ( selection ) {\n\t\t\tvar selectionIndex;\n\n\t\t\tselectionIndex = this.items.findIndex( function ( item ) {\n\t\t\t\treturn item.value === selection;\n\t\t\t} );\n\n\t\t\tif ( selectionIndex && selectionIndex >= 0 ) {\n\t\t\t\tthis.selectedItemIndex = selectionIndex;\n\t\t\t\tthis.activeItemIndex = selectionIndex;\n\t\t\t} else {\n\t\t\t\tthrow new Error( 'specified value does not exist' );\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Reset the component to initial values for selection index and\n\t\t * user-visible label\n\t\t */\n\t\t// eslint-disable-next-line vue/no-unused-properties\n\t\treset: function () {\n\t\t\tthis.selectedItemIndex = this.initialSelectedItemIndex;\n\t\t\tthis.activeItemIndex = this.initialSelectedItemIndex;\n\t\t},\n\n\t\t/**\n\t\t * Restore the ActiveItemIndex to be equal to the selectedItemIndex\n\t\t * This is usually needed to make sure that when the dropdowns is open\n\t\t * it activate the selected Item\n\t\t */\n\t\trestoreActiveItemIndex: function () {\n\t\t\tthis.activeItemIndex = this.selectedItemIndex;\n\t\t}\n\t}\n};\n</script>\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/components/base/SelectMenu.vue","messages":[{"ruleId":"es-x/no-array-prototype-keys","severity":2,"message":"ES2015 'Array.prototype.keys' method is forbidden.","line":196,"column":12,"nodeType":"MemberExpression","messageId":"forbidden","endLine":196,"endColumn":23}],"suppressedMessages":[],"errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<template>\n\t<div class=\"sd-select-menu\">\n\t\t<ul\n\t\t\t:id=\"listboxId\"\n\t\t\tclass=\"sd-select-menu__list\"\n\t\t\trole=\"listbox\"\n\t\t\t:aria-labelledby=\"labelledBy\"\n\t\t>\n\t\t\t<li\n\t\t\t\tv-for=\"( item, index ) in formattedItems\"\n\t\t\t\t:id=\"listboxId + '-item-' + index\"\n\t\t\t\t:key=\"listboxId + '-item-' + index\"\n\t\t\t\tclass=\"sd-select-menu__list-item\"\n\t\t\t\t:class=\"getItemClasses( index )\"\n\t\t\t\trole=\"option\"\n\t\t\t\t:aria-selected=\"isActiveItem( index ) || null\"\n\t\t\t\t@mousedown=\"onMousedown( index, item )\"\n\t\t\t\t@mouseover=\"$emit( 'active-item-change', index )\"\n\t\t\t\t@mouseleave=\"$emit( 'active-item-change', -1 )\"\n\t\t\t>\n\t\t\t\t{{ item.label }}\n\t\t\t</li>\n\t\t</ul>\n\t</div>\n</template>\n\n<script>\n/**\n * @file SelectMenu\n *\n * List of items that informs the parent component when an item is clicked.\n * Receives the index of the active item from parent so a visual indication can\n * be applied via CSS here.\n *\n * On hover, active item index is emitted to the parent. On mouse leave, the\n * index is reset to -1 (i.e. no active item).\n */\n// @vue/component\nmodule.exports = exports = {\n\tname: 'SelectMenu',\n\n\tcompatConfig: {\n\t\tATTR_FALSE_VALUE: true\n\t},\n\n\tprops: {\n\t\t/**\n\t\t * Items can come in 3 formats:\n\t\t * 1. An array of strings\n\t\t *    Example: [ 'Apple', 'Banana', 'Orange' ]\n\t\t * 2. An array of objects with label and value keys\n\t\t *    Example: [ {label: 'Apple', value: 'a'}, {label: 'Banana', value: 'b'} ]\n\t\t * 3. An object of simple key:string pairs\n\t\t *    Example: {a: 'Apple', b: 'Banana', c: 'Carrot'}\n\t\t */\n\t\titems: {\n\t\t\ttype: [ Array, Object ],\n\t\t\tdefault: function () {\n\t\t\t\treturn [ ];\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Index of the item the user is (figuratively) focused on.\n\t\t */\n\t\tactiveItemIndex: {\n\t\t\ttype: Number,\n\t\t\tdefault: 0\n\t\t},\n\n\t\t/**\n\t\t * Index of the currently selected item. This prop will only exist for\n\t\t * parent components like a select list, since the item list persists.\n\t\t */\n\t\tselectedItemIndex: {\n\t\t\ttype: Number,\n\t\t\tdefault: -1\n\t\t},\n\n\t\tlistboxId: {\n\t\t\ttype: String,\n\t\t\trequired: true\n\t\t},\n\n\t\tlabelledBy: {\n\t\t\ttype: String,\n\t\t\tdefault: null\n\t\t}\n\t},\n\n\temits: [\n\t\t'active-item-change',\n\t\t'select'\n\t],\n\n\tcomputed: {\n\t\t/**\n\t\t * @return {Array} Array of objects with label and value keys\n\t\t */\n\t\tformattedItems: function () {\n\t\t\treturn this.getFormattedItems( this.items );\n\t\t}\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Handle mousedown.\n\t\t *\n\t\t * @param {number} index\n\t\t * @param {Object} item\n\t\t * @fires select\n\t\t */\n\t\tonMousedown: function ( index, item ) {\n\t\t\t// If this is the selected item, do nothing.\n\t\t\tif ( index === this.selectedItemIndex ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.$emit( 'select', index, item );\n\t\t},\n\n\t\t/**\n\t\t * Determine if a list item should have the active class.\n\t\t *\n\t\t * @param {number} index\n\t\t * @return {boolean}\n\t\t */\n\t\tisActiveItem: function ( index ) {\n\t\t\t// If activeItemIndex is unset (-1), we select the first item of the list.\n\t\t\tvar activeItem = this.activeItemIndex === -1 ? 0 : this.activeItemIndex;\n\t\t\treturn index === activeItem;\n\t\t},\n\n\t\t/**\n\t\t * Determine if a list item should have the selected class.\n\t\t *\n\t\t * @param {number} index\n\t\t * @return {boolean}\n\t\t */\n\t\tisSelectedItem: function ( index ) {\n\t\t\t// If selectedItem is unset (-1), we select the first item of the list.\n\t\t\tvar itemToSelect = this.selectedItemIndex === -1 ? 0 : this.selectedItemIndex;\n\t\t\treturn index === itemToSelect;\n\t\t},\n\n\t\tgetItemClasses: function ( index ) {\n\t\t\treturn {\n\t\t\t\t'sd-select-menu__list-item--active': this.isActiveItem( index ),\n\t\t\t\t'sd-select-menu__list-item--selected': this.isSelectedItem( index )\n\t\t\t};\n\t\t},\n\n\t\t/**\n\t\t * Format items prop.\n\t\t *\n\t\t * Items can be provided in a variety of formats. We need to process\n\t\t * them into a single format to be used in the template.\n\t\t *\n\t\t * @param {Array|Object} items\n\t\t * @return {Array} Array of objects with label and value keys\n\t\t */\n\t\tgetFormattedItems: function ( items ) {\n\t\t\tvar keys;\n\n\t\t\t// Handle array of strings.\n\t\t\tif (\n\t\t\t\tArray.isArray( items ) &&\n\t\t\t\titems.length &&\n\t\t\t\ttypeof items[ 0 ] === 'string'\n\t\t\t) {\n\t\t\t\treturn items.map( function ( item ) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tlabel: item,\n\t\t\t\t\t\tvalue: item\n\t\t\t\t\t};\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\t// Handle array of objects.\n\t\t\tif (\n\t\t\t\tArray.isArray( items ) &&\n\t\t\t\titems.length &&\n\t\t\t\ttypeof items[ 0 ] === 'object'\n\t\t\t) {\n\t\t\t\treturn items.map( function ( item ) {\n\t\t\t\t\tif ( 'label' in item && 'value' in item ) {\n\t\t\t\t\t\treturn item;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn false;\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\t// Handle object.\n\t\t\tif ( typeof items === 'object' ) {\n\t\t\t\tkeys = Object.keys( items );\n\t\t\t\treturn keys.map( function ( key ) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tlabel: items[ key ],\n\t\t\t\t\t\tvalue: key\n\t\t\t\t\t};\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tthrow new Error( 'Passed value format is not supported' );\n\t\t}\n\t}\n};\n</script>\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/components/base/Tab.vue","messages":[],"suppressedMessages":[{"ruleId":"vue/no-unused-properties","severity":2,"message":"'name' of property found, but never used.","line":25,"column":3,"nodeType":"Identifier","messageId":"unused","endLine":25,"endColumn":7,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"vue/no-unused-properties","severity":2,"message":"'title' of property found, but never used.","line":30,"column":3,"nodeType":"Identifier","messageId":"unused","endLine":30,"endColumn":8,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"vue/no-unused-properties","severity":2,"message":"'disabled' of property found, but never used.","line":35,"column":3,"nodeType":"Identifier","messageId":"unused","endLine":35,"endColumn":11,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/components/base/Tabs.vue","messages":[{"ruleId":"es-x/no-array-prototype-keys","severity":2,"message":"ES2015 'Array.prototype.keys' method is forbidden.","line":123,"column":61,"nodeType":"MemberExpression","messageId":"forbidden","endLine":123,"endColumn":72},{"ruleId":"es-x/no-array-prototype-keys","severity":2,"message":"ES2015 'Array.prototype.keys' method is forbidden.","line":178,"column":19,"nodeType":"MemberExpression","messageId":"forbidden","endLine":178,"endColumn":30},{"ruleId":"es-x/no-array-prototype-keys","severity":2,"message":"ES2015 'Array.prototype.keys' method is forbidden.","line":186,"column":20,"nodeType":"MemberExpression","messageId":"forbidden","endLine":186,"endColumn":31},{"ruleId":"es-x/no-array-prototype-keys","severity":2,"message":"ES2015 'Array.prototype.keys' method is forbidden.","line":193,"column":19,"nodeType":"MemberExpression","messageId":"forbidden","endLine":193,"endColumn":30},{"ruleId":"es-x/no-array-prototype-keys","severity":2,"message":"ES2015 'Array.prototype.keys' method is forbidden.","line":209,"column":18,"nodeType":"MemberExpression","messageId":"forbidden","endLine":209,"endColumn":29}],"suppressedMessages":[{"ruleId":"vue/no-unused-properties","severity":2,"message":"'observerElement' of property returned from `setup()` found, but never used.","line":139,"column":4,"nodeType":"Identifier","messageId":"unused","endLine":139,"endColumn":19,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"vue/no-unused-properties","severity":2,"message":"'observerOptions' of property returned from `setup()` found, but never used.","line":141,"column":4,"nodeType":"Identifier","messageId":"unused","endLine":141,"endColumn":19,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":5,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<template>\n\t<div class=\"sd-tabs\">\n\t\t<div class=\"sd-tabs__header\" :class=\"headerClasses\">\n\t\t\t<div\n\t\t\t\tclass=\"sd-tabs__tabs-list\"\n\t\t\t\trole=\"tablist\"\n\t\t\t\taria-label=\"Media type\"\n\t\t\t\ttabindex=\"0\"\n\t\t\t\t:aria-activedescendant=\"currentTabId\"\n\t\t\t\t@keydown.left.prevent=\"prev\"\n\t\t\t\t@keydown.up.prevent=\"prev\"\n\t\t\t\t@keydown.right.prevent=\"next\"\n\t\t\t\t@keydown.down.prevent=\"next\"\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tv-for=\"( tab, index ) in tabs\"\n\t\t\t\t\t:id=\"tab.name + '-label'\"\n\t\t\t\t\t:key=\"tab.title\"\n\t\t\t\t\t:class=\"getLabelClasses( tab, index )\"\n\t\t\t\t\t:aria-selected=\"tab.name === currentTabName || null\"\n\t\t\t\t\t:aria-controls=\"tab.name + '-control'\"\n\t\t\t\t\tclass=\"sd-tabs__tabs-list__item\"\n\t\t\t\t\trole=\"tab\"\n\t\t\t\t\ttabindex=\"-1\"\n\t\t\t\t\t@click=\"selectTab( tab.name )\"\n\t\t\t\t\t@keyup.enter=\"selectTab( tab.name )\"\n\t\t\t\t>\n\t\t\t\t\t{{ tab.title }}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<div class=\"sd-tabs__content\">\n\t\t\t<slot></slot>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nvar Vue = require( 'vue' ), // Vue is imported here for type definition\n\tVueCompositionAPI = require( '@vue/composition-api' ),\n\tobserver = require( './mixins/observer.js' );\n\n/**\n * A group of tabs with a tab menu.\n *\n * Tab can be changed via user click on a tab menu item or by changing the\n * active prop passed to the Tabs component.\n */\n// @vue/component\nmodule.exports = exports = {\n\tname: 'SdTabs',\n\n\tmixins: [ observer ],\n\n\tprops: {\n\t\t/**\n\t\t * Name of the currently active tab.\n\t\t *\n\t\t * This is not required: if omitted, the first tab will be active on\n\t\t * mount, then this component will keep track of any tab changes.\n\t\t * However, if you need to be able to control the active tab from the\n\t\t * parent component, use this prop and keep it current by binding it to\n\t\t * a value that updates on the tab-change event.\n\t\t */\n\t\tactive: {\n\t\t\ttype: String,\n\t\t\tdefault: null\n\t\t}\n\t},\n\n\tsetup: function ( props, context ) {\n\t\t// Define reactive values\n\t\tvar tabs = VueCompositionAPI.reactive( {} ),\n\t\t\tactive = VueCompositionAPI.toRef( props, 'active' ),\n\t\t\tcurrentTabName = VueCompositionAPI.ref( null ),\n\t\t\thasGradient = VueCompositionAPI.ref( false ),\n\t\t\tobserverElement = VueCompositionAPI.ref( '.sd-tabs__tabs-list__item--last' ),\n\t\t\tobserverOptions = VueCompositionAPI.reactive( { threshold: 1 } );\n\n\t\t/**\n\t\t * @type {Object} Class binding object for the header\n\t\t */\n\t\tvar headerClasses = VueCompositionAPI.computed( function () {\n\t\t\treturn { 'sd-tabs__header--gradient': hasGradient.value };\n\t\t} );\n\n\t\t/**\n\t\t * @type {string|undefined} DOM ID of the active tab\n\t\t */\n\t\tvar currentTabId = VueCompositionAPI.computed( function () {\n\t\t\tif ( !currentTabName ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\treturn tabs[ currentTabName.value ] ?\n\t\t\t\t'sd-tab-' + tabs[ currentTabName.value ].name + '-label' :\n\t\t\t\tnull;\n\t\t} );\n\n\t\t/**\n\t\t * Initialize tab data.\n\t\t *\n\t\t * Requires different behavior in Vue 2 vs Vue 3; in the former,\n\t\t * context.slots.default() returns the array of child tabs directly;\n\t\t * in Vue 3 they are wrapped in a Fragment VNode.\n\t\t */\n\t\tVueCompositionAPI.onMounted( function () {\n\t\t\t// unwrap the fragment if present (Vue 3)\n\t\t\tvar defaultSlot = context.slots.default(),\n\t\t\t\ttabNodes = defaultSlot[ 0 ] && defaultSlot[ 0 ].children || defaultSlot;\n\n\t\t\t/**\n\t\t\t * @todo Once migrated to Vue 3, remove 'tab.componentOptions.propsData'\n\t\t\t */\n\t\t\ttabNodes.forEach( function ( tab ) {\n\t\t\t\tvar componentProps = tab.componentOptions ? tab.componentOptions.propsData : tab.props;\n\t\t\t\ttabs[ componentProps.name ] = componentProps;\n\t\t\t} );\n\n\t\t\t// Set the current tab value, either to the active prop if it's\n\t\t\t// provided or to the first tab.\n\t\t\tcurrentTabName.value = ( active.value ) ? active.value : Object.keys( tabs )[ 0 ];\n\t\t} );\n\n\t\t/**\n\t\t * Provide reactive data to the child Tab components so they know\n\t\t * whether or not they are currently active.\n\t\t */\n\t\tVueCompositionAPI.provide( 'currentTabName', currentTabName );\n\n\t\treturn {\n\t\t\ttabs: tabs,\n\t\t\tcurrentTabName: currentTabName,\n\t\t\tcurrentTabId: currentTabId,\n\t\t\theaderClasses: headerClasses,\n\t\t\thasGradient: hasGradient,\n\t\t\t// eslint-disable-next-line vue/no-unused-properties\n\t\t\tobserverElement: observerElement,\n\t\t\t// eslint-disable-next-line vue/no-unused-properties\n\t\t\tobserverOptions: observerOptions\n\t\t};\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Change the current tab.\n\t\t *\n\t\t * @param {string} tabName\n\t\t */\n\t\tselectTab: function ( tabName ) {\n\t\t\tif ( this.tabs[ tabName ].disabled === true ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.currentTabName = tabName;\n\t\t},\n\n\t\t/**\n\t\t * Set tab label classes.\n\t\t *\n\t\t * @param {Vue.component} tab\n\t\t * @param {number} index\n\t\t * @return {Object}\n\t\t */\n\t\tgetLabelClasses: function ( tab, index ) {\n\t\t\treturn {\n\t\t\t\t'sd-tabs__tabs-list__item--current': tab.name === this.currentTabName,\n\t\t\t\t'sd-tabs__tabs-list__item--disabled': tab.disabled,\n\t\t\t\t'sd-tabs__tabs-list__item--last': this.isLastTab( index )\n\t\t\t};\n\t\t},\n\n\t\t/**\n\t\t * Left or up arrow keydown should move to previous tab, if one exists.\n\t\t */\n\t\tprev: function () {\n\t\t\tvar tabNames = Object.keys( this.tabs ),\n\t\t\t\tpreviousTabIndex = tabNames.indexOf( this.currentTabName ) - 1;\n\n\t\t\tif ( previousTabIndex < 0 ) {\n\t\t\t\t// There is no previous tab, do nothing.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.selectTab( Object.keys( this.tabs )[ previousTabIndex ] );\n\t\t},\n\n\t\t/**\n\t\t * Right or down arrow keydown should move to next tab, if one exists.\n\t\t */\n\t\tnext: function () {\n\t\t\tvar tabNames = Object.keys( this.tabs ),\n\t\t\t\tnextTabIndex = tabNames.indexOf( this.currentTabName ) + 1;\n\n\t\t\tif ( nextTabIndex >= tabNames.length ) {\n\t\t\t\t// There is no next tab, do nothing.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.selectTab( tabNames[ nextTabIndex ] );\n\t\t},\n\n\t\t/**\n\t\t * @param {number} tabIndex\n\t\t * @return {boolean}\n\t\t */\n\t\tisLastTab: function ( tabIndex ) {\n\t\t\tvar tabKeys = Object.keys( this.tabs );\n\t\t\treturn tabIndex === tabKeys[ tabKeys.length - 1 ];\n\t\t}\n\t},\n\n\twatch: {\n\t\t/**\n\t\t * When the tab stored in state changes, select that tab.\n\t\t *\n\t\t * @param {string} newTabName\n\t\t */\n\t\tactive: function ( newTabName ) {\n\t\t\tthis.selectTab( newTabName );\n\t\t},\n\n\t\t/**\n\t\t * When the current tab changes, set active states and emit an event.\n\t\t *\n\t\t * @param {string} newTabName\n\t\t */\n\t\tcurrentTabName: function () {\n\t\t\t// Don't emit an event if the currentTabName changed as a result of\n\t\t\t// the active prop changing. In that case, the parent already knows.\n\t\t\tif ( this.currentTabName !== this.active ) {\n\t\t\t\tthis.$emit( 'tab-change', this.currentTabName );\n\t\t\t}\n\t\t},\n\n\t\tobserverIntersecting: {\n\t\t\thandler: function ( intersecting ) {\n\t\t\t\tthis.hasGradient = !intersecting;\n\t\t\t},\n\t\t\timmediate: true\n\t\t}\n\t}\n};\n</script>\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/components/base/mixins/binaryInput.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/components/base/mixins/observer.js","messages":[],"suppressedMessages":[{"ruleId":"compat/compat","severity":1,"message":"IntersectionObserverEntry is not supported in Safari 9.1, iOS Safari 9.0-9.2, IE 11","line":41,"column":28,"nodeType":"MemberExpression","endLine":41,"endColumn":60,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"compat/compat","severity":1,"message":"IntersectionObserver is not supported in Safari 9.1, IE 11","line":93,"column":19,"nodeType":"NewExpression","endLine":96,"endColumn":4,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/components/results/AudioResult.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/components/results/ImageResult.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/components/results/OtherResult.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/components/results/PageResult.vue","messages":[{"ruleId":"es-x/no-array-prototype-keys","severity":2,"message":"ES2015 'Array.prototype.keys' method is forbidden.","line":108,"column":11,"nodeType":"MemberExpression","messageId":"forbidden","endLine":108,"endColumn":22}],"suppressedMessages":[],"errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<template>\n\t<div\n\t\tclass=\"sdms-page-result\"\n\t\t:class=\"$attrs[ 'parent-class' ]\"\n\t\t:style=\"$attrs[ 'parent-style' ]\"\n\t>\n\t\t<div class=\"sdms-page-result__title\">\n\t\t\t<span v-if=\"namespacePrefix\" class=\"sdms-page-result__namespace\">\n\t\t\t\t{{ namespacePrefix }}\n\t\t\t</span>\n\t\t\t<h3 v-if=\"displayName\">\n\t\t\t\t<a\n\t\t\t\t\t:href=\"canonicalurl\"\n\t\t\t\t\t:title=\"title\">\n\t\t\t\t\t{{ displayName }}\n\t\t\t\t</a>\n\t\t\t</h3>\n\t\t</div>\n\n\t\t<!-- eslint-disable-next-line vue/no-v-html -->\n\t\t<div v-if=\"snippet\" v-html=\"snippet\"></div>\n\n\t\t<p\n\t\t\tv-if=\"hasCategoryText\"\n\t\t\tv-i18n-html:mediasearch-category-info=\"[\n\t\t\t\tformatNumber( categoryinfo.size ),\n\t\t\t\tformatNumber( categoryinfo.subcats ),\n\t\t\t\tformatNumber( categoryinfo.files )\n\t\t\t]\"\n\t\t\tclass=\"sdms-page-result__category-info\"\n\t\t></p>\n\n\t\t<template v-else>\n\t\t\t<p\n\t\t\t\tv-if=\"size\"\n\t\t\t\tclass=\"sdms-page-result__size\">\n\t\t\t\t{{ formatSize( size ) }}\n\t\t\t</p>\n\n\t\t\t<p\n\t\t\t\tv-if=\"wordcount\"\n\t\t\t\tv-i18n-html:mediasearch-wordcount=\"[\n\t\t\t\t\tformatNumber( wordcount )\n\t\t\t\t]\"\n\t\t\t\tclass=\"sdms-page-result__wordcount\">\n\t\t\t</p>\n\t\t</template>\n\n\t\t<p v-if=\"lastEdited\">\n\t\t\t- {{ lastEdited }}\n\t\t</p>\n\t</div>\n</template>\n\n<script>\n/**\n * @file PageResult.vue\n *\n * Represents page and category results.\n *\n * v-html use: snippet comes from trusted API/parser content.\n */\nvar searchResult = require( '../../mixins/searchResult.js' ),\n\tuserLanguage = mw.config.get( 'wgUserLanguage' );\n\n// @vue/component\nmodule.exports = exports = {\n\tname: 'PageResult',\n\n\tmixins: [ searchResult ],\n\n\tinheritAttrs: false,\n\n\tprops: {\n\t\tcategoryinfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: function () {\n\t\t\t\treturn {};\n\t\t\t}\n\t\t},\n\n\t\tsize: {\n\t\t\ttype: Number,\n\t\t\tdefault: null\n\t\t},\n\n\t\twordcount: {\n\t\t\ttype: Number,\n\t\t\tdefault: null\n\t\t},\n\n\t\ttimestamp: {\n\t\t\ttype: String,\n\t\t\tdefault: null\n\t\t},\n\n\t\tsnippet: {\n\t\t\ttype: String,\n\t\t\tdefault: null\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * @return {boolean}\n\t\t */\n\t\thasCategoryText: function () {\n\t\t\treturn Object.keys( this.categoryinfo ).length > 0;\n\t\t},\n\n\t\t/**\n\t\t * @return {string|null}\n\t\t */\n\t\tnamespacePrefix: function () {\n\t\t\tvar title = mw.Title.newFromText( this.title );\n\n\t\t\tif ( !title ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// If this is the default namespace (gallery), getNamespacePrefix()\n\t\t\t// won't return anything, so we need to use this system message\n\t\t\t// instead, which is configured at MediaWiki:Blanknamespace.\n\t\t\t// Otherwise, return the namespace prefix with the trailing\n\t\t\t// colon stripped off.\n\t\t\treturn title.getNamespaceId() === 0 ?\n\t\t\t\t// Main namespace, Gallery, without the parentheses\n\t\t\t\tmw.msg( 'blanknamespace' ).replace( /^[(]?/, '' ).replace( /[)]?$/, '' ) :\n\t\t\t\t// Namespace prefix, with no colon and space instead of underscore\n\t\t\t\ttitle.getNamespacePrefix().replace( /[:]?$/, '' ).replace( /_/g, ' ' );\n\t\t},\n\n\t\t/**\n\t\t * Outputs time and date of last edit, in the user's language.\n\t\t *\n\t\t * Because we're outputting this per-language, the format will vary (e.g.\n\t\t * in en and en-gb, the placement of the month and day will be swapped).\n\t\t * That said, let's standardize on 24-hour time since that's what users\n\t\t * are used to (and it's cleaner than having to add AM/PM).\n\t\t *\n\t\t * This method must guard against invalid dates as well as legacy\n\t\t * browsers that don't support the UTC timezone; in either of these\n\t\t * cases, no value will be returned.\n\t\t *\n\t\t * @return {string|null}\n\t\t */\n\t\tlastEdited: function () {\n\t\t\tvar date = new Date( this.timestamp ),\n\t\t\t\ttimeString,\n\t\t\t\tdateString;\n\n\t\t\tif ( date instanceof Date ) {\n\t\t\t\t// Some browsers may not support UTC timezone.\n\t\t\t\t// If not, simply display nothing.\n\t\t\t\ttry {\n\t\t\t\t\ttimeString = date.toLocaleString( userLanguage, {\n\t\t\t\t\t\ttimeZone: 'UTC',\n\t\t\t\t\t\thour: 'numeric',\n\t\t\t\t\t\tminute: 'numeric',\n\t\t\t\t\t\thour12: false\n\t\t\t\t\t} );\n\t\t\t\t\tdateString = date.toLocaleString( userLanguage, {\n\t\t\t\t\t\ttimeZone: 'UTC',\n\t\t\t\t\t\tyear: 'numeric',\n\t\t\t\t\t\tmonth: 'long',\n\t\t\t\t\t\tday: 'numeric'\n\t\t\t\t\t} );\n\t\t\t\t} catch ( e ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\treturn timeString + ', ' + dateString;\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t}\n\t}\n};\n</script>\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/components/results/VideoResult.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/constants.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/ensureArray.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/getLocationAgnosticMwApi.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/init.js","messages":[],"suppressedMessages":[{"ruleId":"no-jquery/no-global-selector","severity":2,"message":"Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible.","line":12,"column":2,"nodeType":"CallExpression","endLine":12,"endColumn":25,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/mixins/autocompleteLookupHandler.js","messages":[{"ruleId":"es-x/no-regexp-u-flag","severity":2,"message":"ES2015 RegExp 'u' flag is forbidden.","line":64,"column":33,"nodeType":"NewExpression","messageId":"forbidden","endLine":64,"endColumn":82},{"ruleId":"es-x/no-regexp-unicode-property-escapes","severity":2,"message":"ES2018 RegExp Unicode property escape sequences are forbidden.","line":64,"column":33,"nodeType":"NewExpression","messageId":"forbidden","endLine":64,"endColumn":82},{"ruleId":"es-x/no-regexp-u-flag","severity":2,"message":"ES2015 RegExp 'u' flag is forbidden.","line":65,"column":18,"nodeType":"NewExpression","messageId":"forbidden","endLine":65,"endColumn":114},{"ruleId":"es-x/no-regexp-u-flag","severity":2,"message":"ES2015 RegExp 'u' flag is forbidden.","line":108,"column":21,"nodeType":"NewExpression","messageId":"forbidden","endLine":108,"endColumn":70},{"ruleId":"es-x/no-regexp-unicode-property-escapes","severity":2,"message":"ES2018 RegExp Unicode property escape sequences are forbidden.","line":108,"column":21,"nodeType":"NewExpression","messageId":"forbidden","endLine":108,"endColumn":70}],"suppressedMessages":[{"ruleId":"prefer-regex-literals","severity":2,"message":"Use a regular expression literal instead of the 'RegExp' constructor.","line":64,"column":33,"nodeType":"NewExpression","messageId":"unexpectedRegExp","endLine":64,"endColumn":82,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"prefer-regex-literals","severity":2,"message":"Use a regular expression literal instead of the 'RegExp' constructor.","line":108,"column":21,"nodeType":"NewExpression","messageId":"unexpectedRegExp","endLine":108,"endColumn":70,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":5,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"var getLocationAgnosticMwApi = require( '../getLocationAgnosticMwApi.js' ),\n\tapiUri = mw.config.get( 'sdmsExternalEntitySearchBaseUri' );\n\n/**\n * @file searchAutocomplete.js\n *\n * Mixin containing logic for search input autocomplete lookups. This component:\n * - Takes in current search input\n * - Makes wbsearchentities calls to get raw potential autocomplete results\n * - Filters out duplicate results\n * - Filters out results that don't include the final word being typed\n * - Trims the list of results to a predetermined limit\n * - Returns an array of these filtered and trimmed results\n */\nmodule.exports = exports = {\n\n\tdata: function () {\n\t\treturn {\n\t\t\tdebounceTimeoutId: null,\n\t\t\tlookupPromises: null,\n\t\t\tlookupResults: [],\n\t\t\tlookupResultsLimit: 7,\n\t\t\tlookupDisabled: !apiUri\n\t\t};\n\t},\n\n\tmethods: {\n\t\tclearLookupResults: function () {\n\t\t\tthis.lookupResults = [];\n\t\t},\n\n\t\t/**\n\t\t * Get lookup results for current text input.\n\t\t *\n\t\t * @param {string} input\n\t\t */\n\t\tgetDebouncedLookupResults: function ( input ) {\n\t\t\tclearTimeout( this.debounceTimeoutId );\n\t\t\tthis.debounceTimeoutId = setTimeout(\n\t\t\t\tthis.getLookupResults.bind( this, input ),\n\t\t\t\t250\n\t\t\t);\n\t\t},\n\n\t\t/**\n\t\t * Get lookup results for current text input.\n\t\t *\n\t\t * @param {string} input\n\t\t */\n\t\tgetLookupResults: function ( input ) {\n\t\t\tvar trimmedInput = input.trim(),\n\t\t\t\twords,\n\t\t\t\tinputRegex;\n\n\t\t\t// If this is an empty string or just whitespace, bail early.\n\t\t\tif ( trimmedInput.length === 0 ) {\n\t\t\t\tthis.lookupResults = [];\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\t// below could be a regex literal, but eslint fails to parse the `u` flag...\n\t\t\t\t// eslint-disable-next-line prefer-regex-literals\n\t\t\t\twords = trimmedInput.match( new RegExp( '[\\\\p{L}\\\\p{M}\\\\p{N}\\\\p{S}]+', 'gu' ) ) || [];\n\t\t\t\tinputRegex = new RegExp( '^' + new Array( words.length + 1 ).join( '[\\\\p{L}\\\\p{M}\\\\p{N}\\\\p{S}]+.*?' ), 'iu' );\n\t\t\t} catch ( e ) {\n\t\t\t\t// if browser doesn't support unicode regexes, fall back to simple\n\t\t\t\t// space/punctuation-based word detection\n\t\t\t\twords = trimmedInput.match( /[^\\s\\-.:;,\"]+/g ) || [];\n\t\t\t\tinputRegex = new RegExp( '^' + new Array( words.length + 1 ).join( '[^\\\\s\\\\-]+[\\\\s\\\\-.:;,\"]*' ), 'i' );\n\t\t\t}\n\n\t\t\tif ( words.length === 0 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.doLookupRequest( trimmedInput )\n\t\t\t\t.then( function ( results ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tthis.lookupResults = this.getFilteredLookupResults( results, inputRegex );\n\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t// If there is an error in attempting to match & process\n\t\t\t\t\t\t// autocomplete results, swallow it (don't spam the logs)\n\t\t\t\t\t\t// and reset lookup results to an empty array,\n\t\t\t\t\t\t// dismissing the pending state in the input element.\n\t\t\t\t\t\t// strings wrapped in quotes will trigger this behavior,\n\t\t\t\t\t\t// for example.\n\t\t\t\t\t\tthis.clearLookupResults();\n\t\t\t\t\t}\n\t\t\t\t}.bind( this ) );\n\t\t},\n\n\t\t/**\n\t\t * Get unfiltered lookup results for text input.\n\t\t *\n\t\t * @param {string} input\n\t\t * @return {Array}\n\t\t */\n\t\tdoLookupRequest: function ( input ) {\n\t\t\tvar lastWordRegex,\n\t\t\t\tlastWord,\n\t\t\t\tinputPromise,\n\t\t\t\tpromises = [],\n\t\t\t\tlastWordPromise;\n\n\t\t\ttry {\n\t\t\t\t// eslint-disable-next-line prefer-regex-literals\n\t\t\t\tlastWordRegex = new RegExp( '[\\\\p{L}\\\\p{M}\\\\p{N}\\\\p{S}]+$', 'u' );\n\t\t\t\tlastWord = input.match( lastWordRegex );\n\t\t\t} catch ( e ) {\n\t\t\t\tlastWordRegex = /[^\\s\\-.:;,]+$/;\n\t\t\t\tlastWord = input.match( lastWordRegex );\n\t\t\t}\n\n\t\t\t// Abort in-flight lookup promises to ensure the results provided\n\t\t\t// are for the most recent search input.\n\t\t\tif ( this.lookupPromises ) {\n\t\t\t\tthis.lookupPromises.abort();\n\t\t\t}\n\n\t\t\t// First, get results for the entire search input.\n\t\t\tinputPromise = this.getLookupRequestForTerm( input );\n\t\t\tpromises.push(\n\t\t\t\tinputPromise.then( function ( response ) {\n\t\t\t\t\treturn response.search.map( function ( result ) {\n\t\t\t\t\t\t// Get search term that matched (could be label or alias or...)\n\t\t\t\t\t\treturn result.match.text;\n\t\t\t\t\t} );\n\t\t\t\t} ).promise( { abort: inputPromise.abort } )\n\t\t\t);\n\n\t\t\t// Next, if there's more than 1 word, get results for just the last\n\t\t\t// word. Results for the entire search term will still be preferred\n\t\t\t// but this can help return more relevant results for some queries,\n\t\t\t// e.g. when the second word is more specific or meaningful than the\n\t\t\t// first.\n\t\t\tif ( lastWord && lastWord[ 0 ] && input !== lastWord[ 0 ] ) {\n\t\t\t\tlastWordPromise = this.getLookupRequestForTerm( lastWord[ 0 ] );\n\t\t\t\tpromises.push(\n\t\t\t\t\tlastWordPromise.then( function ( response ) {\n\t\t\t\t\t\treturn response.search.map( function ( result ) {\n\t\t\t\t\t\t\t// Add search term to rest of the input.\n\t\t\t\t\t\t\treturn input.replace( lastWordRegex, result.match.text );\n\t\t\t\t\t\t} );\n\t\t\t\t\t} ).promise( { abort: lastWordPromise.abort } )\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Combine the promises and add an abort function so we can cancel\n\t\t\t// this if the search input is updated (i.e. continued typing).\n\t\t\tthis.lookupPromises = $.when.apply( $, promises )\n\t\t\t\t.then( function () {\n\t\t\t\t\t// Combine the results of multiple API calls.\n\t\t\t\t\treturn [].slice.call( arguments ).reduce( function ( combined, results ) {\n\t\t\t\t\t\treturn combined.concat( results );\n\t\t\t\t\t}, [] );\n\t\t\t\t} ).promise( { abort: function () {\n\t\t\t\t\tpromises.forEach( function ( promise ) {\n\t\t\t\t\t\tpromise.abort();\n\t\t\t\t\t} );\n\t\t\t\t} } );\n\n\t\t\treturn this.lookupPromises;\n\t\t},\n\n\t\t/**\n\t\t * Set up a wbsearchentities API call for an input string.\n\t\t *\n\t\t * @param {string} term\n\t\t * @return {jQuery.promise}\n\t\t */\n\t\tgetLookupRequestForTerm: function ( term ) {\n\t\t\tvar api = getLocationAgnosticMwApi( apiUri, { anonymous: true } );\n\n\t\t\tif ( this.lookupDisabled ) {\n\t\t\t\treturn $.Deferred().resolve( { search: [] } ).promise( { abort: function () {} } );\n\t\t\t}\n\n\t\t\treturn api.get( {\n\t\t\t\taction: 'wbsearchentities',\n\t\t\t\tsearch: term,\n\t\t\t\tformat: 'json',\n\t\t\t\tlanguage: mw.config.get( 'wgUserLanguage' ),\n\t\t\t\tuselang: mw.config.get( 'wgUserLanguage' ),\n\t\t\t\ttype: 'item',\n\t\t\t\t// request more than our limit, so we can omit duplicates\n\t\t\t\tlimit: 50\n\t\t\t} );\n\t\t},\n\n\t\t/**\n\t\t * Filter results.\n\t\t *\n\t\t * @param {Array} lookupResults All lookup results\n\t\t * @param {string} inputRegex Regex for isolating last word\n\t\t * @return {Array}\n\t\t */\n\t\tgetFilteredLookupResults: function ( lookupResults, inputRegex ) {\n\t\t\treturn lookupResults\n\t\t\t\t.map( function ( result ) {\n\t\t\t\t\t// Only suggest completion for the word currently being typed.\n\t\t\t\t\tvar match = result.match( inputRegex );\n\t\t\t\t\treturn match.length > 0 ? match[ 0 ] : '';\n\t\t\t\t} )\n\t\t\t\t// Filter for unique values.\n\t\t\t\t// Could do a simple `indexOf` to see if a value already exists\n\t\t\t\t// but that'd be case-sensitive, and since case doesn't matter\n\t\t\t\t// for search terms, we shouldn't be showing the same term in\n\t\t\t\t// different capitalization if it's going to give the same results.\n\t\t\t\t.filter( function ( value, i, array ) {\n\t\t\t\t\treturn !array.slice( 0, i ).some( function ( previousValue ) {\n\t\t\t\t\t\treturn previousValue.toLowerCase() === value.toLowerCase();\n\t\t\t\t\t} );\n\t\t\t\t} )\n\t\t\t\t// Return a limited number of results to show the user.\n\t\t\t\t.slice( 0, this.lookupResultsLimit );\n\t\t}\n\t}\n};\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/mixins/restoreHistoryHandler.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/mixins/searchResult.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/mixins/searchResultTimeBased.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/models/SearchFilter.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/plugins/eventLogger.js","messages":[],"suppressedMessages":[{"ruleId":"camelcase","severity":2,"message":"Identifier 'web_pageview_id' is not in camel case.","line":18,"column":11,"nodeType":"Identifier","messageId":"notCamelCase","endLine":18,"endColumn":26,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'language_code' is not in camel case.","line":19,"column":11,"nodeType":"Identifier","messageId":"notCamelCase","endLine":19,"endColumn":24,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'ui_mw_skin' is not in camel case.","line":20,"column":11,"nodeType":"Identifier","messageId":"notCamelCase","endLine":20,"endColumn":21,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/store/actions.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/store/getters.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/store/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/store/mutations.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/store/state.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/jest/components/DidYouMean.test.js","messages":[{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":1,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":3,"endColumn":72},{"ruleId":"es-x/no-destructuring","severity":2,"message":"ES2015 destructuring is forbidden.","line":2,"column":2,"nodeType":"ObjectPattern","messageId":"forbidden","endLine":2,"endColumn":25},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":6,"column":2,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":10,"endColumn":13},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":38,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":42,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":44,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":44,"endColumn":56},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":51,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":55,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":57,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":57,"endColumn":57},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":63,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":67,"endColumn":8}],"suppressedMessages":[],"errorCount":8,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"const Vuex = require( 'vuex' ),\n\t{ mount, shallowMount } = require( '@vue/test-utils' ),\n\tComponent = require( '../../../resources/components/DidYouMean.vue' );\n\ndescribe( 'DidYoumean', function () {\n\tlet store,\n\t\tstate,\n\t\tgetters,\n\t\tactions,\n\t\tmutations;\n\n\tbeforeEach( function () {\n\t\tstate = {};\n\t\tgetters = {\n\t\t};\n\t\tmutations = {\n\t\t};\n\t\tactions = {\n\t\t};\n\t\tstore = new Vuex.Store( {\n\t\t\tstate: state,\n\t\t\tgetters: getters,\n\t\t\tmutations: mutations,\n\t\t\tactions: actions\n\t\t} );\n\n\t} );\n\n\tafterEach( function () {\n\t\tstore = undefined;\n\t\tstate = undefined;\n\t\tgetters = undefined;\n\t\tactions = undefined;\n\t\tmutations = undefined;\n\t} );\n\n\tit( 'Does not render DidYouMean component if state if empty', function () {\n\t\tconst wrapper = shallowMount( Component, {\n\t\t\tglobal: {\n\t\t\t\tplugins: [ store ]\n\t\t\t}\n\t\t} );\n\n\t\tconst element = wrapper.find( '.sdms-did-you-mean' );\n\t\texpect( element.exists() ).toBe( false );\n\t} );\n\n\tdescribe( 'When DidYouMean is present in the store', function () {\n\t\tit( 'Renders DidYouMean component', function () {\n\t\t\tstore.replaceState( { didYouMean: 'test' } );\n\t\t\tconst wrapper = mount( Component, {\n\t\t\t\tglobal: {\n\t\t\t\t\tplugins: [ store ]\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tconst element = wrapper.find( '.sdms-did-you-mean' );\n\t\t\texpect( element.exists() ).toBe( true );\n\t\t} );\n\n\t\tit( 'Creates an anchor tag', function () {\n\t\t\tstore.replaceState( { didYouMean: 'test' } );\n\t\t\tconst wrapper = mount( Component, {\n\t\t\t\tglobal: {\n\t\t\t\t\tplugins: [ store ]\n\t\t\t\t}\n\t\t\t} );\n\t\t\texpect( wrapper.vm.didYouMeanLink.tagName ).toBe( 'A' );\n\t\t} );\n\t} );\n\n} );\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/jest/components/EmptyState.test.js","messages":[{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":1,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":2,"endColumn":37},{"ruleId":"es-x/no-destructuring","severity":2,"message":"ES2015 destructuring is forbidden.","line":1,"column":7,"nodeType":"ObjectPattern","messageId":"forbidden","endLine":1,"endColumn":23},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":4,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":4,"endColumn":22},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":6,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":13,"endColumn":3},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":19,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":19,"endColumn":45},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":20,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":20,"endColumn":55},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":28,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":28,"endColumn":46},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":29,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":29,"endColumn":56},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":35,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":35,"endColumn":46},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":36,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":36,"endColumn":62},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":42,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":42,"endColumn":46},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":43,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":43,"endColumn":58}],"suppressedMessages":[],"errorCount":12,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"const { shallowMount } = require( '@vue/test-utils' ),\n\twhen = require( 'jest-when' ).when;\n\nlet component = null;\n\nconst defineComponent = function ( totalResult ) {\n\tjest.resetModules();\n\twhen( global.mw.config.get )\n\t\t.calledWith( 'sdmsTotalSiteImages' )\n\t\t.mockReturnValue( totalResult );\n\n\tcomponent = require( '../../../resources/components/EmptyState.vue' );\n};\n\ndescribe( 'EmptyState', function () {\n\n\tit( 'Does not render the component if sdmsTotalSiteImages is 0', function () {\n\t\tdefineComponent( 0 );\n\t\tconst wrapper = shallowMount( component );\n\t\tconst element = wrapper.find( '.sdms-empty-state' );\n\t\texpect( element.exists() ).toBe( false );\n\t} );\n\n\tdescribe( 'when sdmsTotalSiteImages is greater than 0', function () {\n\n\t\tit( 'render the component', function () {\n\t\t\tdefineComponent( 1 );\n\t\t\tconst wrapper = shallowMount( component );\n\t\t\tconst element = wrapper.find( '.sdms-empty-state' );\n\t\t\texpect( element.exists() ).toBe( true );\n\t\t} );\n\n\t\tit( 'render empty state icon', function () {\n\t\t\tdefineComponent( 1 );\n\t\t\tconst wrapper = shallowMount( component );\n\t\t\tconst element = wrapper.find( '.sdms-empty-state__icon' );\n\t\t\texpect( element.exists() ).toBe( true );\n\t\t} );\n\n\t\tit( 'render message paragraph', function () {\n\t\t\tdefineComponent( 1 );\n\t\t\tconst wrapper = shallowMount( component );\n\t\t\tconst element = wrapper.find( '.sdms-empty-state p' );\n\t\t\texpect( element.exists() ).toBe( true );\n\t\t} );\n\t} );\n} );\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/jest/components/EndOfResults.test.js","messages":[{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":1,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":2,"endColumn":74},{"ruleId":"es-x/no-destructuring","severity":2,"message":"ES2015 destructuring is forbidden.","line":1,"column":7,"nodeType":"ObjectPattern","messageId":"forbidden","endLine":1,"endColumn":23},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":5,"column":2,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":5,"endColumn":44},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":8,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":8,"endColumn":58},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":12,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":12,"endColumn":60}],"suppressedMessages":[],"errorCount":5,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"const { shallowMount } = require( '@vue/test-utils' ),\n\tComponent = require( '../../../resources/components/EndOfResults.vue' );\n\ndescribe( 'EndOfResults', function () {\n\tconst wrapper = shallowMount( Component );\n\n\tit( 'render the component', function () {\n\t\tconst element = wrapper.find( '.sdms-end-of-results' );\n\t\texpect( element.exists() ).toBe( true );\n\t} );\n\tit( 'render mediasearch-end-of-results text', function () {\n\t\tconst element = wrapper.find( '.sdms-end-of-results p' );\n\t\texpect( element.text() ).toBe( 'mediasearch-end-of-results' );\n\t} );\n} );\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/jest/components/NamespaceFilterDialog.test.js","messages":[{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":1,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":4,"endColumn":74},{"ruleId":"es-x/no-destructuring","severity":2,"message":"ES2015 destructuring is forbidden.","line":1,"column":7,"nodeType":"ObjectPattern","messageId":"forbidden","endLine":1,"endColumn":30},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":8,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":15,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":17,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":17,"endColumn":60},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":23,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":31,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":39,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":47,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":55,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":62,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":67,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":74,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":82,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":89,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":94,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":101,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":111,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":120,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":129,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":138,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":149,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":156,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":164,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":171,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":176,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":183,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":188,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":195,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":204,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":211,"endColumn":9},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":218,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":225,"endColumn":9},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":226,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":226,"endColumn":50},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":232,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":239,"endColumn":9},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":240,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":240,"endColumn":52},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":248,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":255,"endColumn":9},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":262,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":269,"endColumn":9},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":276,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":283,"endColumn":9},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":291,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":298,"endColumn":9},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":309,"column":6,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":316,"endColumn":10},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":323,"column":6,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":330,"endColumn":10},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":339,"column":6,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":346,"endColumn":10},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":353,"column":6,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":360,"endColumn":10},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":373,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":380,"endColumn":9},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":387,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":394,"endColumn":9}],"suppressedMessages":[],"errorCount":31,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"const { mount, shallowMount } = require( '@vue/test-utils' ),\n\tComponent = require( '../../../resources/components/NamespaceFilterDialog.vue' ),\n\tRadio = require( '../../../resources/components/base/Radio.vue' ),\n\tCheckbox = require( '../../../resources/components/base/Checkbox.vue' );\n\ndescribe( 'EndOfResults', function () {\n\tit( 'render the component', function () {\n\t\tconst wrapper = shallowMount( Component, {\n\t\t\tprops: {\n\t\t\t\titems: [],\n\t\t\t\tnamespaces: {},\n\t\t\t\tnamespaceGroups: {},\n\t\t\t\tinitialValue: 'all'\n\t\t\t}\n\t\t} );\n\n\t\tconst element = wrapper.find( '.sdms-namespace-dialog' );\n\t\texpect( element.exists() ).toBe( true );\n\t} );\n\n\tdescribe( 'when items are set', function () {\n\t\tit( 'render an sd-radio', function () {\n\t\t\tconst wrapper = mount( Component, {\n\t\t\t\tprops: {\n\t\t\t\t\tactive: true,\n\t\t\t\t\titems: [ { value: 'test' } ],\n\t\t\t\t\tnamespaces: {},\n\t\t\t\t\tnamespaceGroups: {},\n\t\t\t\t\tinitialValue: 'all'\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\texpect( wrapper.findComponent( Radio ).exists() ).toBe( true );\n\t\t} );\n\t} );\n\n\tdescribe( 'when formattedNamespaces are set', function () {\n\t\tit( 'render an sd-checkbox', function () {\n\t\t\tconst wrapper = mount( Component, {\n\t\t\t\tprops: {\n\t\t\t\t\tactive: true,\n\t\t\t\t\titems: [],\n\t\t\t\t\tnamespaces: { value: 'test' },\n\t\t\t\t\tnamespaceGroups: {},\n\t\t\t\t\tinitialValue: 'all'\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\texpect( wrapper.findComponent( Checkbox ).exists() ).toBe( true );\n\t\t} );\n\t} );\n\n\tdescribe( 'initialRadio', function () {\n\t\tit( 'returns initial value if valid', function () {\n\t\t\tconst wrapper = shallowMount( Component, {\n\t\t\t\tprops: {\n\t\t\t\t\titems: [],\n\t\t\t\t\tnamespaces: {},\n\t\t\t\t\tnamespaceGroups: { test: { value: 'test' } },\n\t\t\t\t\tinitialValue: 'test'\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\texpect( wrapper.vm.initialRadio ).toBe( 'test' );\n\t\t} );\n\t\tit( 'returns custom if no initial value is provided', function () {\n\t\t\tconst wrapper = shallowMount( Component, {\n\t\t\t\tprops: {\n\t\t\t\t\titems: [],\n\t\t\t\t\tnamespaces: {},\n\t\t\t\t\tnamespaceGroups: { test: { value: 'test' } },\n\t\t\t\t\tinitialValue: ''\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\texpect( wrapper.vm.initialRadio ).toBe( 'all' );\n\t\t} );\n\t} );\n\n\tdescribe( 'initialCustom', function () {\n\t\tit( 'returns initialValue if is a custom value (number)', function () {\n\t\t\tconst wrapper = shallowMount( Component, {\n\t\t\t\tprops: {\n\t\t\t\t\titems: [],\n\t\t\t\t\tnamespaces: {},\n\t\t\t\t\tnamespaceGroups: { test: { value: 'test' } },\n\t\t\t\t\tinitialValue: '10'\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\texpect( wrapper.vm.initialCustom ).toContain( '10' );\n\t\t} );\n\t\tit( 'returns array with formatted InitialValue', function () {\n\t\t\tconst wrapper = shallowMount( Component, {\n\t\t\t\tprops: {\n\t\t\t\t\titems: [],\n\t\t\t\t\tnamespaces: {},\n\t\t\t\t\tnamespaceGroups: { test: { value: 'test' } },\n\t\t\t\t\tinitialValue: '10|20|500'\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\texpect( wrapper.vm.initialCustom.length ).toBe( 3 );\n\t\t\texpect( wrapper.vm.initialCustom ).toContain( '10' );\n\t\t\texpect( wrapper.vm.initialCustom ).toContain( '20' );\n\t\t\texpect( wrapper.vm.initialCustom ).toContain( '500' );\n\t\t} );\n\t} );\n\tdescribe( 'formattedNamespaces', function () {\n\t\tit( 'generates label and value for namespaces', function () {\n\t\t\tconst wrapper = shallowMount( Component, {\n\t\t\t\tprops: {\n\t\t\t\t\titems: [],\n\t\t\t\t\tnamespaces: {\n\t\t\t\t\t\t10: 'test10'\n\t\t\t\t\t},\n\t\t\t\t\tnamespaceGroups: {},\n\t\t\t\t\tinitialValue: ''\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\texpect( wrapper.vm.formattedNamespaces.length ).toBe( 1 );\n\t\t\texpect( wrapper.vm.formattedNamespaces[ 0 ] ).toMatchObject(\n\t\t\t\texpect.objectContaining( { label: 'test10', value: '10' } )\n\t\t\t);\n\t\t} );\n\t\tit( 'default the label for a namespace with a value of 0 (blanknamespace)', function () {\n\t\t\tglobal.mw.msg.mockReturnValueOnce( 'blanknamespace' );\n\t\t\tconst wrapper = shallowMount( Component, {\n\t\t\t\tprops: {\n\t\t\t\t\titems: [],\n\t\t\t\t\tnamespaces: {\n\t\t\t\t\t\t0: 0\n\t\t\t\t\t},\n\t\t\t\t\tnamespaceGroups: {},\n\t\t\t\t\tinitialValue: ''\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\texpect( wrapper.vm.formattedNamespaces.length ).toBe( 1 );\n\t\t\texpect( wrapper.vm.formattedNamespaces[ 0 ] ).toMatchObject(\n\t\t\t\texpect.objectContaining( { label: 'blanknamespace', value: '0' } )\n\t\t\t);\n\t\t} );\n\t} );\n\n\tdescribe( 'isCustom', function () {\n\t\tit( 'return true if selectedRadio is equal to \"custom\" ', function () {\n\t\t\tconst wrapper = shallowMount( Component, {\n\t\t\t\tprops: {\n\t\t\t\t\titems: [],\n\t\t\t\t\tnamespaces: {},\n\t\t\t\t\tnamespaceGroups: {},\n\t\t\t\t\tinitialValue: 'custom'\n\t\t\t\t}\n\t\t\t} );\n\t\t\twrapper.setData( { selectedRadio: 'custom', selectedCustom: [] } );\n\t\t\texpect( wrapper.vm.isCustom ).toBe( true );\n\t\t} );\n\t} );\n\n\tdescribe( 'disableDialogAction', function () {\n\t\tit( 'return false if not custom\" ', function () {\n\t\t\tconst wrapper = shallowMount( Component, {\n\t\t\t\tprops: {\n\t\t\t\t\titems: [],\n\t\t\t\t\tnamespaces: {},\n\t\t\t\t\tnamespaceGroups: {},\n\t\t\t\t\tinitialValue: 'custom'\n\t\t\t\t}\n\t\t\t} );\n\t\t\twrapper.setData( { selectedRadio: 'notCustom', selectedCustom: [] } );\n\t\t\texpect( wrapper.vm.disableDialogAction ).toBe( false );\n\t\t} );\n\t\tit( 'return false if custom and with selected values\" ', function () {\n\t\t\tconst wrapper = shallowMount( Component, {\n\t\t\t\tprops: {\n\t\t\t\t\titems: [],\n\t\t\t\t\tnamespaces: {},\n\t\t\t\t\tnamespaceGroups: {},\n\t\t\t\t\tinitialValue: 'custom'\n\t\t\t\t}\n\t\t\t} );\n\t\t\twrapper.setData( { selectedRadio: 'custom', selectedCustom: [ 1 ] } );\n\t\t\texpect( wrapper.vm.disableDialogAction ).toBe( false );\n\t\t} );\n\t\tit( 'return true if custom but without selected custom\" ', function () {\n\t\t\tconst wrapper = shallowMount( Component, {\n\t\t\t\tprops: {\n\t\t\t\t\titems: [],\n\t\t\t\t\tnamespaces: {},\n\t\t\t\t\tnamespaceGroups: {},\n\t\t\t\t\tinitialValue: 'custom'\n\t\t\t\t}\n\t\t\t} );\n\t\t\twrapper.setData( { selectedRadio: 'custom', selectedCustom: [] } );\n\t\t\texpect( wrapper.vm.disableDialogAction ).toBe( true );\n\t\t} );\n\t} );\n\n\tdescribe( 'methods', function () {\n\t\tdescribe( 'cancel', function () {\n\t\t\tit( 'emit a \"close\" event', function () {\n\t\t\t\tconst wrapper = shallowMount( Component, {\n\t\t\t\t\tprops: {\n\t\t\t\t\t\titems: [],\n\t\t\t\t\t\tnamespaces: {},\n\t\t\t\t\t\tnamespaceGroups: {},\n\t\t\t\t\t\tinitialValue: 'test'\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\twrapper.vm.cancel();\n\n\t\t\t\texpect( wrapper.emitted().close ).toBeTruthy();\n\t\t\t} );\n\t\t\tit( 'reset selectedRadio to initialRadio', function () {\n\t\t\t\tconst wrapper = shallowMount( Component, {\n\t\t\t\t\tprops: {\n\t\t\t\t\t\titems: [],\n\t\t\t\t\t\tnamespaces: {},\n\t\t\t\t\t\tnamespaceGroups: {},\n\t\t\t\t\t\tinitialValue: 'test'\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\tconst initialRadio = wrapper.vm.initialRadio;\n\t\t\t\twrapper.vm.cancel();\n\n\t\t\t\texpect( wrapper.vm.selectedRadio ).toBe( initialRadio );\n\t\t\t} );\n\t\t\tit( 'reset selectedRadio to initialRadio', function () {\n\t\t\t\tconst wrapper = shallowMount( Component, {\n\t\t\t\t\tprops: {\n\t\t\t\t\t\titems: [],\n\t\t\t\t\t\tnamespaces: {},\n\t\t\t\t\t\tnamespaceGroups: {},\n\t\t\t\t\t\tinitialValue: 'test'\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\tconst initialCustom = wrapper.vm.initialCustom;\n\t\t\t\twrapper.vm.cancel();\n\n\t\t\t\texpect( wrapper.vm.selectedCustom ).toEqual( initialCustom );\n\t\t\t} );\n\t\t} );\n\t\tdescribe( 'onProgress', function () {\n\t\t\tit( 'emit a \"close\" event', function () {\n\t\t\t\tconst wrapper = shallowMount( Component, {\n\t\t\t\t\tprops: {\n\t\t\t\t\t\titems: [],\n\t\t\t\t\t\tnamespaces: {},\n\t\t\t\t\t\tnamespaceGroups: {},\n\t\t\t\t\t\tinitialValue: 'test'\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\twrapper.vm.onProgress();\n\n\t\t\t\texpect( wrapper.emitted().close ).toBeTruthy();\n\t\t\t} );\n\t\t\tit( 'emit a \"submit\" event', function () {\n\t\t\t\tconst wrapper = shallowMount( Component, {\n\t\t\t\t\tprops: {\n\t\t\t\t\t\titems: [],\n\t\t\t\t\t\tnamespaces: {},\n\t\t\t\t\t\tnamespaceGroups: {},\n\t\t\t\t\t\tinitialValue: 'test'\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\twrapper.vm.onProgress();\n\n\t\t\t\texpect( wrapper.emitted().submit ).toBeTruthy();\n\t\t\t} );\n\t\t\tit( 'emit a \"submit\" event with selectedRadio if namespace is not custom', function () {\n\t\t\t\tconst wrapper = shallowMount( Component, {\n\t\t\t\t\tprops: {\n\t\t\t\t\t\titems: [],\n\t\t\t\t\t\tnamespaces: {},\n\t\t\t\t\t\tnamespaceGroups: {},\n\t\t\t\t\t\tinitialValue: 'test'\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\twrapper.setData( { selectedRadio: 'notCustom' } );\n\t\t\t\twrapper.vm.onProgress();\n\n\t\t\t\texpect( wrapper.emitted().submit[ 0 ] ).toEqual( [ 'notCustom' ] );\n\t\t\t} );\n\t\t\tit( 'emit a \"submit\" event with selectedCustom if namespace is custom', function () {\n\t\t\t\tconst wrapper = shallowMount( Component, {\n\t\t\t\t\tprops: {\n\t\t\t\t\t\titems: [],\n\t\t\t\t\t\tnamespaces: {},\n\t\t\t\t\t\tnamespaceGroups: {},\n\t\t\t\t\t\tinitialValue: 'test'\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\twrapper.setData( { selectedRadio: 'custom', selectedCustom: [ 'test' ] } );\n\t\t\t\twrapper.vm.onProgress();\n\n\t\t\t\texpect( wrapper.emitted().submit[ 0 ] ).toEqual( [ 'test' ] );\n\t\t\t} );\n\t\t} );\n\t\tdescribe( 'select', function () {\n\t\t\tdescribe( 'when value provided is part of namespaceGroups', function () {\n\t\t\t\tit( 'set seletedRadio as the value provided', function () {\n\t\t\t\t\tconst wrapper = shallowMount( Component, {\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\titems: [],\n\t\t\t\t\t\t\tnamespaces: {},\n\t\t\t\t\t\t\tnamespaceGroups: { test: { test: 'test' }, custom: { test: 'test' } },\n\t\t\t\t\t\t\tinitialValue: 'test'\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t\twrapper.vm.select( 'test' );\n\n\t\t\t\t\texpect( wrapper.vm.selectedRadio ).toEqual( 'test' );\n\t\t\t\t} );\n\t\t\t\tit( 'set reset selectedCustom to initialCustom', function () {\n\t\t\t\t\tconst wrapper = shallowMount( Component, {\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\titems: [],\n\t\t\t\t\t\t\tnamespaces: {},\n\t\t\t\t\t\t\tnamespaceGroups: { test: { test: 'test' }, custom: { test: 'test' } },\n\t\t\t\t\t\t\tinitialValue: 'test'\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t\twrapper.vm.select( 'test' );\n\n\t\t\t\t\texpect( wrapper.vm.selectedCustom ).toEqual( wrapper.vm.initialCustom );\n\t\t\t\t} );\n\t\t\t} );\n\t\t\tdescribe( 'when value provided is not part of namespaceGroups', function () {\n\t\t\t\tit( 'set seletedRadio as \"custom\"', function () {\n\t\t\t\t\tconst wrapper = shallowMount( Component, {\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\titems: [],\n\t\t\t\t\t\t\tnamespaces: {},\n\t\t\t\t\t\t\tnamespaceGroups: {},\n\t\t\t\t\t\t\tinitialValue: 'test'\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t\twrapper.vm.select( 'customValue' );\n\n\t\t\t\t\texpect( wrapper.vm.selectedRadio ).toEqual( 'custom' );\n\t\t\t\t} );\n\t\t\t\tit( 'set reset selectedCustom to the formatted value provided', function () {\n\t\t\t\t\tconst wrapper = shallowMount( Component, {\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\titems: [],\n\t\t\t\t\t\t\tnamespaces: {},\n\t\t\t\t\t\t\tnamespaceGroups: {},\n\t\t\t\t\t\t\tinitialValue: 'test'\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t\twrapper.vm.select( 'value|value2' );\n\n\t\t\t\t\texpect( wrapper.vm.selectedCustom.length ).toBe( 2 );\n\t\t\t\t\texpect( wrapper.vm.selectedCustom ).toContain( 'value' );\n\t\t\t\t\texpect( wrapper.vm.selectedCustom ).toContain( 'value2' );\n\t\t\t\t} );\n\t\t\t} );\n\t\t} );\n\n\t\tdescribe( 'reset', function () {\n\t\t\tit( 'reset the value of selectedRadio to initialRadio', function () {\n\t\t\t\tconst wrapper = shallowMount( Component, {\n\t\t\t\t\tprops: {\n\t\t\t\t\t\titems: [],\n\t\t\t\t\t\tnamespaces: {},\n\t\t\t\t\t\tnamespaceGroups: {},\n\t\t\t\t\t\tinitialValue: 'test'\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\twrapper.vm.reset();\n\n\t\t\t\texpect( wrapper.vm.selectedRadio ).toBe( wrapper.vm.initialRadio );\n\t\t\t} );\n\t\t\tit( 'reset the value of selectedCustom to initialCustom', function () {\n\t\t\t\tconst wrapper = shallowMount( Component, {\n\t\t\t\t\tprops: {\n\t\t\t\t\t\titems: [],\n\t\t\t\t\t\tnamespaces: {},\n\t\t\t\t\t\tnamespaceGroups: {},\n\t\t\t\t\t\tinitialValue: 'test'\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\twrapper.vm.reset();\n\n\t\t\t\texpect( wrapper.vm.selectedCustom ).toEqual( wrapper.vm.initialCustom );\n\t\t\t} );\n\t\t} );\n\t} );\n} );\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/jest/components/NoResults.test.js","messages":[{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":1,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":2,"endColumn":71},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":5,"column":2,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":5,"endColumn":57},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":8,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":8,"endColumn":54},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":12,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":12,"endColumn":60},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":16,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":16,"endColumn":56},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":20,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":20,"endColumn":60}],"suppressedMessages":[],"errorCount":6,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"const VueTestUtils = require( '@vue/test-utils' ),\n\tComponent = require( '../../../resources/components/NoResults.vue' );\n\ndescribe( 'NoResults', function () {\n\tconst wrapper = VueTestUtils.shallowMount( Component );\n\n\tit( 'render the component', function () {\n\t\tconst element = wrapper.find( '.sdms-no-results' );\n\t\texpect( element.exists() ).toBe( true );\n\t} );\n\tit( 'render the no result icon', function () {\n\t\tconst element = wrapper.find( '.sdms-no-results__icon' );\n\t\texpect( element.exists() ).toBe( true );\n\t} );\n\tit( 'render mediasearch-no-results text', function () {\n\t\tconst element = wrapper.find( '.sdms-no-results p' );\n\t\texpect( element.text() ).toContain( 'mediasearch-no-results' );\n\t} );\n\tit( 'render mediasearch-no-results-tips text', function () {\n\t\tconst element = wrapper.find( '.sdms-no-results__tips' );\n\t\texpect( element.text() ).toContain( 'mediasearch-no-results-tips' );\n\t} );\n} );\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/jest/components/QuickView.test.js","messages":[{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":1,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":1,"endColumn":70},{"ruleId":"es-x/no-destructuring","severity":2,"message":"ES2015 destructuring is forbidden.","line":1,"column":7,"nodeType":"ObjectPattern","messageId":"forbidden","endLine":1,"endColumn":38},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":2,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":2,"endColumn":30},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":4,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":4,"endColumn":77},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":5,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":5,"endColumn":42},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":8,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":8,"endColumn":120},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":9,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":9,"endColumn":121},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":11,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":11,"endColumn":50},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":20,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":20,"endColumn":76},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":25,"column":2,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":25,"endColumn":43},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":37,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":45,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":51,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":59,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":61,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":61,"endColumn":45},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":66,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":74,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":76,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":76,"endColumn":51},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":77,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":77,"endColumn":49},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":78,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":78,"endColumn":53},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":86,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":94,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":96,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":96,"endColumn":51},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":106,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":114,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":116,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":116,"endColumn":49},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":126,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":134,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":136,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":136,"endColumn":53},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":146,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":154,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":156,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":156,"endColumn":58},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":161,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":169,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":171,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":171,"endColumn":58},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":176,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":184,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":186,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":186,"endColumn":64},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":191,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":199,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":201,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":201,"endColumn":59},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":206,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":214,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":216,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":216,"endColumn":60},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":221,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":232,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":234,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":234,"endColumn":63},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":239,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":247,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":249,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":249,"endColumn":67},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":254,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":262,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":264,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":264,"endColumn":75},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":269,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":277,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":279,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":279,"endColumn":66},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":284,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":292,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":294,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":294,"endColumn":63},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":299,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":307,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":309,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":309,"endColumn":62},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":314,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":322,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":324,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":324,"endColumn":65},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":333,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":341,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":347,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":355,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":361,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":369,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":378,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":386,"endColumn":9},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":398,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":406,"endColumn":9},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":430,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":438,"endColumn":9},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":444,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":444,"endColumn":60},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":445,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":453,"endColumn":9},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":464,"column":6,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":464,"endColumn":61},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":465,"column":6,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":473,"endColumn":10},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":482,"column":6,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":482,"endColumn":30},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":483,"column":6,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":491,"endColumn":10},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":505,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":505,"endColumn":60},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":506,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":514,"endColumn":9},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":525,"column":6,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":525,"endColumn":61},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":526,"column":6,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":534,"endColumn":10},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":543,"column":6,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":543,"endColumn":30},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":544,"column":6,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":552,"endColumn":10},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":561,"column":6,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":569,"endColumn":10},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":577,"column":6,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":585,"endColumn":10},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":593,"column":6,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":601,"endColumn":10},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":611,"column":6,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":618,"endColumn":10},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":626,"column":6,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":634,"endColumn":10},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":635,"column":6,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":635,"endColumn":93},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":642,"column":6,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":642,"endColumn":52},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":648,"column":6,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":656,"endColumn":10},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":665,"column":6,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":672,"endColumn":10},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":680,"column":6,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":680,"endColumn":82},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":690,"column":6,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":690,"endColumn":87},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":699,"column":6,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":699,"endColumn":82},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":700,"column":6,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":700,"endColumn":52},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":725,"column":6,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":732,"endColumn":10},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":740,"column":6,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":748,"endColumn":10},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":750,"column":6,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":750,"endColumn":87},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":759,"column":6,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":766,"endColumn":10},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":778,"column":6,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":786,"endColumn":10},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":800,"column":6,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":808,"endColumn":10},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":816,"column":6,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":816,"endColumn":68},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":821,"column":6,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":829,"endColumn":10},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":840,"column":6,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":848,"endColumn":10},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":857,"column":6,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":865,"endColumn":10},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":873,"column":6,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":881,"endColumn":10},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":889,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":897,"endColumn":9},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":904,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":912,"endColumn":9},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":917,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":925,"endColumn":9},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":938,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":946,"endColumn":9},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":965,"column":6,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":973,"endColumn":10},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":976,"column":6,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":978,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":984,"column":6,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":992,"endColumn":10},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":995,"column":6,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":997,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":1005,"column":6,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":1013,"endColumn":10},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":1022,"column":6,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":1030,"endColumn":10},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":1031,"column":6,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":1031,"endColumn":69},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":1035,"column":6,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":1043,"endColumn":10},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":1044,"column":6,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":1044,"endColumn":74},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":1050,"column":6,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":1058,"endColumn":10},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":1059,"column":6,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":1059,"endColumn":69},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":1063,"column":6,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":1071,"endColumn":10},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":1072,"column":6,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":1072,"endColumn":78},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":1078,"column":6,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":1086,"endColumn":10},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":1087,"column":6,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":1087,"endColumn":78},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":1099,"column":6,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":1107,"endColumn":10},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":1123,"column":6,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":1131,"endColumn":10},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":1146,"column":6,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":1154,"endColumn":10},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":1162,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":1170,"endColumn":9},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":1177,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":1188,"endColumn":9},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":1196,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":1207,"endColumn":9},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":1215,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":1226,"endColumn":9},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":1237,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":1248,"endColumn":8}],"suppressedMessages":[],"errorCount":116,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"const { config, mount, shallowMount } = require( '@vue/test-utils' );\nconst Vue = require( 'vue' );\n\nconst SdPlayer = require( '../../../resources/components/base/Player.vue' );\nconst when = require( 'jest-when' ).when;\n// grab a random image result from the set\n// Note: results are stored as key/value pairs based on title, not a straight array\nconst originalImageSampleResult = require( '../fixtures/mockImageQuickSearchApiResponse.json' ).query.pages[ 9809267 ];\nconst originalVideoSampleResult = require( '../fixtures/mockVideoQuickSearchApiResponse.json' ).query.pages[ 96292422 ];\n\nconst icons = require( '../../../lib/icons.js' );\nwhen( global.mw.config.get )\n\t.calledWith( 'sdmsAssessmentQuickviewLabels' )\n\t.mockReturnValue( {\n\t\t'assessment-1': 'test-1',\n\t\t'assessment-2': 'test-2'\n\t} );\n\n// the above mocking need to be implemented before the component is required\nconst QuickView = require( '../../../resources/components/QuickView.vue' );\n\nconfig.global.mocks.$log = jest.fn();\n\ndescribe( 'QuickView', function () {\n\tlet imageSampleResult, videoSampleResult;\n\tbeforeEach( function () {\n\t\twhen( global.mw.config.get )\n\t\t\t.calledWith( 'wgUserLanguage' )\n\t\t\t.mockReturnValue( 'en' );\n\n\t\timageSampleResult = JSON.parse( JSON.stringify( originalImageSampleResult ) );\n\t\tvideoSampleResult = JSON.parse( JSON.stringify( originalVideoSampleResult ) );\n\t} );\n\n\tdescribe( 'when image data is provided', function () {\n\t\tit( 'Renders successfully', function () {\n\t\t\tconst wrapper = mount( QuickView, {\n\t\t\t\tprops: {\n\t\t\t\t\ttitle: imageSampleResult.title,\n\t\t\t\t\tcanonicalurl: imageSampleResult.canonicalurl,\n\t\t\t\t\timageinfo: imageSampleResult.imageinfo,\n\t\t\t\t\tmediaType: 'image',\n\t\t\t\t\tisDialog: false\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\texpect( wrapper.html().length ).toBeGreaterThan( 0 );\n\t\t} );\n\n\t\tit( 'displays a header image', function () {\n\t\t\tconst wrapper = shallowMount( QuickView, {\n\t\t\t\tprops: {\n\t\t\t\t\ttitle: imageSampleResult.title,\n\t\t\t\t\tcanonicalurl: imageSampleResult.canonicalurl,\n\t\t\t\t\timageinfo: imageSampleResult.imageinfo,\n\t\t\t\t\tmediaType: 'image',\n\t\t\t\t\tisDialog: false\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tconst img = wrapper.find( 'header img' );\n\t\t\texpect( img.exists() ).toBe( true );\n\t\t} );\n\n\t\tit( 'displays close, next, and previous buttons', function () {\n\t\t\tconst wrapper = shallowMount( QuickView, {\n\t\t\t\tprops: {\n\t\t\t\t\ttitle: imageSampleResult.title,\n\t\t\t\t\tcanonicalurl: imageSampleResult.canonicalurl,\n\t\t\t\t\timageinfo: imageSampleResult.imageinfo,\n\t\t\t\t\tmediaType: 'image',\n\t\t\t\t\tisDialog: false\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tconst close = wrapper.find( { ref: 'close' } );\n\t\t\tconst next = wrapper.find( { ref: 'next' } );\n\t\t\tconst prev = wrapper.find( { ref: 'previous' } );\n\n\t\t\texpect( close.exists() ).toBe( true );\n\t\t\texpect( next.exists() ).toBe( true );\n\t\t\texpect( prev.exists() ).toBe( true );\n\t\t} );\n\n\t\tit( 'emits a \"close\" event when the close button is clicked', function ( done ) {\n\t\t\tconst wrapper = shallowMount( QuickView, {\n\t\t\t\tprops: {\n\t\t\t\t\ttitle: imageSampleResult.title,\n\t\t\t\t\tcanonicalurl: imageSampleResult.canonicalurl,\n\t\t\t\t\timageinfo: imageSampleResult.imageinfo,\n\t\t\t\t\tmediaType: 'image',\n\t\t\t\t\tisDialog: false\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tconst close = wrapper.find( { ref: 'close' } );\n\t\t\tclose.trigger( 'click' );\n\n\t\t\tVue.nextTick().then( function () {\n\t\t\t\texpect( wrapper.emitted().close ).toHaveLength( 1 );\n\t\t\t\tdone();\n\t\t\t} );\n\t\t} );\n\n\t\tit( 'emits a \"next\" event when the next button is clicked', function ( done ) {\n\t\t\tconst wrapper = shallowMount( QuickView, {\n\t\t\t\tprops: {\n\t\t\t\t\ttitle: imageSampleResult.title,\n\t\t\t\t\tcanonicalurl: imageSampleResult.canonicalurl,\n\t\t\t\t\timageinfo: imageSampleResult.imageinfo,\n\t\t\t\t\tmediaType: 'image',\n\t\t\t\t\tisDialog: false\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tconst next = wrapper.find( { ref: 'next' } );\n\t\t\tnext.trigger( 'click' );\n\n\t\t\tVue.nextTick().then( function () {\n\t\t\t\texpect( wrapper.emitted().next ).toHaveLength( 1 );\n\t\t\t\tdone();\n\t\t\t} );\n\t\t} );\n\n\t\tit( 'emits a \"previous\" event when the previous button is clicked', function ( done ) {\n\t\t\tconst wrapper = shallowMount( QuickView, {\n\t\t\t\tprops: {\n\t\t\t\t\ttitle: imageSampleResult.title,\n\t\t\t\t\tcanonicalurl: imageSampleResult.canonicalurl,\n\t\t\t\t\timageinfo: imageSampleResult.imageinfo,\n\t\t\t\t\tmediaType: 'image',\n\t\t\t\t\tisDialog: false\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tconst prev = wrapper.find( { ref: 'previous' } );\n\t\t\tprev.trigger( 'click' );\n\n\t\t\tVue.nextTick().then( function () {\n\t\t\t\texpect( wrapper.emitted().previous ).toHaveLength( 1 );\n\t\t\t\tdone();\n\t\t\t} );\n\t\t} );\n\n\t\tit( 'applies the appropriate class to the base element', function () {\n\t\t\tconst wrapper = shallowMount( QuickView, {\n\t\t\t\tprops: {\n\t\t\t\t\ttitle: imageSampleResult.title,\n\t\t\t\t\tcanonicalurl: imageSampleResult.canonicalurl,\n\t\t\t\t\timageinfo: imageSampleResult.imageinfo,\n\t\t\t\t\tmediaType: 'image',\n\t\t\t\t\tisDialog: false\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tconst img = wrapper.find( '.sdms-quick-view--image' );\n\t\t\texpect( img.exists() ).toBe( true );\n\t\t} );\n\n\t\tit( 'displays an image title', function () {\n\t\t\tconst wrapper = shallowMount( QuickView, {\n\t\t\t\tprops: {\n\t\t\t\t\ttitle: imageSampleResult.title,\n\t\t\t\t\tcanonicalurl: imageSampleResult.canonicalurl,\n\t\t\t\t\timageinfo: imageSampleResult.imageinfo,\n\t\t\t\t\tmediaType: 'image',\n\t\t\t\t\tisDialog: false\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tconst img = wrapper.find( '.sdms-quick-view__title' );\n\t\t\texpect( img.exists() ).toBe( true );\n\t\t} );\n\n\t\tit( 'displays an image description', function () {\n\t\t\tconst wrapper = shallowMount( QuickView, {\n\t\t\t\tprops: {\n\t\t\t\t\ttitle: imageSampleResult.title,\n\t\t\t\t\tcanonicalurl: imageSampleResult.canonicalurl,\n\t\t\t\t\timageinfo: imageSampleResult.imageinfo,\n\t\t\t\t\tmediaType: 'image',\n\t\t\t\t\tisDialog: false\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tconst img = wrapper.find( '.sdms-quick-view__description' );\n\t\t\texpect( img.exists() ).toBe( true );\n\t\t} );\n\n\t\tit( 'displays the image artist', function () {\n\t\t\tconst wrapper = shallowMount( QuickView, {\n\t\t\t\tprops: {\n\t\t\t\t\ttitle: imageSampleResult.title,\n\t\t\t\t\tcanonicalurl: imageSampleResult.canonicalurl,\n\t\t\t\t\timageinfo: imageSampleResult.imageinfo,\n\t\t\t\t\tmediaType: 'image',\n\t\t\t\t\tisDialog: false\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tconst img = wrapper.find( '.sdms-quick-view__artist' );\n\t\t\texpect( img.exists() ).toBe( true );\n\t\t} );\n\n\t\tit( 'displays the image license information', function () {\n\t\t\tconst wrapper = shallowMount( QuickView, {\n\t\t\t\tprops: {\n\t\t\t\t\ttitle: imageSampleResult.title,\n\t\t\t\t\tcanonicalurl: imageSampleResult.canonicalurl,\n\t\t\t\t\timageinfo: imageSampleResult.imageinfo,\n\t\t\t\t\tmediaType: 'image',\n\t\t\t\t\tisDialog: false\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tconst img = wrapper.find( '.sdms-quick-view__license' );\n\t\t\texpect( img.exists() ).toBe( true );\n\t\t} );\n\n\t\tit( 'displays the image assessment', function () {\n\t\t\tconst wrapper = shallowMount( QuickView, {\n\t\t\t\tprops: {\n\t\t\t\t\ttitle: imageSampleResult.title,\n\t\t\t\t\tcanonicalurl: imageSampleResult.canonicalurl,\n\t\t\t\t\timageinfo: imageSampleResult.imageinfo,\n\t\t\t\t\tmediaType: 'image',\n\t\t\t\t\tisDialog: false\n\t\t\t\t},\n\t\t\t\tcomputed: {\n\t\t\t\t\tassessmentList: jest.fn().mockReturnValue( [ 'assessment' ] )\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tconst img = wrapper.find( '.sdms-quick-view__assessment' );\n\t\t\texpect( img.exists() ).toBe( true );\n\t\t} );\n\n\t\tit( 'displays a copy text section', function () {\n\t\t\tconst wrapper = shallowMount( QuickView, {\n\t\t\t\tprops: {\n\t\t\t\t\ttitle: imageSampleResult.title,\n\t\t\t\t\tcanonicalurl: imageSampleResult.canonicalurl,\n\t\t\t\t\timageinfo: imageSampleResult.imageinfo,\n\t\t\t\t\tmediaType: 'image',\n\t\t\t\t\tisDialog: false\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tconst img = wrapper.find( '.sdms-quick-view__copy-full-name' );\n\t\t\texpect( img.exists() ).toBe( true );\n\t\t} );\n\n\t\tit( 'displays the image name without extension', function () {\n\t\t\tconst wrapper = shallowMount( QuickView, {\n\t\t\t\tprops: {\n\t\t\t\t\ttitle: imageSampleResult.title,\n\t\t\t\t\tcanonicalurl: imageSampleResult.canonicalurl,\n\t\t\t\t\timageinfo: imageSampleResult.imageinfo,\n\t\t\t\t\tmediaType: 'image',\n\t\t\t\t\tisDialog: false\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tconst img = wrapper.find( '.sdms-quick-view__copy-name-no-extension' );\n\t\t\texpect( img.exists() ).toBe( true );\n\t\t} );\n\n\t\tit( 'displays the image creation date', function () {\n\t\t\tconst wrapper = shallowMount( QuickView, {\n\t\t\t\tprops: {\n\t\t\t\t\ttitle: imageSampleResult.title,\n\t\t\t\t\tcanonicalurl: imageSampleResult.canonicalurl,\n\t\t\t\t\timageinfo: imageSampleResult.imageinfo,\n\t\t\t\t\tmediaType: 'image',\n\t\t\t\t\tisDialog: false\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tconst img = wrapper.find( '.sdms-quick-view__creation-date' );\n\t\t\texpect( img.exists() ).toBe( true );\n\t\t} );\n\n\t\tit( 'displays the image resolution', function () {\n\t\t\tconst wrapper = shallowMount( QuickView, {\n\t\t\t\tprops: {\n\t\t\t\t\ttitle: imageSampleResult.title,\n\t\t\t\t\tcanonicalurl: imageSampleResult.canonicalurl,\n\t\t\t\t\timageinfo: imageSampleResult.imageinfo,\n\t\t\t\t\tmediaType: 'image',\n\t\t\t\t\tisDialog: false\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tconst img = wrapper.find( '.sdms-quick-view__resolution' );\n\t\t\texpect( img.exists() ).toBe( true );\n\t\t} );\n\n\t\tit( 'displays the image mine-type', function () {\n\t\t\tconst wrapper = shallowMount( QuickView, {\n\t\t\t\tprops: {\n\t\t\t\t\ttitle: imageSampleResult.title,\n\t\t\t\t\tcanonicalurl: imageSampleResult.canonicalurl,\n\t\t\t\t\timageinfo: imageSampleResult.imageinfo,\n\t\t\t\t\tmediaType: 'image',\n\t\t\t\t\tisDialog: false\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tconst img = wrapper.find( '.sdms-quick-view__mine-type' );\n\t\t\texpect( img.exists() ).toBe( true );\n\t\t} );\n\n\t\tit( 'contains a \"more details\" call-to-action button', function () {\n\t\t\tconst wrapper = shallowMount( QuickView, {\n\t\t\t\tprops: {\n\t\t\t\t\ttitle: imageSampleResult.title,\n\t\t\t\t\tcanonicalurl: imageSampleResult.canonicalurl,\n\t\t\t\t\timageinfo: imageSampleResult.imageinfo,\n\t\t\t\t\tmediaType: 'image',\n\t\t\t\t\tisDialog: false\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tconst moreDetails = wrapper.find( 'a.sdms-quick-view__cta' );\n\t\t\texpect( moreDetails.exists() ).toBe( true );\n\t\t\texpect( moreDetails.attributes().href ).toBe( imageSampleResult.canonicalurl );\n\t\t} );\n\n\t} );\n\n\tdescribe( 'when video data is provided', function () {\n\t\tit( 'Renders and sd-player component', function () {\n\t\t\tconst wrapper = shallowMount( QuickView, {\n\t\t\t\tprops: {\n\t\t\t\t\ttitle: videoSampleResult.title,\n\t\t\t\t\tcanonicalurl: videoSampleResult.canonicalurl,\n\t\t\t\t\tvideoinfo: videoSampleResult.videoinfo,\n\t\t\t\t\tmediaType: 'video',\n\t\t\t\t\tisDialog: false\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\texpect( wrapper.findComponent( SdPlayer ).exists() ).toBe( true );\n\t\t} );\n\n\t\tit( 'applies the appropriate class to the base element', function () {\n\t\t\tconst wrapper = shallowMount( QuickView, {\n\t\t\t\tprops: {\n\t\t\t\t\ttitle: imageSampleResult.title,\n\t\t\t\t\tcanonicalurl: imageSampleResult.canonicalurl,\n\t\t\t\t\timageinfo: imageSampleResult.imageinfo,\n\t\t\t\t\tmediaType: 'video',\n\t\t\t\t\tisDialog: false\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\texpect( wrapper.find( '.sdms-quick-view--video' ).exists() ).toBeTruthy();\n\t\t} );\n\n\t\tit( 'applies the appropriate class for dialog', function () {\n\t\t\tconst wrapper = shallowMount( QuickView, {\n\t\t\t\tprops: {\n\t\t\t\t\ttitle: imageSampleResult.title,\n\t\t\t\t\tcanonicalurl: imageSampleResult.canonicalurl,\n\t\t\t\t\timageinfo: imageSampleResult.imageinfo,\n\t\t\t\t\tmediaType: 'video',\n\t\t\t\t\tisDialog: true\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\texpect( wrapper.find( '.sdms-quick-view--dialog' ).exists() ).toBeTruthy();\n\t\t} );\n\t} );\n\n\tdescribe( 'Computed', function () {\n\t\tdescribe( 'imageClasses', function () {\n\t\t\tit( 'Returns the correct class when image is Extra small', function () {\n\t\t\t\tconst wrapper = shallowMount( QuickView, {\n\t\t\t\t\tprops: {\n\t\t\t\t\t\ttitle: imageSampleResult.title,\n\t\t\t\t\t\tcanonicalurl: imageSampleResult.canonicalurl,\n\t\t\t\t\t\timageinfo: imageSampleResult.imageinfo,\n\t\t\t\t\t\tmediaType: 'image',\n\t\t\t\t\t\tisDialog: false\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\twrapper.setData( { isExtraSmall: true } );\n\n\t\t\t\texpect( wrapper.vm.imageClasses ).toMatchObject(\n\t\t\t\t\texpect.objectContaining( {\n\t\t\t\t\t\t'sdms-quick-view__thumbnail--xsmall': true\n\t\t\t\t\t} )\n\t\t\t\t);\n\t\t\t} );\n\n\t\t\tit( 'Returns the correct class when image is not thumbnail Wrapper Style', function () {\n\t\t\t\tconst wrapper = shallowMount( QuickView, {\n\t\t\t\t\tprops: {\n\t\t\t\t\t\ttitle: imageSampleResult.title,\n\t\t\t\t\t\tcanonicalurl: imageSampleResult.canonicalurl,\n\t\t\t\t\t\timageinfo: imageSampleResult.imageinfo,\n\t\t\t\t\t\tmediaType: 'image',\n\t\t\t\t\t\tisDialog: false\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\twrapper.setData( { thumbnailWrapperStyle: false } );\n\n\t\t\t\texpect( wrapper.vm.imageClasses ).toMatchObject(\n\t\t\t\t\texpect.objectContaining( {\n\t\t\t\t\t\t'sdms-quick-view__thumbnail--loaded': true\n\t\t\t\t\t} )\n\t\t\t\t);\n\t\t\t} );\n\t\t} );\n\n\t\tdescribe( 'srcset', function () {\n\t\t\tbeforeEach( function () {\n\t\t\t\tglobal.mw.util.parseImageUrl = jest.fn().mockReturnValue( {\n\t\t\t\t\tresizeUrl: jest.fn()\n\t\t\t\t} );\n\t\t\t} );\n\n\t\t\tit( 'Returns false if resizeUrl is not a function', function () {\n\t\t\t\tglobal.mw.util.parseImageUrl = jest.fn().mockReturnValue( {\n\t\t\t\t\tresizeUrl: null\n\t\t\t\t} );\n\n\t\t\t\tconst wrapper = shallowMount( QuickView, {\n\t\t\t\t\tprops: {\n\t\t\t\t\t\ttitle: imageSampleResult.title,\n\t\t\t\t\t\tcanonicalurl: imageSampleResult.canonicalurl,\n\t\t\t\t\t\timageinfo: imageSampleResult.imageinfo,\n\t\t\t\t\t\tmediaType: 'image',\n\t\t\t\t\t\tisDialog: false\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\texpect( wrapper.vm.srcset ).toBeFalsy();\n\t\t\t} );\n\n\t\t\tit( 'include the just first PREVIEW_SIZE in string return', function () {\n\t\t\t\tconst PREVIEW_SIZES = [ '640', '800', '1200', '1600' ];\n\t\t\t\tconst wrapper = shallowMount( QuickView, {\n\t\t\t\t\tprops: {\n\t\t\t\t\t\ttitle: imageSampleResult.title,\n\t\t\t\t\t\tcanonicalurl: imageSampleResult.canonicalurl,\n\t\t\t\t\t\timageinfo: imageSampleResult.imageinfo,\n\t\t\t\t\t\tmediaType: 'image',\n\t\t\t\t\t\tisDialog: false\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\texpect( wrapper.vm.srcset ).toContain( PREVIEW_SIZES[ 0 ] );\n\t\t\t\texpect( wrapper.vm.srcset ).not.toContain( PREVIEW_SIZES[ 1 ] );\n\t\t\t\texpect( wrapper.vm.srcset ).not.toContain( PREVIEW_SIZES[ 2 ] );\n\t\t\t\texpect( wrapper.vm.srcset ).not.toContain( PREVIEW_SIZES[ 3 ] );\n\t\t\t} );\n\n\t\t\tdescribe( 'When it is a dialog', function () {\n\n\t\t\t\tit( 'include each PREVIEW_SIZE in string return', function () {\n\t\t\t\t\tconst PREVIEW_SIZES = [ '640', '800', '1200', '1600' ];\n\t\t\t\t\tconst wrapper = shallowMount( QuickView, {\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\ttitle: imageSampleResult.title,\n\t\t\t\t\t\t\tcanonicalurl: imageSampleResult.canonicalurl,\n\t\t\t\t\t\t\timageinfo: imageSampleResult.imageinfo,\n\t\t\t\t\t\t\tmediaType: 'image',\n\t\t\t\t\t\t\tisDialog: true\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t\texpect( wrapper.vm.srcset ).toContain( PREVIEW_SIZES[ 0 ] );\n\t\t\t\t\texpect( wrapper.vm.srcset ).toContain( PREVIEW_SIZES[ 1 ] );\n\t\t\t\t\texpect( wrapper.vm.srcset ).toContain( PREVIEW_SIZES[ 2 ] );\n\t\t\t\t\texpect( wrapper.vm.srcset ).toContain( PREVIEW_SIZES[ 3 ] );\n\t\t\t\t} );\n\n\t\t\t\tit( 'include each MAX_SIZE in string return', function () {\n\t\t\t\t\tconst MAX_SIZE = '2000';\n\t\t\t\t\tconst wrapper = shallowMount( QuickView, {\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\ttitle: imageSampleResult.title,\n\t\t\t\t\t\t\tcanonicalurl: imageSampleResult.canonicalurl,\n\t\t\t\t\t\t\timageinfo: imageSampleResult.imageinfo,\n\t\t\t\t\t\t\tmediaType: 'image',\n\t\t\t\t\t\t\tisDialog: true\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t\texpect( wrapper.vm.srcset ).toContain( MAX_SIZE );\n\t\t\t\t} );\n\t\t\t} );\n\t\t} );\n\t\tdescribe( 'sizes', function () {\n\t\t\tbeforeEach( function () {\n\t\t\t\tglobal.mw.util.parseImageUrl = jest.fn().mockReturnValue( {\n\t\t\t\t\tresizeUrl: jest.fn()\n\t\t\t\t} );\n\t\t\t} );\n\n\t\t\tit( 'include the just first PREVIEW_SIZE in string return', function () {\n\t\t\t\tconst PREVIEW_SIZES = [ '640', '800', '1200', '1600' ];\n\t\t\t\tconst wrapper = shallowMount( QuickView, {\n\t\t\t\t\tprops: {\n\t\t\t\t\t\ttitle: imageSampleResult.title,\n\t\t\t\t\t\tcanonicalurl: imageSampleResult.canonicalurl,\n\t\t\t\t\t\timageinfo: imageSampleResult.imageinfo,\n\t\t\t\t\t\tmediaType: 'image',\n\t\t\t\t\t\tisDialog: false\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\texpect( wrapper.vm.sizes ).toContain( PREVIEW_SIZES[ 0 ] );\n\t\t\t\texpect( wrapper.vm.sizes ).not.toContain( PREVIEW_SIZES[ 1 ] );\n\t\t\t\texpect( wrapper.vm.sizes ).not.toContain( PREVIEW_SIZES[ 2 ] );\n\t\t\t\texpect( wrapper.vm.sizes ).not.toContain( PREVIEW_SIZES[ 3 ] );\n\t\t\t} );\n\n\t\t\tdescribe( 'When it is a dialog', function () {\n\n\t\t\t\tit( 'include each PREVIEW_SIZE in string return', function () {\n\t\t\t\t\tconst PREVIEW_SIZES = [ '640', '800', '1200', '1600' ];\n\t\t\t\t\tconst wrapper = shallowMount( QuickView, {\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\ttitle: imageSampleResult.title,\n\t\t\t\t\t\t\tcanonicalurl: imageSampleResult.canonicalurl,\n\t\t\t\t\t\t\timageinfo: imageSampleResult.imageinfo,\n\t\t\t\t\t\t\tmediaType: 'image',\n\t\t\t\t\t\t\tisDialog: true\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t\texpect( wrapper.vm.sizes ).toContain( PREVIEW_SIZES[ 0 ] );\n\t\t\t\t\texpect( wrapper.vm.sizes ).toContain( PREVIEW_SIZES[ 1 ] );\n\t\t\t\t\texpect( wrapper.vm.sizes ).toContain( PREVIEW_SIZES[ 2 ] );\n\t\t\t\t\texpect( wrapper.vm.sizes ).toContain( PREVIEW_SIZES[ 3 ] );\n\t\t\t\t} );\n\n\t\t\t\tit( 'include each MAX_SIZE in string return', function () {\n\t\t\t\t\tconst MAX_SIZE = '2000';\n\t\t\t\t\tconst wrapper = shallowMount( QuickView, {\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\ttitle: imageSampleResult.title,\n\t\t\t\t\t\t\tcanonicalurl: imageSampleResult.canonicalurl,\n\t\t\t\t\t\t\timageinfo: imageSampleResult.imageinfo,\n\t\t\t\t\t\t\tmediaType: 'image',\n\t\t\t\t\t\t\tisDialog: true\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t\texpect( wrapper.vm.sizes ).toContain( MAX_SIZE );\n\t\t\t\t} );\n\t\t\t} );\n\t\t} );\n\t\tdescribe( 'metadata', function () {\n\t\t\tdescribe( 'when it is of type image', function () {\n\t\t\t\tit( 'Returns the sample extmetadata', function () {\n\t\t\t\t\tconst wrapper = shallowMount( QuickView, {\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\ttitle: imageSampleResult.title,\n\t\t\t\t\t\t\tcanonicalurl: imageSampleResult.canonicalurl,\n\t\t\t\t\t\t\timageinfo: imageSampleResult.imageinfo,\n\t\t\t\t\t\t\tmediaType: 'image',\n\t\t\t\t\t\t\tisDialog: true\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t\texpect( wrapper.vm.metadata ).toEqual( imageSampleResult.imageinfo[ 0 ].extmetadata );\n\t\t\t\t} );\n\t\t\t} );\n\n\t\t\tdescribe( 'when it is of type audio', function () {\n\t\t\t\tit( 'Returns the sample extmetadata', function () {\n\t\t\t\t\tconst wrapper = shallowMount( QuickView, {\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\ttitle: videoSampleResult.title,\n\t\t\t\t\t\t\tcanonicalurl: videoSampleResult.canonicalurl,\n\t\t\t\t\t\t\tvideoinfo: videoSampleResult.videoinfo,\n\t\t\t\t\t\t\tmediaType: 'audio',\n\t\t\t\t\t\t\tisDialog: true\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t\texpect( wrapper.vm.metadata ).toEqual( videoSampleResult.videoinfo[ 0 ].extmetadata );\n\t\t\t\t} );\n\t\t\t} );\n\n\t\t\tdescribe( 'when it is of type video', function () {\n\t\t\t\tit( 'Returns the sample extmetadata', function () {\n\t\t\t\t\tconst wrapper = shallowMount( QuickView, {\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\ttitle: videoSampleResult.title,\n\t\t\t\t\t\t\tcanonicalurl: videoSampleResult.canonicalurl,\n\t\t\t\t\t\t\tvideoinfo: videoSampleResult.videoinfo,\n\t\t\t\t\t\t\tmediaType: 'video',\n\t\t\t\t\t\t\tisDialog: true\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t\texpect( wrapper.vm.metadata ).toEqual( videoSampleResult.videoinfo[ 0 ].extmetadata );\n\t\t\t\t} );\n\t\t\t} );\n\t\t} );\n\n\t\tdescribe( 'licenseText', function () {\n\t\t\tdescribe( 'when metadata is not set', function () {\n\t\t\t\tit( 'Returns null', function () {\n\t\t\t\t\tconst wrapper = shallowMount( QuickView, {\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\ttitle: imageSampleResult.title,\n\t\t\t\t\t\t\tcanonicalurl: imageSampleResult.canonicalurl,\n\t\t\t\t\t\t\tmediaType: 'image',\n\t\t\t\t\t\t\tisDialog: true\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t\texpect( wrapper.vm.licenseText ).toBeFalsy();\n\t\t\t\t} );\n\t\t\t} );\n\n\t\t\tdescribe( 'when metadata includes UsageTerms', function () {\n\t\t\t\tit( 'Returns UsageTerms value', function () {\n\t\t\t\t\tconst wrapper = shallowMount( QuickView, {\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\ttitle: imageSampleResult.title,\n\t\t\t\t\t\t\tcanonicalurl: imageSampleResult.canonicalurl,\n\t\t\t\t\t\t\timageinfo: imageSampleResult.imageinfo,\n\t\t\t\t\t\t\tmediaType: 'image',\n\t\t\t\t\t\t\tisDialog: true\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t\tconst sampleUsageTerms = imageSampleResult.imageinfo[ 0 ].extmetadata.UsageTerms.value;\n\t\t\t\t\texpect( wrapper.vm.licenseText ).toBe( sampleUsageTerms );\n\t\t\t\t} );\n\t\t\t} );\n\n\t\t\tdescribe( 'when metadata includes LicenseShortName', function () {\n\t\t\t\tit( 'Returns LicenseShortName value', function () {\n\t\t\t\t\tconst sampleLicenseShortName = 'dummyLicense';\n\t\t\t\t\timageSampleResult.imageinfo[ 0 ].extmetadata.UsageTerms = null;\n\t\t\t\t\timageSampleResult.imageinfo[ 0 ].extmetadata.LicenseShortName = {\n\t\t\t\t\t\tvalue: sampleLicenseShortName\n\t\t\t\t\t};\n\n\t\t\t\t\tconst wrapper = shallowMount( QuickView, {\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\ttitle: imageSampleResult.title,\n\t\t\t\t\t\t\tcanonicalurl: imageSampleResult.canonicalurl,\n\t\t\t\t\t\t\timageinfo: imageSampleResult.imageinfo,\n\t\t\t\t\t\t\tmediaType: 'image',\n\t\t\t\t\t\t\tisDialog: true\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t\texpect( wrapper.vm.licenseText ).toBe( sampleLicenseShortName );\n\t\t\t\t} );\n\t\t\t} );\n\t\t} );\n\n\t\tdescribe( 'licenseIcon', function () {\n\t\t\tdescribe( 'when metadata is not set', function () {\n\t\t\t\tit( 'Returns null', function () {\n\t\t\t\t\tconst wrapper = shallowMount( QuickView, {\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\ttitle: imageSampleResult.title,\n\t\t\t\t\t\t\tcanonicalurl: imageSampleResult.canonicalurl,\n\t\t\t\t\t\t\tmediaType: 'image',\n\t\t\t\t\t\t\tisDialog: true\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t\texpect( wrapper.vm.licenseIcon ).toBeFalsy();\n\t\t\t\t} );\n\t\t\t} );\n\n\t\t\tdescribe( 'when metadata includes License', function () {\n\t\t\t\tit( 'Returns UsageTerms value', function () {\n\t\t\t\t\tconst getLicenseIconSpy = jest.spyOn( QuickView.methods, 'getLicenseIcon' );\n\t\t\t\t\tshallowMount( QuickView, {\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\ttitle: imageSampleResult.title,\n\t\t\t\t\t\t\tcanonicalurl: imageSampleResult.canonicalurl,\n\t\t\t\t\t\t\timageinfo: imageSampleResult.imageinfo,\n\t\t\t\t\t\t\tmediaType: 'image',\n\t\t\t\t\t\t\tisDialog: true\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t\tconst sampleLicense = imageSampleResult.imageinfo[ 0 ].extmetadata.License.value;\n\n\t\t\t\t\texpect( getLicenseIconSpy ).toHaveBeenCalled();\n\t\t\t\t\texpect( getLicenseIconSpy ).toHaveBeenCalledWith( sampleLicense );\n\t\t\t\t} );\n\t\t\t} );\n\n\t\t\tdescribe( 'when metadata includes LicenseShortName', function () {\n\t\t\t\tit( 'Returns LicenseShortName value', function () {\n\t\t\t\t\tconst getLicenseIconSpy = jest.spyOn( QuickView.methods, 'getLicenseIcon' );\n\t\t\t\t\tconst sampleLicenseShortName = 'dummyLicense';\n\t\t\t\t\timageSampleResult.imageinfo[ 0 ].extmetadata.License = null;\n\t\t\t\t\timageSampleResult.imageinfo[ 0 ].extmetadata.LicenseShortName = {\n\t\t\t\t\t\tvalue: sampleLicenseShortName\n\t\t\t\t\t};\n\n\t\t\t\t\tshallowMount( QuickView, {\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\ttitle: imageSampleResult.title,\n\t\t\t\t\t\t\tcanonicalurl: imageSampleResult.canonicalurl,\n\t\t\t\t\t\t\timageinfo: imageSampleResult.imageinfo,\n\t\t\t\t\t\t\tmediaType: 'image',\n\t\t\t\t\t\t\tisDialog: true\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t\texpect( getLicenseIconSpy ).toHaveBeenCalled();\n\t\t\t\t\texpect( getLicenseIconSpy ).toHaveBeenCalledWith( sampleLicenseShortName );\n\t\t\t\t} );\n\t\t\t} );\n\t\t} );\n\n\t\tdescribe( 'LicenseUrl', function () {\n\t\t\tdescribe( 'when metadata is not set', function () {\n\t\t\t\tit( 'Returns null', function () {\n\t\t\t\t\tconst wrapper = shallowMount( QuickView, {\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\ttitle: imageSampleResult.title,\n\t\t\t\t\t\t\tcanonicalurl: imageSampleResult.canonicalurl,\n\t\t\t\t\t\t\tmediaType: 'image',\n\t\t\t\t\t\t\tisDialog: true\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t\texpect( wrapper.vm.LicenseUrl ).toBeFalsy();\n\t\t\t\t} );\n\t\t\t} );\n\n\t\t\tdescribe( 'when metadata is set', function () {\n\t\t\t\tit( 'Returns LicenseUrl value', function () {\n\t\t\t\t\tconst wrapper = shallowMount( QuickView, {\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\ttitle: imageSampleResult.title,\n\t\t\t\t\t\t\tcanonicalurl: imageSampleResult.canonicalurl,\n\t\t\t\t\t\t\timageinfo: imageSampleResult.imageinfo,\n\t\t\t\t\t\t\tmediaType: 'image',\n\t\t\t\t\t\t\tisDialog: true\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t\tconst LicenseUrl = imageSampleResult.imageinfo[ 0 ].extmetadata.LicenseUrl.value;\n\t\t\t\t\texpect( wrapper.vm.licenseUrl ).toBe( LicenseUrl );\n\t\t\t\t} );\n\t\t\t} );\n\t\t} );\n\n\t\tdescribe( 'assessmentList', function () {\n\t\t\tdescribe( 'when assessment is not set', function () {\n\t\t\t\tit( 'return false', function () {\n\t\t\t\t\tconst wrapper = shallowMount( QuickView, {\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\ttitle: imageSampleResult.title,\n\t\t\t\t\t\t\tcanonicalurl: imageSampleResult.canonicalurl,\n\t\t\t\t\t\t\tmediaType: 'image',\n\t\t\t\t\t\t\tisDialog: true\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t\texpect( wrapper.vm.assessmentList ).toBeFalsy();\n\n\t\t\t\t} );\n\t\t\t} );\n\t\t\tdescribe( 'when assessment is set', function () {\n\t\t\t\tit( 'return false', function () {\n\t\t\t\t\timageSampleResult.imageinfo[ 0 ].extmetadata.Assessments = {\n\t\t\t\t\t\tvalue: 'assessment-1|assessment-2'\n\t\t\t\t\t};\n\n\t\t\t\t\tconst wrapper = shallowMount( QuickView, {\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\ttitle: imageSampleResult.title,\n\t\t\t\t\t\t\tcanonicalurl: imageSampleResult.canonicalurl,\n\t\t\t\t\t\t\timageinfo: imageSampleResult.imageinfo,\n\t\t\t\t\t\t\tmediaType: 'image',\n\t\t\t\t\t\t\tisDialog: true\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t\t// this are the value of sdmsAssessmentQuickviewLabels declared at the top of the file\n\t\t\t\t\texpect( wrapper.vm.assessmentList ).toContain( 'test-1' );\n\t\t\t\t\texpect( wrapper.vm.assessmentList ).toContain( 'test-2' );\n\n\t\t\t\t} );\n\t\t\t} );\n\t\t} );\n\n\t\tdescribe( 'creationDate', function () {\n\t\t\tdescribe( 'when DateTimeOriginal is an instance of Date', function () {\n\t\t\t\tit( 'Returns the original Date string', function () {\n\n\t\t\t\t\tconst wrapper = shallowMount( QuickView, {\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\ttitle: imageSampleResult.title,\n\t\t\t\t\t\t\tcanonicalurl: imageSampleResult.canonicalurl,\n\t\t\t\t\t\t\timageinfo: imageSampleResult.imageinfo,\n\t\t\t\t\t\t\tmediaType: 'image',\n\t\t\t\t\t\t\tisDialog: false\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t\texpect( wrapper.vm.creationDate ).toBe( '18 January 2009' );\n\t\t\t\t} );\n\t\t\t} );\n\t\t\tdescribe( 'when DateTimeOriginal is not an instance of Date', function () {\n\t\t\t\tit( 'Returns the original Date string', function () {\n\n\t\t\t\t\tconst fakeDate = 'this is an arbitrary string and not a date';\n\t\t\t\t\timageSampleResult.imageinfo[ 0 ].extmetadata.DateTimeOriginal = {\n\t\t\t\t\t\tvalue: fakeDate\n\t\t\t\t\t};\n\n\t\t\t\t\tconst wrapper = shallowMount( QuickView, {\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\ttitle: imageSampleResult.title,\n\t\t\t\t\t\t\tcanonicalurl: imageSampleResult.canonicalurl,\n\t\t\t\t\t\t\timageinfo: imageSampleResult.imageinfo,\n\t\t\t\t\t\t\tmediaType: 'image',\n\t\t\t\t\t\t\tisDialog: false\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t\texpect( wrapper.vm.creationDate ).toBe( fakeDate );\n\t\t\t\t} );\n\t\t\t} );\n\t\t} );\n\t\tdescribe( 'resolution', function () {\n\t\t\tdescribe( 'When width is missing', function () {\n\t\t\t\tit( 'Returns null', function () {\n\t\t\t\t\timageSampleResult.imageinfo[ 0 ].width = null;\n\n\t\t\t\t\tconst wrapper = shallowMount( QuickView, {\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\ttitle: imageSampleResult.title,\n\t\t\t\t\t\t\tcanonicalurl: imageSampleResult.canonicalurl,\n\t\t\t\t\t\t\timageinfo: imageSampleResult.imageinfo,\n\t\t\t\t\t\t\tmediaType: 'image',\n\t\t\t\t\t\t\tisDialog: false\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t\texpect( wrapper.vm.resolution ).toBeFalsy();\n\t\t\t\t} );\n\t\t\t} );\n\t\t\tdescribe( 'When height is missing', function () {\n\t\t\t\tit( 'Returns null', function () {\n\t\t\t\t\timageSampleResult.imageinfo[ 0 ].height = null;\n\n\t\t\t\t\tconst wrapper = shallowMount( QuickView, {\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\ttitle: imageSampleResult.title,\n\t\t\t\t\t\t\tcanonicalurl: imageSampleResult.canonicalurl,\n\t\t\t\t\t\t\timageinfo: imageSampleResult.imageinfo,\n\t\t\t\t\t\t\tmediaType: 'image',\n\t\t\t\t\t\t\tisDialog: false\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t\texpect( wrapper.vm.resolution ).toBeFalsy();\n\t\t\t\t} );\n\t\t\t} );\n\t\t\tdescribe( 'When values are available', function () {\n\t\t\t\tit( 'Returns a formatted value', function () {\n\n\t\t\t\t\tconst wrapper = shallowMount( QuickView, {\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\ttitle: imageSampleResult.title,\n\t\t\t\t\t\t\tcanonicalurl: imageSampleResult.canonicalurl,\n\t\t\t\t\t\t\timageinfo: imageSampleResult.imageinfo,\n\t\t\t\t\t\t\tmediaType: 'image',\n\t\t\t\t\t\t\tisDialog: false\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t\texpect( wrapper.vm.resolution ).toBe( '2,484 × 1,870' );\n\t\t\t\t} );\n\t\t\t} );\n\t\t} );\n\t\tdescribe( 'mimeType', function () {\n\t\t\tit( 'Returns mime property of provided info', function () {\n\t\t\t\tconst wrapper = shallowMount( QuickView, {\n\t\t\t\t\tprops: {\n\t\t\t\t\t\ttitle: imageSampleResult.title,\n\t\t\t\t\t\tcanonicalurl: imageSampleResult.canonicalurl,\n\t\t\t\t\t\timageinfo: imageSampleResult.imageinfo,\n\t\t\t\t\t\tmediaType: 'image',\n\t\t\t\t\t\tisDialog: false\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\texpect( wrapper.vm.mimeType ).toBe( imageSampleResult.imageinfo[ 0 ].mime );\n\t\t\t} );\n\t\t} );\n\t\tdescribe( 'mimeType', function () {\n\t\t\tit( 'Returns empty object if mediatype is image', function () {\n\t\t\t\tconst wrapper = shallowMount( QuickView, {\n\t\t\t\t\tprops: {\n\t\t\t\t\t\ttitle: imageSampleResult.title,\n\t\t\t\t\t\tcanonicalurl: imageSampleResult.canonicalurl,\n\t\t\t\t\t\timageinfo: imageSampleResult.imageinfo,\n\t\t\t\t\t\tmediaType: 'image',\n\t\t\t\t\t\tisDialog: false\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\texpect( wrapper.vm.playerOptions ).toEqual( {} );\n\t\t\t} );\n\t\t\tit( 'Returns object if mediatype is audio', function () {\n\t\t\t\tconst wrapper = shallowMount( QuickView, {\n\t\t\t\t\tprops: {\n\t\t\t\t\t\ttitle: videoSampleResult.title,\n\t\t\t\t\t\tcanonicalurl: videoSampleResult.canonicalurl,\n\t\t\t\t\t\tvideoinfo: videoSampleResult.videoinfo,\n\t\t\t\t\t\tmediaType: 'audio',\n\t\t\t\t\t\tisDialog: false\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\texpect( wrapper.vm.playerOptions ).toMatchObject(\n\t\t\t\t\texpect.objectContaining( {\n\t\t\t\t\t\tautoplay: false,\n\t\t\t\t\t\tcontrols: true,\n\t\t\t\t\t\tfluid: true,\n\t\t\t\t\t\tposter: videoSampleResult.videoinfo[ 0 ].thumburl,\n\t\t\t\t\t\tsources: videoSampleResult.videoinfo[ 0 ].derivatives\n\t\t\t\t\t} )\n\t\t\t\t);\n\t\t\t} );\n\t\t\tit( 'Returns object if mediatype is video', function () {\n\t\t\t\tconst wrapper = shallowMount( QuickView, {\n\t\t\t\t\tprops: {\n\t\t\t\t\t\ttitle: videoSampleResult.title,\n\t\t\t\t\t\tcanonicalurl: videoSampleResult.canonicalurl,\n\t\t\t\t\t\tvideoinfo: videoSampleResult.videoinfo,\n\t\t\t\t\t\tmediaType: 'video',\n\t\t\t\t\t\tisDialog: false\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\texpect( wrapper.vm.playerOptions ).toMatchObject(\n\t\t\t\t\texpect.objectContaining( {\n\t\t\t\t\t\tautoplay: false,\n\t\t\t\t\t\tcontrols: true,\n\t\t\t\t\t\tfluid: true,\n\t\t\t\t\t\tposter: videoSampleResult.videoinfo[ 0 ].thumburl,\n\t\t\t\t\t\tsources: videoSampleResult.videoinfo[ 0 ].derivatives\n\t\t\t\t\t} )\n\t\t\t\t);\n\t\t\t} );\n\t\t} );\n\t} );\n\n\tdescribe( 'Methods', function () {\n\t\tdescribe( 'close', function () {\n\t\t\tdescribe( 'When triggered by keyboard', function () {\n\t\t\t\tit( 'emit a \"close\" event', function () {\n\t\t\t\t\tconst wrapper = shallowMount( QuickView, {\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\ttitle: imageSampleResult.title,\n\t\t\t\t\t\t\tcanonicalurl: imageSampleResult.canonicalurl,\n\t\t\t\t\t\t\timageinfo: imageSampleResult.imageinfo,\n\t\t\t\t\t\t\tmediaType: 'image',\n\t\t\t\t\t\t\tisDialog: false\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t\t// When the event is triggered by keyboard, it will have a details props of 0\n\t\t\t\t\tconst event = {\n\t\t\t\t\t\tdetail: 0\n\t\t\t\t\t};\n\n\t\t\t\t\twrapper.vm.close( event );\n\t\t\t\t\texpect( wrapper.emitted().close ).toHaveLength( 1 );\n\t\t\t\t} );\n\t\t\t\tit( 'provide a boolean argument with emitted value', function () {\n\t\t\t\t\tconst wrapper = shallowMount( QuickView, {\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\ttitle: imageSampleResult.title,\n\t\t\t\t\t\t\tcanonicalurl: imageSampleResult.canonicalurl,\n\t\t\t\t\t\t\timageinfo: imageSampleResult.imageinfo,\n\t\t\t\t\t\t\tmediaType: 'image',\n\t\t\t\t\t\t\tisDialog: false\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t\t// When the event is triggered by keyboard, it will have a details props of 0\n\t\t\t\t\tconst event = {\n\t\t\t\t\t\tdetail: 0\n\t\t\t\t\t};\n\n\t\t\t\t\twrapper.vm.close( event );\n\t\t\t\t\texpect( wrapper.emitted().close[ 0 ] ).toEqual( [ true ] );\n\t\t\t\t} );\n\t\t\t} );\n\t\t\tdescribe( 'When triggered by mouse', function () {\n\t\t\t\tit( 'emit a \"close\" event', function () {\n\t\t\t\t\tconst wrapper = shallowMount( QuickView, {\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\ttitle: imageSampleResult.title,\n\t\t\t\t\t\t\tcanonicalurl: imageSampleResult.canonicalurl,\n\t\t\t\t\t\t\timageinfo: imageSampleResult.imageinfo,\n\t\t\t\t\t\t\tmediaType: 'image',\n\t\t\t\t\t\t\tisDialog: false\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t\twrapper.vm.close( {} );\n\t\t\t\t\texpect( wrapper.emitted().close ).toHaveLength( 1 );\n\t\t\t\t} );\n\t\t\t} );\n\t\t} );\n\t\tdescribe( 'getLicenseIcon', function () {\n\t\t\tdescribe( 'Returns logoCC icon', function () {\n\t\t\t\tit( 'when licence name starts with \"cc\"', function () {\n\t\t\t\t\tconst wrapper = shallowMount( QuickView, {\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\ttitle: imageSampleResult.title,\n\t\t\t\t\t\t\tcanonicalurl: imageSampleResult.canonicalurl,\n\t\t\t\t\t\t\timageinfo: imageSampleResult.imageinfo,\n\t\t\t\t\t\t\tmediaType: 'image',\n\t\t\t\t\t\t\tisDialog: false\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t\tconst generatedLicense = wrapper.vm.getLicenseIcon( 'ccTest' );\n\t\t\t\t\texpect( generatedLicense ).toEqual( icons.sdIconLogoCC );\n\t\t\t\t} );\n\t\t\t\tit( 'when licence name starts with \"attribution\"', function () {\n\t\t\t\t\tconst wrapper = shallowMount( QuickView, {\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\ttitle: imageSampleResult.title,\n\t\t\t\t\t\t\tcanonicalurl: imageSampleResult.canonicalurl,\n\t\t\t\t\t\t\timageinfo: imageSampleResult.imageinfo,\n\t\t\t\t\t\t\tmediaType: 'image',\n\t\t\t\t\t\t\tisDialog: false\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t\tconst generatedLicense = wrapper.vm.getLicenseIcon( 'attribution' );\n\t\t\t\t\texpect( generatedLicense ).toEqual( icons.sdIconLogoCC );\n\t\t\t\t} );\n\t\t\t} );\n\t\t\tdescribe( 'Returns sdIconUnLock icon', function () {\n\t\t\t\tit( 'when licence name starts with \"pd\"', function () {\n\t\t\t\t\tconst wrapper = shallowMount( QuickView, {\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\ttitle: imageSampleResult.title,\n\t\t\t\t\t\t\tcanonicalurl: imageSampleResult.canonicalurl,\n\t\t\t\t\t\t\timageinfo: imageSampleResult.imageinfo,\n\t\t\t\t\t\t\tmediaType: 'image',\n\t\t\t\t\t\t\tisDialog: false\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t\tconst generatedLicense = wrapper.vm.getLicenseIcon( 'pdTest' );\n\t\t\t\t\texpect( generatedLicense ).toEqual( icons.sdIconUnLock );\n\t\t\t\t} );\n\t\t\t\tit( 'when licence name starts with \"no restrictions\"', function () {\n\t\t\t\t\tconst wrapper = shallowMount( QuickView, {\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\ttitle: imageSampleResult.title,\n\t\t\t\t\t\t\tcanonicalurl: imageSampleResult.canonicalurl,\n\t\t\t\t\t\t\timageinfo: imageSampleResult.imageinfo,\n\t\t\t\t\t\t\tmediaType: 'image',\n\t\t\t\t\t\t\tisDialog: false\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t\tconst generatedLicense = wrapper.vm.getLicenseIcon( 'no restrictions' );\n\t\t\t\t\texpect( generatedLicense ).toEqual( icons.sdIconUnLock );\n\t\t\t\t} );\n\t\t\t} );\n\t\t\tdescribe( 'Returns sdIconReference icon', function () {\n\t\t\t\tit( 'when licence name is uknown\"', function () {\n\t\t\t\t\tconst wrapper = shallowMount( QuickView, {\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\ttitle: imageSampleResult.title,\n\t\t\t\t\t\t\tcanonicalurl: imageSampleResult.canonicalurl,\n\t\t\t\t\t\t\timageinfo: imageSampleResult.imageinfo,\n\t\t\t\t\t\t\tmediaType: 'image',\n\t\t\t\t\t\t\tisDialog: false\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t\tconst generatedLicense = wrapper.vm.getLicenseIcon( 'unknown license' );\n\t\t\t\t\texpect( generatedLicense ).toEqual( icons.sdIconReference );\n\t\t\t\t} );\n\t\t\t} );\n\t\t} );\n\t\tdescribe( 'getThumbnailWrapperStyle', function () {\n\t\t\tdescribe( 'when image is landscape', function () {\n\t\t\t\tit( 'set thumbnailWrapperStyle values', function () {\n\t\t\t\t\t// set image to be landscape\n\t\t\t\t\timageSampleResult.imageinfo[ 0 ].width = 1000;\n\t\t\t\t\timageSampleResult.imageinfo[ 0 ].height = 500;\n\n\t\t\t\t\tconst wrapper = shallowMount( QuickView, {\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\ttitle: imageSampleResult.title,\n\t\t\t\t\t\t\tcanonicalurl: imageSampleResult.canonicalurl,\n\t\t\t\t\t\t\timageinfo: imageSampleResult.imageinfo,\n\t\t\t\t\t\t\tmediaType: 'image',\n\t\t\t\t\t\t\tisDialog: false\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t\twrapper.vm.getThumbnailWrapperStyle();\n\t\t\t\t\texpect( wrapper.vm.thumbnailWrapperStyle ).toEqual(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\theight: '30px',\n\t\t\t\t\t\t\twidth: '100%'\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t\t} );\n\t\t\tdescribe( 'when image is portrait', function () {\n\t\t\t\tit( 'set thumbnailWrapperStyle values', function () {\n\t\t\t\t\t// set image to be portrait\n\t\t\t\t\timageSampleResult.imageinfo[ 0 ].width = 500;\n\t\t\t\t\timageSampleResult.imageinfo[ 0 ].height = 1000;\n\n\t\t\t\t\tconst wrapper = shallowMount( QuickView, {\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\ttitle: imageSampleResult.title,\n\t\t\t\t\t\t\tcanonicalurl: imageSampleResult.canonicalurl,\n\t\t\t\t\t\t\timageinfo: imageSampleResult.imageinfo,\n\t\t\t\t\t\t\tmediaType: 'image',\n\t\t\t\t\t\t\tisDialog: false\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t\twrapper.vm.getThumbnailWrapperStyle();\n\t\t\t\t\texpect( wrapper.vm.thumbnailWrapperStyle ).toEqual(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\theight: '30px',\n\t\t\t\t\t\t\twidth: '100%'\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t\t} );\n\t\t\tdescribe( 'when height is less than 100', function () {\n\t\t\t\tit( 'set isExtraSmall to true', function () {\n\t\t\t\t\timageSampleResult.imageinfo[ 0 ].width = 20;\n\t\t\t\t\timageSampleResult.imageinfo[ 0 ].height = 1000;\n\n\t\t\t\t\tconst wrapper = shallowMount( QuickView, {\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\ttitle: imageSampleResult.title,\n\t\t\t\t\t\t\tcanonicalurl: imageSampleResult.canonicalurl,\n\t\t\t\t\t\t\timageinfo: imageSampleResult.imageinfo,\n\t\t\t\t\t\t\tmediaType: 'image',\n\t\t\t\t\t\t\tisDialog: false\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t\twrapper.vm.getThumbnailWrapperStyle();\n\t\t\t\t\texpect( wrapper.vm.isExtraSmall ).toBeTruthy();\n\t\t\t\t} );\n\t\t\t} );\n\t\t} );\n\t\tdescribe( 'onThumbnailLoad', function () {\n\t\t\tit( 'sets thumbnailWrapperStyle to false', function () {\n\t\t\t\tconst wrapper = shallowMount( QuickView, {\n\t\t\t\t\tprops: {\n\t\t\t\t\t\ttitle: imageSampleResult.title,\n\t\t\t\t\t\tcanonicalurl: imageSampleResult.canonicalurl,\n\t\t\t\t\t\timageinfo: imageSampleResult.imageinfo,\n\t\t\t\t\t\tmediaType: 'image',\n\t\t\t\t\t\tisDialog: false\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\twrapper.vm.onThumbnailLoad();\n\t\t\t\texpect( wrapper.vm.thumbnailWrapperStyle ).toBeFalsy();\n\t\t\t} );\n\t\t} );\n\t\tdescribe( 'onPlay', function () {\n\t\t\tit( 'logs a quickview_media_play action', function () {\n\t\t\t\tconst wrapper = shallowMount( QuickView, {\n\t\t\t\t\tprops: {\n\t\t\t\t\t\ttitle: imageSampleResult.title,\n\t\t\t\t\t\tcanonicalurl: imageSampleResult.canonicalurl,\n\t\t\t\t\t\timageinfo: imageSampleResult.imageinfo,\n\t\t\t\t\t\tmediaType: 'image',\n\t\t\t\t\t\tisDialog: false\n\t\t\t\t\t},\n\t\t\t\t\tmocks: {\n\t\t\t\t\t\t$log: jest.fn()\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\twrapper.vm.onPlay();\n\t\t\t\texpect( wrapper.vm.$log.mock.calls[ 0 ][ 0 ].action ).toEqual( 'quickview_media_play' );\n\t\t\t} );\n\t\t} );\n\t\tdescribe( 'handleFilenameCopy', function () {\n\t\t\tit( 'logs a quickview_filename_copy action', function () {\n\t\t\t\tconst wrapper = shallowMount( QuickView, {\n\t\t\t\t\tprops: {\n\t\t\t\t\t\ttitle: imageSampleResult.title,\n\t\t\t\t\t\tcanonicalurl: imageSampleResult.canonicalurl,\n\t\t\t\t\t\timageinfo: imageSampleResult.imageinfo,\n\t\t\t\t\t\tmediaType: 'image',\n\t\t\t\t\t\tisDialog: false\n\t\t\t\t\t},\n\t\t\t\t\tmocks: {\n\t\t\t\t\t\t$log: jest.fn()\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\twrapper.vm.handleFilenameCopy();\n\t\t\t\texpect( wrapper.vm.$log.mock.calls[ 0 ][ 0 ].action ).toEqual( 'quickview_filename_copy' );\n\t\t\t} );\n\t\t} );\n\t\tdescribe( 'handleWikitextCopy', function () {\n\t\t\tit( 'logs a quickview_wikitext_link_copy action', function () {\n\t\t\t\tconst wrapper = shallowMount( QuickView, {\n\t\t\t\t\tprops: {\n\t\t\t\t\t\ttitle: imageSampleResult.title,\n\t\t\t\t\t\tcanonicalurl: imageSampleResult.canonicalurl,\n\t\t\t\t\t\timageinfo: imageSampleResult.imageinfo,\n\t\t\t\t\t\tmediaType: 'image',\n\t\t\t\t\t\tisDialog: false\n\t\t\t\t\t},\n\t\t\t\t\tmocks: {\n\t\t\t\t\t\t$log: jest.fn()\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\twrapper.vm.handleWikitextCopy();\n\t\t\t\texpect( wrapper.vm.$log.mock.calls[ 0 ][ 0 ].action ).toEqual( 'quickview_wikitext_link_copy' );\n\t\t\t} );\n\t\t} );\n\t} );\n\tdescribe( 'mounted', function () {\n\t\tit( 'show spinner after timeout', function () {\n\t\t\tjest.useFakeTimers();\n\n\t\t\tconst wrapper = shallowMount( QuickView, {\n\t\t\t\tprops: {\n\t\t\t\t\ttitle: imageSampleResult.title,\n\t\t\t\t\tcanonicalurl: imageSampleResult.canonicalurl,\n\t\t\t\t\timageinfo: imageSampleResult.imageinfo,\n\t\t\t\t\tmediaType: 'image',\n\t\t\t\t\tisDialog: false\n\t\t\t\t},\n\t\t\t\tmocks: {\n\t\t\t\t\t$log: jest.fn()\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\texpect( wrapper.vm.showSpinner ).toBeFalsy();\n\t\t\tjest.runAllTimers();\n\t\t\texpect( wrapper.vm.showSpinner ).toBeTruthy();\n\t\t} );\n\t} );\n} );\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/jest/components/SearchFilters.test.js","messages":[{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":1,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":4,"endColumn":104},{"ruleId":"es-x/no-destructuring","severity":2,"message":"ES2015 destructuring is forbidden.","line":2,"column":2,"nodeType":"ObjectPattern","messageId":"forbidden","endLine":2,"endColumn":11},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":6,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":6,"endColumn":34},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":7,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":22,"endColumn":3},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":23,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":35,"endColumn":3},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":38,"column":2,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":40,"endColumn":13},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":57,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":57,"endColumn":44},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":65,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":65,"endColumn":52},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":67,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":67,"endColumn":75},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":79,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":79,"endColumn":46},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":81,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":81,"endColumn":40},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":92,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":92,"endColumn":46},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":94,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":94,"endColumn":43},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":97,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":97,"endColumn":42},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":111,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":111,"endColumn":46},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":125,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":125,"endColumn":46},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":127,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":127,"endColumn":55},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":135,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":135,"endColumn":46},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":137,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":137,"endColumn":59},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":149,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":149,"endColumn":46},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":151,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":151,"endColumn":42},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":168,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":168,"endColumn":46},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":183,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":183,"endColumn":42},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":196,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":196,"endColumn":46},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":227,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":227,"endColumn":40},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":240,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":240,"endColumn":46},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":271,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":271,"endColumn":43},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":288,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":288,"endColumn":46},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":290,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":296,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":306,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":306,"endColumn":46},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":308,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":314,"endColumn":7}],"suppressedMessages":[],"errorCount":31,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"const Vuex = require( 'vuex' ),\n\t{ mount } = require( '@vue/test-utils' ),\n\tComponent = require( '../../../resources/components/SearchFilters.vue' ),\n\tNamespaceFilterDialogComponent = require( '../../../resources/components/NamespaceFilterDialog.vue' );\n\nconst defaultMediaType = 'image';\nconst initialState = {\n\ttotalHits: {\n\t\timage: 0,\n\t\taudio: 0,\n\t\tvideo: 0,\n\t\tpage: 0,\n\t\tother: 0\n\t},\n\tfilterValues: {\n\t\timage: {},\n\t\taudio: {},\n\t\tvideo: {},\n\t\tpage: {},\n\t\tother: {}\n\t}\n};\nconst renderComponent = function ( store, mediaType ) {\n\treturn mount( Component, {\n\t\tprops: {\n\t\t\tmediaType: mediaType || defaultMediaType\n\t\t},\n\t\tglobal: {\n\t\t\tplugins: [ store ],\n\t\t\tmocks: {\n\t\t\t\t$log: jest.fn()\n\t\t\t}\n\t\t}\n\t} );\n};\n\ndescribe( 'SearchFilters', function () {\n\tlet store,\n\t\tstate,\n\t\tmutations;\n\n\tbeforeEach( function () {\n\t\tstate = JSON.parse( JSON.stringify( initialState ) );\n\t\tmutations = {\n\t\t\taddFilterValue: jest.fn(),\n\t\t\tremoveFilterValue: jest.fn()\n\t\t};\n\t\tstore = new Vuex.Store( {\n\t\t\tstate: state,\n\t\t\tmutations: mutations\n\t\t} );\n\n\t} );\n\n\tit( 'renders successfully', function () {\n\n\t\tconst wrapper = renderComponent( store );\n\n\t\texpect( wrapper.html().length ).toBeGreaterThan( 0 );\n\n\t} );\n\n\tit( 'renders NamespaceFilterDialog successfully if mediatype is \"page\"', function () {\n\n\t\tconst wrapper = renderComponent( store, 'page' );\n\n\t\tconst element = wrapper.findComponent( NamespaceFilterDialogComponent );\n\n\t\texpect( element.exists() ).toBe( true );\n\n\t} );\n\n\tdescribe( 'Methods', function () {\n\n\t\tdescribe( 'onSelect', function () {\n\n\t\t\tit( 'if value is passed and is not empty, addFilterValue', function () {\n\n\t\t\t\tconst wrapper = renderComponent( store );\n\n\t\t\t\tlet addFilterValueMock = jest.fn();\n\t\t\t\twrapper.vm.addFilterValue = addFilterValueMock;\n\n\t\t\t\twrapper.vm.onSelect( 'gif', 'filemime' );\n\n\t\t\t\texpect( addFilterValueMock ).toHaveBeenCalled();\n\n\t\t\t} );\n\n\t\t\tit( 'if value is not passed or is empty, removeFilterValue and reset value', function () {\n\n\t\t\t\tconst wrapper = renderComponent( store );\n\n\t\t\t\tlet removeFilterValueMock = jest.fn();\n\t\t\t\twrapper.vm.removeFilterValue = removeFilterValueMock;\n\n\t\t\t\tlet resetSelectValueMock = jest.fn();\n\t\t\t\twrapper.vm.getRef = function () {\n\t\t\t\t\treturn { reset: resetSelectValueMock };\n\t\t\t\t};\n\n\t\t\t\twrapper.vm.onSelect( '', 'filemime' );\n\n\t\t\t\texpect( removeFilterValueMock ).toHaveBeenCalled();\n\t\t\t\texpect( resetSelectValueMock ).toHaveBeenCalled();\n\n\t\t\t} );\n\n\t\t\tit( 'emits \"filter-change\"', function () {\n\n\t\t\t\tconst wrapper = renderComponent( store );\n\n\t\t\t\twrapper.vm.onSelect( 'gif', 'filemime' );\n\n\t\t\t\texpect( wrapper.emitted()[ 'filter-change' ] ).toHaveLength( 1 );\n\n\t\t\t} );\n\n\t\t} );\n\n\t\tdescribe( 'getFilterPrefix', function () {\n\n\t\t\tit( 'if filterType is passed as sort', function () {\n\n\t\t\t\tconst wrapper = renderComponent( store );\n\n\t\t\t\tconst data = wrapper.vm.getFilterPrefix( 'sort' );\n\n\t\t\t\texpect( data ).not.toBe( '' );\n\n\t\t\t} );\n\n\t\t\tit( 'if filterType is not passed as sort', function () {\n\n\t\t\t\tconst wrapper = renderComponent( store );\n\n\t\t\t\tconst data = wrapper.vm.getFilterPrefix( 'filemime' );\n\n\t\t\t\texpect( data ).toBe( '' );\n\n\t\t\t} );\n\n\t\t} );\n\n\t\tdescribe( 'resetAllFilters', function () {\n\n\t\t\tit( 'reset all search filters', function () {\n\n\t\t\t\tconst wrapper = renderComponent( store );\n\n\t\t\t\tlet resetSelectValueMock = jest.fn();\n\t\t\t\twrapper.vm.getRef = function () {\n\t\t\t\t\treturn { reset: resetSelectValueMock };\n\t\t\t\t};\n\n\t\t\t\twrapper.vm.resetAllFilters();\n\n\t\t\t\texpect( resetSelectValueMock ).toHaveBeenCalledTimes( wrapper.vm.searchFilters.length );\n\n\t\t\t} );\n\n\t\t} );\n\n\t\tdescribe( 'synchronizeFilters', function () {\n\n\t\t\tit( 'reset all search filters, if no value in store', function () {\n\n\t\t\t\tconst wrapper = renderComponent( store );\n\n\t\t\t\tstore.state.filterValues = {\n\t\t\t\t\timage: {\n\t\t\t\t\t\thaslicense: null,\n\t\t\t\t\t\tfilemime: null,\n\t\t\t\t\t\tfileres: null,\n\t\t\t\t\t\tassessment: null,\n\t\t\t\t\t\tsort: null\n\t\t\t\t\t},\n\t\t\t\t\taudio: null,\n\t\t\t\t\tvideo: null,\n\t\t\t\t\tpage: null,\n\t\t\t\t\tother: null\n\t\t\t\t};\n\t\t\t\tlet resetSelectValueMock = jest.fn();\n\t\t\t\twrapper.vm.getRef = function () {\n\t\t\t\t\treturn { reset: resetSelectValueMock };\n\t\t\t\t};\n\n\t\t\t\twrapper.vm.synchronizeFilters();\n\n\t\t\t\texpect( resetSelectValueMock ).toHaveBeenCalledTimes( 5 );\n\n\t\t\t} );\n\n\t\t\tit( 'set filter values with values in store if valid', function () {\n\n\t\t\t\tconst wrapper = renderComponent( store );\n\n\t\t\t\tstore.state.filterValues = {\n\t\t\t\t\timage: {\n\t\t\t\t\t\thaslicense: {\n\t\t\t\t\t\t\tlabel: 'No restrictions',\n\t\t\t\t\t\t\tvalue: 'unrestricted'\n\t\t\t\t\t\t},\n\t\t\t\t\t\tfilemime: {\n\t\t\t\t\t\t\tlabel: 'jpg',\n\t\t\t\t\t\t\tvalue: 'jpeg'\n\t\t\t\t\t\t},\n\t\t\t\t\t\tfileres: {\n\t\t\t\t\t\t\tlabel: 'Small',\n\t\t\t\t\t\t\tvalue: '<500'\n\t\t\t\t\t\t},\n\t\t\t\t\t\tassessment: {\n\t\t\t\t\t\t\tlabel: 'Featured picture',\n\t\t\t\t\t\t\tvalue: 'featured-image'\n\t\t\t\t\t\t},\n\t\t\t\t\t\tsort: {\n\t\t\t\t\t\t\tlabel: 'Recency',\n\t\t\t\t\t\t\tvalue: 'recency'\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\taudio: null,\n\t\t\t\t\tvideo: null,\n\t\t\t\t\tpage: null,\n\t\t\t\t\tother: null\n\t\t\t\t};\n\n\t\t\t\tlet setSelectValueMock = jest.fn();\n\t\t\t\twrapper.vm.getRef = function () {\n\t\t\t\t\treturn { select: setSelectValueMock };\n\t\t\t\t};\n\n\t\t\t\twrapper.vm.synchronizeFilters();\n\n\t\t\t\texpect( setSelectValueMock ).toHaveBeenCalledTimes( 5 );\n\n\t\t\t} );\n\n\t\t\tit( 'remove filter values from store if not valid and emit \"filter-change\"', function () {\n\n\t\t\t\tconst wrapper = renderComponent( store );\n\n\t\t\t\tstore.state.filterValues = {\n\t\t\t\t\timage: {\n\t\t\t\t\t\thaslicense: {\n\t\t\t\t\t\t\tlabel: 'No restrictions-test',\n\t\t\t\t\t\t\tvalue: 'unrestricted-test'\n\t\t\t\t\t\t},\n\t\t\t\t\t\tfilemime: {\n\t\t\t\t\t\t\tlabel: 'jpg-test',\n\t\t\t\t\t\t\tvalue: 'jpeg-test'\n\t\t\t\t\t\t},\n\t\t\t\t\t\tfileres: {\n\t\t\t\t\t\t\tlabel: 'Small-test',\n\t\t\t\t\t\t\tvalue: '<500-test'\n\t\t\t\t\t\t},\n\t\t\t\t\t\tassessment: {\n\t\t\t\t\t\t\tlabel: 'Featured picture-test',\n\t\t\t\t\t\t\tvalue: 'featured-image-test'\n\t\t\t\t\t\t},\n\t\t\t\t\t\tsort: {\n\t\t\t\t\t\t\tlabel: 'Recency-test',\n\t\t\t\t\t\t\tvalue: 'recency-test'\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\taudio: null,\n\t\t\t\t\tvideo: null,\n\t\t\t\t\tpage: null,\n\t\t\t\t\tother: null\n\t\t\t\t};\n\n\t\t\t\tlet removeFilterValueMock = jest.fn();\n\t\t\t\twrapper.vm.removeFilterValue = removeFilterValueMock;\n\n\t\t\t\twrapper.vm.synchronizeFilters();\n\n\t\t\t\texpect( removeFilterValueMock ).toHaveBeenCalledTimes( 5 );\n\n\t\t\t\texpect( wrapper.emitted()[ 'filter-change' ] ).toHaveLength( 5 );\n\n\t\t\t} );\n\n\t\t} );\n\n\t\tdescribe( 'onScroll', function () {\n\n\t\t\tit( 'to end; total scroll is <= 1; set isScrolledToEnd to be true', function () {\n\n\t\t\t\tconst wrapper = renderComponent( store );\n\n\t\t\t\tconst event = {\n\t\t\t\t\ttarget: {\n\t\t\t\t\t\tscrollLeft: 5,\n\t\t\t\t\t\tscrollWidth: 10,\n\t\t\t\t\t\tclientWidth: 5\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\twrapper.vm.onScroll( event );\n\n\t\t\t\texpect( wrapper.vm.isScrolledToEnd ).toBe( true );\n\n\t\t\t} );\n\n\t\t\tit( 'total scroll is > 1; set isScrolledToEnd to be false', function () {\n\n\t\t\t\tconst wrapper = renderComponent( store );\n\n\t\t\t\tconst event = {\n\t\t\t\t\ttarget: {\n\t\t\t\t\t\tscrollLeft: 2,\n\t\t\t\t\t\tscrollWidth: 10,\n\t\t\t\t\t\tclientWidth: 5\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\twrapper.vm.onScroll( event );\n\n\t\t\t\texpect( wrapper.vm.isScrolledToEnd ).toBe( false );\n\n\t\t\t} );\n\n\t\t} );\n\n\t} );\n\n} );\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/jest/components/SearchResults.test.js","messages":[{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":1,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":8,"endColumn":86},{"ruleId":"es-x/no-destructuring","severity":2,"message":"ES2015 destructuring is forbidden.","line":2,"column":2,"nodeType":"ObjectPattern","messageId":"forbidden","endLine":2,"endColumn":18},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":11,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":51,"endColumn":3},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":52,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":52,"endColumn":34},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":53,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":53,"endColumn":29},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":54,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":67,"endColumn":3},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":70,"column":2,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":85,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":128,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":128,"endColumn":45},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":129,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":129,"endColumn":60},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":141,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":141,"endColumn":45},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":143,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":143,"endColumn":68},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":154,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":154,"endColumn":45},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":156,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":156,"endColumn":54},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":165,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":165,"endColumn":45},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":167,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":167,"endColumn":66},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":182,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":182,"endColumn":46},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":184,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":184,"endColumn":65},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":192,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":192,"endColumn":64},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":194,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":194,"endColumn":68},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":205,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":205,"endColumn":64},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":207,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":207,"endColumn":66},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":222,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":222,"endColumn":45},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":224,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":224,"endColumn":75},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":231,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":231,"endColumn":45},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":233,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":233,"endColumn":68},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":245,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":245,"endColumn":46},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":253,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":263,"endColumn":9},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":276,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":276,"endColumn":48},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":277,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":277,"endColumn":40},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":278,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":278,"endColumn":16},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":327,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":327,"endColumn":46},{"ruleId":"es-x/no-computed-properties","severity":2,"message":"ES2015 computed properties are forbidden.","line":336,"column":6,"nodeType":"Property","messageId":"forbidden","endLine":336,"endColumn":66},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":339,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":339,"endColumn":49},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":340,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":340,"endColumn":46},{"ruleId":"es-x/no-computed-properties","severity":2,"message":"ES2015 computed properties are forbidden.","line":351,"column":6,"nodeType":"Property","messageId":"forbidden","endLine":351,"endColumn":66},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":354,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":354,"endColumn":46},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":356,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":356,"endColumn":49},{"ruleId":"es-x/no-computed-properties","severity":2,"message":"ES2015 computed properties are forbidden.","line":372,"column":6,"nodeType":"Property","messageId":"forbidden","endLine":372,"endColumn":66},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":375,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":375,"endColumn":46},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":377,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":377,"endColumn":38},{"ruleId":"es-x/no-computed-properties","severity":2,"message":"ES2015 computed properties are forbidden.","line":389,"column":6,"nodeType":"Property","messageId":"forbidden","endLine":389,"endColumn":66},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":392,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":392,"endColumn":46},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":394,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":394,"endColumn":38},{"ruleId":"es-x/no-computed-properties","severity":2,"message":"ES2015 computed properties are forbidden.","line":406,"column":6,"nodeType":"Property","messageId":"forbidden","endLine":406,"endColumn":66},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":409,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":409,"endColumn":46},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":411,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":411,"endColumn":38},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":424,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":424,"endColumn":48},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":425,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":425,"endColumn":41},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":428,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":428,"endColumn":46},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":438,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":438,"endColumn":46},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":451,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":451,"endColumn":46},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":471,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":471,"endColumn":46},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":473,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":473,"endColumn":47},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":482,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":482,"endColumn":47},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":483,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":483,"endColumn":46},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":499,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":499,"endColumn":46},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":509,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":509,"endColumn":46},{"ruleId":"es-x/no-computed-properties","severity":2,"message":"ES2015 computed properties are forbidden.","line":521,"column":6,"nodeType":"Property","messageId":"forbidden","endLine":521,"endColumn":66},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":524,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":524,"endColumn":55},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":538,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":538,"endColumn":46},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":540,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":540,"endColumn":40},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":558,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":558,"endColumn":46},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":572,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":572,"endColumn":46},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":575,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":575,"endColumn":47},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":589,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":589,"endColumn":46},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":597,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":597,"endColumn":47},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":625,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":625,"endColumn":45}],"suppressedMessages":[],"errorCount":67,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"const Vuex = require( 'vuex' ),\n\t{ shallowMount } = require( '@vue/test-utils' ),\n\tComponent = require( '../../../resources/components/SearchResults.vue' ),\n\tSearchErrorComponent = require( '../../../resources/components/SearchError.vue' ),\n\tNoResultsComponent = require( '../../../resources/components/NoResults.vue' ),\n\tEndOfResultsComponent = require( '../../../resources/components/EndOfResults.vue' ),\n\tEmptyStateComponent = require( '../../../resources/components/EmptyState.vue' ),\n\tImageComponent = require( '../../../resources/components/results/ImageResult.vue' );\nrequire( '../mocks/EventListener.js' );\n\nconst initialState = {\n\tcontinue: {\n\t\timage: undefined,\n\t\taudio: undefined,\n\t\tvideo: undefined,\n\t\tpage: undefined,\n\t\tother: undefined\n\t},\n\tdetails: {\n\t\timage: null,\n\t\taudio: null,\n\t\tvideo: null,\n\t\tpage: null,\n\t\tother: null\n\t},\n\thasError: false,\n\tinitialized: false,\n\tpending: {\n\t\timage: false,\n\t\taudio: false,\n\t\tvideo: false,\n\t\tpage: false,\n\t\tother: false\n\t},\n\tresults: {\n\t\timage: [ {\n\t\t\ttitle: 'DummyTitle',\n\t\t\tcanonicalurl: 'DummyUrl',\n\t\t\tindex: 0\n\t\t}, {\n\t\t\ttitle: 'DummyTitle2',\n\t\t\tcanonicalurl: 'DummyUrl2',\n\t\t\tindex: 1\n\t\t} ],\n\t\taudio: [],\n\t\tvideo: [],\n\t\tpage: [],\n\t\tother: []\n\t},\n\tdummySearchTerm: 'dummyText'\n};\nconst defaultMediaType = 'image';\nconst mockFocus = jest.fn();\nconst renderComponent = function ( store, mediaType ) {\n\treturn shallowMount( Component, {\n\t\tprops: {\n\t\t\tmediaType: mediaType || defaultMediaType\n\t\t},\n\t\tglobal: {\n\t\t\tplugins: [ store ],\n\t\t\tmocks: {\n\t\t\t\t$log: jest.fn(),\n\t\t\t\tfocus: mockFocus\n\t\t\t}\n\t\t}\n\t} );\n};\n\ndescribe( 'SearchResults', function () {\n\tlet store,\n\t\tstate,\n\t\tgetters,\n\t\tactions,\n\t\tmutations,\n\t\tfetchDetailsMock = jest.fn().mockReturnValue( {\n\t\t\tthen: function ( params ) {\n\t\t\t\treturn params( {\n\t\t\t\t\tquery: {\n\t\t\t\t\t\tpages: {\n\t\t\t\t\t\t\timage: initialState.results.image[ 0 ]\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\n\tbeforeEach( function () {\n\t\tjest.resetModules();\n\t\tstate = JSON.parse( JSON.stringify( initialState ) );\n\t\tgetters = {\n\t\t\tallActiveDetails: function ( localState ) {\n\t\t\t\treturn localState.details;\n\t\t\t},\n\t\t\tcurrentSearchTerm: function ( localState ) {\n\t\t\t\treturn localState.dummySearchTerm;\n\t\t\t}\n\t\t};\n\t\tmutations = {\n\t\t\tsetDetails: jest.fn(),\n\t\t\tclearDetails: jest.fn()\n\t\t};\n\t\tactions = {\n\t\t\tfetchDetails: fetchDetailsMock\n\t\t};\n\t\tstore = Vuex.createStore( {\n\t\t\tstate: function () {\n\t\t\t\treturn state;\n\t\t\t},\n\t\t\tgetters: getters,\n\t\t\tmutations: mutations,\n\t\t\tactions: actions\n\t\t} );\n\t\tjest.clearAllMocks();\n\t} );\n\n\tafterEach( function () {\n\t\tstore = undefined;\n\t\tstate = undefined;\n\t\tgetters = undefined;\n\t\tactions = undefined;\n\t\tmutations = undefined;\n\t} );\n\n\tdescribe( 'renders child component', function () {\n\n\t\tit( '(based on mediatype) successfully', function () {\n\n\t\t\tconst wrapper = renderComponent( store );\n\t\t\tconst element = wrapper.findComponent( ImageComponent );\n\n\t\t\texpect( element.exists() ).toBe( true );\n\n\t\t} );\n\n\t\tit( 'spinner if pending (based on mediatype) is true', function () {\n\n\t\t\tstore.state.pending = {\n\t\t\t\timage: true\n\t\t\t};\n\n\t\t\tconst wrapper = renderComponent( store );\n\n\t\t\tconst element = wrapper.find( '.sdms-search-results__pending' );\n\t\t\texpect( element.exists() ).toBe( true );\n\n\t\t} );\n\n\t\tit( 'show more button if continue (based on mediatype) is truthy and pending is false', function () {\n\n\t\t\tstore.state.continue = {\n\t\t\t\timage: true\n\t\t\t};\n\n\t\t\tconst wrapper = renderComponent( store );\n\n\t\t\tconst element = wrapper.find( '.sdms-load-more' );\n\t\t\texpect( element.exists() ).toBe( true );\n\n\t\t} );\n\n\t\tit( 'SearchError if hasError is true', function () {\n\n\t\t\tstore.state.hasError = true;\n\n\t\t\tconst wrapper = renderComponent( store );\n\n\t\t\tconst element = wrapper.findComponent( SearchErrorComponent );\n\t\t\texpect( element.exists() ).toBe( true );\n\n\t\t} );\n\n\t\tdescribe( 'when hasError is false', function () {\n\n\t\t\tit( 'and hasNoResults is true, render NoResults Component', function () {\n\n\t\t\t\tstore.state.results = {\n\t\t\t\t\timage: []\n\t\t\t\t};\n\t\t\t\t// The api request will set the continue object to NULL (instead than undefined)\n\t\t\t\tstate.continue.image = null;\n\n\t\t\t\tconst wrapper = renderComponent( store );\n\n\t\t\t\tconst element = wrapper.findComponent( NoResultsComponent );\n\t\t\t\texpect( element.exists() ).toBe( true );\n\n\t\t\t} );\n\n\t\t\tit( 'and hasNoResults is false, and endOfResults is true render EndOfResults Component', function () {\n\t\t\t\t// The api request will set the continue object to NULL (instead than undefined)\n\t\t\t\tstore.state.continue.image = null;\n\t\t\t\tconst wrapper = renderComponent( store, defaultMediaType );\n\n\t\t\t\tconst element = wrapper.findComponent( EndOfResultsComponent );\n\t\t\t\texpect( element.exists() ).toBe( true );\n\n\t\t\t} );\n\n\t\t\tit( 'and hasNoResults is false, endOfResults is false and shouldShowEmptyState is true render EmptyState Component', function () {\n\n\t\t\t\tstore.state.results = {\n\t\t\t\t\timage: []\n\t\t\t\t};\n\t\t\t\tstore.state.dummySearchTerm = '';\n\t\t\t\tconst wrapper = renderComponent( store, defaultMediaType );\n\n\t\t\t\tconst element = wrapper.findComponent( EmptyStateComponent );\n\n\t\t\t\texpect( element.exists() ).toBe( true );\n\n\t\t\t} );\n\n\t\t} );\n\n\t} );\n\n\tdescribe( 'quickview', function () {\n\n\t\tit( 'renders Dialog Component if isMobileSkin is true', function () {\n\n\t\t\tmw.config.get.mockReturnValueOnce( 'minerva' );\n\t\t\tconst wrapper = renderComponent( store );\n\n\t\t\tconst element = wrapper.find( '.sdms-search-results__details-dialog' );\n\t\t\texpect( element.exists() ).toBe( true );\n\n\t\t} );\n\n\t\tit( 'renders side component if isMobileSkin is false', function () {\n\n\t\t\tconst wrapper = renderComponent( store );\n\n\t\t\tconst element = wrapper.find( '.sdms-search-results__details' );\n\t\t\texpect( element.exists() ).toBe( true );\n\n\t\t} );\n\t} );\n\n\tdescribe( 'Computed', function () {\n\n\t\tdescribe( 'resultComponent', function () {\n\n\t\t\tit( 'when media type is image', function () {\n\n\t\t\t\tconst wrapper = renderComponent( store );\n\n\t\t\t\texpect( wrapper.vm.resultComponent ).toBe( 'image-result' );\n\n\t\t\t} );\n\n\t\t\tit( 'when media type is not image', function () {\n\n\t\t\t\tconst wrapper = shallowMount( Component, {\n\t\t\t\t\tprops: {\n\t\t\t\t\t\tmediaType: 'video'\n\t\t\t\t\t},\n\t\t\t\t\tglobal: {\n\t\t\t\t\t\tplugins: [ store ],\n\t\t\t\t\t\tmocks: {\n\t\t\t\t\t\t\t$log: jest.fn()\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\texpect( wrapper.vm.resultComponent ).toBe( 'video-result' );\n\n\t\t\t} );\n\t\t} );\n\n\t} );\n\n\tdescribe( 'Methods', function () {\n\n\t\tdescribe( 'showDetails', function () {\n\n\t\t\tlet dummyscrollIntoViewIfNeeded = jest.fn();\n\t\t\tlet dummyScrollIntoView = jest.fn();\n\t\t\tlet wrapper;\n\t\t\tbeforeEach( function () {\n\t\t\t\tstore.state.details.image = {\n\t\t\t\t\ttitle: 'DummyTitle',\n\t\t\t\t\tcanonicalurl: 'DummyUrl',\n\t\t\t\t\tindex: 0\n\t\t\t\t};\n\t\t\t\twrapper = renderComponent( store );\n\t\t\t\twrapper.vm.$refs.aside.scrollIntoView = dummyScrollIntoView;\n\t\t\t\twrapper.vm.scrollIntoViewIfNeeded = dummyscrollIntoViewIfNeeded;\n\n\t\t\t\t// Call showDetails\n\t\t\t\twrapper.vm.showDetails( state.results[ defaultMediaType ][ 0 ].title, 0 );\n\n\t\t\t} );\n\n\t\t\tit( 'scroll to view', function ( done ) {\n\n\t\t\t\twrapper.vm.$nextTick().then( function () {\n\t\t\t\t\texpect( dummyscrollIntoViewIfNeeded ).toHaveBeenCalled();\n\t\t\t\t\texpect( dummyScrollIntoView ).toHaveBeenCalled();\n\t\t\t\t\tdone();\n\t\t\t\t} );\n\t\t\t} );\n\n\t\t\tit( 'clear details if timeout isnt cleared', function () {\n\t\t\t\tjest.useFakeTimers();\n\t\t\t\t// Call showDetails\n\t\t\t\twrapper.vm.showDetails( state.results[ defaultMediaType ][ 0 ].title, 0 );\n\n\t\t\t\tjest.runAllTimers();\n\n\t\t\t\texpect( mutations.clearDetails ).toHaveBeenCalled();\n\t\t\t\texpect( fetchDetailsMock ).toHaveBeenCalled();\n\n\t\t\t} );\n\n\t\t\tit( 'setDetails', function () {\n\n\t\t\t\texpect( fetchDetailsMock ).toHaveBeenCalled();\n\t\t\t\texpect( mutations.setDetails ).toHaveBeenCalled();\n\n\t\t\t} );\n\n\t\t} );\n\n\t\tdescribe( 'hideDetails', function () {\n\n\t\t\tit( 'return if not mediatype details', function () {\n\t\t\t\tconst wrapper = renderComponent( store );\n\t\t\t\twrapper.vm.hideDetails( false );\n\n\t\t\t\texpect( mutations.clearDetails ).not.toHaveBeenCalled();\n\t\t\t} );\n\n\t\t\tit( 'if restoreFocus is passed as true, focus on current title', function () {\n\n\t\t\t\tstore.state.details = {\n\t\t\t\t\t[ defaultMediaType ]: state.results[ defaultMediaType ][ 0 ]\n\t\t\t\t};\n\n\t\t\t\tlet dummyscrollIntoViewIfNeeded = jest.fn();\n\t\t\t\tconst wrapper = renderComponent( store );\n\t\t\t\twrapper.vm.scrollIntoViewIfNeeded = dummyscrollIntoViewIfNeeded;\n\n\t\t\t\twrapper.vm.hideDetails( true );\n\n\t\t\t\texpect( mockFocus ).toHaveBeenCalled();\n\t\t\t} );\n\n\t\t\tit( 'if restoreFocus is passed as false, focus on current title', function () {\n\n\t\t\t\tstore.state.details = {\n\t\t\t\t\t[ defaultMediaType ]: state.results[ defaultMediaType ][ 0 ]\n\t\t\t\t};\n\n\t\t\t\tconst wrapper = renderComponent( store );\n\n\t\t\t\tlet dummyscrollIntoViewIfNeeded = jest.fn();\n\t\t\t\twrapper.vm.scrollIntoViewIfNeeded = dummyscrollIntoViewIfNeeded;\n\n\t\t\t\twrapper.vm.hideDetails( false );\n\n\t\t\t\texpect( mockFocus ).not.toHaveBeenCalled();\n\t\t\t\texpect( mutations.clearDetails ).toHaveBeenCalled();\n\t\t\t} );\n\n\t\t} );\n\n\t\tdescribe( 'changeQuickViewResult', function () {\n\n\t\t\tit( 'set focusOn to next, when shouldfocuschange is true and addend is 1', function () {\n\n\t\t\t\tstore.state.details = {\n\t\t\t\t\t[ defaultMediaType ]: state.results[ defaultMediaType ][ 0 ]\n\t\t\t\t};\n\n\t\t\t\tconst wrapper = renderComponent( store );\n\n\t\t\t\tlet dummyShowDetails = jest.fn();\n\t\t\t\twrapper.vm.showDetails = dummyShowDetails;\n\n\t\t\t\twrapper.vm.changeQuickViewResult( true, 1 );\n\n\t\t\t\texpect( dummyShowDetails ).toHaveBeenCalled();\n\t\t\t\texpect( wrapper.vm.focusOn ).toBe( 'next' );\n\t\t\t} );\n\n\t\t\tit( 'set focusOn to previous, when shouldfocuschange is true and addend is not 1', function () {\n\n\t\t\t\tstore.state.details = {\n\t\t\t\t\t[ defaultMediaType ]: state.results[ defaultMediaType ][ 0 ]\n\t\t\t\t};\n\n\t\t\t\tconst wrapper = renderComponent( store );\n\n\t\t\t\tlet dummyShowDetails = jest.fn();\n\t\t\t\twrapper.vm.showDetails = dummyShowDetails;\n\n\t\t\t\twrapper.vm.changeQuickViewResult( true, -1 );\n\n\t\t\t\texpect( dummyShowDetails ).not.toHaveBeenCalled();\n\t\t\t\texpect( wrapper.vm.focusOn ).toBe( 'previous' );\n\t\t\t} );\n\n\t\t\tit( 'set focusOn to null, when shouldfocuschange is false', function () {\n\n\t\t\t\tstore.state.details = {\n\t\t\t\t\t[ defaultMediaType ]: state.results[ defaultMediaType ][ 0 ]\n\t\t\t\t};\n\n\t\t\t\tconst wrapper = renderComponent( store );\n\n\t\t\t\tlet dummyShowDetails = jest.fn();\n\t\t\t\twrapper.vm.showDetails = dummyShowDetails;\n\n\t\t\t\twrapper.vm.changeQuickViewResult( false, 1 );\n\n\t\t\t\texpect( dummyShowDetails ).toHaveBeenCalled();\n\t\t\t\texpect( wrapper.vm.focusOn ).toBe( null );\n\t\t\t} );\n\n\t\t} );\n\n\t\tdescribe( 'scrollIntoViewIfNeeded', function () {\n\n\t\t\tconst getBoundingClientRectMock = jest.fn();\n\t\t\tconst scrollIntoViewMock = jest.fn();\n\n\t\t\tit( 'return if no ref', function () {\n\t\t\t\tconst wrapper = renderComponent( store );\n\n\t\t\t\t// wrapper.vm.$refs[ state.results[ defaultMediaType ][ 0 ].title ] = '';\n\n\t\t\t\twrapper.vm.scrollIntoViewIfNeeded( state.results[ defaultMediaType ][ 0 ].title );\n\n\t\t\t\texpect( scrollIntoViewMock ).not.toHaveBeenCalledWith();\n\t\t\t} );\n\n\t\t\tit( 'if bounds top or bounds bottom is < 0, scroll into view', function () {\n\t\t\t\tconst wrapper = renderComponent( store );\n\t\t\t\tgetBoundingClientRectMock.mockReturnValue( {\n\t\t\t\t\ttop: -1,\n\t\t\t\t\tbottom: -1\n\t\t\t\t} );\n\t\t\t\twrapper.vm.$refs[ state.results[ defaultMediaType ][ 0 ].title ].$el.getBoundingClientRect = getBoundingClientRectMock;\n\t\t\t\twrapper.vm.$refs[ state.results[ defaultMediaType ][ 0 ].title ].$el.scrollIntoView = scrollIntoViewMock;\n\t\t\t\twrapper.vm.scrollIntoViewIfNeeded( state.results[ defaultMediaType ][ 0 ].title );\n\n\t\t\t\texpect( scrollIntoViewMock ).toHaveBeenCalledWith();\n\t\t\t} );\n\n\t\t\tit( 'if bounds top or bounds bottom is > window height, scroll into view', function () {\n\t\t\t\tconst wrapper = renderComponent( store );\n\n\t\t\t\twindow.innerHeight = 0;\n\n\t\t\t\tgetBoundingClientRectMock.mockReturnValue( {\n\t\t\t\t\ttop: 1,\n\t\t\t\t\tbottom: 1\n\t\t\t\t} );\n\t\t\t\twrapper.vm.$refs[ state.results[ defaultMediaType ][ 0 ].title ].$el.getBoundingClientRect = getBoundingClientRectMock;\n\t\t\t\twrapper.vm.$refs[ state.results[ defaultMediaType ][ 0 ].title ].$el.scrollIntoView = scrollIntoViewMock;\n\t\t\t\twrapper.vm.scrollIntoViewIfNeeded( state.results[ defaultMediaType ][ 0 ].title );\n\n\t\t\t\texpect( scrollIntoViewMock ).toHaveBeenCalledWith( false );\n\t\t\t} );\n\n\t\t} );\n\n\t\tdescribe( 'onDialogKeyup', function () {\n\n\t\t\tit( 'if code is ArrowRight, pass adddend as 1', function () {\n\t\t\t\tconst wrapper = renderComponent( store );\n\n\t\t\t\tlet changeQuickViewResultMock = jest.fn();\n\t\t\t\twrapper.vm.changeQuickViewResult = changeQuickViewResultMock;\n\n\t\t\t\twrapper.vm.onDialogKeyup( 'ArrowRight' );\n\n\t\t\t\texpect( changeQuickViewResultMock ).toHaveBeenCalled();\n\t\t\t} );\n\n\t\t\tit( 'if code is ArrowLeft, pass adddend as -1', function () {\n\t\t\t\tlet changeQuickViewResultMock = jest.fn();\n\t\t\t\tconst wrapper = renderComponent( store );\n\n\t\t\t\twrapper.vm.changeQuickViewResult = changeQuickViewResultMock;\n\n\t\t\t\twrapper.vm.onDialogKeyup( 'ArrowLeft' );\n\n\t\t\t\texpect( changeQuickViewResultMock ).toHaveBeenCalledWith( true, -1 );\n\n\t\t\t} );\n\n\t\t} );\n\n\t\tdescribe( 'getResultStyle', function () {\n\n\t\t\tit( 'if initialized is false, resultStyle is false', function () {\n\n\t\t\t\tconst wrapper = renderComponent( store );\n\n\t\t\t\twrapper.vm.getResultStyle();\n\n\t\t\t\texpect( wrapper.vm.resultStyle ).toBeFalsy();\n\n\t\t\t} );\n\n\t\t\tit( 'if mediaType is not video, resultStyle is false', function () {\n\n\t\t\t\tconst wrapper = renderComponent( store );\n\n\t\t\t\twrapper.vm.getResultStyle();\n\n\t\t\t\texpect( wrapper.vm.resultStyle ).toBeFalsy();\n\n\t\t\t} );\n\n\t\t\tit( 'if mediaType is video, initialized is true, and offsetWidth is zero, resultStyle is false', function () {\n\n\t\t\t\tstore.state.initialized = true;\n\t\t\t\tstore.state.details = {\n\t\t\t\t\t[ defaultMediaType ]: state.results[ defaultMediaType ][ 0 ]\n\t\t\t\t};\n\n\t\t\t\tconst wrapper = renderComponent( store, 'video' );\n\n\t\t\t\twrapper.vm.getResultStyle();\n\n\t\t\t\texpect( wrapper.vm.resultStyle ).toBeFalsy();\n\n\t\t\t} );\n\n\t\t} );\n\n\t\tdescribe( 'getDebouncedResultStyle', function () {\n\n\t\t\tit( 'calls getResultStyleMock', function () {\n\t\t\t\tjest.useFakeTimers();\n\t\t\t\tconst wrapper = renderComponent( store );\n\n\t\t\t\tlet getResultStyleMock = jest.fn();\n\t\t\t\twrapper.vm.getResultStyle = getResultStyleMock;\n\n\t\t\t\twrapper.vm.getDebouncedResultStyle();\n\n\t\t\t\tjest.runAllTimers();\n\t\t\t\texpect( getResultStyleMock ).toHaveBeenCalled();\n\t\t\t} );\n\n\t\t} );\n\n\t} );\n\n\tdescribe( 'watch', function () {\n\n\t\tdescribe( 'on currentSearchTerm', function () {\n\n\t\t\tit( 'set showQuickView to false and cleardetails', function ( done ) {\n\t\t\t\tconst wrapper = renderComponent( store );\n\t\t\t\tstore.state.dummySearchTerm = 'dummySearchTermChanged';\n\n\t\t\t\twrapper.vm.$nextTick().then( function () {\n\t\t\t\t\texpect( wrapper.vm.showQuickView ).toBe( false );\n\t\t\t\t\texpect( mutations.clearDetails ).toHaveBeenCalled();\n\t\t\t\t\tdone();\n\t\t\t\t} );\n\t\t\t} );\n\n\t\t} );\n\n\t\tdescribe( 'on initialized', function () {\n\t\t\tit( 'trigger getResultStyle', function ( done ) {\n\t\t\t\tconst wrapper = renderComponent( store );\n\t\t\t\tstore.state.initialized = true;\n\n\t\t\t\tconst dummyGetResultStyleMock = jest.fn();\n\t\t\t\twrapper.vm.getResultStyle = dummyGetResultStyleMock;\n\n\t\t\t\twrapper.vm.$nextTick().then( function () {\n\t\t\t\t\texpect( dummyGetResultStyleMock ).toHaveBeenCalled();\n\t\t\t\t\tdone();\n\t\t\t\t} );\n\t\t\t} );\n\n\t\t} );\n\n\t\tdescribe( 'on allActiveDetails', function () {\n\n\t\t\tit( 'set showQuickView to true if details has mediatype and showQuickView is false', function ( done ) {\n\t\t\t\tconst wrapper = renderComponent( store );\n\t\t\t\tstore.state.details = JSON.stringify( {\n\t\t\t\t\timage: store.state.results.image[ 0 ],\n\t\t\t\t\taudio: null,\n\t\t\t\t\tvideo: null,\n\t\t\t\t\tpage: null,\n\t\t\t\t\tother: null\n\t\t\t\t} );\n\t\t\t\tconst dummyGetResultStyleMock = jest.fn();\n\t\t\t\twrapper.vm.getResultStyle.bind = dummyGetResultStyleMock;\n\n\t\t\t\twrapper.vm.$nextTick().then( function () {\n\t\t\t\t\texpect( dummyGetResultStyleMock ).toHaveBeenCalled();\n\t\t\t\t\texpect( wrapper.vm.showQuickView ).toBe( true );\n\t\t\t\t\tdone();\n\t\t\t\t} );\n\t\t\t} );\n\n\t\t} );\n\n\t} );\n\n\tdescribe( 'on created', function () {\n\n\t\tit( 'add resize event listener', function () {\n\t\t\trenderComponent( store );\n\n\t\t\texpect( window.addEventListener ).toHaveBeenCalled();\n\t\t\texpect( window.addEventListener.mock.calls[ 0 ][ 0 ] ).toBe( 'resize' );\n\t\t} );\n\n\t} );\n\n\tdescribe( 'on destroyed', function () {\n\n\t\tit( 'remove resize event listener', function () {\n\t\t\tconst wrapper = renderComponent( store );\n\t\t\twrapper.unmount();\n\n\t\t\texpect( window.removeEventListener ).toHaveBeenCalled();\n\t\t\texpect( window.removeEventListener.mock.calls[ 0 ][ 0 ] ).toBe( 'resize' );\n\t\t} );\n\n\t} );\n\n} );\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/jest/components/Spinner.test.js","messages":[{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":1,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":2,"endColumn":69},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":7,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":7,"endColumn":58},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":9,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":9,"endColumn":51}],"suppressedMessages":[],"errorCount":3,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"const VueTestUtils = require( '@vue/test-utils' ),\n\tComponent = require( '../../../resources/components/Spinner.vue' );\n\ndescribe( 'Spinner', function () {\n\tit( 'render the component', function () {\n\n\t\tconst wrapper = VueTestUtils.shallowMount( Component );\n\n\t\tconst element = wrapper.find( '.sdms-spinner' );\n\t\texpect( element.exists() ).toBe( true );\n\t} );\n} );\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/jest/components/UserNotice.test.js","messages":[{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":1,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":5,"endColumn":72},{"ruleId":"es-x/no-destructuring","severity":2,"message":"ES2015 destructuring is forbidden.","line":1,"column":7,"nodeType":"ObjectPattern","messageId":"forbidden","endLine":1,"endColumn":30},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":16,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":16,"endColumn":46},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":17,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":17,"endColumn":65},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":22,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":22,"endColumn":39},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":23,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":23,"endColumn":59},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":28,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":28,"endColumn":46},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":29,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":29,"endColumn":60},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":39,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":39,"endColumn":46},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":40,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":40,"endColumn":65},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":46,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":46,"endColumn":46},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":47,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":47,"endColumn":65},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":55,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":55,"endColumn":46},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":56,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":56,"endColumn":65},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":61,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":61,"endColumn":46},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":64,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":64,"endColumn":66},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":73,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":73,"endColumn":46},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":80,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":80,"endColumn":46},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":87,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":87,"endColumn":46}],"suppressedMessages":[],"errorCount":19,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"const { shallowMount, mount } = require( '@vue/test-utils' ),\n\twhen = require( 'jest-when' ).when,\n\tComponent = require( '../../../resources/components/UserNotice.vue' ),\n\tButton = require( '../../../resources/components/base/Button.vue' ),\n\tMessage = require( '../../../resources/components/base/Message.vue' );\n\ndescribe( 'UserNotice', function () {\n\tbeforeEach( function () {\n\t\twhen( global.mw.config.get )\n\t\t\t.calledWith( 'skin' )\n\t\t\t.mockReturnValue( 'fake' );\n\t} );\n\n\tdescribe( 'renders ', function () {\n\t\tit( 'the parent component', function () {\n\t\t\tconst wrapper = shallowMount( Component );\n\t\t\tconst element = wrapper.find( '.sdms-user-notice__message' );\n\t\t\texpect( element.exists() ).toBe( true );\n\t\t} );\n\n\t\tit( 'a button component', function () {\n\t\t\tconst wrapper = mount( Component );\n\t\t\tconst innerComponent = wrapper.findComponent( Button );\n\t\t\texpect( innerComponent.exists() ).toBe( true );\n\t\t} );\n\n\t\tit( 'a message component', function () {\n\t\t\tconst wrapper = shallowMount( Component );\n\t\t\tconst innerComponent = wrapper.findComponent( Message );\n\t\t\texpect( innerComponent.exists() ).toBe( true );\n\t\t} );\n\t} );\n\n\tdescribe( 'does not render the component', function () {\n\t\tit( 'when user is on mobile skin', function () {\n\t\t\twhen( global.mw.config.get )\n\t\t\t\t.calledWith( 'skin' )\n\t\t\t\t.mockReturnValueOnce( 'minerva' );\n\t\t\tconst wrapper = shallowMount( Component );\n\t\t\tconst element = wrapper.find( '.sdms-user-notice__message' );\n\t\t\texpect( element.exists() ).toBe( false );\n\t\t} );\n\n\t\tit( 'when user is Anon', function () {\n\t\t\tglobal.mw.user.isAnon.mockReturnValueOnce( true );\n\t\t\tconst wrapper = shallowMount( Component );\n\t\t\tconst element = wrapper.find( '.sdms-user-notice__message' );\n\t\t\texpect( element.exists() ).toBe( false );\n\t\t} );\n\n\t\tit( 'when notice previously dismissed', function () {\n\t\t\twhen( global.mw.user.options.get )\n\t\t\t\t.calledWith( 'sdms-search-user-notice-dismissed' )\n\t\t\t\t.mockReturnValueOnce( 1 );\n\t\t\tconst wrapper = shallowMount( Component );\n\t\t\tconst element = wrapper.find( '.sdms-user-notice__message' );\n\t\t\texpect( element.exists() ).toBe( false );\n\t\t} );\n\n\t\tit( 'when notice dismissed', function ( done ) {\n\t\t\tconst wrapper = shallowMount( Component );\n\t\t\twrapper.setData( { dismissed: true } );\n\t\t\twrapper.vm.$nextTick( function () {\n\t\t\t\tconst element = wrapper.find( '.sdms-user-notice__message' );\n\t\t\t\texpect( element.exists() ).toBe( false );\n\t\t\t\tdone();\n\t\t\t} );\n\t\t} );\n\t} );\n\n\tdescribe( 'on dismiss button click', function () {\n\t\tit( 'sends saveOption to the api', function () {\n\t\t\tconst wrapper = shallowMount( Component );\n\t\t\twrapper.vm.dismiss();\n\t\t\texpect( global.mw.Api.prototype.saveOption ).toHaveBeenCalled();\n\t\t\texpect( global.mw.Api.prototype.saveOption ).toHaveBeenCalledWith( 'sdms-search-user-notice-dismissed', 1 );\n\t\t} );\n\n\t\tit( 'saves options to user object', function () {\n\t\t\tconst wrapper = shallowMount( Component );\n\t\t\twrapper.vm.dismiss();\n\t\t\texpect( global.mw.user.options.set ).toHaveBeenCalled();\n\t\t\texpect( global.mw.user.options.set ).toHaveBeenCalledWith( 'sdms-search-user-notice-dismissed', 1 );\n\t\t} );\n\n\t\tit( 'changes dismissed data', function () {\n\t\t\tconst wrapper = shallowMount( Component );\n\t\t\twrapper.vm.dismiss();\n\t\t\texpect( wrapper.vm.dismissed ).toBeTruthy();\n\t\t} );\n\t} );\n} );\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/jest/components/app.test.js","messages":[{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":1,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":12,"endColumn":74},{"ruleId":"es-x/no-destructuring","severity":2,"message":"ES2015 destructuring is forbidden.","line":2,"column":2,"nodeType":"ObjectPattern","messageId":"forbidden","endLine":2,"endColumn":11},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":27,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":37,"endColumn":3},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":39,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":39,"endColumn":64},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":41,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":64,"endColumn":3},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":67,"column":2,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":71,"endColumn":13},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":127,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":127,"endColumn":44},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":133,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":133,"endColumn":44},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":139,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":139,"endColumn":44},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":145,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":145,"endColumn":44},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":146,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":146,"endColumn":34},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":152,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":152,"endColumn":44},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":158,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":158,"endColumn":44},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":164,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":164,"endColumn":44},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":171,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":171,"endColumn":45},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":179,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":179,"endColumn":45},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":187,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":187,"endColumn":45},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":194,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":194,"endColumn":45},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":201,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":201,"endColumn":45},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":209,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":209,"endColumn":46},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":221,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":221,"endColumn":46},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":228,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":228,"endColumn":46},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":234,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":234,"endColumn":46},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":243,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":243,"endColumn":35},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":246,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":246,"endColumn":45},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":256,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":259,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":271,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":271,"endColumn":29},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":274,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":274,"endColumn":45},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":291,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":291,"endColumn":15},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":346,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":346,"endColumn":45},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":356,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":356,"endColumn":45},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":366,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":367,"endColumn":33},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":396,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":396,"endColumn":16},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":423,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":423,"endColumn":16},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":463,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":463,"endColumn":16},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":516,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":516,"endColumn":45},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":524,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":524,"endColumn":45},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":530,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":530,"endColumn":45},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":537,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":537,"endColumn":45},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":543,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":543,"endColumn":45},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":548,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":548,"endColumn":45},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":554,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":554,"endColumn":34},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":555,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":555,"endColumn":45}],"suppressedMessages":[],"errorCount":43,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"const Vuex = require( 'vuex' ),\n\t{ mount } = require( '@vue/test-utils' ),\n\tVue = require( 'vue' ),\n\twhen = require( 'jest-when' ).when,\n\tUserNotice = require( '../../../resources/components/UserNotice.vue' ),\n\tSdAutocompleteSearchInput = require( '../../../resources/components/base/AutocompleteSearchInput.vue' ),\n\tSdTab = require( '../../../resources/components/base/Tab.vue' ),\n\tSdTabs = require( '../../../resources/components/base/Tabs.vue' ),\n\tSearchResults = require( '../../../resources/components/SearchResults.vue' ),\n\tSearchFilters = require( '../../../resources/components/SearchFilters.vue' ),\n\tDidYouMean = require( '../../../resources/components/DidYouMean.vue' ),\n\tObserver = require( '../../../resources/components/base/Observer.vue' );\n\nwindow.performance.navigation = {\n\ttype: jest.fn()\n};\n\nwhen( global.mw.config.get )\n\t.calledWith( 'sdmsInitialSearchResults' )\n\t.mockReturnValue( {\n\t\ttabs: [\n\t\t\t{ type: 'dummyTab1' },\n\t\t\t{ type: 'dummyTab2' }\n\t\t]\n\t} );\n\nconst initialState = {\n\tautoloadCounter: {\n\t\tdummyTab1: 2\n\t},\n\tresults: {\n\t\tdummyTab1: [ 'fakeReturn' ]\n\t},\n\tdummyCurrentType: 'dummyTab1',\n\tdummySearchTerm: 'dummySearchTerm',\n\tdummyAllFilter: 'dummyAllFilter'\n};\n\nconst App = require( '../../../resources/components/App.vue' );\n\nconst renderComponent = function ( store ) {\n\treturn mount( App, {\n\t\tglobal: {\n\t\t\tplugins: [ store ],\n\t\t\tstubs: {\n\t\t\t\t'sd-tabs': {\n\t\t\t\t\ttemplate: '<div><slot></slot></div>'\n\t\t\t\t},\n\t\t\t\t'sd-tab': {\n\t\t\t\t\ttemplate: '<div><slot></slot></div>'\n\t\t\t\t},\n\t\t\t\t'sd-autocomplete-search-input': true,\n\t\t\t\t'search-results': true,\n\t\t\t\t'search-filters': true,\n\t\t\t\t'did-you-mean': true,\n\t\t\t\t'search-user-notice': true,\n\t\t\t\tobserver: true\n\t\t\t},\n\t\t\tmocks: {\n\t\t\t\t$log: jest.fn()\n\t\t\t}\n\t\t}\n\t} );\n};\n\ndescribe( 'App', function () {\n\tlet store,\n\t\tstate,\n\t\tgetters,\n\t\tactions,\n\t\tmutations;\n\n\tbeforeEach( function () {\n\t\tjest.resetModules();\n\t\tstate = JSON.parse( JSON.stringify( initialState ) );\n\t\tgetters = {\n\t\t\tallActiveFilters: jest.fn( function ( localState ) {\n\t\t\t\treturn localState.dummyAllFilter;\n\t\t\t} ),\n\t\t\tcurrentType: jest.fn( function ( localState ) {\n\t\t\t\treturn localState.dummyCurrentType;\n\t\t\t} ),\n\t\t\tcurrentSearchTerm: jest.fn( function ( localState ) {\n\t\t\t\treturn localState.dummySearchTerm;\n\t\t\t} )\n\t\t};\n\t\tmutations = {\n\t\t\tclearDidYouMean: jest.fn(),\n\t\t\tresetResults: jest.fn(),\n\t\t\tresetAutoLoadForAllMediaType: jest.fn(),\n\t\t\tsetHasError: jest.fn(),\n\t\t\tsetPending: jest.fn(),\n\t\t\tsetSearchTerm: jest.fn(),\n\t\t\tupdateOrDeleteQueryParam: jest.fn(),\n\t\t\tclearStoredPageState: jest.fn()\n\t\t};\n\t\tactions = {\n\t\t\tclear: jest.fn(),\n\t\t\tsyncActiveTypeAndQueryType: jest.fn(),\n\t\t\tpushQueryToHistoryState: jest.fn(),\n\t\t\tperformNewSearch: jest.fn(),\n\t\t\tsearchMore: jest.fn(),\n\t\t\tupdateCurrentType: jest.fn(),\n\t\t\treplaceQueryToHistoryState: jest.fn(),\n\t\t\tready: jest.fn()\n\t\t};\n\t\tstore = Vuex.createStore( {\n\t\t\tstate: function () {\n\t\t\t\treturn state;\n\t\t\t},\n\t\t\tgetters: getters,\n\t\t\tmutations: mutations,\n\t\t\tactions: actions\n\t\t} );\n\t\tjest.clearAllMocks();\n\t} );\n\n\tafterEach( function () {\n\t\tstore = undefined;\n\t\tstate = undefined;\n\t\tgetters = undefined;\n\t\tactions = undefined;\n\t\tmutations = undefined;\n\t} );\n\n\tit( 'Renders search-user-notice component', function () {\n\t\tconst wrapper = renderComponent( store );\n\t\texpect( wrapper.findComponent( UserNotice ).exists() ).toBe( true );\n\t} );\n\n\tit( 'Renders sd-autocomplete-search-input component', function () {\n\n\t\tconst wrapper = renderComponent( store );\n\t\texpect( wrapper.findComponent( SdAutocompleteSearchInput ).exists() ).toBe( true );\n\t} );\n\n\tit( 'Renders sd-tabs component', function () {\n\n\t\tconst wrapper = renderComponent( store );\n\t\texpect( wrapper.findComponent( SdTabs ).exists() ).toBe( true );\n\t} );\n\n\tit( 'Renders the correct number of sdTab components', function () {\n\t\t// This value comes from the mock of sdmsInitialSearchResults\n\t\tconst wrapper = renderComponent( store );\n\t\tconst expectedNumberOfTabs = 2;\n\t\texpect( wrapper.findAllComponents( SdTab ).length ).toBe( expectedNumberOfTabs );\n\t} );\n\n\tit( 'Renders search-filters component', function () {\n\n\t\tconst wrapper = renderComponent( store );\n\t\texpect( wrapper.findComponent( SearchFilters ).exists() ).toBe( true );\n\t} );\n\n\tit( 'Renders did-you-mean component', function () {\n\n\t\tconst wrapper = renderComponent( store );\n\t\texpect( wrapper.findComponent( DidYouMean ).exists() ).toBe( true );\n\t} );\n\n\tit( 'Renders search-results component', function () {\n\n\t\tconst wrapper = renderComponent( store );\n\t\texpect( wrapper.findComponent( SearchResults ).exists() ).toBe( true );\n\t} );\n\n\tdescribe( 'Observer components', function () {\n\t\tit( 'is rendered if autoloadCounter and Result are available for the tab', function () {\n\n\t\t\tconst wrapper = renderComponent( store );\n\t\t\texpect( wrapper.findAllComponents( Observer ).length ).toBe( 1 );\n\t\t} );\n\n\t\tit( 'is not rendered if autoloadCounter is 0', function () {\n\t\t\tstore.state.autoloadCounter = {\n\t\t\t\tdummyTab1: 0\n\t\t\t};\n\t\t\tconst wrapper = renderComponent( store );\n\t\t\texpect( wrapper.findAllComponents( Observer ).length ).toBe( 0 );\n\t\t} );\n\n\t\tit( 'is not rendered if results is empty', function () {\n\t\t\tstore.state.results = {\n\t\t\t\tdummyTab1: []\n\t\t\t};\n\t\t\tconst wrapper = renderComponent( store );\n\t\t\texpect( wrapper.findAllComponents( Observer ).length ).toBe( 0 );\n\t\t} );\n\t} );\n\n\tdescribe( 'on tab change', function () {\n\t\tit( 'update current type', function () {\n\t\t\tconst wrapper = renderComponent( store );\n\t\t\twrapper.vm.onTabChange( 'dummyTab2' );\n\t\t\texpect( actions.updateCurrentType ).toHaveBeenCalled();\n\t\t\texpect( actions.updateCurrentType ).toHaveBeenCalledTimes( 1 );\n\t\t} );\n\n\t\tit( 'push changes to HistoryState', function () {\n\t\t\tconst wrapper = renderComponent( store );\n\t\t\twrapper.vm.onTabChange( 'dummyTab2' );\n\t\t\texpect( actions.pushQueryToHistoryState ).toHaveBeenCalled();\n\t\t} );\n\n\t\tdescribe( '$logs method', function () {\n\n\t\t\tit( 'to have been called', function () {\n\t\t\t\tconst wrapper = renderComponent( store );\n\n\t\t\t\t// the method is first called on mounted\n\t\t\t\texpect( wrapper.vm.$log ).toHaveBeenCalled();\n\t\t\t\texpect( wrapper.vm.$log ).toHaveBeenCalledTimes( 1 );\n\n\t\t\t\twrapper.vm.onTabChange( 'dummyTab2' );\n\t\t\t\texpect( wrapper.vm.$log ).toHaveBeenCalledTimes( 2 );\n\n\t\t\t} );\n\n\t\t\tit( 'to have been called with action \"tab_change\"', function () {\n\t\t\t\tconst wrapper = renderComponent( store );\n\t\t\t\twrapper.vm.onTabChange( 'dummyTab2' );\n\t\t\t\texpect( wrapper.vm.$log.mock.calls[ 1 ][ 0 ].action ).toBe( 'tab_change' );\n\n\t\t\t} );\n\n\t\t\tit( 'to have been called with the current searchterm', function () {\n\t\t\t\tconst wrapper = renderComponent( store );\n\t\t\t\twrapper.vm.onTabChange( 'dummyTab2' );\n\t\t\t\texpect( wrapper.vm.$log.mock.calls[ 1 ][ 0 ].search_query ).toBe( 'dummySearchTerm' );\n\t\t\t} );\n\n\t\t\tit( 'to have been called with the current type', function () {\n\t\t\t\tconst wrapper = renderComponent( store );\n\t\t\t\twrapper.vm.onTabChange( 'dummyTab2' );\n\t\t\t\texpect( wrapper.vm.$log.mock.calls[ 1 ][ 0 ].search_media_type ).toBe( 'dummyTab1' );\n\t\t\t} );\n\t\t} );\n\t} );\n\n\tdescribe( 'on filter change', function () {\n\n\t\tlet hideDetailsMock = jest.fn();\n\n\t\tbeforeEach( function () {\n\t\t\tconst wrapper = renderComponent( store );\n\t\t\twrapper.vm.$refs.dummyTab1.hideDetails = hideDetailsMock;\n\t\t\twrapper.vm.onFilterChange( { mediaType: 'dummyTab1', filterType: 'dummyFilterType', value: 'dummyValue' } );\n\t\t} );\n\n\t\tit( 'hides the details of the changed tab', function () {\n\t\t\texpect( hideDetailsMock ).toHaveBeenCalled();\n\t\t} );\n\n\t\tit( 'update the query parameter', function () {\n\t\t\tconst expectedMutationPayload = expect.objectContaining( {\n\t\t\t\tkey: 'dummyFilterType',\n\t\t\t\tvalue: 'dummyValue'\n\t\t\t} );\n\t\t\texpect( mutations.updateOrDeleteQueryParam ).toHaveBeenCalled();\n\t\t\t// The first argument is the Context, so we access the second\n\t\t\texpect( mutations.updateOrDeleteQueryParam.mock.calls[ 0 ][ 1 ] ).toMatchObject( expectedMutationPayload );\n\t\t} );\n\n\t\tit( 'update history state', function () {\n\t\t\texpect( actions.pushQueryToHistoryState ).toHaveBeenCalled();\n\t\t} );\n\t} );\n\n\tdescribe( 'on update term', function () {\n\t\tconst newTerm = 'newTerm';\n\n\t\tbeforeEach( function () {\n\t\t\tconst wrapper = renderComponent( store );\n\t\t\twrapper.vm.onUpdateTerm( newTerm );\n\t\t} );\n\n\t\tit( 'update the searchTerm', function () {\n\t\t\texpect( mutations.setSearchTerm ).toHaveBeenCalled();\n\t\t\t// The first argument is the Context, so we access the second\n\t\t\texpect( mutations.setSearchTerm.mock.calls[ 0 ][ 1 ] ).toEqual( newTerm );\n\t\t} );\n\n\t\tit( 'update history state', function () {\n\t\t\texpect( actions.pushQueryToHistoryState ).toHaveBeenCalled();\n\t\t} );\n\n\t} );\n\n\tdescribe( 'on clear', function () {\n\t\tlet wrapper;\n\n\t\tbeforeEach( function () {\n\t\t\twrapper = renderComponent( store );\n\t\t\twrapper.vm.onClear();\n\t\t} );\n\n\t\tit( 'triggers a clean actions', function () {\n\t\t\texpect( actions.clear ).toHaveBeenCalled();\n\t\t\t// The first argument is the Context, so we access the second\n\t\t\texpect( actions.clear.mock.calls[ 0 ][ 1 ] ).toEqual( 'dummyTab1' );\n\t\t} );\n\n\t\tit( 'set pending to false', function () {\n\t\t\texpect( mutations.setPending ).toHaveBeenCalled();\n\t\t\t// The first argument is the Context, so we access the second\n\t\t\texpect( mutations.setPending.mock.calls[ 0 ][ 1 ] ).toEqual(\n\t\t\t\texpect.objectContaining( {\n\t\t\t\t\ttype: 'dummyTab1',\n\t\t\t\t\tpending: false\n\t\t\t\t} )\n\t\t\t);\n\t\t} );\n\n\t\tit( 'set pending to false', function () {\n\t\t\texpect( mutations.setPending ).toHaveBeenCalled();\n\t\t\t// The first argument is the Context, so we access the second\n\t\t\texpect( mutations.setPending.mock.calls[ 0 ][ 1 ] ).toEqual(\n\t\t\t\texpect.objectContaining( {\n\t\t\t\t\ttype: 'dummyTab1',\n\t\t\t\t\tpending: false\n\t\t\t\t} )\n\t\t\t);\n\t\t} );\n\n\t\tit( 'reset error state', function () {\n\t\t\texpect( mutations.setHasError ).toHaveBeenCalled();\n\t\t\t// The first argument is the Context, so we access the second\n\t\t\texpect( mutations.setHasError.mock.calls[ 0 ][ 1 ] ).toEqual( false );\n\t\t} );\n\n\t\tit( 'reset autoload for all mediatypes', function () {\n\t\t\texpect( mutations.resetAutoLoadForAllMediaType ).toHaveBeenCalled();\n\t\t} );\n\n\t\tit( 'triggers a log action of search_clear', function () {\n\t\t\texpect( wrapper.vm.$log ).toHaveBeenCalled();\n\t\t\t// the first call is triggered on mounted, so we look at the second call\n\t\t\texpect( wrapper.vm.$log.mock.calls[ 1 ][ 0 ].action ).toBe( 'search_clear' );\n\t\t} );\n\t} );\n\n\tdescribe( 'on getMoreResultsForTabIfAvailable', function () {\n\t\tit( 'triggers a search', function () {\n\n\t\t\tconst wrapper = renderComponent( store );\n\t\t\twrapper.vm.getMoreResultsForTabIfAvailable();\n\n\t\t\texpect( actions.searchMore ).toHaveBeenCalled();\n\t\t} );\n\t} );\n\n\tdescribe( 'on resetCountAndLoadMore', function () {\n\t\tit( 'triggers a search', function () {\n\n\t\t\tconst wrapper = renderComponent( store );\n\t\t\twrapper.vm.resetCountAndLoadMore();\n\n\t\t\texpect( actions.searchMore ).toHaveBeenCalled();\n\t\t\texpect( actions.searchMore.mock.calls[ 0 ][ 1 ] ).toEqual( true );\n\t\t} );\n\n\t} );\n\n\tdescribe( 'on onTermOrFilterChange', function () {\n\t\tlet wrapper,\n\t\t\tdummyMediaType = 'dummyType';\n\n\t\tbeforeEach( function () {\n\t\t\twrapper = renderComponent( store );\n\t\t\twrapper.vm.onTermOrFilterChange( dummyMediaType );\n\t\t} );\n\n\t\tit( 'reset results', function () {\n\t\t\texpect( mutations.resetResults ).toHaveBeenCalled();\n\t\t\t// The first argument is the Context, so we access the second\n\t\t\texpect( mutations.resetResults.mock.calls[ 0 ][ 1 ] ).toEqual( dummyMediaType );\n\t\t} );\n\n\t\tit( 'clears did you mean', function () {\n\t\t\texpect( mutations.clearDidYouMean ).toHaveBeenCalled();\n\t\t} );\n\n\t\tit( 'reset autoload for all media', function () {\n\t\t\texpect( mutations.resetAutoLoadForAllMediaType ).toHaveBeenCalled();\n\t\t} );\n\n\t\tit( 'triggers a new search', function () {\n\t\t\texpect( actions.performNewSearch ).toHaveBeenCalled();\n\t\t} );\n\n\t} );\n\n\tdescribe( 'watch', function () {\n\t\tdescribe( 'on currentType', function () {\n\t\t\tlet wrapper;\n\n\t\t\tbeforeEach( function () {\n\t\t\t\twrapper = renderComponent( store );\n\t\t\t\twrapper.vm.getMoreResultsForTabIfAvailable = jest.fn();\n\t\t\t} );\n\n\t\t\tit( 'triggers a new search if tab is set', function ( done ) {\n\t\t\t\tstore.state.dummyCurrentType = 'changedType';\n\n\t\t\t\twrapper.vm.$nextTick().then( function () {\n\t\t\t\t\texpect( wrapper.vm.getMoreResultsForTabIfAvailable ).toHaveBeenCalled();\n\t\t\t\t\tdone();\n\t\t\t\t} );\n\t\t\t} );\n\n\t\t\tit( 'perform no action if old and new type are the same', function ( done ) {\n\t\t\t\tstore.state.dummyCurrentType = 'dummyTab1';\n\n\t\t\t\twrapper.vm.$nextTick().then( function () {\n\t\t\t\t\texpect( wrapper.vm.getMoreResultsForTabIfAvailable ).not.toHaveBeenCalled();\n\t\t\t\t\tdone();\n\t\t\t\t} );\n\t\t\t} );\n\n\t\t} );\n\t\tdescribe( 'on currentSearchTerm', function () {\n\t\t\tlet wrapper;\n\n\t\t\tbeforeEach( function () {\n\t\t\t\twrapper = renderComponent( store );\n\t\t\t\twrapper.vm.onClear = jest.fn();\n\t\t\t\twrapper.vm.onTermOrFilterChange = jest.fn();\n\t\t\t} );\n\n\t\t\tit( 'triggers an onClean if new term is empty', function ( done ) {\n\t\t\t\tstore.state.dummySearchTerm = '';\n\n\t\t\t\tVue.nextTick().then( function () {\n\t\t\t\t\texpect( wrapper.vm.onClear ).toHaveBeenCalled();\n\t\t\t\t\texpect( wrapper.vm.onTermOrFilterChange ).not.toHaveBeenCalled();\n\t\t\t\t\tdone();\n\t\t\t\t} );\n\t\t\t} );\n\n\t\t\tit( 'perform no action if old and new term are the same', function ( done ) {\n\t\t\t\tstore.state.dummySearchTerm = 'dummySearchTerm';\n\n\t\t\t\tVue.nextTick().then( function () {\n\t\t\t\t\texpect( wrapper.vm.onClear ).not.toHaveBeenCalled();\n\t\t\t\t\texpect( wrapper.vm.onTermOrFilterChange ).not.toHaveBeenCalled();\n\t\t\t\t\tdone();\n\t\t\t\t} );\n\t\t\t} );\n\n\t\t\tit( 'triggers onTermOrFilterChange if tyerm is different', function ( done ) {\n\t\t\t\tstore.state.dummySearchTerm = 'newTerm';\n\n\t\t\t\tVue.nextTick().then( function () {\n\t\t\t\t\texpect( wrapper.vm.onClear ).not.toHaveBeenCalled();\n\t\t\t\t\texpect( wrapper.vm.onTermOrFilterChange ).toHaveBeenCalled();\n\t\t\t\t\tdone();\n\t\t\t\t} );\n\t\t\t} );\n\n\t\t} );\n\t\tdescribe( 'on allActiveFilters', function () {\n\t\t\tlet wrapper;\n\n\t\t\tbeforeEach( function () {\n\t\t\t\twrapper = renderComponent( store );\n\t\t\t\twrapper.vm.onTermOrFilterChange = jest.fn();\n\t\t\t} );\n\n\t\t\tit( 'perform no action if old and new term are the same', function ( done ) {\n\t\t\t\tstore.state.dummyAllFilter = 'dummyAllFilter';\n\n\t\t\t\tVue.nextTick().then( function () {\n\t\t\t\t\texpect( wrapper.vm.onTermOrFilterChange ).not.toHaveBeenCalled();\n\t\t\t\t\tdone();\n\t\t\t\t} );\n\t\t\t} );\n\n\t\t\tit( 'perform no action if search term is null', function ( done ) {\n\t\t\t\t// We create an instance of the component with a null search term\n\t\t\t\tstore.state.dummySearchTerm = '';\n\t\t\t\twrapper = renderComponent( store );\n\t\t\t\twrapper.vm.onTermOrFilterChange = jest.fn();\n\n\t\t\t\tstore.state.dummyAllFilter = 'newFilter';\n\n\t\t\t\tVue.nextTick().then( function () {\n\t\t\t\t\texpect( wrapper.vm.onTermOrFilterChange ).not.toHaveBeenCalled();\n\t\t\t\t\tdone();\n\t\t\t\t} );\n\t\t\t} );\n\n\t\t\tit( 'triggers onTermOrFilterChange if filter is different and term is set', function ( done ) {\n\n\t\t\t\tstore.state.dummyAllFilter = 'newFilter';\n\n\t\t\t\tVue.nextTick().then( function () {\n\t\t\t\t\texpect( wrapper.vm.onTermOrFilterChange ).toHaveBeenCalled();\n\t\t\t\t\texpect( wrapper.vm.onTermOrFilterChange ).toHaveBeenCalledWith( 'dummyTab1' );\n\t\t\t\t\tdone();\n\t\t\t\t} );\n\t\t\t} );\n\n\t\t} );\n\t} );\n\tdescribe( 'create', function () {\n\t\tit( 'triggers the syncActiveType', function () {\n\t\t\trenderComponent( store );\n\t\t\texpect( actions.syncActiveTypeAndQueryType ).toHaveBeenCalled();\n\t\t} );\n\n\t\tit( 'does not triggers a $log method if SearchTerm is not set', function () {\n\n\t\t\tgetters.currentSearchTerm.mockReturnValueOnce( '' );\n\n\t\t\tconst wrapper = renderComponent( store );\n\t\t\texpect( wrapper.vm.$log ).not.toHaveBeenCalled();\n\t\t} );\n\n\t\tit( 'does not triggers a $log method if SearchTerm is not set', function () {\n\n\t\t\tgetters.currentType.mockReturnValueOnce( '' );\n\n\t\t\tconst wrapper = renderComponent( store );\n\t\t\texpect( wrapper.vm.$log ).not.toHaveBeenCalled();\n\t\t} );\n\n\t\tit( 'triggers a $log method if SearchTerm and Type are set', function () {\n\n\t\t\tconst wrapper = renderComponent( store );\n\t\t\texpect( wrapper.vm.$log ).toHaveBeenCalled();\n\t\t\texpect( wrapper.vm.$log ).toHaveBeenCalledTimes( 1 );\n\t\t} );\n\n\t\tit( 'triggers a $log method with an action of \"search_new\" ', function () {\n\n\t\t\tconst wrapper = renderComponent( store );\n\t\t\texpect( wrapper.vm.$log.mock.calls[ 0 ][ 0 ].action ).toBe( 'search_new' );\n\t\t} );\n\n\t\tit( 'triggers a $log method with an search_query of \"currentSearchTerm\" ', function () {\n\n\t\t\tconst wrapper = renderComponent( store );\n\t\t\texpect( wrapper.vm.$log.mock.calls[ 0 ][ 0 ].search_query ).toBe( 'dummySearchTerm' );\n\t\t} );\n\n\t\tit( 'triggers a $log method with an search_media_type of \"currentType', function () {\n\t\t\tconst wrapper = renderComponent( store );\n\t\t\texpect( wrapper.vm.$log.mock.calls[ 0 ][ 0 ].search_media_type ).toBe( 'dummyTab1' );\n\t\t} );\n\n\t\tit( 'triggers a $log method with correct result count', function () {\n\t\t\t// this is set as part of the store mocking\n\t\t\tconst expectedResultCount = 1;\n\t\t\tconst wrapper = renderComponent( store );\n\t\t\texpect( wrapper.vm.$log.mock.calls[ 0 ][ 0 ].search_result_count ).toBe( expectedResultCount );\n\t\t} );\n\t} );\n} );\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/jest/components/base/autocompleteSearchInput.test.js","messages":[{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":1,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":4,"endColumn":107},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":10,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":15,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":17,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":17,"endColumn":47},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":27,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":32,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":34,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":34,"endColumn":55},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":47,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":47,"endColumn":29},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":48,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":54,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":56,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":56,"endColumn":46},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":59,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":59,"endColumn":55},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":73,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":73,"endColumn":29},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":74,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":81,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":83,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":83,"endColumn":46},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":86,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":86,"endColumn":55},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":99,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":103,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":104,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":110,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":117,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":117,"endColumn":55},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":126,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":132,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":134,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":134,"endColumn":55},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":143,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":149,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":151,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":151,"endColumn":45},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":154,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":154,"endColumn":55},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":163,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":169,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":171,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":171,"endColumn":36},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":174,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":174,"endColumn":55},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":186,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":193,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":194,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":194,"endColumn":43},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":195,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":201,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":206,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":206,"endColumn":55},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":215,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":222,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":223,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":223,"endColumn":43},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":224,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":230,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":235,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":235,"endColumn":55},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":247,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":254,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":255,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":255,"endColumn":43},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":256,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":262,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":267,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":267,"endColumn":55},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":276,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":283,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":284,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":284,"endColumn":43},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":285,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":291,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":296,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":296,"endColumn":55},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":309,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":313,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":314,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":320,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":328,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":328,"endColumn":59},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":339,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":343,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":344,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":344,"endColumn":45},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":345,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":356,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":360,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":360,"endColumn":58},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":371,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":378,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":379,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":379,"endColumn":34},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":380,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":391,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":393,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":393,"endColumn":58},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":406,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":410,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":411,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":411,"endColumn":37},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":412,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":423,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":427,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":427,"endColumn":54},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":443,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":447,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":448,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":460,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":462,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":462,"endColumn":59},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":475,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":479,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":480,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":486,"endColumn":8}],"suppressedMessages":[],"errorCount":60,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"const Vue = require( 'vue' ),\n\tVueTestUtils = require( '@vue/test-utils' ),\n\tSdSelectMenu = require( '../../../../resources/components/base/SelectMenu.vue' ),\n\tAutocompleteSearchInput = require( '../../../../resources/components/base/AutocompleteSearchInput.vue' );\n\ndescribe( 'AutocompleteSearchInput Component', function () {\n\n\tit( 'renders successfully if name and label is passed', function () {\n\n\t\tconst wrapper = VueTestUtils.mount( AutocompleteSearchInput, {\n\t\t\tprops: {\n\t\t\t\tname: 'tab',\n\t\t\t\tlabel: 'actions'\n\t\t\t}\n\t\t} );\n\n\t\tconst element = wrapper.find( '.sd-input' );\n\n\t\texpect( element.exists() ).toBe( true );\n\n\t} );\n\n\tdescribe( 'onInput', function () {\n\n\t\tit( 'emit input event', function () {\n\n\t\t\tconst wrapper = VueTestUtils.mount( AutocompleteSearchInput, {\n\t\t\t\tprops: {\n\t\t\t\t\tname: 'tab',\n\t\t\t\t\tlabel: 'actions'\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tconst element = wrapper.find( '.sd-input__input' );\n\t\t\telement.trigger( 'input' );\n\n\t\t\texpect( wrapper.emitted().input ).toHaveLength( 1 );\n\n\t\t} );\n\n\t} );\n\n\tdescribe( 'onBlur', function () {\n\n\t\tit( 'emit blur event', function () {\n\n\t\t\tconst lookupResults = [];\n\t\t\tconst wrapper = VueTestUtils.mount( AutocompleteSearchInput, {\n\t\t\t\tprops: {\n\t\t\t\t\tname: 'tab',\n\t\t\t\t\tlabel: 'actions',\n\t\t\t\t\tlookupResults: lookupResults\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tconst mockToggleLookupResults = jest.fn();\n\t\t\twrapper.vm.toggleLookupResults = mockToggleLookupResults;\n\n\t\t\tconst element = wrapper.find( '.sd-input__input' );\n\t\t\telement.trigger( 'blur' );\n\n\t\t\texpect( wrapper.emitted().blur ).toHaveLength( 1 );\n\t\t\texpect( mockToggleLookupResults ).toHaveBeenCalledWith( false );\n\n\t\t} );\n\n\t} );\n\n\tdescribe( 'onFocus', function () {\n\n\t\tit( 'emit focus event and toggle lookup result', function () {\n\n\t\t\tconst lookupResults = [];\n\t\t\tconst wrapper = VueTestUtils.mount( AutocompleteSearchInput, {\n\t\t\t\tprops: {\n\t\t\t\t\tname: 'tab',\n\t\t\t\t\tlabel: 'actions',\n\t\t\t\t\tlookupResults: lookupResults\n\t\t\t\t},\n\t\t\t\tattachTo: document.body\n\t\t\t} );\n\n\t\t\tconst mockToggleLookupResults = jest.fn();\n\t\t\twrapper.vm.toggleLookupResults = mockToggleLookupResults;\n\n\t\t\tconst element = wrapper.find( '.sd-input__input' );\n\t\t\telement.element.focus();\n\n\t\t\texpect( wrapper.emitted().focus ).toHaveLength( 1 );\n\t\t\texpect( mockToggleLookupResults ).toHaveBeenCalledWith( false );\n\n\t\t} );\n\n\t} );\n\n\tdescribe( 'onSubmit', function () {\n\n\t\tit( 'if has lookup result and activeLookupItemIndex > 0, update value', function () {\n\t\t\tconst lookupResults = [\n\t\t\t\t{\n\t\t\t\t\tvalue: 'active'\n\t\t\t\t}\n\t\t\t];\n\t\t\tconst wrapper = VueTestUtils.mount( AutocompleteSearchInput, {\n\t\t\t\tprops: {\n\t\t\t\t\tname: 'tab',\n\t\t\t\t\tlabel: 'actions',\n\t\t\t\t\tlookupResults: lookupResults\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\twrapper.setData( {\n\t\t\t\tactiveLookupItemIndex: 0,\n\t\t\t\tshowLookupResults: true\n\t\t\t} );\n\n\t\t\tconst element = wrapper.find( '.sd-input__input' );\n\t\t\telement.trigger( 'keyup.enter' );\n\n\t\t\texpect( wrapper.vm.value ).toEqual( lookupResults[ wrapper.vm.activeLookupItemIndex ] );\n\n\t\t} );\n\n\t\tit( 'emit submit event', function () {\n\n\t\t\tconst wrapper = VueTestUtils.mount( AutocompleteSearchInput, {\n\t\t\t\tprops: {\n\t\t\t\t\tname: 'tab',\n\t\t\t\t\tlabel: 'actions',\n\t\t\t\t\tlookupResults: []\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tconst element = wrapper.find( '.sd-input__input' );\n\t\t\telement.trigger( 'keyup.enter' );\n\n\t\t\texpect( wrapper.emitted().submit ).toHaveLength( 1 );\n\n\t\t} );\n\n\t\tit( 'clear lookup results', function () {\n\n\t\t\tconst wrapper = VueTestUtils.mount( AutocompleteSearchInput, {\n\t\t\t\tprops: {\n\t\t\t\t\tname: 'tab',\n\t\t\t\t\tlabel: 'actions',\n\t\t\t\t\tlookupResults: []\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tconst mockClearLookupResults = jest.fn();\n\t\t\twrapper.vm.clearLookupResults = mockClearLookupResults;\n\n\t\t\tconst element = wrapper.find( '.sd-input__input' );\n\t\t\telement.trigger( 'keyup.enter' );\n\n\t\t\texpect( mockClearLookupResults ).toHaveBeenCalled();\n\n\t\t} );\n\n\t\tit( 'Remove keyboard focus from input', function () {\n\n\t\t\tconst wrapper = VueTestUtils.mount( AutocompleteSearchInput, {\n\t\t\t\tprops: {\n\t\t\t\t\tname: 'tab',\n\t\t\t\t\tlabel: 'actions',\n\t\t\t\t\tlookupResults: []\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tconst mockInputBlur = jest.fn();\n\t\t\twrapper.vm.$refs.input.blur = mockInputBlur;\n\n\t\t\tconst element = wrapper.find( '.sd-input__input' );\n\t\t\telement.trigger( 'keyup.enter' );\n\n\t\t\texpect( mockInputBlur ).toHaveBeenCalled();\n\n\t\t} );\n\n\t} );\n\n\tdescribe( 'onArrowDown', function () {\n\n\t\tit( 'if has lookup result and active item is not last item, set active item as next item', function () {\n\t\t\tconst lookupResults = [\n\t\t\t\t{\n\t\t\t\t\tvalue: 'active'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tvalue: 'inactive'\n\t\t\t\t}\n\t\t\t];\n\t\t\tconst initialActiveLookupItemIndex = 0;\n\t\t\tconst wrapper = VueTestUtils.mount( AutocompleteSearchInput, {\n\t\t\t\tprops: {\n\t\t\t\t\tname: 'tab',\n\t\t\t\t\tlabel: 'actions',\n\t\t\t\t\tlookupResults: lookupResults\n\t\t\t\t}\n\t\t\t} );\n\t\t\twrapper.setData( {\n\t\t\t\tactiveLookupItemIndex: initialActiveLookupItemIndex\n\t\t\t} );\n\n\t\t\tconst element = wrapper.find( '.sd-input__input' );\n\t\t\telement.trigger( 'keyup.down' );\n\n\t\t\texpect( wrapper.vm.activeLookupItemIndex ).toBe( initialActiveLookupItemIndex + 1 );\n\n\t\t} );\n\n\t\tit( 'if has lookup result and active item is last item, set active item as initial item', function () {\n\n\t\t\tconst lookupResults = [\n\t\t\t\t{\n\t\t\t\t\tvalue: 'active'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tvalue: 'inactive'\n\t\t\t\t}\n\t\t\t];\n\t\t\tconst initialActiveLookupItemIndex = 1;\n\t\t\tconst wrapper = VueTestUtils.mount( AutocompleteSearchInput, {\n\t\t\t\tprops: {\n\t\t\t\t\tname: 'tab',\n\t\t\t\t\tlabel: 'actions',\n\t\t\t\t\tlookupResults: lookupResults\n\t\t\t\t}\n\t\t\t} );\n\t\t\twrapper.setData( {\n\t\t\t\tactiveLookupItemIndex: initialActiveLookupItemIndex\n\t\t\t} );\n\n\t\t\tconst element = wrapper.find( '.sd-input__input' );\n\t\t\telement.trigger( 'keyup.down' );\n\n\t\t\texpect( wrapper.vm.activeLookupItemIndex ).toBe( 0 );\n\n\t\t} );\n\n\t} );\n\n\tdescribe( 'onArrowUp', function () {\n\n\t\tit( 'if has lookup result and active item is first item, set active item as last item', function () {\n\t\t\tconst lookupResults = [\n\t\t\t\t{\n\t\t\t\t\tvalue: 'active'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tvalue: 'inactive'\n\t\t\t\t}\n\t\t\t];\n\t\t\tconst initialActiveLookupItemIndex = 0;\n\t\t\tconst wrapper = VueTestUtils.mount( AutocompleteSearchInput, {\n\t\t\t\tprops: {\n\t\t\t\t\tname: 'tab',\n\t\t\t\t\tlabel: 'actions',\n\t\t\t\t\tlookupResults: lookupResults\n\t\t\t\t}\n\t\t\t} );\n\t\t\twrapper.setData( {\n\t\t\t\tactiveLookupItemIndex: initialActiveLookupItemIndex\n\t\t\t} );\n\n\t\t\tconst element = wrapper.find( '.sd-input__input' );\n\t\t\telement.trigger( 'keyup.up' );\n\n\t\t\texpect( wrapper.vm.activeLookupItemIndex ).toBe( lookupResults.length - 1 );\n\n\t\t} );\n\n\t\tit( 'if has lookup result and active item is not first item, set active item as previous item', function () {\n\n\t\t\tconst lookupResults = [\n\t\t\t\t{\n\t\t\t\t\tvalue: 'active'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tvalue: 'inactive'\n\t\t\t\t}\n\t\t\t];\n\t\t\tconst initialActiveLookupItemIndex = 1;\n\t\t\tconst wrapper = VueTestUtils.mount( AutocompleteSearchInput, {\n\t\t\t\tprops: {\n\t\t\t\t\tname: 'tab',\n\t\t\t\t\tlabel: 'actions',\n\t\t\t\t\tlookupResults: lookupResults\n\t\t\t\t}\n\t\t\t} );\n\t\t\twrapper.setData( {\n\t\t\t\tactiveLookupItemIndex: initialActiveLookupItemIndex\n\t\t\t} );\n\n\t\t\tconst element = wrapper.find( '.sd-input__input' );\n\t\t\telement.trigger( 'keyup.up' );\n\n\t\t\texpect( wrapper.vm.activeLookupItemIndex ).toBe( initialActiveLookupItemIndex - 1 );\n\n\t\t} );\n\n\t} );\n\n\tdescribe( 'selectMenu', function () {\n\n\t\tit( 'renders if hasLookupResults & showLookupResults', function ( done ) {\n\n\t\t\tconst lookupResults = [\n\t\t\t\t{\n\t\t\t\t\tvalue: 'active'\n\t\t\t\t}\n\t\t\t];\n\t\t\tconst wrapper = VueTestUtils.mount( AutocompleteSearchInput, {\n\t\t\t\tprops: {\n\t\t\t\t\tname: 'tab',\n\t\t\t\t\tlabel: 'actions',\n\t\t\t\t\tlookupResults: lookupResults\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\twrapper.setData( {\n\t\t\t\tshowLookupResults: true\n\t\t\t} );\n\n\t\t\tVue.nextTick().then( function () {\n\n\t\t\t\tconst element = wrapper.findComponent( SdSelectMenu );\n\n\t\t\t\texpect( element.exists() ).toBe( true );\n\n\t\t\t\tdone();\n\t\t\t} );\n\n\t\t} );\n\n\t\tit( 'on select, hasLookupResults & showLookupResults, emit submit event and clear lookup result', function () {\n\n\t\t\tconst lookupResults = [\n\t\t\t\t{\n\t\t\t\t\tvalue: 'active'\n\t\t\t\t}\n\t\t\t];\n\t\t\tconst mockClearLookupResults = jest.fn();\n\t\t\tconst wrapper = VueTestUtils.mount( AutocompleteSearchInput, {\n\t\t\t\tprops: {\n\t\t\t\t\tname: 'tab',\n\t\t\t\t\tlabel: 'actions',\n\t\t\t\t\tlookupResults: lookupResults\n\t\t\t\t},\n\t\t\t\tdata: function () {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tshowLookupResults: true\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\twrapper.vm.clearLookupResults = mockClearLookupResults;\n\n\t\t\tconst element = wrapper.findComponent( SdSelectMenu );\n\t\t\telement.vm.$emit( 'select', 0 );\n\n\t\t\texpect( wrapper.emitted().submit ).toHaveLength( 1 );\n\n\t\t\texpect( mockClearLookupResults ).toHaveBeenCalled();\n\n\t\t} );\n\n\t\tit( '\"on active-item-change\", activeLookupItemIndex is changed to given value', function () {\n\n\t\t\tconst lookupResults = [\n\t\t\t\t{\n\t\t\t\t\tvalue: 'active'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tvalue: 'active'\n\t\t\t\t}\n\t\t\t];\n\t\t\tconst testLookupItemIndex = 1;\n\t\t\tconst wrapper = VueTestUtils.mount( AutocompleteSearchInput, {\n\t\t\t\tprops: {\n\t\t\t\t\tname: 'tab',\n\t\t\t\t\tlabel: 'actions',\n\t\t\t\t\tlookupResults: lookupResults\n\t\t\t\t},\n\t\t\t\tdata: function () {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tshowLookupResults: true\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tconst element = wrapper.findComponent( SdSelectMenu );\n\t\t\telement.vm.$emit( 'active-item-change', testLookupItemIndex );\n\n\t\t\texpect( wrapper.vm.activeLookupItemIndex ).toBe( testLookupItemIndex );\n\n\t\t} );\n\n\t} );\n\n\tdescribe( 'onIconClick', function () {\n\n\t\tit( 'focus on input', function ( done ) {\n\n\t\t\tconst lookupResults = [\n\t\t\t\t{\n\t\t\t\t\tvalue: 'active'\n\t\t\t\t}\n\t\t\t];\n\t\t\tconst mockFocusInput = jest.fn();\n\t\t\tconst wrapper = VueTestUtils.mount( AutocompleteSearchInput, {\n\t\t\t\tprops: {\n\t\t\t\t\tname: 'tab',\n\t\t\t\t\tlabel: 'actions',\n\t\t\t\t\tlookupResults: lookupResults\n\t\t\t\t},\n\t\t\t\tdata: function () {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tshowLookupResults: true\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\twrapper.vm.$refs.input.focus = mockFocusInput;\n\n\t\t\tconst element = wrapper.find( '.sd-input__icon' );\n\t\t\telement.trigger( 'click' );\n\n\t\t\tVue.nextTick().then( function () {\n\t\t\t\texpect( mockFocusInput ).toHaveBeenCalled();\n\t\t\t\tdone();\n\t\t\t} );\n\n\t\t} );\n\n\t} );\n\n\tdescribe( 'clear Icon', function () {\n\n\t\tit( 'onClick emit clear event', function () {\n\n\t\t\tconst lookupResults = [\n\t\t\t\t{\n\t\t\t\t\tvalue: 'active'\n\t\t\t\t}\n\t\t\t];\n\t\t\tconst wrapper = VueTestUtils.mount( AutocompleteSearchInput, {\n\t\t\t\tprops: {\n\t\t\t\t\tname: 'tab',\n\t\t\t\t\tlabel: 'actions',\n\t\t\t\t\tinitialValue: 'active',\n\t\t\t\t\tlookupResults: lookupResults\n\t\t\t\t},\n\t\t\t\tdata: function () {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tshowLookupResults: true\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tconst element = wrapper.find( '.sd-input__indicator' );\n\t\t\telement.trigger( 'click' );\n\n\t\t\texpect( wrapper.emitted().clear ).toHaveLength( 1 );\n\n\t\t} );\n\n\t} );\n\n\tdescribe( 'Show or hide lookup results', function () {\n\n\t\tit( 'toggleLookupResults is called with true', function () {\n\n\t\t\tconst lookupResults = [\n\t\t\t\t{\n\t\t\t\t\tvalue: 'active'\n\t\t\t\t}\n\t\t\t];\n\t\t\tconst wrapper = VueTestUtils.mount( AutocompleteSearchInput, {\n\t\t\t\tprops: {\n\t\t\t\t\tname: 'tab',\n\t\t\t\t\tlabel: 'actions',\n\t\t\t\t\tlookupResults: lookupResults\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\twrapper.vm.toggleLookupResults( true );\n\n\t\t\texpect( wrapper.vm.showLookupResults ).toBeTruthy();\n\n\t\t} );\n\n\t} );\n\n} );\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/jest/components/base/button.test.js","messages":[{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":1,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":1,"endColumn":51},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":2,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":2,"endColumn":30},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":3,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":3,"endColumn":78},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":4,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":4,"endColumn":74},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":5,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":5,"endColumn":53},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":12,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":19,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":21,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":21,"endColumn":48},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":28,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":35,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":47,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":51,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":59,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":63,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":71,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":75,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":83,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":87,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":95,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":99,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":106,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":110,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":118,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":122,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":130,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":134,"endColumn":7}],"suppressedMessages":[],"errorCount":16,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"const VueTestUtils = require( '@vue/test-utils' );\nconst Vue = require( 'vue' );\nconst Button = require( '../../../../resources/components/base/Button.vue' );\nconst Icon = require( '../../../../resources/components/base/Icon.vue' );\nconst icons = require( '../../../../lib/icons.js' );\n\n// This test is focused on the button component\ndescribe( 'Button Component', function () {\n\n\tit( 'renders successfully', function () {\n\n\t\tconst wrapper = VueTestUtils.shallowMount( Button, {\n\t\t\tpropsData: {\n\t\t\t\tdisabled: false,\n\t\t\t\tframeless: true,\n\t\t\t\tinvisibleText: false,\n\t\t\t\tprimary: true\n\t\t\t}\n\t\t} );\n\n\t\tconst element = wrapper.find( '.sd-button' );\n\t\texpect( element.exists() ).toBe( true );\n\n\t} );\n\n\tit( 'click causes a \"click\" event to be fired', function ( done ) {\n\n\t\tconst wrapper = VueTestUtils.shallowMount( Button, {\n\t\t\tpropsData: {\n\t\t\t\tdisabled: false,\n\t\t\t\tframeless: true,\n\t\t\t\tinvisibleText: false,\n\t\t\t\tprimary: true\n\t\t\t}\n\t\t} );\n\n\t\twrapper.find( '.sd-button' ).trigger( 'click' );\n\t\tVue.nextTick().then( function () {\n\t\t\texpect( wrapper.emitted().click ).toHaveLength( 1 );\n\t\t\tdone();\n\t\t} );\n\n\t} );\n\n\tit( 'is framed if frameless is passed as false', function () {\n\n\t\tconst wrapper = VueTestUtils.shallowMount( Button, {\n\t\t\tpropsData: {\n\t\t\t\tframeless: false\n\t\t\t}\n\t\t} );\n\n\t\texpect( wrapper.classes() ).toContain( 'sd-button--framed' );\n\n\t} );\n\n\tit( 'is disabled if disabled is passed as true', function () {\n\n\t\tconst wrapper = VueTestUtils.shallowMount( Button, {\n\t\t\tpropsData: {\n\t\t\t\tdisabled: true\n\t\t\t}\n\t\t} );\n\n\t\texpect( wrapper.attributes() ).toHaveProperty( 'disabled' );\n\n\t} );\n\n\tit( 'is progressive if progressive is passed as true', function () {\n\n\t\tconst wrapper = VueTestUtils.shallowMount( Button, {\n\t\t\tpropsData: {\n\t\t\t\tprogressive: true\n\t\t\t}\n\t\t} );\n\n\t\texpect( wrapper.classes() ).toContain( 'sd-button--progressive' );\n\n\t} );\n\n\tit( 'is destructive if destructive is passed as true', function () {\n\n\t\tconst wrapper = VueTestUtils.shallowMount( Button, {\n\t\t\tpropsData: {\n\t\t\t\tdestructive: true\n\t\t\t}\n\t\t} );\n\n\t\texpect( wrapper.classes() ).toContain( 'sd-button--destructive' );\n\n\t} );\n\n\tit( 'is primary if primary is passed as true', function () {\n\n\t\tconst wrapper = VueTestUtils.shallowMount( Button, {\n\t\t\tpropsData: {\n\t\t\t\tprimary: true\n\t\t\t}\n\t\t} );\n\n\t\texpect( wrapper.classes() ).toContain( 'sd-button--primary' );\n\t} );\n\n\tit( 'has invisible text if invisibleText is passed as true', function () {\n\n\t\tconst wrapper = VueTestUtils.shallowMount( Button, {\n\t\t\tpropsData: {\n\t\t\t\tinvisibleText: true\n\t\t\t}\n\t\t} );\n\n\t\texpect( wrapper.classes() ).toContain( 'sd-button--invisible-text' );\n\n\t} );\n\n\tit( 'has icon if icon is passed', function () {\n\n\t\tconst wrapper = VueTestUtils.shallowMount( Button, {\n\t\t\tpropsData: {\n\t\t\t\ticon: icons.sdIconAlert\n\t\t\t}\n\t\t} );\n\n\t\texpect( wrapper.classes() ).toContain( 'sd-button--icon' );\n\n\t} );\n\n\tit( 'child icon mounted', function () {\n\n\t\tconst wrapper = VueTestUtils.mount( Button, {\n\t\t\tpropsData: {\n\t\t\t\ticon: icons.sdIconAlert\n\t\t\t}\n\t\t} );\n\n\t\texpect( wrapper.findComponent( Icon ).exists() ).toBe( true );\n\n\t} );\n} );\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/jest/components/base/checkbox.test.js","messages":[{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":1,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":1,"endColumn":30},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":2,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":2,"endColumn":51},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":3,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":3,"endColumn":82},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":9,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":14,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":16,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":16,"endColumn":50},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":21,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":26,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":28,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":28,"endColumn":57},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":33,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":37,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":39,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":39,"endColumn":55},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":48,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":52,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":54,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":54,"endColumn":55},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":63,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":67,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":69,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":69,"endColumn":55}],"suppressedMessages":[],"errorCount":13,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"const Vue = require( 'vue' );\nconst VueTestUtils = require( '@vue/test-utils' );\nconst Checkbox = require( '../../../../resources/components/base/Checkbox.vue' );\njest.mock( '../../../../resources/components/base/mixins/binaryInput.js' );\n\ndescribe( 'Checkbox Component', function () {\n\n\tit( 'Renders successfully', function () {\n\t\tconst wrapper = VueTestUtils.shallowMount( Checkbox, {\n\t\t\tpropsData: {\n\t\t\t\tdisabled: false,\n\t\t\t\tmodelValue: true\n\t\t\t}\n\t\t} );\n\n\t\tconst element = wrapper.find( '.sd-checkbox' );\n\t\texpect( element.exists() ).toBe( true );\n\t} );\n\n\tit( 'is disabled if disabled is passed as true', function () {\n\t\tconst wrapper = VueTestUtils.shallowMount( Checkbox, {\n\t\t\tpropsData: {\n\t\t\t\tdisabled: true,\n\t\t\t\tmodelValue: true\n\t\t\t}\n\t\t} );\n\n\t\tconst element = wrapper.find( '.sd-checkbox__input' );\n\t\texpect( element.attributes() ).toHaveProperty( 'disabled' );\n\t} );\n\n\tit( 'check if element is checked if value is passed as true', function ( done ) {\n\t\tconst wrapper = VueTestUtils.mount( Checkbox, {\n\t\t\tpropsData: {\n\t\t\t\tmodelValue: true\n\t\t\t}\n\t\t} );\n\n\t\tconst input = wrapper.find( '.sd-checkbox__input' );\n\n\t\tVue.nextTick().then( function () {\n\t\t\texpect( input.element.checked ).toBe( true );\n\t\t\tdone();\n\t\t} );\n\t} );\n\n\tit( 'element is unchecked if value is passed as false', function ( done ) {\n\t\tconst wrapper = VueTestUtils.mount( Checkbox, {\n\t\t\tpropsData: {\n\t\t\t\tmodelValue: false\n\t\t\t}\n\t\t} );\n\n\t\tconst input = wrapper.find( '.sd-checkbox__input' );\n\n\t\tVue.nextTick().then( function () {\n\t\t\texpect( input.element.checked ).toBe( false );\n\t\t\tdone();\n\t\t} );\n\t} );\n\n\tit( 'element gets unchecked if value is passed as true and label is clicked', function ( done ) {\n\t\tconst wrapper = VueTestUtils.mount( Checkbox, {\n\t\t\tpropsData: {\n\t\t\t\tmodelValue: true\n\t\t\t}\n\t\t} );\n\n\t\tconst input = wrapper.find( '.sd-checkbox__input' );\n\n\t\twrapper.trigger( 'click' );\n\n\t\tVue.nextTick().then( function () {\n\t\t\texpect( input.element.checked ).toBe( false );\n\t\t\tdone();\n\t\t} );\n\t} );\n\n} );\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/jest/components/base/copyTextLayout.test.js","messages":[{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":1,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":1,"endColumn":51},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":2,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":2,"endColumn":30},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":3,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":3,"endColumn":94},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":7,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":7,"endColumn":34},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":11,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":15,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":17,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":17,"endColumn":58},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":22,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":26,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":28,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":28,"endColumn":68},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":33,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":37,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":40,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":40,"endColumn":65},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":55,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":55,"endColumn":53},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":56,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":61,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":64,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":64,"endColumn":65},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":74,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":74,"endColumn":50},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":75,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":80,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":86,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":86,"endColumn":65},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":101,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":106,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":112,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":117,"endColumn":7}],"suppressedMessages":[],"errorCount":18,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"const VueTestUtils = require( '@vue/test-utils' );\nconst Vue = require( 'vue' );\nconst CopyTextLayout = require( '../../../../resources/components/base/CopyTextLayout.vue' );\nrequire( '../../mocks/ExecCommand.js' );\n\n// Sample test message\nconst sampleTest = 'sample test';\n\ndescribe( 'SdCopyTextLayout Component', function () {\n\tit( 'renders successfully', function () {\n\t\tconst wrapper = VueTestUtils.shallowMount( CopyTextLayout, {\n\t\t\tpropsData: {\n\t\t\t\tcopyText: sampleTest\n\t\t\t}\n\t\t} );\n\n\t\tconst element = wrapper.find( '.sd-copy-text-layout' );\n\t\texpect( element.exists() ).toBe( true );\n\t} );\n\n\tit( 'text is same as text passed', function () {\n\t\tconst wrapper = VueTestUtils.shallowMount( CopyTextLayout, {\n\t\t\tpropsData: {\n\t\t\t\tcopyText: sampleTest\n\t\t\t}\n\t\t} );\n\n\t\tconst textElement = wrapper.find( '.sd-copy-text-layout__text' );\n\t\texpect( textElement.text() ).toEqual( sampleTest );\n\t} );\n\n\tit( 'text copied successfully', function ( done ) {\n\t\tconst wrapper = VueTestUtils.mount( CopyTextLayout, {\n\t\t\tpropsData: {\n\t\t\t\tcopyText: sampleTest\n\t\t\t}\n\t\t} );\n\t\tdocument.execCommand.mockResolvedValue( true );\n\n\t\tconst button = wrapper.find( '.sd-copy-text-layout__button' );\n\t\tbutton.trigger( 'click' );\n\n\t\tVue.nextTick().then( function () {\n\t\t\texpect( document.execCommand ).toHaveBeenCalled();\n\n\t\t\texpect( global.mw.notify ).toHaveBeenCalled();\n\n\t\t\texpect( wrapper.emitted().copy ).toHaveLength( 1 );\n\n\t\t\tdone();\n\t\t} );\n\t} );\n\n\tit( 'correct success message is shown if copied text successfully', function ( done ) {\n\t\tconst successMessage = 'Copied link successfully';\n\t\tconst wrapper = VueTestUtils.mount( CopyTextLayout, {\n\t\t\tpropsData: {\n\t\t\t\tcopyText: sampleTest,\n\t\t\t\tsuccessMessage: successMessage\n\t\t\t}\n\t\t} );\n\t\tdocument.execCommand.mockResolvedValue( true );\n\n\t\tconst button = wrapper.find( '.sd-copy-text-layout__button' );\n\t\tbutton.trigger( 'click' );\n\n\t\tVue.nextTick().then( function () {\n\t\t\texpect( global.mw.notify ).toHaveBeenCalledWith( successMessage );\n\t\t\tdone();\n\t\t} );\n\t} );\n\n\tit( 'user is notified if copy fails', function ( done ) {\n\t\tconst failMessage = 'Copied link successfully';\n\t\tconst wrapper = VueTestUtils.mount( CopyTextLayout, {\n\t\t\tpropsData: {\n\t\t\t\tcopyText: sampleTest,\n\t\t\t\tfailMessage: failMessage\n\t\t\t}\n\t\t} );\n\t\t// Mock error\n\t\tdocument.execCommand.mockImplementation( function () {\n\t\t\tthrow new Error( '' );\n\t\t} );\n\n\t\tconst button = wrapper.find( '.sd-copy-text-layout__button' );\n\t\tbutton.trigger( 'click' );\n\n\t\tVue.nextTick().then( function () {\n\t\t\texpect( document.execCommand ).toThrowError();\n\n\t\t\texpect( global.mw.notify ).toHaveBeenCalledWith( failMessage, { type: 'error' } );\n\n\t\t\texpect( wrapper.emitted().copy ).toBeUndefined();\n\n\t\t\tdone();\n\t\t} );\n\t} );\n\n\tit( 'overflow is hidden if hideOverflow is passed as true', function () {\n\t\tconst wrapper = VueTestUtils.shallowMount( CopyTextLayout, {\n\t\t\tpropsData: {\n\t\t\t\tcopyText: sampleTest,\n\t\t\t\thideOverflow: true\n\t\t\t}\n\t\t} );\n\n\t\texpect( wrapper.classes() ).toContain( 'sd-copy-text-layout--hide-overflow' );\n\t} );\n\n\tit( 'is inline if inline is passed as true', function () {\n\t\tconst wrapper = VueTestUtils.shallowMount( CopyTextLayout, {\n\t\t\tpropsData: {\n\t\t\t\tcopyText: sampleTest,\n\t\t\t\tinline: true\n\t\t\t}\n\t\t} );\n\n\t\texpect( wrapper.classes() ).toContain( 'sd-copy-text-layout--inline' );\n\t} );\n} );\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/jest/components/base/dialog.test.js","messages":[{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":1,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":1,"endColumn":30},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":2,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":2,"endColumn":51},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":3,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":3,"endColumn":78},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":7,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":11,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":13,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":13,"endColumn":56},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":18,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":22,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":24,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":24,"endColumn":48},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":29,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":33,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":35,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":35,"endColumn":48},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":40,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":44,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":46,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":46,"endColumn":48},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":56,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":60,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":62,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":62,"endColumn":48},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":74,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":78,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":90,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":95,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":102,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":106,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":120,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":124,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":139,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":144,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":146,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":148,"endColumn":5},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":158,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":162,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":164,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":164,"endColumn":73}],"suppressedMessages":[],"errorCount":21,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"const Vue = require( 'vue' );\nconst VueTestUtils = require( '@vue/test-utils' );\nconst Dialog = require( '../../../../resources/components/base/Dialog.vue' );\n\ndescribe( 'Dialog Component', function () {\n\tit( 'Renders successfully', function () {\n\t\tconst wrapper = VueTestUtils.shallowMount( Dialog, {\n\t\t\tpropsData: {\n\t\t\t\tactive: false\n\t\t\t}\n\t\t} );\n\n\t\tconst element = wrapper.find( '.sd-dialog-wrapper' );\n\t\texpect( element.exists() ).toBe( true );\n\t} );\n\n\tit( 'dialog container is not rendered', function () {\n\t\tconst wrapper = VueTestUtils.shallowMount( Dialog, {\n\t\t\tpropsData: {\n\t\t\t\tactive: false\n\t\t\t}\n\t\t} );\n\n\t\tconst element = wrapper.find( '.sd-dialog' );\n\t\texpect( element.exists() ).toBe( false );\n\t} );\n\n\tit( 'dialog container is rendered', function () {\n\t\tconst wrapper = VueTestUtils.shallowMount( Dialog, {\n\t\t\tpropsData: {\n\t\t\t\tactive: true\n\t\t\t}\n\t\t} );\n\n\t\tconst element = wrapper.find( '.sd-dialog' );\n\t\texpect( element.exists() ).toBe( true );\n\t} );\n\n\tit( 'triggers close on keydown escape', function ( done ) {\n\t\tconst wrapper = VueTestUtils.shallowMount( Dialog, {\n\t\t\tpropsData: {\n\t\t\t\tactive: true\n\t\t\t}\n\t\t} );\n\n\t\tconst element = wrapper.find( '.sd-dialog' );\n\t\telement.trigger( 'keyup.esc' );\n\n\t\tVue.nextTick().then( function () {\n\t\t\texpect( wrapper.emitted().close ).toHaveLength( 1 );\n\t\t\tdone();\n\t\t} );\n\t} );\n\n\tit( 'triggers \"key\" event to be fired when keyboard is clicked', function ( done ) {\n\t\tconst wrapper = VueTestUtils.shallowMount( Dialog, {\n\t\t\tpropsData: {\n\t\t\t\tactive: true\n\t\t\t}\n\t\t} );\n\n\t\tconst element = wrapper.find( '.sd-dialog' );\n\t\telement.trigger( 'keyup.enter' );\n\n\t\tVue.nextTick().then( function () {\n\t\t\texpect( wrapper.emitted().key[ 0 ][ 0 ] ).toBe( '13' );\n\t\t\tdone();\n\t\t} );\n\t} );\n\n\tit( 'destroys and removes all added class from document body', function ( done ) {\n\t\tdocument.body.classList.remove = jest.fn();\n\t\tdocument.body.removeChild = jest.fn();\n\t\tconst wrapper = VueTestUtils.shallowMount( Dialog, {\n\t\t\tpropsData: {\n\t\t\t\tactive: true\n\t\t\t}\n\t\t} );\n\n\t\twrapper.unmount();\n\n\t\tVue.nextTick().then( function () {\n\t\t\texpect( document.body.classList.remove ).toHaveBeenCalled();\n\t\t\texpect( document.body.removeChild ).toHaveBeenCalled();\n\t\t\tdone();\n\t\t} );\n\t} );\n\n\tit( 'is headless if headless is passed as true', function () {\n\t\tconst wrapper = VueTestUtils.mount( Dialog, {\n\t\t\tpropsData: {\n\t\t\t\tactive: true,\n\t\t\t\theadless: true\n\t\t\t}\n\t\t} );\n\n\t\texpect( wrapper.find( '.sd-dialog__header' ).exists() ).toBeFalsy();\n\t} );\n\n\tit( 'closes if active is changed to false', function () {\n\t\tdocument.body.classList.remove = jest.fn();\n\t\tconst wrapper = VueTestUtils.mount( Dialog, {\n\t\t\tpropsData: {\n\t\t\t\tactive: true\n\t\t\t}\n\t\t} );\n\n\t\twrapper.setProps( {\n\t\t\tactive: false\n\t\t} );\n\n\t\tVue.nextTick().then( function () {\n\t\t\texpect( document.body.classList.remove ).toHaveBeenCalled();\n\t\t\texpect( wrapper.find( '.sd-dialog' ).exists() ).toBeFalsy();\n\t\t} );\n\t} );\n\n\tit( 'focus if active is changed to true', function () {\n\t\tdocument.body.classList.add = jest.fn();\n\t\tconst wrapper = VueTestUtils.mount( Dialog, {\n\t\t\tpropsData: {\n\t\t\t\tactive: false\n\t\t\t}\n\t\t} );\n\n\t\twrapper.setProps( {\n\t\t\tactive: true\n\t\t} );\n\n\t\tVue.nextTick().then( function () {\n\t\t\texpect( document.body.classList.add ).toHaveBeenCalled();\n\t\t\texpect( wrapper.find( '.sd-dialog' ).exists() ).toBeTruthy();\n\t\t} );\n\t} );\n\n\tit( 'causes a \"progress\" event to be fired when the progress button is clicked', function ( done ) {\n\t\tmw.config.get.mockReturnValue( 'minerva' );\n\n\t\tconst wrapper = VueTestUtils.mount( Dialog, {\n\t\t\tpropsData: {\n\t\t\t\tactive: true,\n\t\t\t\tprogressiveAction: 'Next'\n\t\t\t}\n\t\t} );\n\n\t\tconst progressButton = wrapper.find(\n\t\t\t'.sd-dialog__header-action--progressive'\n\t\t);\n\t\tprogressButton.trigger( 'click' );\n\n\t\tVue.nextTick().then( function () {\n\t\t\texpect( wrapper.emitted().progress ).toHaveLength( 1 );\n\t\t\tdone();\n\t\t} );\n\t} );\n\n\tit( 'causes a \"close\" event to be fired when the close button is clicked', function ( done ) {\n\t\tconst wrapper = VueTestUtils.mount( Dialog, {\n\t\t\tpropsData: {\n\t\t\t\tactive: true\n\t\t\t}\n\t\t} );\n\n\t\tconst closeButton = wrapper.find( '.sd-dialog__header-action--safe' );\n\t\tcloseButton.trigger( 'click' );\n\n\t\tVue.nextTick().then( function () {\n\t\t\texpect( wrapper.emitted().close ).toHaveLength( 1 );\n\t\t\tdone();\n\t\t} );\n\t} );\n} );\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/jest/components/base/icon.test.js","messages":[{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":1,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":1,"endColumn":51},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":2,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":2,"endColumn":74},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":3,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":3,"endColumn":53},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":7,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":11,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":13,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":13,"endColumn":46},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":18,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":18,"endColumn":27},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":19,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":24,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":26,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":26,"endColumn":55},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":33,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":38,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":40,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":40,"endColumn":52},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":47,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":49,"endColumn":5},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":50,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":55,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":57,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":57,"endColumn":52},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":66,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":68,"endColumn":5},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":70,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":74,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":76,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":76,"endColumn":52},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":85,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":88,"endColumn":5},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":90,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":95,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":105,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":111,"endColumn":5},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":113,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":118,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":120,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":120,"endColumn":52},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":128,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":130,"endColumn":5},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":132,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":136,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":138,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":138,"endColumn":52},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":145,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":148,"endColumn":5},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":149,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":154,"endColumn":7}],"suppressedMessages":[],"errorCount":26,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"const VueTestUtils = require( '@vue/test-utils' );\nconst Icon = require( '../../../../resources/components/base/Icon.vue' );\nconst icons = require( '../../../../lib/icons.js' );\n\ndescribe( 'Icon Component', function () {\n\tit( 'renders successfully', function () {\n\t\tconst wrapper = VueTestUtils.shallowMount( Icon, {\n\t\t\tpropsData: {\n\t\t\t\ticon: icons.sdIconAlert\n\t\t\t}\n\t\t} );\n\n\t\tconst element = wrapper.find( '.sd-icon' );\n\t\texpect( element.exists() ).toBe( true );\n\t} );\n\n\tit( 'icon is filled with iconColor prop value', function () {\n\t\tconst color = '#000000';\n\t\tconst wrapper = VueTestUtils.shallowMount( Icon, {\n\t\t\tpropsData: {\n\t\t\t\ticon: icons.sdIconAlert,\n\t\t\t\ticonColor: color\n\t\t\t}\n\t\t} );\n\n\t\tconst svgElement = wrapper.find( '.sd-icon svg g' );\n\n\t\texpect( svgElement.attributes( 'fill' ) ).toBe( color );\n\t} );\n\n\tit( 'renders path if icon is string', function () {\n\n\t\tconst wrapper = VueTestUtils.shallowMount( Icon, {\n\t\t\tpropsData: {\n\t\t\t\ticon: icons.sdIconAlert,\n\t\t\t\ticonTitle: 'Alert Icon'\n\t\t\t}\n\t\t} );\n\n\t\tconst path = wrapper.find( '.sd-icon svg path' );\n\t\texpect( path.attributes().d ).toBe( icons.sdIconAlert );\n\n\t} );\n\n\tit( 'renders path if icon is an object containing path', function () {\n\n\t\tconst iconElement = {\n\t\t\tpath: icons.sdIconAlert\n\t\t};\n\t\tconst wrapper = VueTestUtils.shallowMount( Icon, {\n\t\t\tpropsData: {\n\t\t\t\ticon: iconElement,\n\t\t\t\ticonTitle: 'Alert Icon'\n\t\t\t}\n\t\t} );\n\n\t\tconst path = wrapper.find( '.sd-icon svg path' );\n\t\texpect( path.attributes().d ).toBe( iconElement.path );\n\n\t} );\n\n\tit( 'renders rtl as path if icon is an object that contains rtl and document.documentElement.dir is rtl', function () {\n\n\t\tdocument.documentElement.dir = 'rtl';\n\n\t\tconst iconElement = {\n\t\t\trtl: icons.sdIconAlert\n\t\t};\n\n\t\tconst wrapper = VueTestUtils.shallowMount( Icon, {\n\t\t\tpropsData: {\n\t\t\t\ticon: iconElement\n\t\t\t}\n\t\t} );\n\n\t\tconst path = wrapper.find( '.sd-icon svg path' );\n\t\texpect( path.attributes().d ).toBe( iconElement.rtl );\n\n\t} );\n\n\tit( 'renders ltr if icon shouldFlipExceptions contains langCode', function () {\n\n\t\tdocument.documentElement.dir = 'rtl';\n\n\t\tconst iconElement = {\n\t\t\tshouldFlipExceptions: 'en',\n\t\t\trtl: icons.sdIconAlert\n\t\t};\n\n\t\tconst wrapper = VueTestUtils.shallowMount( Icon, {\n\t\t\tpropsData: {\n\t\t\t\ticon: iconElement,\n\t\t\t\tlangCode: 'en'\n\t\t\t}\n\t\t} );\n\n\t\texpect( wrapper.classes() ).not.toContain( 'sd-icon--flip-for-rtl' );\n\n\t} );\n\n\tit( 'renders langCodeMap langCode path string if langCodeMap object contains langCode', function () {\n\n\t\tdocument.documentElement.dir = 'rtl';\n\n\t\tconst iconElement = {\n\t\t\tlangCodeMap: {\n\t\t\t\ten: {\n\t\t\t\t\tpath: icons.sdIconAlert\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tconst wrapper = VueTestUtils.shallowMount( Icon, {\n\t\t\tpropsData: {\n\t\t\t\ticon: iconElement,\n\t\t\t\tlangCode: 'en'\n\t\t\t}\n\t\t} );\n\n\t\tconst path = wrapper.find( '.sd-icon svg path' );\n\t\texpect( path.attributes().d ).toBe( iconElement.langCodeMap.en.path );\n\n\t} );\n\n\tit( 'renders default if passed in icon object and document.documentElement.dir is not rtl', function () {\n\n\t\tdocument.documentElement.dir = 'ltr';\n\t\tconst iconElement = {\n\t\t\tdefault: icons.sdIconAlert\n\t\t};\n\n\t\tconst wrapper = VueTestUtils.shallowMount( Icon, {\n\t\t\tpropsData: {\n\t\t\t\ticon: iconElement\n\t\t\t}\n\t\t} );\n\n\t\tconst path = wrapper.find( '.sd-icon svg path' );\n\t\texpect( path.attributes().d ).toBe( iconElement.default );\n\n\t} );\n\n\tit( 'should flip if shouldflip is passed in icon object', function () {\n\n\t\tconst iconElement = {\n\t\t\tshouldFlip: true,\n\t\t\tpath: icons.sdIconAlert\n\t\t};\n\t\tconst wrapper = VueTestUtils.shallowMount( Icon, {\n\t\t\tpropsData: {\n\t\t\t\ticon: iconElement,\n\t\t\t\ticonTitle: 'Alert Icon'\n\t\t\t}\n\t\t} );\n\n\t\texpect( wrapper.classes() ).toContain( 'sd-icon--flip-for-rtl' );\n\n\t} );\n\n} );\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/jest/components/base/image.test.js","messages":[{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":1,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":1,"endColumn":51},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":2,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":2,"endColumn":30},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":3,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":3,"endColumn":76},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":4,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":4,"endColumn":88},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":8,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":12,"endColumn":3},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":19,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":21,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":23,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":23,"endColumn":47},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":30,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":30,"endColumn":123},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":31,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":33,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":46,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":48,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":56,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":56,"endColumn":35},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":61,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":64,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":78,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":80,"endColumn":7}],"suppressedMessages":[],"errorCount":13,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"const VueTestUtils = require( '@vue/test-utils' );\nconst Vue = require( 'vue' );\nconst Image = require( '../../../../resources/components/base/Image.vue' );\nconst Observer = require( '../../../../resources/components/base/mixins/observer.js' );\nrequire( '../../mocks/IntersectionObserver.js' );\n\n// Sample test image props\nconst samplePropsData = {\n\tsource:\n    'https://upload.wikimedia.org/wikipedia/commons/3/32/Tired_20-year-old_cat.jpg',\n\talt: 'Tired 20-year-old cat'\n};\n\ndescribe( 'Image Component', function () {\n\n\tjest.useFakeTimers();\n\n\tit( 'Renders successfully', function () {\n\t\tconst wrapper = VueTestUtils.shallowMount( Image, {\n\t\t\tpropsData: samplePropsData\n\t\t} );\n\n\t\tconst element = wrapper.find( '.sd-image' );\n\t\texpect( element.exists() ).toBe( true );\n\n\t} );\n\n\tit( 'width and height style match props', function () {\n\n\t\tconst propsData = { source: samplePropsData.source, alt: samplePropsData.alt, originalWidth: 200, originalHeight: 200 };\n\t\tconst wrapper = VueTestUtils.shallowMount( Image, {\n\t\t\tpropsData: propsData\n\t\t} );\n\n\t\texpect( wrapper.attributes().style ).toContain(\n\t\t\tpropsData.originalWidth.toString()\n\t\t);\n\n\t\texpect( wrapper.attributes().style ).toContain(\n\t\t\tpropsData.originalHeight.toString()\n\t\t);\n\n\t} );\n\n\tit( 'source is set immediately if observer is not supported', function () {\n\t\tconst wrapper = VueTestUtils.shallowMount( Image, {\n\t\t\tpropsData: samplePropsData\n\t\t} );\n\n\t\texpect( wrapper.attributes().src ).toBe( samplePropsData.source );\n\n\t} );\n\n\tit( 'source is not set if observer is supported', function ( done ) {\n\n\t\tlet observerInstance = Observer;\n\n\t\tobserverInstance.methods.supportsObserverCheck = jest.fn().mockReturnValue( true );\n\t\tobserverInstance.methods.defineObserverElement = jest.fn().mockReturnValue( 'mock-element-selector' );\n\n\t\tconst wrapper = VueTestUtils.mount( Image, {\n\t\t\tpropsData: samplePropsData,\n\t\t\tmixins: [ observerInstance ]\n\t\t} );\n\n\t\tVue.nextTick().then( function () {\n\n\t\t\texpect( wrapper.vm.observerSupported ).toBe( true );\n\t\t\texpect( wrapper.attributes().src ).toBeUndefined();\n\n\t\t\tdone();\n\n\t\t} );\n\n\t} );\n\n\tit( 'source is set when observerIntersecting is true', function () {\n\t\tconst wrapper = VueTestUtils.shallowMount( Image, {\n\t\t\tpropsData: samplePropsData\n\t\t} );\n\n\t\twrapper.vm.observerIntersecting = true;\n\n\t\tVue.nextTick().then( function () {\n\n\t\t\tjest.advanceTimersByTime( 300 );\n\n\t\t\texpect( wrapper.attributes().src ).toBe( samplePropsData.source );\n\n\t\t} );\n\n\t} );\n\n} );\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/jest/components/base/message.test.js","messages":[{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":1,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":4,"endColumn":31},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":10,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":12,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":14,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":14,"endColumn":49},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":23,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":27,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":29,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":29,"endColumn":49},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":36,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":38,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":48,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":50,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":58,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":58,"endColumn":26},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":59,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":63,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":71,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":71,"endColumn":27},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":72,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":76,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":84,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":84,"endColumn":25},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":85,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":89,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":97,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":97,"endColumn":27},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":98,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":102,"endColumn":8}],"suppressedMessages":[],"errorCount":15,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"const VueTestUtils = require( '@vue/test-utils' ),\n\tMessage = require( '../../../../resources/components/base/Message.vue' ),\n\tSdIcon = require( '../../../../resources/components/base/Icon.vue' ),\n\tclassOutset = 'sd-message--';\n\ndescribe( 'Message Component', function () {\n\n\tit( 'renders successfully', function () {\n\n\t\tconst wrapper = VueTestUtils.shallowMount( Message, {\n\t\t\tpropsData: {}\n\t\t} );\n\n\t\tconst element = wrapper.find( '.sd-message' );\n\n\t\texpect( wrapper.classes() ).toContain( classOutset + 'block' );\n\t\texpect( element.exists() ).toBe( true );\n\n\t} );\n\n\tit( 'renders inline if inline is true', function () {\n\n\t\tconst wrapper = VueTestUtils.shallowMount( Message, {\n\t\t\tpropsData: {\n\t\t\t\tinline: true\n\t\t\t}\n\t\t} );\n\n\t\tconst element = wrapper.find( '.sd-message' );\n\t\texpect( element.exists() ).toBe( true );\n\n\t} );\n\n\tit( 'renders icon successfully', function () {\n\n\t\tconst wrapper = VueTestUtils.shallowMount( Message, {\n\t\t\tpropsData: {}\n\t\t} );\n\n\t\texpect( wrapper.findComponent( SdIcon ).exists() ).toBe( true );\n\n\t} );\n\n\tdescribe( 'renders message ', function () {\n\n\t\tit( 'notice, if type is not passed', function () {\n\n\t\t\tconst wrapper = VueTestUtils.shallowMount( Message, {\n\t\t\t\tpropsData: {}\n\t\t\t} );\n\n\t\t\texpect( wrapper.classes() ).toContain( classOutset + 'notice' );\n\n\t\t} );\n\n\t\tit( 'notice, if type is passed as \"notice\"', function () {\n\n\t\t\tconst type = 'notice';\n\t\t\tconst wrapper = VueTestUtils.shallowMount( Message, {\n\t\t\t\tpropsData: {\n\t\t\t\t\ttype: type\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\texpect( wrapper.classes() ).toContain( classOutset + type );\n\n\t\t} );\n\n\t\tit( 'warning, if type is passed as \"warning\"', function () {\n\n\t\t\tconst type = 'warning';\n\t\t\tconst wrapper = VueTestUtils.shallowMount( Message, {\n\t\t\t\tpropsData: {\n\t\t\t\t\ttype: type\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\texpect( wrapper.classes() ).toContain( classOutset + type );\n\n\t\t} );\n\n\t\tit( 'error, if type is passed as \"error\"', function () {\n\n\t\t\tconst type = 'error';\n\t\t\tconst wrapper = VueTestUtils.shallowMount( Message, {\n\t\t\t\tpropsData: {\n\t\t\t\t\ttype: type\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\texpect( wrapper.classes() ).toContain( classOutset + type );\n\n\t\t} );\n\n\t\tit( 'success, if type is passed as \"success\"', function () {\n\n\t\t\tconst type = 'success';\n\t\t\tconst wrapper = VueTestUtils.shallowMount( Message, {\n\t\t\t\tpropsData: {\n\t\t\t\t\ttype: type\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\texpect( wrapper.classes() ).toContain( classOutset + type );\n\n\t\t} );\n\n\t} );\n\n} );\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/jest/components/base/player.test.js","messages":[{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":1,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":2,"endColumn":73},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":28,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":30,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":32,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":32,"endColumn":48},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":40,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":40,"endColumn":33},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":41,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":45,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":47,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":47,"endColumn":48},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":54,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":56,"endColumn":5},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":57,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":61,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":63,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":63,"endColumn":48},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":70,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":72,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":82,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":82,"endColumn":39},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":83,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":85,"endColumn":7}],"suppressedMessages":[],"errorCount":12,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"const VueTestUtils = require( '@vue/test-utils' ),\n\tPlayer = require( '../../../../resources/components/base/Player.vue' );\n\ndescribe( 'Player Component', function () {\n\n\tbeforeEach( function () {\n\t\twindow.videojs = jest.fn().mockReturnValue( {\n\t\t\ton: jest.fn()\n\t\t} );\n\n\t\tmw.loader.using.mockReturnValue( {\n\t\t\tthen: function ( paramsFunc ) {\n\t\t\t\tparamsFunc();\n\t\t\t\treturn {\n\t\t\t\t\tthen: function ( paramsThenFunc ) {\n\t\t\t\t\t\tparamsThenFunc();\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tthen: jest.fn()\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\t\t} );\n\t} );\n\n\tit( 'renders successfully', function () {\n\n\t\tconst wrapper = VueTestUtils.shallowMount( Player, {\n\t\t\tpropsData: {}\n\t\t} );\n\n\t\tconst element = wrapper.find( '.sd-player' );\n\n\t\texpect( element.exists() ).toBe( true );\n\n\t} );\n\n\tit( 'renders src as \"fallbackUrl\"', function () {\n\n\t\tconst fallbackUrl = 'testurl';\n\t\tconst wrapper = VueTestUtils.shallowMount( Player, {\n\t\t\tpropsData: {\n\t\t\t\tfallbackUrl: fallbackUrl\n\t\t\t}\n\t\t} );\n\n\t\tconst element = wrapper.find( '.sd-player' );\n\t\texpect( element.attributes().src ).toBe( fallbackUrl );\n\n\t} );\n\n\tit( 'renders poster as \"options.poster\"', function () {\n\n\t\tconst options = {\n\t\t\tposter: 'Cat Video'\n\t\t};\n\t\tconst wrapper = VueTestUtils.shallowMount( Player, {\n\t\t\tpropsData: {\n\t\t\t\toptions: options\n\t\t\t}\n\t\t} );\n\n\t\tconst element = wrapper.find( '.sd-player' );\n\t\texpect( element.attributes().poster ).toBe( options.poster );\n\n\t} );\n\n\tit( 'emits \"play\" event when onPlay is called ', function () {\n\n\t\tconst wrapper = VueTestUtils.shallowMount( Player, {\n\t\t\tpropsData: { }\n\t\t} );\n\n\t\twrapper.vm.onPlay();\n\n\t\texpect( wrapper.emitted().play[ 0 ][ 0 ] ).toBeUndefined();\n\n\t} );\n\n\tit( 'calls player dispose method when component is destroyed', function () {\n\n\t\tconst mockPlayerDispose = jest.fn();\n\t\tconst wrapper = VueTestUtils.shallowMount( Player, {\n\t\t\tpropsData: { }\n\t\t} );\n\n\t\twrapper.vm.player.dispose = mockPlayerDispose;\n\n\t\twrapper.unmount();\n\n\t\texpect( mockPlayerDispose ).toHaveBeenCalled();\n\t} );\n\n} );\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/jest/components/base/radio.test.js","messages":[{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":1,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":2,"endColumn":71},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":8,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":12,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":14,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":14,"endColumn":47},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":19,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":24,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":26,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":26,"endColumn":54},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":31,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":36,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":38,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":38,"endColumn":54},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":44,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":48,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":50,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":50,"endColumn":73},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":52,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":52,"endColumn":47}],"suppressedMessages":[],"errorCount":10,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"const VueTestUtils = require( '@vue/test-utils' ),\n\tRadio = require( '../../../../resources/components/base/Radio.vue' );\njest.mock( '../../../../resources/components/base/mixins/binaryInput.js' );\n\ndescribe( 'Radio Component', function () {\n\n\tit( 'Renders successfully', function () {\n\t\tconst wrapper = VueTestUtils.shallowMount( Radio, {\n\t\t\tpropsData: {\n\t\t\t\tname: 'demo'\n\t\t\t}\n\t\t} );\n\n\t\tconst element = wrapper.find( '.sd-radio' );\n\t\texpect( element.exists() ).toBe( true );\n\t} );\n\n\tit( 'renders the name property', function () {\n\t\tconst wrapper = VueTestUtils.shallowMount( Radio, {\n\t\t\tpropsData: {\n\t\t\t\tdisabled: true,\n\t\t\t\tname: 'demo'\n\t\t\t}\n\t\t} );\n\n\t\tconst element = wrapper.find( '.sd-radio__input' );\n\t\texpect( element.attributes().name ).toBe( 'demo' );\n\t} );\n\n\tit( 'is disabled if disabled is passed as true', function () {\n\t\tconst wrapper = VueTestUtils.shallowMount( Radio, {\n\t\t\tpropsData: {\n\t\t\t\tdisabled: true,\n\t\t\t\tname: 'demo'\n\t\t\t}\n\t\t} );\n\n\t\tconst element = wrapper.find( '.sd-radio__input' );\n\n\t\texpect( element.attributes() ).toHaveProperty( 'disabled' );\n\t} );\n\n\tit( 'keydown causes a \"click\" event to be called', function () {\n\t\tconst wrapper = VueTestUtils.shallowMount( Radio, {\n\t\t\tpropsData: {\n\t\t\t\tvalue: true\n\t\t\t}\n\t\t} );\n\n\t\tconst mockRegexMethod = jest.spyOn( wrapper.vm.$refs.label, 'click' );\n\n\t\tconst element = wrapper.find( '.sd-radio' );\n\n\t\telement.trigger( 'keydown.enter' );\n\n\t\texpect( mockRegexMethod ).toHaveBeenCalled();\n\n\t} );\n\n} );\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/jest/components/base/select.test.js","messages":[{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":1,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":1,"endColumn":30},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":2,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":2,"endColumn":51},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":3,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":3,"endColumn":78},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":5,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":17,"endColumn":5},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":22,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":22,"endColumn":42},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":23,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":29,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":34,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":34,"endColumn":20},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":35,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":42,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":48,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":48,"endColumn":20},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":49,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":49,"endColumn":29},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":50,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":58,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":64,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":64,"endColumn":35},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":65,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":65,"endColumn":20},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":66,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":73,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":83,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":83,"endColumn":29},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":84,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":84,"endColumn":20},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":85,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":92,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":100,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":100,"endColumn":42},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":101,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":107,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":116,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":122,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":131,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":137,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":146,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":152,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":161,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":161,"endColumn":20},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":162,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":169,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":178,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":178,"endColumn":20},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":179,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":186,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":195,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":195,"endColumn":26},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":196,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":202,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":215,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":221,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":232,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":232,"endColumn":26},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":233,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":239,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":245,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":245,"endColumn":61},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":251,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":251,"endColumn":26},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":252,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":259,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":263,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":263,"endColumn":29},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":274,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":274,"endColumn":26},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":275,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":282,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":286,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":286,"endColumn":29},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":298,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":298,"endColumn":36},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":299,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":306,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":309,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":309,"endColumn":30},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":321,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":321,"endColumn":37},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":322,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":334,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":336,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":336,"endColumn":66},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":341,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":341,"endColumn":58},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":351,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":351,"endColumn":36},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":352,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":364,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":365,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":365,"endColumn":58}],"suppressedMessages":[],"errorCount":48,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"const Vue = require( 'vue' );\nconst VueTestUtils = require( '@vue/test-utils' );\nconst Select = require( '../../../../resources/components/base/Select.vue' );\n\nconst FRUITS = [ {\n\tlabel: 'Apple',\n\tvalue: 'apple'\n}, {\n\tlabel: 'Banana',\n\tvalue: 'banana'\n}, {\n\tlabel: 'Pear',\n\tvalue: 'pear'\n}, {\n\tlabel: 'Strawberry',\n\tvalue: 'strawberry'\n} ];\n\ndescribe( 'Select', function () {\n\tdescribe( 'when provided with an array of items that have \"label\" and \"value\" properties', function () {\n\t\tit( 'displays the label if no initial selection is specified', function () {\n\t\t\tconst defaultLabel = 'select a fruit';\n\t\t\tconst wrapper = VueTestUtils.mount( Select, {\n\t\t\t\tpropsData: {\n\t\t\t\t\tname: 'fruits',\n\t\t\t\t\tlabel: defaultLabel,\n\t\t\t\t\titems: FRUITS\n\t\t\t\t}\n\t\t\t} );\n\t\t\texpect( wrapper.text() ).toBe( defaultLabel );\n\t\t} );\n\n\t\tit( 'displays the label of the selected item if initial selection is specified', function () {\n\t\t\tconst index = 2;\n\t\t\tconst wrapper = VueTestUtils.mount( Select, {\n\t\t\t\tpropsData: {\n\t\t\t\t\tname: 'fruits',\n\t\t\t\t\tlabel: 'select a fruit',\n\t\t\t\t\titems: FRUITS,\n\t\t\t\t\tinitialSelectedItemIndex: index\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\texpect( wrapper.find( 'button' ).text() ).toBe( FRUITS[ index ].label );\n\t\t} );\n\n\t\tit( 'displays an optional prefix with the selected value if one is provided', function () {\n\t\t\tconst index = 1;\n\t\t\tconst prefix = 'Fruit: ';\n\t\t\tconst wrapper = VueTestUtils.mount( Select, {\n\t\t\t\tpropsData: {\n\t\t\t\t\tname: 'fruits',\n\t\t\t\t\tlabel: 'select a fruit',\n\t\t\t\t\titems: FRUITS,\n\t\t\t\t\tinitialSelectedItemIndex: index,\n\t\t\t\t\tprefix: prefix\n\t\t\t\t}\n\t\t\t} );\n\t\t\texpect( wrapper.text() ).toContain( prefix );\n\t\t\texpect( wrapper.text() ).toContain( FRUITS[ index ].label );\n\t\t} );\n\n\t\tit( 'allows items to be selected via the select method', function ( done ) {\n\t\t\tconst selection = 'strawberry';\n\t\t\tconst index = 2;\n\t\t\tconst wrapper = VueTestUtils.mount( Select, {\n\t\t\t\tpropsData: {\n\t\t\t\t\tname: 'fruits',\n\t\t\t\t\tlabel: 'select a fruit',\n\t\t\t\t\titems: FRUITS,\n\t\t\t\t\tinitialSelectedItemIndex: index\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\twrapper.vm.select( selection );\n\t\t\tVue.nextTick().then( function () {\n\t\t\t\texpect( wrapper.find( 'button' ).text() ).toBe( 'Strawberry' );\n\t\t\t\tdone();\n\t\t\t} );\n\t\t} );\n\n\t\tit( 'throws an error if the specified item is not found', function () {\n\t\t\tconst selection = 'kiwi';\n\t\t\tconst index = 2;\n\t\t\tconst wrapper = VueTestUtils.mount( Select, {\n\t\t\t\tpropsData: {\n\t\t\t\t\tname: 'fruits',\n\t\t\t\t\tlabel: 'select a fruit',\n\t\t\t\t\titems: FRUITS,\n\t\t\t\t\tinitialSelectedItemIndex: index\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\texpect( function () {\n\t\t\t\twrapper.vm.select( selection );\n\t\t\t} ).toThrow();\n\t\t} );\n\n\t\tit( 'computes valid item length', function () {\n\t\t\tconst defaultLabel = 'select a fruit';\n\t\t\tconst wrapper = VueTestUtils.mount( Select, {\n\t\t\t\tpropsData: {\n\t\t\t\t\tname: 'fruits',\n\t\t\t\t\tlabel: defaultLabel,\n\t\t\t\t\titems: FRUITS\n\t\t\t\t}\n\t\t\t} );\n\t\t\texpect( wrapper.vm.itemsLength ).toBe( FRUITS.length );\n\t\t} );\n\t} );\n\n\tdescribe( 'when interacting with the dropdown', function () {\n\n\t\tit( 'shows a dropdown menu when select is clicked', function () {\n\n\t\t\tconst wrapper = VueTestUtils.mount( Select, {\n\t\t\t\tpropsData: {\n\t\t\t\t\tname: 'fruits',\n\t\t\t\t\tlabel: 'select a fruit',\n\t\t\t\t\titems: FRUITS\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\twrapper.find( '.sd-select__content' ).trigger( 'click' );\n\n\t\t\texpect( wrapper.vm.showMenu ).toBe( true );\n\t\t} );\n\n\t\tit( 'shows a dropdown menu when enter is pressed on the select element', function () {\n\n\t\t\tconst wrapper = VueTestUtils.mount( Select, {\n\t\t\t\tpropsData: {\n\t\t\t\t\tname: 'fruits',\n\t\t\t\t\tlabel: 'select a fruit',\n\t\t\t\t\titems: FRUITS\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\twrapper.find( '.sd-select__content' ).trigger( 'keyup.enter' );\n\n\t\t\texpect( wrapper.vm.showMenu ).toBe( true );\n\t\t} );\n\n\t\tit( 'it has no active item if none has been defined', function () {\n\n\t\t\tconst wrapper = VueTestUtils.mount( Select, {\n\t\t\t\tpropsData: {\n\t\t\t\t\tname: 'fruits',\n\t\t\t\t\tlabel: 'select a fruit',\n\t\t\t\t\titems: FRUITS\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\twrapper.find( '.sd-select__content' ).trigger( 'click' );\n\n\t\t\texpect( wrapper.vm.activeItemIndex ).toBe( -1 );\n\t\t} );\n\n\t\tit( 'it has active state preset to the provided value', function () {\n\n\t\t\tconst index = 2;\n\t\t\tconst wrapper = VueTestUtils.mount( Select, {\n\t\t\t\tpropsData: {\n\t\t\t\t\tname: 'fruits',\n\t\t\t\t\tlabel: 'select a fruit',\n\t\t\t\t\titems: FRUITS,\n\t\t\t\t\tinitialSelectedItemIndex: index\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\twrapper.find( '.sd-select__content' ).trigger( 'click' );\n\n\t\t\texpect( wrapper.vm.activeItemIndex ).toBe( index );\n\t\t} );\n\n\t\tit( 'it has selected value preset to the provided value', function () {\n\n\t\t\tconst index = 2;\n\t\t\tconst wrapper = VueTestUtils.mount( Select, {\n\t\t\t\tpropsData: {\n\t\t\t\t\tname: 'fruits',\n\t\t\t\t\tlabel: 'select a fruit',\n\t\t\t\t\titems: FRUITS,\n\t\t\t\t\tinitialSelectedItemIndex: index\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\twrapper.find( '.sd-select__content' ).trigger( 'click' );\n\n\t\t\texpect( wrapper.vm.selectedItemIndex ).toBe( index );\n\t\t} );\n\n\t\tit( 'it closes the menu when a value is selected', function () {\n\n\t\t\tconst selectionId = 1;\n\t\t\tconst wrapper = VueTestUtils.mount( Select, {\n\t\t\t\tpropsData: {\n\t\t\t\t\tname: 'fruits',\n\t\t\t\t\tlabel: 'select a fruit',\n\t\t\t\t\titems: FRUITS\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\twrapper.find( '.sd-select__content' ).trigger( 'click' );\n\t\t\texpect( wrapper.vm.showMenu ).toBe( true );\n\n\t\t\t// we are triggering the method directly, to avoid \"cross testing\"\n\t\t\t// of nested components\n\t\t\twrapper.vm.onSelect( selectionId, FRUITS[ selectionId ] );\n\t\t\texpect( wrapper.vm.showMenu ).toBe( false );\n\t\t} );\n\n\t\tit( 'it closes the menu on blur', function () {\n\n\t\t\tconst wrapper = VueTestUtils.mount( Select, {\n\t\t\t\tpropsData: {\n\t\t\t\t\tname: 'fruits',\n\t\t\t\t\tlabel: 'select a fruit',\n\t\t\t\t\titems: FRUITS\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\twrapper.find( '.sd-select__content' ).trigger( 'click' );\n\t\t\texpect( wrapper.vm.showMenu ).toBe( true );\n\n\t\t\twrapper.find( '.sd-select__content' ).trigger( 'blur' );\n\t\t\texpect( wrapper.vm.showMenu ).toBe( false );\n\t\t} );\n\n\t\tit( 'it emit a \"select\" message when an item is clicked', function () {\n\n\t\t\tconst selectionId = 1;\n\t\t\tconst wrapper = VueTestUtils.mount( Select, {\n\t\t\t\tpropsData: {\n\t\t\t\t\tname: 'fruits',\n\t\t\t\t\tlabel: 'select a fruit',\n\t\t\t\t\titems: FRUITS\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t// we are triggering the method directly, to avoid \"cross testing\"\n\t\t\t// of nested components\n\t\t\twrapper.vm.onSelect( selectionId, FRUITS[ selectionId ] );\n\n\t\t\tconst expectedEmittedValue = FRUITS[ selectionId ].value;\n\t\t\texpect( wrapper.emitted().select[ 0 ][ 0 ] ).toBe( expectedEmittedValue );\n\t\t} );\n\n\t\tit( 'it set active state to selected index when reopening menu with click', function () {\n\n\t\t\tconst selectionId = 2;\n\t\t\tconst wrapper = VueTestUtils.mount( Select, {\n\t\t\t\tpropsData: {\n\t\t\t\t\tname: 'fruits',\n\t\t\t\t\tlabel: 'select a fruit',\n\t\t\t\t\titems: FRUITS,\n\t\t\t\t\tinitialSelectedItemIndex: selectionId\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t// we are triggering the method directly, to avoid \"cross testing\"\n\t\t\t// of nested components\n\t\t\tconst newSelectionId = 1;\n\t\t\twrapper.vm.onSelect( newSelectionId, FRUITS[ newSelectionId ] );\n\n\t\t\t// open the menu again\n\t\t\twrapper.find( '.sd-select__content' ).trigger( 'click' );\n\n\t\t\texpect( wrapper.vm.activeItemIndex ).toBe( newSelectionId );\n\t\t} );\n\n\t\tit( 'it set active state to selected index when reopening menu with enter', function () {\n\n\t\t\tconst selectionId = 2;\n\t\t\tconst wrapper = VueTestUtils.mount( Select, {\n\t\t\t\tpropsData: {\n\t\t\t\t\tname: 'fruits',\n\t\t\t\t\tlabel: 'select a fruit',\n\t\t\t\t\titems: FRUITS,\n\t\t\t\t\tinitialSelectedItemIndex: selectionId\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t// we are triggering the method directly, to avoid \"cross testing\"\n\t\t\t// of nested components\n\t\t\tconst newSelectionId = 1;\n\t\t\twrapper.vm.onSelect( newSelectionId, FRUITS[ newSelectionId ] );\n\n\t\t\t// open the menu again\n\t\t\twrapper.find( '.sd-select__content' ).trigger( 'keyup.enter' );\n\n\t\t\texpect( wrapper.vm.activeItemIndex ).toBe( newSelectionId );\n\n\t\t} );\n\n\t\tit( 'it default active state to the selected when menu is reopened', function () {\n\n\t\t\tconst initialSelectionIndex = 2;\n\t\t\tconst wrapper = VueTestUtils.mount( Select, {\n\t\t\t\tpropsData: {\n\t\t\t\t\tname: 'fruits',\n\t\t\t\t\tlabel: 'select a fruit',\n\t\t\t\t\titems: FRUITS,\n\t\t\t\t\tinitialSelectedItemIndex: initialSelectionIndex\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t// emulate hovering out of the menu, by setting active to an non existing value\n\t\t\tconst newSelectionId = -1;\n\t\t\twrapper.vm.onActiveItemChange( newSelectionId );\n\n\t\t\t// open the menu again\n\t\t\twrapper.find( '.sd-select__content' ).trigger( 'click' );\n\n\t\t\texpect( wrapper.vm.activeItemIndex ).toBe( initialSelectionIndex );\n\n\t\t} );\n\n\t\tit( 'it toggle menu off when activeItemIndex is empty and showMenu is true', function () {\n\n\t\t\tconst initialSelectionIndex = -1;\n\t\t\tconst wrapper = VueTestUtils.shallowMount( Select, {\n\t\t\t\tpropsData: {\n\t\t\t\t\tname: 'fruits',\n\t\t\t\t\tlabel: 'select a fruit',\n\t\t\t\t\titems: FRUITS,\n\t\t\t\t\tinitialSelectedItemIndex: initialSelectionIndex\n\t\t\t\t},\n\t\t\t\tdata: function () {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tshowMenu: true\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tconst mockToggleMenu = jest.spyOn( wrapper.vm, 'toggleMenu' );\n\t\t\tmockToggleMenu.mockImplementation( function () {\n\t\t\t\treturn jest.fn();\n\t\t\t} );\n\n\t\t\tconst element = wrapper.find( '.sd-select__content' );\n\n\t\t\telement.trigger( 'keyup.enter' );\n\n\t\t\texpect( mockToggleMenu ).toHaveBeenCalled();\n\n\t\t} );\n\n\t\tit( 'emits \"select\" when activeItemIndex is empty and showMenu is true', function ( done ) {\n\n\t\t\tconst initialSelectionIndex = 2;\n\t\t\tconst wrapper = VueTestUtils.shallowMount( Select, {\n\t\t\t\tpropsData: {\n\t\t\t\t\tname: 'fruits',\n\t\t\t\t\tlabel: 'select a fruit',\n\t\t\t\t\titems: FRUITS,\n\t\t\t\t\tinitialSelectedItemIndex: initialSelectionIndex\n\t\t\t\t},\n\t\t\t\tdata: function () {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tshowMenu: true\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t} );\n\t\t\tconst element = wrapper.find( '.sd-select__content' );\n\n\t\t\telement.trigger( 'keyup.enter' );\n\n\t\t\tVue.nextTick().then( function () {\n\t\t\t\texpect( wrapper.emitted().select ).toHaveLength( 1 );\n\t\t\t\tdone();\n\t\t\t} );\n\n\t\t} );\n\n\t} );\n\n} );\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/jest/components/base/selectMenu.test.js","messages":[{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":1,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":16,"endColumn":23},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":24,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":24,"endColumn":32},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":25,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":32,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":41,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":41,"endColumn":32},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":42,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":42,"endColumn":24},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":43,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":50,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":63,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":63,"endColumn":32},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":64,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":64,"endColumn":67},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":65,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":72,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":85,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":85,"endColumn":32},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":86,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":93,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":100,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":100,"endColumn":32},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":101,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":115,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":116,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":123,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":145,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":145,"endColumn":32},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":146,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":151,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":152,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":159,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":166,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":166,"endColumn":32},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":167,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":173,"endColumn":8}],"suppressedMessages":[],"errorCount":19,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"const VueTestUtils = require( '@vue/test-utils' ),\n\tSelectMenu = require( '../../../../resources/components/base/SelectMenu.vue' ),\n\tFRUITS = [ {\n\t\tlabel: 'Apple',\n\t\tvalue: 'apple'\n\t}, {\n\t\tlabel: 'Banana',\n\t\tvalue: 'banana'\n\t}, {\n\t\tlabel: 'Pear',\n\t\tvalue: 'pear'\n\t}, {\n\t\tlabel: 'Strawberry',\n\t\tvalue: 'strawberry'\n\t} ],\n\tLISTBOXID = 'fruits';\n\ndescribe( 'SelectMenu', function () {\n\n\tdescribe( 'onMousedown', function () {\n\n\t\tit( 'if item is currently selected, no event emitted', function () {\n\n\t\t\tconst selectedItemIndex = 0;\n\t\t\tconst wrapper = VueTestUtils.mount( SelectMenu, {\n\t\t\t\tpropsData: {\n\t\t\t\t\tlistboxId: LISTBOXID,\n\t\t\t\t\tlabelledBy: 'select a fruit',\n\t\t\t\t\titems: FRUITS,\n\t\t\t\t\tselectedItemIndex: selectedItemIndex\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\twrapper.find( '#' + LISTBOXID + '-item-' + selectedItemIndex ).trigger( 'mousedown' );\n\n\t\t\texpect( wrapper.emitted().select ).toBeUndefined();\n\t\t} );\n\n\t\tit( 'if item is not currently selected emit select event with formatted items', function () {\n\n\t\t\tconst selectedItemIndex = 1;\n\t\t\tconst itemIndex = 0;\n\t\t\tconst wrapper = VueTestUtils.mount( SelectMenu, {\n\t\t\t\tpropsData: {\n\t\t\t\t\tlistboxId: LISTBOXID,\n\t\t\t\t\tlabelledBy: 'select a fruit',\n\t\t\t\t\titems: FRUITS,\n\t\t\t\t\tselectedItemIndex: selectedItemIndex\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\twrapper.find( '#' + LISTBOXID + '-item-' + itemIndex ).trigger( 'mousedown' );\n\n\t\t\texpect( wrapper.emitted().select[ 0 ][ 0 ] ).toBe( itemIndex, FRUITS[ itemIndex ] );\n\t\t} );\n\n\t} );\n\n\tdescribe( 'getFormattedItems', function () {\n\n\t\tit( 'if item is array of strings, set items as formatted array of object', function () {\n\n\t\t\tconst selectedItemIndex = 0;\n\t\t\tconst fruitItems = [ 'apple', 'banana', 'pear', 'strawberry' ];\n\t\t\tconst wrapper = VueTestUtils.mount( SelectMenu, {\n\t\t\t\tpropsData: {\n\t\t\t\t\tlistboxId: LISTBOXID,\n\t\t\t\t\tlabelledBy: 'select a fruit',\n\t\t\t\t\titems: fruitItems,\n\t\t\t\t\tselectedItemIndex: selectedItemIndex\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\texpect( wrapper.vm.formattedItems ).toMatchObject( FRUITS.map( function ( item ) {\n\t\t\t\treturn {\n\t\t\t\t\tlabel: item.label.toLowerCase(),\n\t\t\t\t\tvalue: item.value\n\t\t\t\t};\n\t\t\t} ) );\n\n\t\t} );\n\n\t\tit( 'if item is array of valid objects (label, value), set items as formatted array of object', function () {\n\n\t\t\tconst selectedItemIndex = 0;\n\t\t\tconst wrapper = VueTestUtils.mount( SelectMenu, {\n\t\t\t\tpropsData: {\n\t\t\t\t\tlistboxId: LISTBOXID,\n\t\t\t\t\tlabelledBy: 'select a fruit',\n\t\t\t\t\titems: FRUITS,\n\t\t\t\t\tselectedItemIndex: selectedItemIndex\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\texpect( wrapper.vm.formattedItems ).toMatchObject( FRUITS );\n\t\t} );\n\n\t\tit( 'if item is array of some invalid objects (label, value), set items as formatted array of object', function () {\n\n\t\t\tconst selectedItemIndex = 0;\n\t\t\tconst fruitItems = [ {\n\t\t\t\tlabel: 'Apple',\n\t\t\t\tvalue: 'apple'\n\t\t\t}, {\n\t\t\t\tlabel: 'Banana',\n\t\t\t\tvalue: 'banana'\n\t\t\t}, {\n\t\t\t\tlabel: ''\n\t\t\t}, {\n\t\t\t\tlabel: 'Pear',\n\t\t\t\tvalue: 'pear'\n\t\t\t}, {\n\t\t\t\tlabel: 'Strawberry',\n\t\t\t\tvalue: 'strawberry'\n\t\t\t} ];\n\t\t\tconst wrapper = VueTestUtils.mount( SelectMenu, {\n\t\t\t\tpropsData: {\n\t\t\t\t\tlistboxId: LISTBOXID,\n\t\t\t\t\tlabelledBy: 'select a fruit',\n\t\t\t\t\titems: fruitItems,\n\t\t\t\t\tselectedItemIndex: selectedItemIndex\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\texpect( wrapper.vm.formattedItems ).toMatchObject( [ {\n\t\t\t\tlabel: 'Apple',\n\t\t\t\tvalue: 'apple'\n\t\t\t}, {\n\t\t\t\tlabel: 'Banana',\n\t\t\t\tvalue: 'banana'\n\t\t\t},\n\t\t\tfalse,\n\t\t\t{\n\t\t\t\tlabel: 'Pear',\n\t\t\t\tvalue: 'pear'\n\t\t\t}, {\n\t\t\t\tlabel: 'Strawberry',\n\t\t\t\tvalue: 'strawberry'\n\t\t\t}\n\t\t\t] );\n\t\t} );\n\n\t\tit( 'if item is an object, set items as formatted array of object', function () {\n\n\t\t\tconst selectedItemIndex = 0;\n\t\t\tconst fruitItems = {\n\t\t\t\tapple: 'Apple',\n\t\t\t\tbanana: 'Banana',\n\t\t\t\tpear: 'Pear',\n\t\t\t\tstrawberry: 'Strawberry'\n\t\t\t};\n\t\t\tconst wrapper = VueTestUtils.mount( SelectMenu, {\n\t\t\t\tpropsData: {\n\t\t\t\t\tlistboxId: LISTBOXID,\n\t\t\t\t\tlabelledBy: 'select a fruit',\n\t\t\t\t\titems: fruitItems,\n\t\t\t\t\tselectedItemIndex: selectedItemIndex\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\texpect( wrapper.vm.formattedItems ).toMatchObject( FRUITS );\n\t\t} );\n\n\t\tit( 'if item is not passed, , set items as empty array', function () {\n\n\t\t\tconst selectedItemIndex = 0;\n\t\t\tconst wrapper = VueTestUtils.mount( SelectMenu, {\n\t\t\t\tpropsData: {\n\t\t\t\t\tlistboxId: LISTBOXID,\n\t\t\t\t\tlabelledBy: 'select a fruit',\n\t\t\t\t\tselectedItemIndex: selectedItemIndex\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\texpect( wrapper.vm.formattedItems ).toMatchObject( [] );\n\t\t} );\n\n\t} );\n\n} );\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/jest/components/results/ImageResult.test.js","messages":[{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":1,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":1,"endColumn":51},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":2,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":2,"endColumn":30},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":3,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":3,"endColumn":91},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":4,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":4,"endColumn":85},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":5,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":5,"endColumn":42},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":9,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":9,"endColumn":95},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":10,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":10,"endColumn":54},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":11,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":11,"endColumn":104},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":12,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":12,"endColumn":62},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":14,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":20,"endColumn":3},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":31,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":40,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":46,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":55,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":57,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":57,"endColumn":57},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":62,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":71,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":78,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":87,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":97,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":106,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":107,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":107,"endColumn":36},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":112,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":121,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":131,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":140,"endColumn":7}],"suppressedMessages":[],"errorCount":19,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"const VueTestUtils = require( '@vue/test-utils' );\nconst Vue = require( 'vue' );\nconst ImageResult = require( '../../../../resources/components/results/ImageResult.vue' );\nconst ImageComponent = require( '../../../../resources/components/base/Image.vue' );\nconst when = require( 'jest-when' ).when;\n\n// grab a random image result from the set\n// Note: results are stored as key/value pairs based on pageid, not a straight array\nconst sampleResults = require( '../../fixtures/mockImageSearchApiResponse.json' ).query.pages;\nconst sampleResultIDs = Object.keys( sampleResults );\nconst randomlyChosenResultID = sampleResultIDs[ Math.floor( Math.random() * sampleResultIDs.length ) ];\nconst sampleResult = sampleResults[ randomlyChosenResultID ];\n\nconst thumbLimits = [\n\t120, 150, 180, 200,\n\t220, 225, 240, 250,\n\t270, 300, 330, 360,\n\t375, 400, 440, 450,\n\t500, 600, 800\n];\n\ndescribe( 'ImageResult', function () {\n\tbeforeEach( function () {\n\t\t// Mock some pre-defined thumbnail values or else this component doesn't work\n\t\twhen( global.mw.config.get )\n\t\t\t.calledWith( 'sdmsThumbLimits' )\n\t\t\t.mockReturnValue( thumbLimits );\n\t} );\n\n\tit( 'Renders successfully', function () {\n\t\tconst wrapper = VueTestUtils.mount( ImageResult, {\n\t\t\tprops: {\n\t\t\t\ttitle: sampleResult.title,\n\t\t\t\tcanonicalurl: sampleResult.canonicalurl,\n\t\t\t\timageinfo: sampleResult.imageinfo,\n\t\t\t\tindex: sampleResult.index,\n\t\t\t\tname: sampleResult.name,\n\t\t\t\tentityterms: sampleResult.entityterms\n\t\t\t}\n\t\t} );\n\n\t\texpect( wrapper.html().length ).toBeGreaterThan( 0 );\n\t} );\n\n\tit( 'contains an Image component', function () {\n\t\tconst wrapper = VueTestUtils.shallowMount( ImageResult, {\n\t\t\tprops: {\n\t\t\t\ttitle: sampleResult.title,\n\t\t\t\tcanonicalurl: sampleResult.canonicalurl,\n\t\t\t\timageinfo: sampleResult.imageinfo,\n\t\t\t\tindex: sampleResult.index,\n\t\t\t\tname: sampleResult.name,\n\t\t\t\tentityterms: sampleResult.entityterms\n\t\t\t}\n\t\t} );\n\n\t\tconst Image = wrapper.findComponent( ImageComponent );\n\t\texpect( Image.exists() ).toBe( true );\n\t} );\n\n\tit( 'calculates its own \"width\" style rule based on result thumbnail dimensions', function () {\n\t\tconst wrapper = VueTestUtils.shallowMount( ImageResult, {\n\t\t\tprops: {\n\t\t\t\ttitle: sampleResult.title,\n\t\t\t\tcanonicalurl: sampleResult.canonicalurl,\n\t\t\t\timageinfo: sampleResult.imageinfo,\n\t\t\t\tindex: sampleResult.index,\n\t\t\t\tname: sampleResult.name,\n\t\t\t\tentityterms: sampleResult.entityterms\n\t\t\t}\n\t\t} );\n\t\texpect( wrapper.vm.style ).toHaveProperty( 'width' );\n\t\texpect( parseInt( wrapper.vm.style.width ) ).toBeGreaterThanOrEqual( 60 );\n\t\texpect( parseInt( wrapper.vm.style.width ) ).not.toBeGreaterThan( 350 );\n\t} );\n\n\tit( 'applies a portrait class if the aspect ratio is greater than one', function () {\n\t\tconst wrapper = VueTestUtils.shallowMount( ImageResult, {\n\t\t\tprops: {\n\t\t\t\ttitle: sampleResult.title,\n\t\t\t\tcanonicalurl: sampleResult.canonicalurl,\n\t\t\t\timageinfo: sampleResult.imageinfo,\n\t\t\t\tindex: sampleResult.index,\n\t\t\t\tname: sampleResult.name,\n\t\t\t\tentityterms: sampleResult.entityterms\n\t\t\t}\n\t\t} );\n\n\t\tif ( wrapper.vm.aspectRatio < 1 ) {\n\t\t\texpect( wrapper.classes() ).toContain( 'sdms-image-result--portrait' );\n\t\t} else {\n\t\t\texpect( wrapper.classes() ).not.toContain( 'sdms-image-result--portrait' );\n\t\t}\n\t} );\n\n\tit( 'contains a link element', function () {\n\t\tconst wrapper = VueTestUtils.shallowMount( ImageResult, {\n\t\t\tprops: {\n\t\t\t\ttitle: sampleResult.title,\n\t\t\t\tcanonicalurl: sampleResult.canonicalurl,\n\t\t\t\timageinfo: sampleResult.imageinfo,\n\t\t\t\tindex: sampleResult.index,\n\t\t\t\tname: sampleResult.name,\n\t\t\t\tentityterms: sampleResult.entityterms\n\t\t\t}\n\t\t} );\n\t\tconst link = wrapper.find( 'a' );\n\t\texpect( link.exists() ).toBe( true );\n\t} );\n\n\tit( 'clicking the link element causes a \"show-details\" event to be fired', function ( done ) {\n\t\tconst wrapper = VueTestUtils.shallowMount( ImageResult, {\n\t\t\tprops: {\n\t\t\t\ttitle: sampleResult.title,\n\t\t\t\tcanonicalurl: sampleResult.canonicalurl,\n\t\t\t\timageinfo: sampleResult.imageinfo,\n\t\t\t\tindex: sampleResult.index,\n\t\t\t\tname: sampleResult.name,\n\t\t\t\tentityterms: sampleResult.entityterms\n\t\t\t}\n\t\t} );\n\n\t\twrapper.find( 'a' ).trigger( 'click' );\n\t\tVue.nextTick().then( function () {\n\t\t\texpect( wrapper.emitted()[ 'show-details' ] ).toHaveLength( 1 );\n\t\t\tdone();\n\t\t} );\n\t} );\n\n\tit( 'the \"show-details\" event includes the result title in its payload', function ( done ) {\n\t\tconst wrapper = VueTestUtils.shallowMount( ImageResult, {\n\t\t\tprops: {\n\t\t\t\ttitle: sampleResult.title,\n\t\t\t\tcanonicalurl: sampleResult.canonicalurl,\n\t\t\t\timageinfo: sampleResult.imageinfo,\n\t\t\t\tindex: sampleResult.index,\n\t\t\t\tname: sampleResult.name,\n\t\t\t\tentityterms: sampleResult.entityterms\n\t\t\t}\n\t\t} );\n\n\t\twrapper.find( 'a' ).trigger( 'click' );\n\t\tVue.nextTick().then( function () {\n\t\t\texpect( wrapper.emitted()[ 'show-details' ][ 0 ][ 0 ] ).toBe( sampleResult.title );\n\t\t\tdone();\n\t\t} );\n\t} );\n} );\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/jest/components/results/audioResult.test.js","messages":[{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":1,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":1,"endColumn":51},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":2,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":2,"endColumn":30},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":3,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":3,"endColumn":91},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":4,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":4,"endColumn":42},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":8,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":8,"endColumn":95},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":9,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":9,"endColumn":54},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":10,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":10,"endColumn":104},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":11,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":11,"endColumn":62},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":13,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":19,"endColumn":3},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":30,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":39,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":41,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":41,"endColumn":56},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":46,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":55,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":56,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":56,"endColumn":80},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":61,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":70,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":71,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":71,"endColumn":66},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":76,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":85,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":86,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":86,"endColumn":36},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":91,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":100,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":110,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":119,"endColumn":7}],"suppressedMessages":[],"errorCount":19,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"const VueTestUtils = require( '@vue/test-utils' );\nconst Vue = require( 'vue' );\nconst AudioResult = require( '../../../../resources/components/results/AudioResult.vue' );\nconst when = require( 'jest-when' ).when;\n\n// grab a random image result from the set\n// Note: results are stored as key/value pairs based on title, not a straight array\nconst sampleResults = require( '../../fixtures/mockAudioSearchApiResponse.json' ).query.pages;\nconst sampleResultIDs = Object.keys( sampleResults );\nconst randomlyChosenResultID = sampleResultIDs[ Math.floor( Math.random() * sampleResultIDs.length ) ];\nconst sampleResult = sampleResults[ randomlyChosenResultID ];\n\nconst thumbLimits = [\n\t120, 150, 180, 200,\n\t220, 225, 240, 250,\n\t270, 300, 330, 360,\n\t375, 400, 440, 450,\n\t500, 600, 800\n];\n\ndescribe( 'AudioResult', function () {\n\tbeforeEach( function () {\n\t\t// Mock some pre-defined thumbnail values or else this component doesn't work\n\t\twhen( global.mw.config.get )\n\t\t\t.calledWith( 'sdmsThumbLimits' )\n\t\t\t.mockReturnValue( thumbLimits );\n\t} );\n\n\tit( 'Renders successfully', function () {\n\t\tconst wrapper = VueTestUtils.mount( AudioResult, {\n\t\t\tprops: {\n\t\t\t\ttitle: sampleResult.title,\n\t\t\t\tcanonicalurl: sampleResult.canonicalurl,\n\t\t\t\timageinfo: sampleResult.imageinfo,\n\t\t\t\tindex: sampleResult.index,\n\t\t\t\tname: sampleResult.name,\n\t\t\t\tentityterms: sampleResult.entityterms\n\t\t\t}\n\t\t} );\n\n\t\tconst element = wrapper.find( '.sdms-audio-result' );\n\t\texpect( element.exists() ).toBe( true );\n\t} );\n\n\tit( 'contains an element displaying a formattedDuration', function () {\n\t\tconst wrapper = VueTestUtils.shallowMount( AudioResult, {\n\t\t\tpropsData: {\n\t\t\t\ttitle: sampleResult.title,\n\t\t\t\tcanonicalurl: sampleResult.canonicalurl,\n\t\t\t\timageinfo: sampleResult.imageinfo,\n\t\t\t\tindex: sampleResult.index,\n\t\t\t\tname: sampleResult.name,\n\t\t\t\tentityterms: sampleResult.entityterms\n\t\t\t}\n\t\t} );\n\t\tconst durationElement = wrapper.find( '.sdms-audio-result__duration__text' );\n\t\texpect( durationElement.exists() ).toBe( true );\n\t} );\n\n\tit( 'contains an element containing a mime type', function () {\n\t\tconst wrapper = VueTestUtils.shallowMount( AudioResult, {\n\t\t\tpropsData: {\n\t\t\t\ttitle: sampleResult.title,\n\t\t\t\tcanonicalurl: sampleResult.canonicalurl,\n\t\t\t\timageinfo: sampleResult.imageinfo,\n\t\t\t\tindex: sampleResult.index,\n\t\t\t\tname: sampleResult.name,\n\t\t\t\tentityterms: sampleResult.entityterms\n\t\t\t}\n\t\t} );\n\t\tconst mimeElement = wrapper.find( '.sdms-audio-result__mime' );\n\t\texpect( mimeElement.exists() ).toBe( true );\n\t} );\n\n\tit( 'contains a link element', function () {\n\t\tconst wrapper = VueTestUtils.shallowMount( AudioResult, {\n\t\t\tpropsData: {\n\t\t\t\ttitle: sampleResult.title,\n\t\t\t\tcanonicalurl: sampleResult.canonicalurl,\n\t\t\t\timageinfo: sampleResult.imageinfo,\n\t\t\t\tindex: sampleResult.index,\n\t\t\t\tname: sampleResult.name,\n\t\t\t\tentityterms: sampleResult.entityterms\n\t\t\t}\n\t\t} );\n\t\tconst link = wrapper.find( 'a' );\n\t\texpect( link.exists() ).toBe( true );\n\t} );\n\n\tit( 'clicking the link element causes a \"show-details\" event to be fired', function ( done ) {\n\t\tconst wrapper = VueTestUtils.shallowMount( AudioResult, {\n\t\t\tpropsData: {\n\t\t\t\ttitle: sampleResult.title,\n\t\t\t\tcanonicalurl: sampleResult.canonicalurl,\n\t\t\t\timageinfo: sampleResult.imageinfo,\n\t\t\t\tindex: sampleResult.index,\n\t\t\t\tname: sampleResult.name,\n\t\t\t\tentityterms: sampleResult.entityterms\n\t\t\t}\n\t\t} );\n\n\t\twrapper.find( 'a' ).trigger( 'click' );\n\t\tVue.nextTick().then( function () {\n\t\t\texpect( wrapper.emitted()[ 'show-details' ] ).toHaveLength( 1 );\n\t\t\tdone();\n\t\t} );\n\t} );\n\n\tit( 'the \"show-details\" event includes the result title in its payload', function ( done ) {\n\t\tconst wrapper = VueTestUtils.shallowMount( AudioResult, {\n\t\t\tpropsData: {\n\t\t\t\ttitle: sampleResult.title,\n\t\t\t\tcanonicalurl: sampleResult.canonicalurl,\n\t\t\t\timageinfo: sampleResult.imageinfo,\n\t\t\t\tindex: sampleResult.index,\n\t\t\t\tname: sampleResult.name,\n\t\t\t\tentityterms: sampleResult.entityterms\n\t\t\t}\n\t\t} );\n\n\t\twrapper.find( 'a' ).trigger( 'click' );\n\t\tVue.nextTick().then( function () {\n\t\t\texpect( wrapper.emitted()[ 'show-details' ][ 0 ][ 0 ] ).toBe( sampleResult.title );\n\t\t\tdone();\n\t\t} );\n\t} );\n} );\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/jest/components/results/otherResult.test.js","messages":[{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":1,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":1,"endColumn":51},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":2,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":2,"endColumn":91},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":3,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":3,"endColumn":78},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":4,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":4,"endColumn":42},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":8,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":8,"endColumn":95},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":9,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":9,"endColumn":54},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":10,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":10,"endColumn":104},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":11,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":11,"endColumn":62},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":13,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":19,"endColumn":3},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":30,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":37,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":39,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":39,"endColumn":56},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":44,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":51,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":53,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":53,"endColumn":47},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":58,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":65,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":66,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":66,"endColumn":61},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":71,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":78,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":84,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":91,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":92,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":92,"endColumn":48},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":97,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":104,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":111,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":118,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":120,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":120,"endColumn":67},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":125,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":132,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":134,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":134,"endColumn":68},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":139,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":146,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":148,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":148,"endColumn":67}],"suppressedMessages":[],"errorCount":25,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"const VueTestUtils = require( '@vue/test-utils' );\nconst OtherResult = require( '../../../../resources/components/results/OtherResult.vue' );\nconst SdImage = require( '../../../../resources/components/base/Image.vue' );\nconst when = require( 'jest-when' ).when;\n\n// grab a random image result from the set\n// Note: results are stored as key/value pairs based on title, not a straight array\nconst sampleResults = require( '../../fixtures/mockOtherSearchApiResponse.json' ).query.pages;\nconst sampleResultIDs = Object.keys( sampleResults );\nconst randomlyChosenResultID = sampleResultIDs[ Math.floor( Math.random() * sampleResultIDs.length ) ];\nconst sampleResult = sampleResults[ randomlyChosenResultID ];\n\nconst thumbLimits = [\n\t120, 150, 180, 200,\n\t220, 225, 240, 250,\n\t270, 300, 330, 360,\n\t375, 400, 440, 450,\n\t500, 600, 800\n];\n\ndescribe( 'OtherResult', function () {\n\tbeforeEach( function () {\n\t\t// Mock some pre-defined thumbnail values or else this component doesn't work\n\t\twhen( global.mw.config.get )\n\t\t\t.calledWith( 'sdmsThumbLimits' )\n\t\t\t.mockReturnValue( thumbLimits );\n\t} );\n\n\tit( 'Renders successfully', function () {\n\t\tconst wrapper = VueTestUtils.mount( OtherResult, {\n\t\t\tprops: {\n\t\t\t\ttitle: sampleResult.title,\n\t\t\t\tindex: sampleResult.index,\n\t\t\t\tcanonicalurl: sampleResult.canonicalurl,\n\t\t\t\timageinfo: sampleResult.imageinfo\n\t\t\t}\n\t\t} );\n\n\t\tconst element = wrapper.find( '.sdms-other-result' );\n\t\texpect( element.exists() ).toBe( true );\n\t} );\n\n\tit( 'renders two link elements', function () {\n\t\tconst wrapper = VueTestUtils.shallowMount( OtherResult, {\n\t\t\tprops: {\n\t\t\t\ttitle: sampleResult.title,\n\t\t\t\tindex: sampleResult.index,\n\t\t\t\tcanonicalurl: sampleResult.canonicalurl,\n\t\t\t\timageinfo: sampleResult.imageinfo\n\t\t\t}\n\t\t} );\n\n\t\tconst linkElements = wrapper.findAll( 'a' );\n\t\texpect( linkElements.length ).toBe( 2 );\n\t} );\n\n\tit( 'renders a sdms-image component', function () {\n\t\tconst wrapper = VueTestUtils.shallowMount( OtherResult, {\n\t\t\tprops: {\n\t\t\t\ttitle: sampleResult.title,\n\t\t\t\tindex: sampleResult.index,\n\t\t\t\tcanonicalurl: sampleResult.canonicalurl,\n\t\t\t\timageinfo: sampleResult.imageinfo\n\t\t\t}\n\t\t} );\n\t\tconst sdImageComponent = wrapper.findComponent( SdImage );\n\t\texpect( sdImageComponent.exists() ).toBe( true );\n\t} );\n\n\tit( 'clicking the thumbnail wrapper link element causes a \"click\" event to be fired', function () {\n\t\tconst wrapper = VueTestUtils.shallowMount( OtherResult, {\n\t\t\tprops: {\n\t\t\t\ttitle: sampleResult.title,\n\t\t\t\tindex: sampleResult.index,\n\t\t\t\tcanonicalurl: sampleResult.canonicalurl,\n\t\t\t\timageinfo: sampleResult.imageinfo\n\t\t\t}\n\t\t} );\n\t\twrapper.find( '.sdms-other-result__thumbnail-wrapper' ).trigger( 'click' );\n\t\texpect( wrapper.emitted().click ).toHaveLength( 1 );\n\t} );\n\n\tit( 'renders an heading element', function () {\n\t\tconst wrapper = VueTestUtils.shallowMount( OtherResult, {\n\t\t\tprops: {\n\t\t\t\ttitle: sampleResult.title,\n\t\t\t\tindex: sampleResult.index,\n\t\t\t\tcanonicalurl: sampleResult.canonicalurl,\n\t\t\t\timageinfo: sampleResult.imageinfo\n\t\t\t}\n\t\t} );\n\t\tconst headingElements = wrapper.find( 'h3' );\n\t\texpect( headingElements.exists() ).toBe( true );\n\t} );\n\n\tit( 'clicking the heading link element causes a \"click\" event to be fired', function () {\n\t\tconst wrapper = VueTestUtils.shallowMount( OtherResult, {\n\t\t\tprops: {\n\t\t\t\ttitle: sampleResult.title,\n\t\t\t\tindex: sampleResult.index,\n\t\t\t\tcanonicalurl: sampleResult.canonicalurl,\n\t\t\t\timageinfo: sampleResult.imageinfo\n\t\t\t}\n\t\t} );\n\n\t\twrapper.find( 'h3 a' ).trigger( 'click' );\n\t\texpect( wrapper.emitted().click ).toHaveLength( 1 );\n\t} );\n\n\tit( 'Contains the sample formatted extension', function () {\n\t\tconst wrapper = VueTestUtils.mount( OtherResult, {\n\t\t\tprops: {\n\t\t\t\ttitle: sampleResult.title,\n\t\t\t\tindex: sampleResult.index,\n\t\t\t\tcanonicalurl: sampleResult.canonicalurl,\n\t\t\t\timageinfo: sampleResult.imageinfo\n\t\t\t}\n\t\t} );\n\n\t\tconst element = wrapper.find( '.sdms-other-result__extension' );\n\t\texpect( element.exists() ).toBe( true );\n\t} );\n\n\tit( 'Contains the sample formatted resolution', function () {\n\t\tconst wrapper = VueTestUtils.mount( OtherResult, {\n\t\t\tprops: {\n\t\t\t\ttitle: sampleResult.title,\n\t\t\t\tindex: sampleResult.index,\n\t\t\t\tcanonicalurl: sampleResult.canonicalurl,\n\t\t\t\timageinfo: sampleResult.imageinfo\n\t\t\t}\n\t\t} );\n\n\t\tconst element = wrapper.find( '.sdms-other-result__resolution' );\n\t\texpect( element.exists() ).toBe( true );\n\t} );\n\n\tit( 'Contains the sample image size', function () {\n\t\tconst wrapper = VueTestUtils.mount( OtherResult, {\n\t\t\tprops: {\n\t\t\t\ttitle: sampleResult.title,\n\t\t\t\tindex: sampleResult.index,\n\t\t\t\tcanonicalurl: sampleResult.canonicalurl,\n\t\t\t\timageinfo: sampleResult.imageinfo\n\t\t\t}\n\t\t} );\n\n\t\tconst element = wrapper.find( '.sdms-other-result__imageSize' );\n\t\texpect( element.exists() ).toBe( true );\n\t} );\n} );\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/jest/components/results/pageResult.test.js","messages":[{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":1,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":1,"endColumn":51},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":2,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":2,"endColumn":89},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":3,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":3,"endColumn":42},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":7,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":7,"endColumn":94},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":8,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":8,"endColumn":54},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":9,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":9,"endColumn":104},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":10,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":10,"endColumn":62},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":13,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":13,"endColumn":190},{"ruleId":"max-statements-per-line","severity":2,"message":"This line has 2 statements. Maximum allowed is 1.","line":13,"column":83,"nodeType":"ReturnStatement","messageId":"exceed","endLine":13,"endColumn":185},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":14,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":14,"endColumn":152},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":15,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":15,"endColumn":94},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":17,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":23,"endColumn":3},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":34,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":41,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":43,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":43,"endColumn":55},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":48,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":54,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":55,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":55,"endColumn":76},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":61,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":61,"endColumn":64},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":62,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":69,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":70,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":70,"endColumn":59},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":75,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":82,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":83,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":83,"endColumn":82},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":88,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":95,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":96,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":96,"endColumn":65},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":101,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":108,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":109,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":109,"endColumn":75},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":114,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":120,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":121,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":121,"endColumn":36},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":126,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":132,"endColumn":7}],"suppressedMessages":[],"errorCount":28,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"const VueTestUtils = require( '@vue/test-utils' );\nconst PageResult = require( '../../../../resources/components/results/PageResult.vue' );\nconst when = require( 'jest-when' ).when;\n\n// grab a random image result from the set\n// Note: results are stored as key/value pairs based on pageid, not a straight array\nconst sampleResults = require( '../../fixtures/mockPageSearchApiResponse.json' ).query.pages;\nconst sampleResultIDs = Object.keys( sampleResults );\nconst randomlyChosenResultID = sampleResultIDs[ Math.floor( Math.random() * sampleResultIDs.length ) ];\nconst sampleResult = sampleResults[ randomlyChosenResultID ];\n\n// We create a list of ID that have the cateory info. this is used in some of the conditional render ofthe component\nconst sampleResultWithCategoryInfoIDs = sampleResultIDs.filter( function ( id ) { return sampleResults[ id ].categoryinfo && Object.keys( sampleResults[ id ].categoryinfo ).length > 0; } );\nconst randomlyChosenResultIDWithCategoryInfo = sampleResultWithCategoryInfoIDs[ Math.floor( Math.random() * sampleResultWithCategoryInfoIDs.length ) ];\nconst sampleResultWithCategoryInfo = sampleResults[ randomlyChosenResultIDWithCategoryInfo ];\n\nconst thumbLimits = [\n\t120, 150, 180, 200,\n\t220, 225, 240, 250,\n\t270, 300, 330, 360,\n\t375, 400, 440, 450,\n\t500, 600, 800\n];\n\ndescribe( 'PageResult', function () {\n\tbeforeEach( function () {\n\t\t// Mock some pre-defined thumbnail values or else this component doesn't work\n\t\twhen( global.mw.config.get )\n\t\t\t.calledWith( 'sdmsThumbLimits' )\n\t\t\t.mockReturnValue( thumbLimits );\n\t} );\n\n\tit( 'Renders successfully', function () {\n\t\tconst wrapper = VueTestUtils.mount( PageResult, {\n\t\t\tprops: {\n\t\t\t\ttitle: sampleResult.title,\n\t\t\t\tindex: sampleResult.index,\n\t\t\t\tcanonicalurl: sampleResult.canonicalurl\n\n\t\t\t}\n\t\t} );\n\n\t\tconst element = wrapper.find( '.sdms-page-result' );\n\t\texpect( element.exists() ).toBe( true );\n\t} );\n\n\tit( 'renders an heading with displayName', function () {\n\t\tconst wrapper = VueTestUtils.shallowMount( PageResult, {\n\t\t\tprops: {\n\t\t\t\ttitle: sampleResult.title,\n\t\t\t\tindex: sampleResult.index,\n\t\t\t\tcanonicalurl: sampleResult.canonicalurl\n\t\t\t}\n\t\t} );\n\t\tconst displayNameElement = wrapper.find( '.sdms-page-result__title h3' );\n\t\texpect( displayNameElement.exists() ).toBe( true );\n\t\texpect( displayNameElement.text() ).toContain( 'mock' ); // This is defined in the jest config\n\t} );\n\n\tit( 'renders a snippets as HTML', function () {\n\t\tconst dummyHtmlSnippet = '<div class=\"dummy_snippet\"></div>';\n\t\tconst wrapper = VueTestUtils.shallowMount( PageResult, {\n\t\t\tprops: {\n\t\t\t\ttitle: sampleResult.title,\n\t\t\t\tindex: sampleResult.index,\n\t\t\t\tcanonicalurl: sampleResult.canonicalurl,\n\t\t\t\tsnippet: dummyHtmlSnippet\n\t\t\t}\n\t\t} );\n\t\tconst snippetElement = wrapper.find( '.dummy_snippet' );\n\t\texpect( snippetElement.exists() ).toBe( true );\n\t} );\n\n\tit( 'renders category text when categoryInfo is available', function () {\n\t\tconst wrapper = VueTestUtils.shallowMount( PageResult, {\n\t\t\tprops: {\n\t\t\t\ttitle: sampleResultWithCategoryInfo.title,\n\t\t\t\tindex: sampleResultWithCategoryInfo.index,\n\t\t\t\tcanonicalurl: sampleResultWithCategoryInfo.canonicalurl,\n\t\t\t\tcategoryinfo: sampleResultWithCategoryInfo.categoryinfo\n\t\t\t}\n\t\t} );\n\t\tconst categoryInfoElement = wrapper.find( '.sdms-page-result__category-info' );\n\t\texpect( categoryInfoElement.exists() ).toBe( true );\n\t} );\n\n\tit( 'renders size text when value available', function () {\n\t\tconst wrapper = VueTestUtils.shallowMount( PageResult, {\n\t\t\tprops: {\n\t\t\t\ttitle: sampleResult.title,\n\t\t\t\tindex: sampleResult.index,\n\t\t\t\tcanonicalurl: sampleResult.canonicalurl,\n\t\t\t\tsize: sampleResult.size\n\t\t\t}\n\t\t} );\n\t\tconst sizeElement = wrapper.find( '.sdms-page-result__size' );\n\t\texpect( sizeElement.exists() ).toBe( true );\n\t} );\n\n\tit( 'renders wordcount text when value available', function () {\n\t\tconst wrapper = VueTestUtils.shallowMount( PageResult, {\n\t\t\tprops: {\n\t\t\t\ttitle: sampleResult.title,\n\t\t\t\tindex: sampleResult.index,\n\t\t\t\tcanonicalurl: sampleResult.canonicalurl,\n\t\t\t\twordcount: sampleResult.wordcount\n\t\t\t}\n\t\t} );\n\t\tconst wordcountElement = wrapper.find( '.sdms-page-result__wordcount' );\n\t\texpect( wordcountElement.exists() ).toBe( true );\n\t} );\n\n\tit( 'contains a link element', function () {\n\t\tconst wrapper = VueTestUtils.shallowMount( PageResult, {\n\t\t\tprops: {\n\t\t\t\ttitle: sampleResult.title,\n\t\t\t\tindex: sampleResult.index,\n\t\t\t\tcanonicalurl: sampleResult.canonicalurl\n\t\t\t}\n\t\t} );\n\t\tconst link = wrapper.find( 'a' );\n\t\texpect( link.exists() ).toBe( true );\n\t} );\n\n\tit( 'clicking the link element causes a \"click\" event to be fired', function () {\n\t\tconst wrapper = VueTestUtils.shallowMount( PageResult, {\n\t\t\tprops: {\n\t\t\t\ttitle: sampleResult.title,\n\t\t\t\tindex: sampleResult.index,\n\t\t\t\tcanonicalurl: sampleResult.canonicalurl\n\t\t\t}\n\t\t} );\n\n\t\twrapper.find( 'a' ).trigger( 'click' );\n\t\texpect( wrapper.emitted().click ).toHaveLength( 1 );\n\t} );\n} );\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/jest/components/results/videoResult.test.js","messages":[{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":1,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":1,"endColumn":51},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":2,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":2,"endColumn":30},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":3,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":3,"endColumn":91},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":4,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":4,"endColumn":42},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":8,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":8,"endColumn":95},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":9,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":9,"endColumn":54},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":10,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":10,"endColumn":104},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":11,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":11,"endColumn":62},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":13,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":19,"endColumn":3},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":30,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":39,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":41,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":41,"endColumn":56},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":46,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":55,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":56,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":56,"endColumn":80},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":61,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":70,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":71,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":71,"endColumn":72},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":76,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":85,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":86,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":86,"endColumn":66},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":91,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":100,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":101,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":101,"endColumn":36},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":106,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":115,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":125,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":134,"endColumn":7}],"suppressedMessages":[],"errorCount":21,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"const VueTestUtils = require( '@vue/test-utils' );\nconst Vue = require( 'vue' );\nconst VideoResult = require( '../../../../resources/components/results/VideoResult.vue' );\nconst when = require( 'jest-when' ).when;\n\n// grab a random image result from the set\n// Note: results are stored as key/value pairs based on title, not a straight array\nconst sampleResults = require( '../../fixtures/mockVideoSearchApiResponse.json' ).query.pages;\nconst sampleResultIDs = Object.keys( sampleResults );\nconst randomlyChosenResultID = sampleResultIDs[ Math.floor( Math.random() * sampleResultIDs.length ) ];\nconst sampleResult = sampleResults[ randomlyChosenResultID ];\n\nconst thumbLimits = [\n\t120, 150, 180, 200,\n\t220, 225, 240, 250,\n\t270, 300, 330, 360,\n\t375, 400, 440, 450,\n\t500, 600, 800\n];\n\ndescribe( 'VideoResult', function () {\n\tbeforeEach( function () {\n\t\t// Mock some pre-defined thumbnail values or else this component doesn't work\n\t\twhen( global.mw.config.get )\n\t\t\t.calledWith( 'sdmsThumbLimits' )\n\t\t\t.mockReturnValue( thumbLimits );\n\t} );\n\n\tit( 'Renders successfully', function () {\n\t\tconst wrapper = VueTestUtils.mount( VideoResult, {\n\t\t\tprops: {\n\t\t\t\ttitle: sampleResult.title,\n\t\t\t\tcanonicalurl: sampleResult.canonicalurl,\n\t\t\t\timageinfo: sampleResult.imageinfo,\n\t\t\t\tindex: sampleResult.index,\n\t\t\t\tname: sampleResult.name,\n\t\t\t\tentityterms: sampleResult.entityterms\n\t\t\t}\n\t\t} );\n\n\t\tconst element = wrapper.find( '.sdms-video-result' );\n\t\texpect( element.exists() ).toBe( true );\n\t} );\n\n\tit( 'contains an element displaying a formattedDuration', function () {\n\t\tconst wrapper = VueTestUtils.shallowMount( VideoResult, {\n\t\t\tprops: {\n\t\t\t\ttitle: sampleResult.title,\n\t\t\t\tcanonicalurl: sampleResult.canonicalurl,\n\t\t\t\timageinfo: sampleResult.imageinfo,\n\t\t\t\tindex: sampleResult.index,\n\t\t\t\tname: sampleResult.name,\n\t\t\t\tentityterms: sampleResult.entityterms\n\t\t\t}\n\t\t} );\n\t\tconst durationElement = wrapper.find( '.sdms-video-result__duration__text' );\n\t\texpect( durationElement.exists() ).toBe( true );\n\t} );\n\n\tit( 'contains an image element', function () {\n\t\tconst wrapper = VueTestUtils.shallowMount( VideoResult, {\n\t\t\tprops: {\n\t\t\t\ttitle: sampleResult.title,\n\t\t\t\tcanonicalurl: sampleResult.canonicalurl,\n\t\t\t\timageinfo: sampleResult.imageinfo,\n\t\t\t\tindex: sampleResult.index,\n\t\t\t\tname: sampleResult.name,\n\t\t\t\tentityterms: sampleResult.entityterms\n\t\t\t}\n\t\t} );\n\t\tconst imageElement = wrapper.find( '.sdms-video-result__thumbnail' );\n\t\texpect( imageElement.exists() ).toBe( true );\n\t} );\n\n\tit( 'contains an element containing a mime type', function () {\n\t\tconst wrapper = VueTestUtils.shallowMount( VideoResult, {\n\t\t\tprops: {\n\t\t\t\ttitle: sampleResult.title,\n\t\t\t\tcanonicalurl: sampleResult.canonicalurl,\n\t\t\t\timageinfo: sampleResult.imageinfo,\n\t\t\t\tindex: sampleResult.index,\n\t\t\t\tname: sampleResult.name,\n\t\t\t\tentityterms: sampleResult.entityterms\n\t\t\t}\n\t\t} );\n\t\tconst mimeElement = wrapper.find( '.sdms-video-result__mime' );\n\t\texpect( mimeElement.exists() ).toBe( true );\n\t} );\n\n\tit( 'contains a link element', function () {\n\t\tconst wrapper = VueTestUtils.shallowMount( VideoResult, {\n\t\t\tprops: {\n\t\t\t\ttitle: sampleResult.title,\n\t\t\t\tcanonicalurl: sampleResult.canonicalurl,\n\t\t\t\timageinfo: sampleResult.imageinfo,\n\t\t\t\tindex: sampleResult.index,\n\t\t\t\tname: sampleResult.name,\n\t\t\t\tentityterms: sampleResult.entityterms\n\t\t\t}\n\t\t} );\n\t\tconst link = wrapper.find( 'a' );\n\t\texpect( link.exists() ).toBe( true );\n\t} );\n\n\tit( 'clicking the link element causes a \"show-details\" event to be fired', function ( done ) {\n\t\tconst wrapper = VueTestUtils.shallowMount( VideoResult, {\n\t\t\tprops: {\n\t\t\t\ttitle: sampleResult.title,\n\t\t\t\tcanonicalurl: sampleResult.canonicalurl,\n\t\t\t\timageinfo: sampleResult.imageinfo,\n\t\t\t\tindex: sampleResult.index,\n\t\t\t\tname: sampleResult.name,\n\t\t\t\tentityterms: sampleResult.entityterms\n\t\t\t}\n\t\t} );\n\n\t\twrapper.find( 'a' ).trigger( 'click' );\n\t\tVue.nextTick().then( function () {\n\t\t\texpect( wrapper.emitted()[ 'show-details' ] ).toHaveLength( 1 );\n\t\t\tdone();\n\t\t} );\n\t} );\n\n\tit( 'the \"show-details\" event includes the result title in its payload', function ( done ) {\n\t\tconst wrapper = VueTestUtils.shallowMount( VideoResult, {\n\t\t\tprops: {\n\t\t\t\ttitle: sampleResult.title,\n\t\t\t\tcanonicalurl: sampleResult.canonicalurl,\n\t\t\t\timageinfo: sampleResult.imageinfo,\n\t\t\t\tindex: sampleResult.index,\n\t\t\t\tname: sampleResult.name,\n\t\t\t\tentityterms: sampleResult.entityterms\n\t\t\t}\n\t\t} );\n\n\t\twrapper.find( 'a' ).trigger( 'click' );\n\t\tVue.nextTick().then( function () {\n\t\t\texpect( wrapper.emitted()[ 'show-details' ][ 0 ][ 0 ] ).toBe( sampleResult.title );\n\t\t\tdone();\n\t\t} );\n\t} );\n} );\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/jest/ignore/ensureArray.test.js","messages":[{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":1,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":1,"endColumn":65},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":2,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":2,"endColumn":94},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":3,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":3,"endColumn":59},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":4,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":4,"endColumn":45},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":5,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":9,"endColumn":3},{"ruleId":"es/no-object-values","message":"Definition for rule 'es/no-object-values' was not found.","line":25,"column":3,"endLine":25,"endColumn":58,"severity":2,"nodeType":null},{"ruleId":"es-x/no-object-values","severity":2,"message":"ES2017 'Object.values' method is forbidden.","line":26,"column":42,"nodeType":"MemberExpression","messageId":"forbidden","endLine":26,"endColumn":55},{"ruleId":"es-x/no-object-values","severity":2,"message":"ES2017 'Object.values' method is forbidden.","line":27,"column":54,"nodeType":"MemberExpression","messageId":"forbidden","endLine":27,"endColumn":67},{"ruleId":"es/no-object-values","message":"Definition for rule 'es/no-object-values' was not found.","line":28,"column":3,"endLine":28,"endColumn":57,"severity":2,"nodeType":null}],"suppressedMessages":[{"ruleId":"compat/compat","severity":1,"message":"Object.values() is not supported in Safari 9.1, iOS Safari 9.0-9.2, IE 11","line":26,"column":42,"nodeType":"MemberExpression","endLine":26,"endColumn":55,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"compat/compat","severity":1,"message":"Object.values() is not supported in Safari 9.1, iOS Safari 9.0-9.2, IE 11","line":27,"column":54,"nodeType":"MemberExpression","endLine":27,"endColumn":67,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":9,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"const ensureArray = require( '../../resources/ensureArray.js' );\nconst searchResultData = require( './fixtures/mockImageSearchApiResponse.json' ).query.pages;\nconst dict = { a: 'apple', b: 'banana', c: 'canteloupe' };\nconst simpleArray = [ 'foo', 'bar', 'baz' ];\nconst deeperArray = [\n\t{ name: 'Alice', id: 1 },\n\t{ name: 'Bob', id: 2 },\n\t{ name: 'Charlie', id: 3 }\n];\n\ndescribe( 'ensureArray helper function', function () {\n\tit( 'returns arrays unchanged', function () {\n\t\texpect( ensureArray( simpleArray ) ).toEqual( simpleArray );\n\t\texpect( ensureArray( deeperArray ) ).toEqual( deeperArray );\n\t\texpect(\n\t\t\tensureArray( [ searchResultData[ 0 ], searchResultData[ 1 ] ] )\n\t\t).toEqual(\n\t\t\t[ searchResultData[ 0 ], searchResultData[ 1 ] ]\n\t\t);\n\t} );\n\n\tit( 'returns an array of values when given an object', function () {\n\t\t// We can't use Object.values in the code we ship due to compatibility\n\t\t// but it's fine in tests\n\t\t/* eslint-disable es/no-object-values, compat/compat */\n\t\texpect( ensureArray( dict ) ).toEqual( Object.values( dict ) );\n\t\texpect( ensureArray( searchResultData ) ).toEqual( Object.values( searchResultData ) );\n\t\t/* eslint-enable es/no-object-values, compat/compat */\n\t} );\n} );\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/jest/mixins/autocompleteLookupHandler.test.js","messages":[{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":1,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":1,"endColumn":30},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":2,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":2,"endColumn":51},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":3,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":3,"endColumn":103},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":7,"column":2,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":7,"endColumn":21},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":8,"column":2,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":8,"endColumn":22},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":23,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":26,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":28,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":28,"endColumn":59},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":50,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":50,"endColumn":24},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":51,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":54,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":56,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":56,"endColumn":59},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":58,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":58,"endColumn":43},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":75,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":75,"endColumn":21},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":76,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":79,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":81,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":81,"endColumn":59},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":97,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":97,"endColumn":24},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":98,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":101,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":103,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":103,"endColumn":60},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":105,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":105,"endColumn":43},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":120,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":120,"endColumn":25},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":122,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":125,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":127,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":127,"endColumn":60},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":129,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":129,"endColumn":43},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":130,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":132,"endColumn":9},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":144,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":144,"endColumn":26},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":146,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":149,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":151,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":151,"endColumn":60},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":158,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":158,"endColumn":43},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":159,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":161,"endColumn":9},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":173,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":173,"endColumn":31},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":175,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":178,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":180,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":180,"endColumn":60},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":182,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":184,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":185,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":187,"endColumn":9},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":190,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":190,"endColumn":74},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":204,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":204,"endColumn":31},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":206,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":209,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":211,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":211,"endColumn":60},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":213,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":213,"endColumn":46},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":216,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":218,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":220,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":222,"endColumn":9},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":225,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":225,"endColumn":52},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":248,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":248,"endColumn":30},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":249,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":249,"endColumn":52},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":252,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":252,"endColumn":39},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":260,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":263,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":265,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":265,"endColumn":59},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":275,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":275,"endColumn":30},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":277,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":280,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":282,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":282,"endColumn":59},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":284,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":293,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":295,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":304,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":310,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":312,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":323,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":323,"endColumn":30},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":325,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":328,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":330,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":330,"endColumn":59},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":336,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":345,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":347,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":349,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":365,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":365,"endColumn":25},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":368,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":368,"endColumn":52},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":374,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":377,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":379,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":379,"endColumn":63},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":386,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":386,"endColumn":59},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":396,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":396,"endColumn":25},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":399,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":399,"endColumn":52},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":405,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":408,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":410,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":410,"endColumn":61},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":417,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":417,"endColumn":59},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":431,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":431,"endColumn":63},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":432,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":432,"endColumn":33},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":434,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":434,"endColumn":52},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":439,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":442,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":444,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":444,"endColumn":59},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":446,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":446,"endColumn":82},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":454,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":454,"endColumn":64},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":455,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":455,"endColumn":33},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":457,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":457,"endColumn":52},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":462,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":465,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":467,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":467,"endColumn":59},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":469,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":469,"endColumn":82}],"suppressedMessages":[],"errorCount":79,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"const Vue = require( 'vue' );\nconst VueTestUtils = require( '@vue/test-utils' );\nconst AutocompleteLookupHandler = require( '../../../resources/mixins/autocompleteLookupHandler.js' );\njest.mock( '../../../resources/getLocationAgnosticMwApi.js' );\n\ndescribe( 'AutocompleteLookupHandler', function () {\n\tlet mixinsInstance;\n\tlet mockRegexMethod;\n\n\tbeforeEach( function () {\n\t\tmixinsInstance = AutocompleteLookupHandler;\n\t\tmockRegexMethod = jest.spyOn( window, 'RegExp' );\n\t} );\n\n\tafterEach( function () {\n\t\tjest.clearAllMocks();\n\t} );\n\n\tdescribe( 'clearLookupResults', function () {\n\n\t\tit( 'lookupResults array is empty', function () {\n\n\t\t\tconst Component = {\n\t\t\t\trender: function () {},\n\t\t\t\tmixins: [ mixinsInstance ]\n\t\t\t};\n\n\t\t\tconst wrapper = VueTestUtils.shallowMount( Component );\n\n\t\t\twrapper.setData( {\n\t\t\t\tlookupResults: [ 'result1', 'result2' ]\n\t\t\t} );\n\n\t\t\twrapper.vm.clearLookupResults();\n\n\t\t\texpect( wrapper.vm.lookupResults ).toStrictEqual( [] );\n\n\t\t} );\n\n\t} );\n\n\tdescribe( 'getDebouncedLookupResults', function () {\n\n\t\tbeforeEach( function () {\n\t\t\tjest.useFakeTimers();\n\t\t} );\n\n\t\tit( 'triggers getLookupResults', function () {\n\n\t\t\tconst input = 'dog';\n\t\t\tconst Component = {\n\t\t\t\trender: function () {},\n\t\t\t\tmixins: [ mixinsInstance ]\n\t\t\t};\n\n\t\t\tconst wrapper = VueTestUtils.shallowMount( Component );\n\n\t\t\tconst mockGetLookupResults = jest.fn();\n\t\t\twrapper.vm.getLookupResults = mockGetLookupResults;\n\n\t\t\twrapper.vm.getDebouncedLookupResults( input );\n\n\t\t\tjest.advanceTimersByTime( 250 );\n\n\t\t\texpect( mockGetLookupResults ).toHaveBeenCalled();\n\n\t\t} );\n\n\t} );\n\n\tdescribe( 'getLookupResults', function () {\n\n\t\tit( 'with empty input passed clear lookupResults', function () {\n\n\t\t\tconst input = '';\n\t\t\tconst Component = {\n\t\t\t\trender: function () {},\n\t\t\t\tmixins: [ mixinsInstance ]\n\t\t\t};\n\n\t\t\tconst wrapper = VueTestUtils.shallowMount( Component );\n\n\t\t\twrapper.setData( {\n\t\t\t\tlookupResults: [ 'result1', 'result2' ]\n\t\t\t} );\n\n\t\t\twrapper.vm.getLookupResults( input );\n\n\t\t\texpect( wrapper.vm.lookupResults ).toStrictEqual( [] );\n\n\t\t} );\n\n\t\tdescribe( 'with invalid input passed', function () {\n\n\t\t\tit( 'doLookupRequest not called', function () {\n\n\t\t\t\tconst input = '[]';\n\t\t\t\tconst Component = {\n\t\t\t\t\trender: function () {},\n\t\t\t\t\tmixins: [ mixinsInstance ]\n\t\t\t\t};\n\n\t\t\t\tconst wrapper = VueTestUtils.shallowMount( Component );\n\n\t\t\t\tconst mockDoLookupRequest = jest.fn();\n\t\t\t\twrapper.vm.doLookupRequest = mockDoLookupRequest;\n\n\t\t\t\twrapper.vm.getLookupResults( input );\n\n\t\t\t\texpect( mockDoLookupRequest ).not.toHaveBeenCalled();\n\n\t\t\t} );\n\n\t\t} );\n\n\t\tdescribe( 'with valid input passed', function () {\n\n\t\t\tit( 'doLookupRequest is called', function () {\n\n\t\t\t\tconst input = 'dog';\n\n\t\t\t\tconst Component = {\n\t\t\t\t\trender: function () {},\n\t\t\t\t\tmixins: [ mixinsInstance ]\n\t\t\t\t};\n\n\t\t\t\tconst wrapper = VueTestUtils.shallowMount( Component );\n\n\t\t\t\tconst mockDoLockupResolve = jest.fn();\n\t\t\t\tconst mockDoLockupRequest = jest.fn().mockReturnValue( {\n\t\t\t\t\tthen: mockDoLockupResolve\n\t\t\t\t} );\n\t\t\t\twrapper.vm.doLookupRequest = mockDoLockupRequest;\n\n\t\t\t\twrapper.vm.getLookupResults( input );\n\n\t\t\t\texpect( mockDoLockupRequest ).toHaveBeenCalled();\n\t\t\t\texpect( mockDoLockupResolve ).toHaveBeenCalled();\n\n\t\t\t} );\n\n\t\t\tit( 'and no browser support for unicode regex; doLookupRequest is called', function () {\n\n\t\t\t\tconst input = 'dogs';\n\n\t\t\t\tconst Component = {\n\t\t\t\t\trender: function () {},\n\t\t\t\t\tmixins: [ mixinsInstance ]\n\t\t\t\t};\n\n\t\t\t\tconst wrapper = VueTestUtils.shallowMount( Component );\n\n\t\t\t\t// Simulate regex error\n\t\t\t\tmockRegexMethod.mockImplementationOnce( function () {\n\t\t\t\t\tthrow new Error( '' );\n\t\t\t\t} );\n\n\t\t\t\tconst mockDoLockupResolve = jest.fn();\n\t\t\t\tconst mockDoLockupRequest = jest.fn().mockReturnValue( {\n\t\t\t\t\tthen: mockDoLockupResolve\n\t\t\t\t} );\n\t\t\t\twrapper.vm.doLookupRequest = mockDoLockupRequest;\n\n\t\t\t\twrapper.vm.getLookupResults( input );\n\n\t\t\t\texpect( mockDoLockupRequest ).toHaveBeenCalled();\n\t\t\t\texpect( mockDoLockupResolve ).toHaveBeenCalled();\n\n\t\t\t} );\n\n\t\t\tit( 'getFilteredLookupResults passes due to valid result', function ( done ) {\n\n\t\t\t\tconst input = 'dogs, cat';\n\n\t\t\t\tconst Component = {\n\t\t\t\t\trender: function () {},\n\t\t\t\t\tmixins: [ mixinsInstance ]\n\t\t\t\t};\n\n\t\t\t\tconst wrapper = VueTestUtils.shallowMount( Component );\n\n\t\t\t\tconst mockDoLockupResolve = function ( params ) {\n\t\t\t\t\treturn params();\n\t\t\t\t};\n\t\t\t\tconst mockDoLockupRequest = jest.fn().mockReturnValue( {\n\t\t\t\t\tthen: mockDoLockupResolve\n\t\t\t\t} );\n\t\t\t\twrapper.vm.doLookupRequest = mockDoLockupRequest;\n\n\t\t\t\tconst mockGetFilteredLookupResults = jest.fn().mockReturnValue( [] );\n\t\t\t\twrapper.vm.getFilteredLookupResults = mockGetFilteredLookupResults;\n\n\t\t\t\twrapper.vm.getLookupResults( input );\n\n\t\t\t\tVue.nextTick().then( function () {\n\t\t\t\t\texpect( mockGetFilteredLookupResults ).toHaveBeenCalled();\n\t\t\t\t\tdone();\n\t\t\t\t} );\n\n\t\t\t} );\n\n\t\t\tit( 'getFilteredLookupResults fails due to invalid result, clear lookupResults', function ( done ) {\n\n\t\t\t\tconst input = 'dogs, cat';\n\n\t\t\t\tconst Component = {\n\t\t\t\t\trender: function () {},\n\t\t\t\t\tmixins: [ mixinsInstance ]\n\t\t\t\t};\n\n\t\t\t\tconst wrapper = VueTestUtils.shallowMount( Component );\n\n\t\t\t\tconst mockClearLookupResults = jest.fn();\n\t\t\t\twrapper.vm.clearLookupResults = mockClearLookupResults;\n\n\t\t\t\tconst mockDoLockupResolve = function ( params ) {\n\t\t\t\t\treturn params();\n\t\t\t\t};\n\n\t\t\t\tconst mockDoLockupRequest = jest.fn().mockReturnValue( {\n\t\t\t\t\tthen: mockDoLockupResolve\n\t\t\t\t} );\n\t\t\t\twrapper.vm.doLookupRequest = mockDoLockupRequest;\n\n\t\t\t\tconst mockGetFilteredLookupResults = jest.fn();\n\t\t\t\twrapper.vm.getFilteredLookupResults = mockGetFilteredLookupResults;\n\t\t\t\tmockGetFilteredLookupResults.mockImplementationOnce( function () {\n\t\t\t\t\tthrow new Error( '' );\n\t\t\t\t} );\n\n\t\t\t\twrapper.vm.getLookupResults( input );\n\n\t\t\t\tVue.nextTick().then( function () {\n\t\t\t\t\texpect( mockClearLookupResults ).toHaveBeenCalled();\n\t\t\t\t\tdone();\n\t\t\t\t} );\n\n\t\t\t} );\n\n\t\t} );\n\n\t} );\n\n\tdescribe( 'doLookupRequest', function () {\n\n\t\tit( 'abort previous lookup promise if new lookup request', function () {\n\n\t\t\tconst input = 'dogs, cat';\n\t\t\tconst previousMixinData = mixinsInstance.data();\n\n\t\t\t// simulate lookupPromises\n\t\t\tconst mockAbortResolve = jest.fn();\n\t\t\tmixinsInstance.data = function () {\n\t\t\t\tpreviousMixinData.lookupPromises = {\n\t\t\t\t\tabort: mockAbortResolve\n\t\t\t\t};\n\t\t\t\treturn previousMixinData;\n\t\t\t};\n\n\t\t\tconst Component = {\n\t\t\t\trender: function () {},\n\t\t\t\tmixins: [ mixinsInstance ]\n\t\t\t};\n\n\t\t\tconst wrapper = VueTestUtils.shallowMount( Component );\n\n\t\t\twrapper.vm.doLookupRequest( input );\n\n\t\t\texpect( mockAbortResolve ).toHaveBeenCalled();\n\n\t\t} );\n\n\t\tit( 'with multiple input passed as comma separated string; getLookupRequestForTerm is called', function () {\n\n\t\t\tconst input = 'dogs, cat';\n\n\t\t\tconst Component = {\n\t\t\t\trender: function () {},\n\t\t\t\tmixins: [ mixinsInstance ]\n\t\t\t};\n\n\t\t\tconst wrapper = VueTestUtils.shallowMount( Component );\n\n\t\t\tconst mockGetLookupRequestForTermResolve = function ( paramsFunc ) {\n\t\t\t\tparamsFunc( {\n\t\t\t\t\tsearch: [ 'dogs', 'cats' ]\n\t\t\t\t} );\n\t\t\t\treturn {\n\t\t\t\t\tpromise: jest.fn().mockReturnValue( {\n\t\t\t\t\t\tabort: jest.fn()\n\t\t\t\t\t} )\n\t\t\t\t};\n\t\t\t};\n\n\t\t\tconst mockJqueryApplyResolve = function ( paramsFunc ) {\n\t\t\t\tparamsFunc( {\n\t\t\t\t\tsearch: [ 'dogs', 'cats' ]\n\t\t\t\t} );\n\t\t\t\treturn {\n\t\t\t\t\tpromise: function ( promiseFunc ) {\n\t\t\t\t\t\treturn promiseFunc.abort();\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t\t$.when.apply = jest.fn().mockReturnValue( {\n\t\t\t\tthen: mockJqueryApplyResolve\n\t\t\t} );\n\n\t\t\tconst mockGetLookupRequestForTerm = jest.fn().mockReturnValue( {\n\t\t\t\tthen: mockGetLookupRequestForTermResolve\n\t\t\t} );\n\n\t\t\twrapper.vm.getLookupRequestForTerm = mockGetLookupRequestForTerm;\n\n\t\t\twrapper.vm.doLookupRequest( input );\n\n\t\t\texpect( mockGetLookupRequestForTerm ).toHaveBeenCalled();\n\t\t} );\n\n\t\tit( 'with valid input passed and no browser support for unicode regex; getLookupRequestForTerm is called', function () {\n\n\t\t\tconst input = 'dogs, cat';\n\n\t\t\tconst Component = {\n\t\t\t\trender: function () {},\n\t\t\t\tmixins: [ mixinsInstance ]\n\t\t\t};\n\n\t\t\tconst wrapper = VueTestUtils.shallowMount( Component );\n\n\t\t\tmockRegexMethod.mockImplementationOnce( function () {\n\t\t\t\tthrow new Error( '' );\n\t\t\t} );\n\n\t\t\tconst mockGetLookupRequestForTermResolve = function ( paramsFunc ) {\n\t\t\t\tparamsFunc( {\n\t\t\t\t\tsearch: []\n\t\t\t\t} );\n\t\t\t\treturn {\n\t\t\t\t\tpromise: jest.fn().mockReturnValue( {\n\t\t\t\t\t\tabort: jest.fn()\n\t\t\t\t\t} )\n\t\t\t\t};\n\t\t\t};\n\n\t\t\tconst mockGetLookupRequestForTerm = jest.fn().mockReturnValue( {\n\t\t\t\tthen: mockGetLookupRequestForTermResolve\n\t\t\t} );\n\t\t\twrapper.vm.getLookupRequestForTerm = mockGetLookupRequestForTerm;\n\n\t\t\twrapper.vm.doLookupRequest( input );\n\n\t\t\texpect( mockRegexMethod ).toHaveBeenCalled();\n\t\t\texpect( mockGetLookupRequestForTerm ).toHaveBeenCalled();\n\n\t\t} );\n\n\t} );\n\n\tdescribe( 'getLookupRequestForTerm', function () {\n\n\t\tit( 'return empty search if lookupDisabled is true', function () {\n\n\t\t\tconst input = 'dogs';\n\n\t\t\t// simulate lookupPromises\n\t\t\tconst previousMixinData = mixinsInstance.data();\n\t\t\tmixinsInstance.data = function () {\n\t\t\t\tpreviousMixinData.lookupDisabled = true;\n\t\t\t\treturn previousMixinData;\n\t\t\t};\n\n\t\t\tconst Component = {\n\t\t\t\trender: function () {},\n\t\t\t\tmixins: [ mixinsInstance ]\n\t\t\t};\n\n\t\t\tconst mockJqueryDeferred = jest.fn().mockReturnValue( '' );\n\t\t\t$.Deferred = jest.fn().mockReturnValue( {\n\t\t\t\tresolve: jest.fn().mockReturnValue( {\n\t\t\t\t\tpromise: mockJqueryDeferred\n\t\t\t\t} )\n\t\t\t} );\n\n\t\t\tconst wrapper = VueTestUtils.shallowMount( Component );\n\n\t\t\twrapper.vm.getLookupRequestForTerm( input );\n\n\t\t\texpect( mockJqueryDeferred ).toHaveBeenCalled();\n\n\t\t} );\n\n\t\tit( 'return search results if lookupDisabled is false', function () {\n\n\t\t\tconst input = 'dogs';\n\n\t\t\t// simulate lookupPromises\n\t\t\tconst previousMixinData = mixinsInstance.data();\n\t\t\tmixinsInstance.data = function () {\n\t\t\t\tpreviousMixinData.lookupDisabled = false;\n\t\t\t\treturn previousMixinData;\n\t\t\t};\n\n\t\t\tconst Component = {\n\t\t\t\trender: function () {},\n\t\t\t\tmixins: [ mixinsInstance ]\n\t\t\t};\n\n\t\t\tlet mockJqueryDeferred = jest.fn().mockReturnValue( '' );\n\t\t\t$.Deferred = jest.fn().mockReturnValue( {\n\t\t\t\tresolve: jest.fn().mockReturnValue( {\n\t\t\t\t\tpromise: mockJqueryDeferred\n\t\t\t\t} )\n\t\t\t} );\n\n\t\t\tconst wrapper = VueTestUtils.shallowMount( Component );\n\n\t\t\twrapper.vm.getLookupRequestForTerm( input );\n\n\t\t\texpect( mockJqueryDeferred ).not.toHaveBeenCalled();\n\n\t\t} );\n\n\t} );\n\n\tdescribe( 'getFilteredLookupResults', function () {\n\n\t\tit( 'return array with length lookupResultsLimit', function () {\n\n\t\t\tconst lookupResults = [ 'dogs', 'old dogs', 'young dogs' ];\n\t\t\tconst lookupRegex = /[a-z]/g;\n\t\t\t// simulate lookupPromises\n\t\t\tconst previousMixinData = mixinsInstance.data();\n\t\t\tmixinsInstance.data = function () {\n\t\t\t\tpreviousMixinData.lookupResultsLimit = 2;\n\t\t\t\treturn previousMixinData;\n\t\t\t};\n\t\t\tconst Component = {\n\t\t\t\trender: function () {},\n\t\t\t\tmixins: [ mixinsInstance ]\n\t\t\t};\n\n\t\t\tconst wrapper = VueTestUtils.shallowMount( Component );\n\n\t\t\tconst res = wrapper.vm.getFilteredLookupResults( lookupResults, lookupRegex );\n\n\t\t\texpect( res.length ).toStrictEqual( previousMixinData.lookupResultsLimit );\n\n\t\t} );\n\n\t\tit( 'returns unique array result', function () {\n\n\t\t\tconst lookupResults = [ 'dogs', 'dark dogs', 'young dogs' ];\n\t\t\tconst lookupRegex = /[a-z]/g;\n\t\t\t// simulate lookupPromises\n\t\t\tconst previousMixinData = mixinsInstance.data();\n\t\t\tmixinsInstance.data = function () {\n\t\t\t\tpreviousMixinData.lookupResultsLimit = 2;\n\t\t\t\treturn previousMixinData;\n\t\t\t};\n\t\t\tconst Component = {\n\t\t\t\trender: function () {},\n\t\t\t\tmixins: [ mixinsInstance ]\n\t\t\t};\n\n\t\t\tconst wrapper = VueTestUtils.shallowMount( Component );\n\n\t\t\tconst res = wrapper.vm.getFilteredLookupResults( lookupResults, lookupRegex );\n\n\t\t\texpect( res[ 0 ] ).toStrictEqual( 'd' );\n\t\t\texpect( res[ 1 ] ).toStrictEqual( 'y' );\n\n\t\t} );\n\n\t} );\n\n} );\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/jest/mixins/observer.test.js","messages":[{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":2,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":2,"endColumn":51},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":3,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":3,"endColumn":30},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":4,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":4,"endColumn":85},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":5,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":5,"endColumn":81},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":8,"column":2,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":8,"endColumn":23},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":14,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":17,"endColumn":5},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":18,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":18,"endColumn":100},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":27,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":30,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":32,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":32,"endColumn":59},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":37,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":40,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":48,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":51,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":55,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":55,"endColumn":59},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":62,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":65,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":67,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":67,"endColumn":59},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":76,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":79,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":84,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":84,"endColumn":59},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":91,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":94,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":105,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":108,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":122,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":125,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":126,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":126,"endColumn":49},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":141,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":144,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":145,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":145,"endColumn":49},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":150,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":150,"endColumn":59},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":163,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":166,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":167,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":169,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":171,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":171,"endColumn":59},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":178,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":181,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":182,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":184,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":186,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":186,"endColumn":59},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":193,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":196,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":197,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":199,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":201,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":201,"endColumn":59},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":208,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":211,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":212,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":214,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":216,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":216,"endColumn":59},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":223,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":226,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":227,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":229,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":231,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":231,"endColumn":59}],"suppressedMessages":[{"ruleId":"compat/compat","severity":1,"message":"IntersectionObserver is not supported in Safari 9.1, IE 11","line":44,"column":12,"nodeType":"MemberExpression","endLine":44,"endColumn":39,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"compat/compat","severity":1,"message":"IntersectionObserver is not supported in Safari 9.1, IE 11","line":101,"column":12,"nodeType":"MemberExpression","endLine":101,"endColumn":39,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":38,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/* eslint-disable compat/compat */\nconst VueTestUtils = require( '@vue/test-utils' );\nconst Vue = require( 'vue' );\nconst Observer = require( '../../../resources/components/base/mixins/observer.js' );\nconst IntersectionObserverSpies = require( '../mocks/IntersectionObserver.js' );\n\ndescribe( 'Observer', function () {\n\tlet observerInstance;\n\tbeforeEach( function () {\n\t\tobserverInstance = Observer;\n\t} );\n\n\tit( 'check if IntersectObserver feature is set on mount', function () {\n\t\tconst Component = {\n\t\t\trender: function () {},\n\t\t\tmixins: [ observerInstance ]\n\t\t};\n\t\tconst spySupportsObserverCheck = jest.spyOn( observerInstance.methods, 'supportsObserverCheck' );\n\t\tVueTestUtils.shallowMount( Component );\n\n\t\texpect( spySupportsObserverCheck ).toHaveBeenCalled();\n\t} );\n\n\tdescribe( 'when IntersectionObserver is not supported', function () {\n\n\t\tit( 'set observerSupported to false if feature is not supported', function () {\n\t\t\tconst Component = {\n\t\t\t\trender: function () {},\n\t\t\t\tmixins: [ observerInstance ]\n\t\t\t};\n\n\t\t\tconst wrapper = VueTestUtils.shallowMount( Component );\n\t\t\texpect( wrapper.vm.observerSupported ).toBe( false );\n\t\t} );\n\n\t\tit( 'does not calls the IntersectionObserver API', function () {\n\t\t\tconst Component = {\n\t\t\t\trender: function () {},\n\t\t\t\tmixins: [ observerInstance ]\n\t\t\t};\n\n\t\t\tVueTestUtils.shallowMount( Component );\n\n\t\t\texpect( window.IntersectionObserver ).not.toHaveBeenCalled();\n\t\t} );\n\n\t\tit( 'calls disconnectObserver method when component is destroyed', function () {\n\t\t\tconst Component = {\n\t\t\t\trender: function () {},\n\t\t\t\tmixins: [ observerInstance ]\n\t\t\t};\n\n\t\t\tobserverInstance.methods.disconnectObserver = jest.fn();\n\n\t\t\tconst wrapper = VueTestUtils.shallowMount( Component );\n\t\t\twrapper.unmount();\n\n\t\t\texpect( observerInstance.methods.disconnectObserver ).toHaveBeenCalled();\n\t\t} );\n\n\t\tit( 'does not trigger the observer.disconnect method when destroyed', function () {\n\t\t\tconst Component = {\n\t\t\t\trender: function () {},\n\t\t\t\tmixins: [ observerInstance ]\n\t\t\t};\n\n\t\t\tconst wrapper = VueTestUtils.shallowMount( Component );\n\t\t\twrapper.unmount();\n\n\t\t\texpect( IntersectionObserverSpies.disconnect ).not.toHaveBeenCalled();\n\t\t} );\n\t} );\n\tdescribe( 'when IntersectionObserver is supported', function () {\n\n\t\tit( 'set observerSupported to true', function () {\n\t\t\tconst Component = {\n\t\t\t\trender: function () {},\n\t\t\t\tmixins: [ observerInstance ]\n\t\t\t};\n\n\t\t\tobserverInstance.methods.supportsObserverCheck = jest.fn().mockReturnValue( true );\n\t\t\tobserverInstance.methods.defineObserverElement = jest.fn().mockReturnValue( true );\n\n\t\t\tconst wrapper = VueTestUtils.shallowMount( Component );\n\n\t\t\texpect( observerInstance.methods.supportsObserverCheck ).toHaveBeenCalled();\n\t\t\texpect( wrapper.vm.observerSupported ).toBe( true );\n\t\t} );\n\n\t\tit( 'calls the IntersectionObserver API', function () {\n\t\t\tconst Component = {\n\t\t\t\trender: function () {},\n\t\t\t\tmixins: [ observerInstance ]\n\t\t\t};\n\n\t\t\tobserverInstance.methods.supportsObserverCheck = jest.fn().mockReturnValue( true );\n\t\t\tobserverInstance.methods.defineObserverElement = jest.fn().mockReturnValue( true );\n\n\t\t\tVueTestUtils.shallowMount( Component );\n\n\t\t\texpect( window.IntersectionObserver ).toHaveBeenCalled();\n\t\t} );\n\n\t\tit( 'define the observerElement', function ( done ) {\n\t\t\tconst Component = {\n\t\t\t\trender: function () {},\n\t\t\t\tmixins: [ observerInstance ]\n\t\t\t};\n\n\t\t\tobserverInstance.methods.supportsObserverCheck = jest.fn().mockReturnValue( true );\n\t\t\tobserverInstance.methods.defineObserverElement = jest.fn().mockReturnValue( true );\n\n\t\t\tVueTestUtils.shallowMount( Component );\n\n\t\t\tVue.nextTick().then( function () {\n\t\t\t\texpect( observerInstance.methods.defineObserverElement ).toHaveBeenCalled();\n\t\t\t\tdone();\n\t\t\t} );\n\t\t} );\n\n\t\tit( 'triggers the observation with the defined element', function ( done ) {\n\t\t\tconst Component = {\n\t\t\t\trender: function () {},\n\t\t\t\tmixins: [ observerInstance ]\n\t\t\t};\n\t\t\tconst mockSelector = 'mock-element-selector';\n\n\t\t\tobserverInstance.methods.supportsObserverCheck = jest.fn().mockReturnValue( true );\n\t\t\tobserverInstance.methods.defineObserverElement = jest.fn().mockReturnValue( mockSelector );\n\n\t\t\tVueTestUtils.shallowMount( Component );\n\n\t\t\tVue.nextTick().then( function () {\n\t\t\t\texpect( IntersectionObserverSpies.observe ).toHaveBeenCalled();\n\t\t\t\texpect( IntersectionObserverSpies.observe ).toHaveBeenCalledWith( mockSelector );\n\t\t\t\tdone();\n\t\t\t} );\n\t\t} );\n\n\t\tit( 'trigger the observer.disconnect method when destroyed', function ( done ) {\n\t\t\tconst Component = {\n\t\t\t\trender: function () {},\n\t\t\t\tmixins: [ observerInstance ]\n\t\t\t};\n\t\t\tconst mockSelector = 'mock-element-selector';\n\n\t\t\tobserverInstance.methods.supportsObserverCheck = jest.fn().mockReturnValue( true );\n\t\t\tobserverInstance.methods.defineObserverElement = jest.fn().mockReturnValue( mockSelector );\n\n\t\t\tconst wrapper = VueTestUtils.shallowMount( Component );\n\n\t\t\tVue.nextTick().then( function () {\n\t\t\t\twrapper.unmount();\n\n\t\t\t\texpect( wrapper.vm.observerSupported ).toBe( true );\n\t\t\t\texpect( observerInstance.methods.disconnectObserver ).toHaveBeenCalled();\n\t\t\t\tdone();\n\t\t\t} );\n\t\t} );\n\t} );\n\tdescribe( 'when intersectionCallback is triggered', function () {\n\t\tit( 'triggers a change event', function () {\n\t\t\tconst Component = {\n\t\t\t\trender: function () {},\n\t\t\t\tmixins: [ observerInstance ]\n\t\t\t};\n\t\t\tconst mockCallbackArgument = [\n\t\t\t\t{ isIntersecting: false }\n\t\t\t];\n\n\t\t\tconst wrapper = VueTestUtils.shallowMount( Component );\n\t\t\twrapper.vm.intersectionCallback( mockCallbackArgument );\n\n\t\t\texpect( wrapper.emitted().change ).toBeTruthy();\n\t\t} );\n\n\t\tit( 'triggers an \"hide\" event, when method called with a falsy isIntersecting', function () {\n\t\t\tconst Component = {\n\t\t\t\trender: function () {},\n\t\t\t\tmixins: [ observerInstance ]\n\t\t\t};\n\t\t\tconst mockCallbackArgument = [\n\t\t\t\t{ isIntersecting: false }\n\t\t\t];\n\n\t\t\tconst wrapper = VueTestUtils.shallowMount( Component );\n\t\t\twrapper.vm.intersectionCallback( mockCallbackArgument );\n\n\t\t\texpect( wrapper.emitted().hide ).toBeTruthy();\n\t\t} );\n\n\t\tit( 'set the observerIntersecting data to \"false\" when value isIntersecting is falsy', function () {\n\t\t\tconst Component = {\n\t\t\t\trender: function () {},\n\t\t\t\tmixins: [ observerInstance ]\n\t\t\t};\n\t\t\tconst mockCallbackArgument = [\n\t\t\t\t{ isIntersecting: false }\n\t\t\t];\n\n\t\t\tconst wrapper = VueTestUtils.shallowMount( Component );\n\t\t\twrapper.vm.intersectionCallback( mockCallbackArgument );\n\n\t\t\texpect( wrapper.vm.observerIntersecting ).toBeFalsy();\n\t\t} );\n\n\t\tit( 'triggers an \"intersect\" event, when method called with isIntersecting', function () {\n\t\t\tconst Component = {\n\t\t\t\trender: function () {},\n\t\t\t\tmixins: [ observerInstance ]\n\t\t\t};\n\t\t\tconst mockCallbackArgument = [\n\t\t\t\t{ isIntersecting: true }\n\t\t\t];\n\n\t\t\tconst wrapper = VueTestUtils.shallowMount( Component );\n\t\t\twrapper.vm.intersectionCallback( mockCallbackArgument );\n\n\t\t\texpect( wrapper.emitted().intersect ).toBeTruthy();\n\t\t} );\n\n\t\tit( 'set the observerIntersecting data to \"true\" when value isIntersecting is truthy', function () {\n\t\t\tconst Component = {\n\t\t\t\trender: function () {},\n\t\t\t\tmixins: [ observerInstance ]\n\t\t\t};\n\t\t\tconst mockCallbackArgument = [\n\t\t\t\t{ isIntersecting: true }\n\t\t\t];\n\n\t\t\tconst wrapper = VueTestUtils.shallowMount( Component );\n\t\t\twrapper.vm.intersectionCallback( mockCallbackArgument );\n\n\t\t\texpect( wrapper.vm.observerIntersecting ).toBeTruthy();\n\t\t} );\n\t} );\n} );\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/jest/mixins/restoreHistoryHandler.test.js","messages":[{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":1,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":1,"endColumn":51},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":2,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":2,"endColumn":95},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":3,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":3,"endColumn":58},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":7,"column":2,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":7,"endColumn":21},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":23,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":26,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":41,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":44,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":59,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":62,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":77,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":80,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":96,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":99,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":111,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":114,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":123,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":126,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":141,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":141,"endColumn":39},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":142,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":145,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":147,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":147,"endColumn":60},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":160,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":160,"endColumn":40},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":162,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":165,"endColumn":7},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":167,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":167,"endColumn":60},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":188,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":188,"endColumn":35},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":190,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":193,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":195,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":195,"endColumn":59},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":202,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":207,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":209,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":212,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":214,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":214,"endColumn":59},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":222,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":227,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":229,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":232,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":234,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":234,"endColumn":59},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":242,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":247,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":249,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":255,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":257,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":262,"endColumn":9},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":274,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":279,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":281,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":287,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":289,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":294,"endColumn":9},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":306,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":311,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":313,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":316,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":318,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":318,"endColumn":59},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":325,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":330,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":332,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":335,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":337,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":337,"endColumn":59},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":347,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":354,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":356,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":361,"endColumn":8},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":373,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":376,"endColumn":6}],"suppressedMessages":[],"errorCount":41,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"const VueTestUtils = require( '@vue/test-utils' );\nconst RestoreHistoryHandler = require( '../../../resources/mixins/restoreHistoryHandler.js' );\nconst Performance = require( '../mocks/Performance.js' );\nrequire( '../mocks/EventListener.js' );\n\ndescribe( 'RestoreHistoryHandler', function () {\n\tlet mixinsInstance;\n\tbeforeEach( function () {\n\t\tmixinsInstance = RestoreHistoryHandler;\n\t\tmixinsInstance.methods.replaceQueryToHistoryState = jest.fn();\n\t} );\n\n\tafterEach( function () {\n\t\tPerformance.restorePerformance();\n\t\tmixinsInstance.methods.replaceQueryToHistoryState = null;\n\t} );\n\n\tdescribe( 'on normal navigation', function () {\n\n\t\tit( 'clears stored data on load', function () {\n\n\t\t\tmixinsInstance.methods.clearStoredPageState = jest.fn();\n\t\t\tconst Component = {\n\t\t\t\trender: function () {},\n\t\t\t\tmixins: [ mixinsInstance ]\n\t\t\t};\n\n\t\t\tPerformance.mockPerformanceNavigation();\n\n\t\t\tVueTestUtils.shallowMount( Component );\n\n\t\t\texpect( mixinsInstance.methods.clearStoredPageState ).toHaveBeenCalled();\n\t\t} );\n\n\t\tit( 'does not restore page state', function () {\n\n\t\t\tmixinsInstance.methods.clearStoredPageState = jest.fn();\n\t\t\tmixinsInstance.methods.restorePageState = jest.fn();\n\t\t\tPerformance.mockPerformanceNavigation();\n\n\t\t\tconst Component = {\n\t\t\t\trender: function () {},\n\t\t\t\tmixins: [ mixinsInstance ]\n\t\t\t};\n\n\t\t\tVueTestUtils.shallowMount( Component );\n\n\t\t\texpect( mixinsInstance.methods.restorePageState ).not.toHaveBeenCalled();\n\t\t} );\n\t} );\n\tdescribe( 'on back navigation', function () {\n\n\t\tit( 'does not restore data if it does not have stashed data', function () {\n\n\t\t\tmixinsInstance.methods.clearStoredPageState = jest.fn();\n\t\t\tPerformance.mockPerformanceNavigation( 'back_forward' );\n\t\t\tmw.storage.getObject.mockReturnValueOnce( false );\n\n\t\t\tconst Component = {\n\t\t\t\trender: function () {},\n\t\t\t\tmixins: [ mixinsInstance ]\n\t\t\t};\n\n\t\t\tVueTestUtils.shallowMount( Component );\n\n\t\t\texpect( mixinsInstance.methods.restorePageState ).not.toHaveBeenCalled();\n\t\t} );\n\n\t\tdescribe( 'when perf.navigationEntry is supported', function () {\n\n\t\t\tit( 'restores page state if stored data exists and perf.navigationEntry says that user is back-navigating', function () {\n\n\t\t\t\tmixinsInstance.methods.clearStoredPageState = jest.fn();\n\t\t\t\tmw.storage.getObject.mockReturnValueOnce( { dummy: 'fake result' } );\n\t\t\t\tPerformance.mockPerformanceNavigation( 'back_forward' );\n\n\t\t\t\tconst Component = {\n\t\t\t\t\trender: function () {},\n\t\t\t\t\tmixins: [ mixinsInstance ]\n\t\t\t\t};\n\n\t\t\t\tVueTestUtils.shallowMount( Component );\n\n\t\t\t\texpect( mixinsInstance.methods.restorePageState ).toHaveBeenCalled();\n\t\t\t} );\n\n\t\t} );\n\n\t\tdescribe( 'when perf.navigationEntry is not supported', function () {\n\t\t\tit( 'restores page state if stored data exists and deprecated performance.navigation.type is 2', function () {\n\n\t\t\t\tmixinsInstance.methods.clearStoredPageState = jest.fn();\n\t\t\t\tmw.storage.getObject.mockReturnValueOnce( { dummy: 'fake result' } );\n\t\t\t\tPerformance.mockDeprecatedPerformanceNavigation( 2 );\n\n\t\t\t\tconst Component = {\n\t\t\t\t\trender: function () {},\n\t\t\t\t\tmixins: [ mixinsInstance ]\n\t\t\t\t};\n\n\t\t\t\tVueTestUtils.shallowMount( Component );\n\n\t\t\t\texpect( mixinsInstance.methods.restorePageState ).toHaveBeenCalled();\n\t\t\t} );\n\t\t} );\n\t} );\n\n\tdescribe( 'on created', function () {\n\n\t\tit( 'add popstate event listener', function () {\n\t\t\tconst Component = {\n\t\t\t\trender: function () {},\n\t\t\t\tmixins: [ mixinsInstance ]\n\t\t\t};\n\n\t\t\tVueTestUtils.shallowMount( Component );\n\n\t\t\texpect( window.addEventListener ).toHaveBeenCalled();\n\t\t\texpect( window.addEventListener.mock.calls[ 0 ][ 0 ] ).toBe( 'popstate' );\n\t\t} );\n\n\t\tit( 'add pagehide event listener', function () {\n\t\t\tconst Component = {\n\t\t\t\trender: function () {},\n\t\t\t\tmixins: [ mixinsInstance ]\n\t\t\t};\n\n\t\t\tVueTestUtils.shallowMount( Component );\n\n\t\t\texpect( window.addEventListener ).toHaveBeenCalled();\n\t\t\texpect( window.addEventListener.mock.calls[ 1 ][ 0 ] ).toBe( 'pagehide' );\n\t\t} );\n\t} );\n\n\tdescribe( 'onPageHide', function () {\n\n\t\tdescribe( 'when loading from cache', function () {\n\n\t\t\tit( 'stored data is cleared', function () {\n\t\t\t\tmixinsInstance.methods.clearStoredPageState = jest.fn();\n\t\t\t\tconst event = { persisted: true };\n\t\t\t\tconst Component = {\n\t\t\t\t\trender: function () {},\n\t\t\t\t\tmixins: [ mixinsInstance ]\n\t\t\t\t};\n\n\t\t\t\tconst wrapper = VueTestUtils.shallowMount( Component );\n\n\t\t\t\twrapper.vm.onPageHide( event );\n\n\t\t\t\t// the clearStoredPageState is called already on mounted too\n\t\t\t\texpect( mixinsInstance.methods.clearStoredPageState ).toHaveBeenCalled();\n\t\t\t\texpect( mixinsInstance.methods.clearStoredPageState ).toHaveBeenCalledTimes( 2 );\n\t\t\t} );\n\t\t} );\n\n\t\tdescribe( 'when not loading from cache', function () {\n\t\t\tit( 'stash page when event is not persisted', function () {\n\t\t\t\tmixinsInstance.methods.stashPageState = jest.fn();\n\t\t\t\tconst event = { persisted: false };\n\n\t\t\t\tconst Component = {\n\t\t\t\t\trender: function () {},\n\t\t\t\t\tmixins: [ mixinsInstance ]\n\t\t\t\t};\n\n\t\t\t\tconst wrapper = VueTestUtils.shallowMount( Component );\n\t\t\t\twrapper.vm.onPageHide( event );\n\n\t\t\t\texpect( mixinsInstance.methods.stashPageState ).toHaveBeenCalled();\n\t\t\t} );\n\t\t} );\n\t} );\n\n\tdescribe( 'onPopState', function () {\n\n\t\tbeforeEach( function () {\n\t\t\tmixinsInstance.methods.stashPageState = jest.fn();\n\t\t\tmixinsInstance.methods.resetResults = jest.fn();\n\t\t\tmixinsInstance.methods.clearLookupResults = jest.fn();\n\t\t\tmixinsInstance.methods.resetFilters = jest.fn();\n\t\t\tmixinsInstance.methods.clearFilterQueryParams = jest.fn();\n\t\t\tmixinsInstance.methods.setSearchTerm = jest.fn();\n\t\t\tmixinsInstance.methods.updateCurrentType = jest.fn();\n\t\t} );\n\n\t\tit( 'it does not restore data when state is not passed as argument', function () {\n\t\t\tconst event = { state: false };\n\n\t\t\tconst Component = {\n\t\t\t\trender: function () {},\n\t\t\t\tmixins: [ mixinsInstance ]\n\t\t\t};\n\n\t\t\tconst wrapper = VueTestUtils.shallowMount( Component );\n\t\t\twrapper.vm.onPopState( event );\n\n\t\t\texpect( mixinsInstance.methods.setSearchTerm ).not.toHaveBeenCalled();\n\t\t} );\n\n\t\tit( 'it setSearchTerm using the event search paramether', function () {\n\t\t\tconst event = {\n\t\t\t\tstate: {\n\t\t\t\t\tsearch: 'dummy',\n\t\t\t\t\ttype: 'dummy'\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tconst Component = {\n\t\t\t\trender: function () {},\n\t\t\t\tmixins: [ mixinsInstance ]\n\t\t\t};\n\n\t\t\tconst wrapper = VueTestUtils.shallowMount( Component );\n\t\t\twrapper.vm.onPopState( event );\n\n\t\t\texpect( mixinsInstance.methods.setSearchTerm ).toHaveBeenCalled();\n\t\t\texpect( mixinsInstance.methods.setSearchTerm ).toHaveBeenCalledWith( event.state.search );\n\t\t} );\n\n\t\tit( 'it set currentType using the event type paramether', function () {\n\t\t\tconst event = {\n\t\t\t\tstate: {\n\t\t\t\t\tsearch: 'dummy',\n\t\t\t\t\ttype: 'dummy'\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tconst Component = {\n\t\t\t\trender: function () {},\n\t\t\t\tmixins: [ mixinsInstance ]\n\t\t\t};\n\n\t\t\tconst wrapper = VueTestUtils.shallowMount( Component );\n\t\t\twrapper.vm.onPopState( event );\n\n\t\t\texpect( mixinsInstance.methods.updateCurrentType ).toHaveBeenCalled();\n\t\t\texpect( mixinsInstance.methods.updateCurrentType ).toHaveBeenCalledWith( event.state.type );\n\t\t} );\n\n\t\tit( 'it clear lookup result if term is empty string', function () {\n\t\t\tconst event = {\n\t\t\t\tstate: {\n\t\t\t\t\tsearch: 'dummy',\n\t\t\t\t\ttype: 'dummy'\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tconst Component = {\n\t\t\t\trender: function () {},\n\t\t\t\tmixins: [ mixinsInstance ],\n\t\t\t\tprops: {\n\t\t\t\t\tcurrentSearchTerm: ''\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tconst wrapper = VueTestUtils.shallowMount( Component,\n\t\t\t\t{\n\t\t\t\t\tpropsData: {\n\t\t\t\t\t\tcurrentSearchTerm: ''\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\twrapper.vm.onPopState( event );\n\n\t\t\t// the currentSearchTerm is set by the setSearchTerm method,\n\t\t\t// but in this case we have to manually set at load to be an empty string\n\t\t\texpect( mixinsInstance.methods.setSearchTerm ).toHaveBeenCalled();\n\n\t\t\texpect( wrapper.vm.currentSearchTerm ).toBe( '' );\n\t\t\texpect( mixinsInstance.methods.resetResults ).toHaveBeenCalled();\n\t\t} );\n\n\t\tit( 'it reset result if term is empty string', function () {\n\t\t\tconst event = {\n\t\t\t\tstate: {\n\t\t\t\t\tsearch: 'dummy',\n\t\t\t\t\ttype: 'dummy'\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tconst Component = {\n\t\t\t\trender: function () {},\n\t\t\t\tmixins: [ mixinsInstance ],\n\t\t\t\tprops: {\n\t\t\t\t\tcurrentSearchTerm: ''\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tconst wrapper = VueTestUtils.shallowMount( Component,\n\t\t\t\t{\n\t\t\t\t\tpropsData: {\n\t\t\t\t\t\tcurrentSearchTerm: ''\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\twrapper.vm.onPopState( event );\n\n\t\t\t// the term is set by the setSearchTerm method,\n\t\t\t// but in this case we have to manually set at load to be an empty string\n\t\t\texpect( mixinsInstance.methods.setSearchTerm ).toHaveBeenCalled();\n\n\t\t\texpect( wrapper.vm.currentSearchTerm ).toBe( '' );\n\t\t\texpect( mixinsInstance.methods.clearLookupResults ).toHaveBeenCalled();\n\t\t} );\n\n\t\tit( 'resetFilters', function () {\n\t\t\tconst event = {\n\t\t\t\tstate: {\n\t\t\t\t\tsearch: 'dummy',\n\t\t\t\t\ttype: 'dummy'\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tconst Component = {\n\t\t\t\trender: function () {},\n\t\t\t\tmixins: [ mixinsInstance ]\n\t\t\t};\n\n\t\t\tconst wrapper = VueTestUtils.shallowMount( Component );\n\t\t\twrapper.vm.onPopState( event );\n\n\t\t\texpect( mixinsInstance.methods.resetFilters ).toHaveBeenCalled();\n\t\t} );\n\n\t\tit( 'clearFilterQueryParams', function () {\n\t\t\tconst event = {\n\t\t\t\tstate: {\n\t\t\t\t\tsearch: 'dummy',\n\t\t\t\t\ttype: 'dummy'\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tconst Component = {\n\t\t\t\trender: function () {},\n\t\t\t\tmixins: [ mixinsInstance ]\n\t\t\t};\n\n\t\t\tconst wrapper = VueTestUtils.shallowMount( Component );\n\t\t\twrapper.vm.onPopState( event );\n\n\t\t\texpect( mixinsInstance.methods.clearFilterQueryParams ).toHaveBeenCalled();\n\t\t} );\n\t} );\n\n\tdescribe( 'on unmount ', function () {\n\t\tit( 'remove the popstate event listener', function () {\n\t\t\tmixinsInstance.methods.restorePageStateIfNecessary = jest.fn();\n\t\t\tconst Component = {\n\t\t\t\trender: function () {},\n\t\t\t\tprops: {\n\t\t\t\t\tcurrentType: null,\n\t\t\t\t\tterm: null\n\t\t\t\t},\n\t\t\t\tmixins: [ mixinsInstance ]\n\t\t\t};\n\n\t\t\tconst wrapper = VueTestUtils.shallowMount( Component, {\n\t\t\t\tpropsData: {\n\t\t\t\t\tcurrentType: 'dummy',\n\t\t\t\t\tterm: 'dummy'\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\twrapper.unmount();\n\n\t\t\texpect( window.removeEventListener ).toHaveBeenCalled();\n\t\t\texpect( window.removeEventListener ).toHaveBeenCalledTimes( 1 );\n\n\t\t} );\n\t} );\n\n\tdescribe( 'on mounted', function () {\n\t\tit( 'triggers replaceQueryToHistoryState', function () {\n\t\t\tconst Component = {\n\t\t\t\trender: function () {},\n\t\t\t\tmixins: [ mixinsInstance ]\n\t\t\t};\n\n\t\t\tVueTestUtils.shallowMount( Component );\n\n\t\t\texpect( mixinsInstance.methods.replaceQueryToHistoryState ).toHaveBeenCalled();\n\n\t\t} );\n\t} );\n} );\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/jest/mocks/EventListener.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/jest/mocks/ExecCommand.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/jest/mocks/IntersectionObserver.js","messages":[],"suppressedMessages":[{"ruleId":"compat/compat","severity":1,"message":"IntersectionObserver is not supported in Safari 9.1, IE 11","line":10,"column":1,"nodeType":"MemberExpression","endLine":10,"endColumn":28,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/jest/mocks/Performance.js","messages":[{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":2,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":2,"endColumn":46},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":6,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":12,"endColumn":3},{"ruleId":"es-x/no-default-parameters","severity":2,"message":"ES2015 default parameters are forbidden.","line":6,"column":46,"nodeType":"AssignmentPattern","messageId":"forbidden","endLine":6,"endColumn":63},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":14,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":19,"endColumn":3},{"ruleId":"es-x/no-default-parameters","severity":2,"message":"ES2015 default parameters are forbidden.","line":14,"column":56,"nodeType":"AssignmentPattern","messageId":"forbidden","endLine":14,"endColumn":64},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":21,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":23,"endColumn":3}],"suppressedMessages":[{"ruleId":"compat/compat","severity":1,"message":"performance.getEntriesByType() is not supported in Safari 9.1, iOS Safari 9.0-9.2","line":7,"column":2,"nodeType":"MemberExpression","endLine":7,"endColumn":37,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"compat/compat","severity":1,"message":"performance.getEntriesByType() is not supported in Safari 9.1, iOS Safari 9.0-9.2","line":15,"column":2,"nodeType":"MemberExpression","endLine":15,"endColumn":37,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":6,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/* eslint-disable compat/compat */\nconst nativePerformance = window.performance;\n\n// Set the performance navigation by defining the NatigationTiming\n// https://developer.mozilla.org/en-US/docs/Web/API/PerformanceNavigationTiming/type\nconst mockPerformanceNavigation = function ( type = 'navigate' ) {\n\twindow.performance.getEntriesByType = jest.fn().mockReturnValue(\n\t\t[ {\n\t\t\ttype: type\n\t\t} ]\n\t);\n};\n\nconst mockDeprecatedPerformanceNavigation = function ( type = 1 ) {\n\twindow.performance.getEntriesByType = null;\n\twindow.performance.navigation = {\n\t\ttype: type\n\t};\n};\n\nconst restorePerformance = function () {\n\twindow.performance = nativePerformance;\n};\n\nmodule.exports = {\n\tmockPerformanceNavigation: mockPerformanceNavigation,\n\tmockDeprecatedPerformanceNavigation: mockDeprecatedPerformanceNavigation,\n\trestorePerformance: restorePerformance\n};\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/jest/mocks/history.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/jest/store/actions.test.js","messages":[{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":1,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":7,"endColumn":37},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":11,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":11,"endColumn":13},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":12,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":12,"endColumn":13},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":89,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":89,"endColumn":71},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":222,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":222,"endColumn":117},{"ruleId":"max-statements-per-line","severity":2,"message":"This line has 2 statements. Maximum allowed is 1.","line":222,"column":79,"nodeType":"ReturnStatement","messageId":"exceed","endLine":222,"endColumn":112},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":250,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":250,"endColumn":121},{"ruleId":"max-statements-per-line","severity":2,"message":"This line has 2 statements. Maximum allowed is 1.","line":250,"column":79,"nodeType":"ReturnStatement","messageId":"exceed","endLine":250,"endColumn":116},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":268,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":268,"endColumn":119},{"ruleId":"max-statements-per-line","severity":2,"message":"This line has 2 statements. Maximum allowed is 1.","line":268,"column":77,"nodeType":"ReturnStatement","messageId":"exceed","endLine":268,"endColumn":114},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":269,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":269,"endColumn":46},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":277,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":279,"endColumn":34},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":314,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":314,"endColumn":119},{"ruleId":"max-statements-per-line","severity":2,"message":"This line has 2 statements. Maximum allowed is 1.","line":314,"column":77,"nodeType":"ReturnStatement","messageId":"exceed","endLine":314,"endColumn":114},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":315,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":315,"endColumn":46},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":435,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":435,"endColumn":172},{"ruleId":"max-statements-per-line","severity":2,"message":"This line has 2 statements. Maximum allowed is 1.","line":435,"column":108,"nodeType":"ReturnStatement","messageId":"exceed","endLine":435,"endColumn":167},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":464,"column":2,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":464,"endColumn":14},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":618,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":618,"endColumn":26},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":667,"column":2,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":667,"endColumn":56},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":679,"column":3,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":679,"endColumn":151},{"ruleId":"max-statements-per-line","severity":2,"message":"This line has 2 statements. Maximum allowed is 1.","line":679,"column":98,"nodeType":"ReturnStatement","messageId":"exceed","endLine":679,"endColumn":146},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":688,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":688,"endColumn":126},{"ruleId":"max-statements-per-line","severity":2,"message":"This line has 2 statements. Maximum allowed is 1.","line":688,"column":83,"nodeType":"ReturnStatement","messageId":"exceed","endLine":688,"endColumn":121},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":695,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":695,"endColumn":126},{"ruleId":"max-statements-per-line","severity":2,"message":"This line has 2 statements. Maximum allowed is 1.","line":695,"column":83,"nodeType":"ReturnStatement","messageId":"exceed","endLine":695,"endColumn":121},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":710,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":710,"endColumn":126},{"ruleId":"max-statements-per-line","severity":2,"message":"This line has 2 statements. Maximum allowed is 1.","line":710,"column":83,"nodeType":"ReturnStatement","messageId":"exceed","endLine":710,"endColumn":121}],"suppressedMessages":[{"ruleId":"camelcase","severity":2,"message":"Identifier 'mediasearch_1' is not in camel case.","line":183,"column":5,"nodeType":"Identifier","messageId":"notCamelCase","endLine":183,"endColumn":18,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'mediasearch_1' is not in camel case.","line":190,"column":6,"nodeType":"Identifier","messageId":"notCamelCase","endLine":190,"endColumn":19,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":28,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"const initialState = require( '../fixtures/initialVuexState.js' ),\n\tnamespaceGroups = require( '../fixtures/namespaceGroups.js' ),\n\tmockImageSearchApiResponse = require( '../fixtures/mockImageSearchApiResponse.json' ),\n\tmockEmptyImageSearchApiWithSuggestionResponse = require( '../fixtures/mockEmptyImageSearchApiWithSuggestion.json' ),\n\tmockImageDetailsApiResponse = require( '../fixtures/mockImageDetailsApiResponse.json' ),\n\tthumbRenderMap = [ 320, 640, 800, 1024, 1280, 1920 ],\n\twhen = require( 'jest-when' ).when;\n\nrequire( '../mocks/history.js' );\n\nlet context;\nlet actions;\n\nbeforeEach( function () {\n\tjest.resetModules();\n\tactions = require( '../../../resources/store/actions.js' );\n\n\t// Fake Vuex context object\n\t// (see: https://vuex.vuejs.org/api/#actions)\n\tcontext = {\n\t\tstate: JSON.parse( JSON.stringify( initialState ) ),\n\t\tgetters: jest.fn(),\n\t\tcommit: jest.fn(),\n\t\tdispatch: jest.fn()\n\t};\n\n\t// Search term & type\n\tcontext.getters.currentSearchTerm = 'cat';\n\tcontext.getters.currentType = 'image';\n\n\t// this is required to make sure that the getters and setters\n\t// are available within the \"this\"\n\tactions.getters = context.getters;\n\tactions.state = context.state;\n\tactions.commit = context.commit;\n} );\n\nafterEach( function () {\n\tjest.useRealTimers();\n\tcontext = null;\n\tactions = null;\n} );\n\n// this tests are focused at the internal search function\ndescribe( 'performNewSearch', function () {\n\n\tbeforeEach( function () {\n\t\t// Mocks for mw.config values\n\t\twhen( global.mw.config.get ).calledWith( 'wgUserLanguage' ).mockReturnValue( 'en' );\n\t\twhen( global.mw.config.get ).calledWith( 'sdmsNamespaceGroups' ).mockReturnValue( namespaceGroups );\n\t\twhen( global.mw.config.get ).calledWith( 'sdmsThumbRenderMap' ).mockReturnValue( thumbRenderMap );\n\t\twhen( global.mw.config.get ).calledWith( 'sdmsExternalSearchUri' ).mockReturnValue( false );\n\n\t\t// Fake an API response\n\t\tglobal.mw.Api.prototype.get.mockReturnValue(\n\t\t\t$.Deferred().resolve( mockImageSearchApiResponse ).promise()\n\t\t);\n\n\t} );\n\n\tit( 'is a function', function () {\n\t\texpect( actions.performNewSearch ).toBeInstanceOf( Function );\n\t} );\n\n\tdescribe( 'make an API request', function () {\n\t\tit( 'with the correct params for \"image\" type searches', function () {\n\t\t\tactions.performNewSearch( context );\n\t\t\texpect( global.mw.Api.prototype.get ).toHaveBeenCalledWith(\n\t\t\t\texpect.objectContaining( {\n\t\t\t\t\taction: 'query',\n\t\t\t\t\tformat: 'json',\n\t\t\t\t\tgenerator: 'search',\n\t\t\t\t\tgsrsearch: 'filetype:bitmap|drawing -fileres:0 ' + context.getters.currentSearchTerm,\n\t\t\t\t\tgsrnamespace: 6,\n\t\t\t\t\tgsrlimit: 40,\n\t\t\t\t\tgsroffset: 0,\n\t\t\t\t\tgsrinfo: 'totalhits|suggestion',\n\t\t\t\t\tgsrprop: 'size|wordcount|timestamp|snippet',\n\t\t\t\t\tprop: 'info|imageinfo|entityterms',\n\t\t\t\t\tinprop: 'url',\n\t\t\t\t\tiiprop: 'url|size|mime',\n\t\t\t\t\tiiurlheight: 180,\n\t\t\t\t\twbetterms: 'label'\n\t\t\t\t} )\n\t\t\t);\n\t\t} );\n\n\t\tit( 'with the correct params for \"page\" type searches', function () {\n\t\t\tlet allNamespaces = Object.keys( namespaceGroups.all ).join( '|' );\n\t\t\tcontext.getters.currentType = 'page';\n\t\t\tactions.performNewSearch( context );\n\t\t\texpect( global.mw.Api.prototype.get ).toHaveBeenCalledWith(\n\t\t\t\texpect.objectContaining( {\n\t\t\t\t\taction: 'query',\n\t\t\t\t\tformat: 'json',\n\t\t\t\t\tgenerator: 'search',\n\t\t\t\t\tgsrsearch: String( context.getters.currentSearchTerm ),\n\t\t\t\t\tgsrnamespace: allNamespaces,\n\t\t\t\t\tgsrlimit: 40,\n\t\t\t\t\tgsroffset: 0,\n\t\t\t\t\tgsrinfo: 'totalhits|suggestion',\n\t\t\t\t\tgsrprop: 'size|wordcount|timestamp|snippet',\n\t\t\t\t\tprop: 'info|categoryinfo'\n\t\t\t\t} )\n\t\t\t);\n\t\t} );\n\n\t\tit( 'with the correct params for \"other\" type searches', function () {\n\t\t\tcontext.getters.currentType = 'other';\n\t\t\tactions.performNewSearch( context );\n\t\t\texpect( global.mw.Api.prototype.get ).toHaveBeenCalledWith(\n\t\t\t\texpect.objectContaining( {\n\t\t\t\t\taction: 'query',\n\t\t\t\t\tformat: 'json',\n\t\t\t\t\tgenerator: 'search',\n\t\t\t\t\tgsrsearch: 'filetype:multimedia|office|archive|3d -fileres:0 ' + context.getters.currentSearchTerm,\n\t\t\t\t\tgsrnamespace: 6,\n\t\t\t\t\tgsrlimit: 40,\n\t\t\t\t\tgsroffset: 0,\n\t\t\t\t\tgsrinfo: 'totalhits|suggestion',\n\t\t\t\t\tgsrprop: 'size|wordcount|timestamp|snippet',\n\t\t\t\t\tprop: 'info|imageinfo|entityterms',\n\t\t\t\t\tinprop: 'url',\n\t\t\t\t\tiiprop: 'url|size|mime',\n\t\t\t\t\tiiurlheight: undefined,\n\t\t\t\t\tiiurlwidth: 320,\n\t\t\t\t\twbetterms: 'label'\n\t\t\t\t} )\n\t\t\t);\n\t\t} );\n\n\t\tit( 'with the correct params for \"video\" type searches', function () {\n\t\t\tcontext.getters.currentType = 'video';\n\t\t\tactions.performNewSearch( context );\n\t\t\texpect( global.mw.Api.prototype.get ).toHaveBeenCalledWith(\n\t\t\t\texpect.objectContaining( {\n\t\t\t\t\taction: 'query',\n\t\t\t\t\tformat: 'json',\n\t\t\t\t\tgenerator: 'search',\n\t\t\t\t\tgsrsearch: 'filetype:video -fileres:0 ' + context.getters.currentSearchTerm,\n\t\t\t\t\tgsrnamespace: 6,\n\t\t\t\t\tgsrlimit: 40,\n\t\t\t\t\tgsroffset: 0,\n\t\t\t\t\tgsrinfo: 'totalhits|suggestion',\n\t\t\t\t\tgsrprop: 'size|wordcount|timestamp|snippet',\n\t\t\t\t\tprop: 'info|imageinfo|entityterms',\n\t\t\t\t\tinprop: 'url',\n\t\t\t\t\tiiprop: 'url|size|mime',\n\t\t\t\t\tiiurlheight: undefined,\n\t\t\t\t\tiiurlwidth: 200,\n\t\t\t\t\twbetterms: 'label'\n\t\t\t\t} )\n\t\t\t);\n\t\t} );\n\n\t\tit( 'with the correct gsrsearch param for \"image\" type searches when filterValues is undefined', function () {\n\t\t\tcontext.state.filterValues[ context.getters.currentType ] = undefined;\n\n\t\t\tactions.performNewSearch( context );\n\t\t\texpect( global.mw.Api.prototype.get ).toHaveBeenCalledWith(\n\t\t\t\texpect.objectContaining( {\n\t\t\t\t\tgsrsearch: 'filetype:bitmap|drawing -fileres:0 ' + context.getters.currentSearchTerm\n\t\t\t\t} )\n\t\t\t);\n\t\t} );\n\n\t\tit( 'with sort parameter if specified in the filterValues', function () {\n\t\t\tcontext.state.filterValues[ context.getters.currentType ] = {\n\t\t\t\tsort: 'recency'\n\t\t\t};\n\n\t\t\tactions.performNewSearch( context );\n\t\t\texpect( global.mw.Api.prototype.get ).toHaveBeenCalledWith(\n\t\t\t\texpect.objectContaining( {\n\t\t\t\t\tgsrsort: 'create_timestamp_desc'\n\t\t\t\t} )\n\t\t\t);\n\t\t} );\n\n\t\tit( 'with mediasearch_ parameter if specified in the uriQuery', function () {\n\t\t\tcontext.state.uriQuery = {\n\t\t\t\t// eslint-disable-next-line camelcase\n\t\t\t\tmediasearch_1: 'mediasearch_test'\n\t\t\t};\n\n\t\t\tactions.performNewSearch( context );\n\t\t\texpect( global.mw.Api.prototype.get ).toHaveBeenCalledWith(\n\t\t\t\texpect.objectContaining( {\n\t\t\t\t\t// eslint-disable-next-line camelcase\n\t\t\t\t\tmediasearch_1: 'mediasearch_test'\n\t\t\t\t} )\n\t\t\t);\n\t\t} );\n\t} );\n\n\tit( 'sets the pending state to true when dispatched', function () {\n\t\tactions.performNewSearch( context );\n\t\texpect( context.commit ).toHaveBeenCalledWith( 'setPending', {\n\t\t\tpending: true,\n\t\t\ttype: context.getters.currentType\n\t\t} );\n\t} );\n\n\tit( 'resets the error state to false when dispatched', function () {\n\t\tactions.performNewSearch( context );\n\t\texpect( context.commit ).toHaveBeenCalledWith( 'setHasError', false );\n\t} );\n\n\tit( 'sets the pending state to false when the request is complete', function ( done ) {\n\t\tactions.performNewSearch( context ).then( function () {\n\t\t\texpect( context.commit ).toHaveBeenCalledWith( 'setPending', {\n\t\t\t\tpending: false,\n\t\t\t\ttype: context.getters.currentType\n\t\t\t} );\n\n\t\t\tdone();\n\t\t} );\n\t} );\n\n\tit( 'commits an \"addResult\" mutation for every result returned from the API', function ( done ) {\n\t\tactions.performNewSearch( context ).then( function () {\n\t\t\tlet addResultCalls = context.commit.mock.calls.filter( function ( call ) { return call[ 0 ] === 'addResult'; } );\n\t\t\texpect(\n\t\t\t\taddResultCalls.length\n\t\t\t).toEqual(\n\t\t\t\tObject.keys( mockImageSearchApiResponse.query.pages ).length\n\t\t\t);\n\t\t\tdone();\n\t\t} );\n\t} );\n\n\tit( 'prevent API request when there are no more result', function ( done ) {\n\t\tcontext.state.continue[ context.getters.currentType ] = null;\n\n\t\tactions.performNewSearch( context ).then( function () {\n\t\t\texpect( global.mw.Api.prototype.get ).not.toHaveBeenCalled();\n\t\t\tdone();\n\t\t} );\n\t} );\n\n\tdescribe( 'when response inludes suggestionInfo', function () {\n\t\tit( 'commits an \"setDidYouMean\" mutations', function ( done ) {\n\n\t\t\tcontext.getters.currentType = 'image';\n\t\t\tglobal.mw.Api.prototype.get.mockReturnValue(\n\t\t\t\t$.Deferred().resolve( mockEmptyImageSearchApiWithSuggestionResponse ).promise()\n\t\t\t);\n\n\t\t\tactions.performNewSearch( context ).then( function () {\n\t\t\t\tlet setDidYouMean = context.commit.mock.calls.filter( function ( call ) { return call[ 0 ] === 'setDidYouMean'; } );\n\t\t\t\texpect( setDidYouMean.length ).toEqual( 1 );\n\t\t\t\tdone();\n\t\t\t} );\n\t\t} );\n\n\t\tit( 'suggested term does not include filters', function ( done ) {\n\n\t\t\tcontext.getters.currentType = 'image';\n\t\t\tglobal.mw.Api.prototype.get.mockReturnValue(\n\t\t\t\t$.Deferred().resolve( mockEmptyImageSearchApiWithSuggestionResponse ).promise()\n\t\t\t);\n\t\t\t// we set the filter values state as expected by the code\n\t\t\tcontext.state.filterValues = {\n\t\t\t\timage: { filemime: 'jpeg' }\n\t\t\t};\n\n\t\t\tactions.performNewSearch( context ).then( function () {\n\t\t\t\tlet setDidYouMean = context.commit.mock.calls.find( function ( call ) { return call[ 0 ] === 'setDidYouMean'; } );\n\t\t\t\tconst suggestedTerm = setDidYouMean[ 1 ];\n\t\t\t\texpect( suggestedTerm ).not.toContain( 'jpeg' );\n\t\t\t\texpect( suggestedTerm ).not.toContain( 'filemime' );\n\t\t\t\tdone();\n\t\t\t} );\n\t\t} );\n\n\t\tit( 'Handles errors successfully', function ( done ) {\n\t\t\tconst deferred = $.Deferred(),\n\t\t\t\tpromise = deferred.promise(),\n\t\t\t\tpendingRequestType = 'video';\n\n\t\t\t// we need to set a different type than the current one in pending state\n\t\t\tcontext.state.pending[ pendingRequestType ] = true;\n\t\t\tglobal.mw.Api.prototype.get.mockReturnValue( promise );\n\t\t\tactions.performNewSearch( context );\n\n\t\t\tpromise.then( function () {\n\t\t\t\t// We only care about errors here, so do nothing\n\t\t\t} ).catch( function () {\n\t\t\t\texpect( context.commit ).toHaveBeenCalledWith( 'setHasError', true );\n\t\t\t} ).always( function () {\n\t\t\t\texpect( context.commit ).toHaveBeenCalledWith( 'setPending', {\n\t\t\t\t\ttype: pendingRequestType,\n\t\t\t\t\tpending: false\n\t\t\t\t} );\n\t\t\t\tdone();\n\t\t\t} );\n\n\t\t\t// This is our \"trigger\" so that our code above executes\n\t\t\tdeferred.reject( {} );\n\t\t} );\n\n\t\tit( 'suggested term does not include assessments', function ( done ) {\n\n\t\t\tcontext.getters.currentType = 'image';\n\t\t\tglobal.mw.Api.prototype.get.mockReturnValue(\n\t\t\t\t$.Deferred().resolve( mockEmptyImageSearchApiWithSuggestionResponse ).promise()\n\t\t\t);\n\t\t\t// we set the assessment values state as expected by the code\n\t\t\tcontext.state.filterValues = {\n\t\t\t\timage: { assessment: 'any-assessment' }\n\t\t\t};\n\n\t\t\tactions.performNewSearch( context ).then( function () {\n\t\t\t\tlet setDidYouMean = context.commit.mock.calls.find( function ( call ) { return call[ 0 ] === 'setDidYouMean'; } );\n\t\t\t\tconst suggestedTerm = setDidYouMean[ 1 ];\n\t\t\t\texpect( suggestedTerm ).not.toContain( 'assessment' );\n\t\t\t\texpect( suggestedTerm ).not.toContain( 'any-assessment' );\n\t\t\t\tdone();\n\t\t\t} );\n\t\t} );\n\t} );\n\n} );\n\ndescribe( 'searchMore', function () {\n\n\tbeforeEach( function () {\n\t\t// Mocks for mw.config values\n\t\twhen( global.mw.config.get ).calledWith( 'wgUserLanguage' ).mockReturnValue( 'en' );\n\t\twhen( global.mw.config.get ).calledWith( 'sdmsNamespaceGroups' ).mockReturnValue( namespaceGroups );\n\t\twhen( global.mw.config.get ).calledWith( 'sdmsThumbRenderMap' ).mockReturnValue( thumbRenderMap );\n\t\twhen( global.mw.config.get ).calledWith( 'sdmsExternalSearchUri' ).mockReturnValue( false );\n\n\t\t// Fake an API response\n\t\tglobal.mw.Api.prototype.get.mockReturnValue(\n\t\t\t$.Deferred().resolve( mockImageSearchApiResponse ).promise()\n\t\t);\n\t} );\n\n\tdescribe( 'will not run', function () {\n\t\tit( 'if checkForMore for current mediaType is false', function () {\n\t\t\tcontext.getters.currentType = 'image';\n\t\t\tcontext.getters.allResultsEmpty = false;\n\t\t\tcontext.getters.checkForMore = {\n\t\t\t\timage: false\n\t\t\t};\n\t\t\tactions.searchMore( context );\n\t\t\texpect( global.mw.Api.prototype.get ).not.toHaveBeenCalled();\n\t\t} );\n\t\tit( 'if autoloadCounter for current mediaType is 0', function () {\n\t\t\tcontext.getters.currentType = 'image';\n\t\t\tcontext.getters.allResultsEmpty = false;\n\t\t\tcontext.getters.checkForMore = {\n\t\t\t\timage: true\n\t\t\t};\n\t\t\tcontext.state.autoloadCounter = {\n\t\t\t\timage: 0\n\t\t\t};\n\t\t\tactions.searchMore( context );\n\t\t\texpect( global.mw.Api.prototype.get ).not.toHaveBeenCalled();\n\t\t} );\n\t\tit( 'if search state is error', function () {\n\t\t\tcontext.getters.currentType = 'image';\n\t\t\tcontext.getters.allResultsEmpty = false;\n\t\t\tcontext.getters.checkForMore = {\n\t\t\t\timage: true\n\t\t\t};\n\t\t\tcontext.state.autoloadCounter = {\n\t\t\t\timage: 1\n\t\t\t};\n\t\t\tcontext.state.hasError = true;\n\t\t\tactions.searchMore( context );\n\t\t\texpect( global.mw.Api.prototype.get ).not.toHaveBeenCalled();\n\t\t} );\n\t} );\n\tit( 'will run a search if state is not pending', function () {\n\t\tcontext.getters.currentType = 'image';\n\t\tcontext.getters.allResultsEmpty = false;\n\t\tcontext.getters.checkForMore = {\n\t\t\timage: true\n\t\t};\n\t\tcontext.state.autoloadCounter = {\n\t\t\timage: 1\n\t\t};\n\n\t\tactions.searchMore( context );\n\n\t\texpect( global.mw.Api.prototype.get ).toHaveBeenCalled();\n\t} );\n\n\tit( 'will decreate autocounter', function ( done ) {\n\t\texpect.hasAssertions();\n\t\tcontext.getters.currentType = 'image';\n\t\tcontext.getters.allResultsEmpty = false;\n\t\tcontext.getters.checkForMore = {\n\t\t\timage: true\n\t\t};\n\t\tcontext.state.autoloadCounter = {\n\t\t\timage: 1\n\t\t};\n\n\t\tactions.searchMore( context ).then( function () {\n\t\t\texpect( context.commit ).toHaveBeenCalled();\n\t\t\texpect( context.commit ).toHaveBeenCalledWith( 'decreaseAutoloadCounterForMediaType', context.getters.currentType );\n\t\t\tdone();\n\t\t} );\n\t} );\n\tdescribe( 'when resetCounter is set to true', function () {\n\t\tit( 'will reset the auto counter', function () {\n\t\t\tcontext.getters.currentType = 'image';\n\t\t\tcontext.getters.allResultsEmpty = false;\n\t\t\tcontext.getters.checkForMore = {\n\t\t\t\timage: true\n\t\t\t};\n\t\t\tcontext.state.autoloadCounter = {\n\t\t\t\timage: 1\n\t\t\t};\n\n\t\t\tactions.searchMore( context, true );\n\n\t\t\texpect( context.commit ).toHaveBeenCalled();\n\t\t\texpect( context.commit ).toHaveBeenCalledWith( 'resetAutoLoadForMediaType', context.getters.currentType );\n\t\t} );\n\t\tit( 'will not decrease autocounter, if resetCounter argument is true', function ( done ) {\n\t\t\tcontext.getters.currentType = 'image';\n\t\t\tcontext.getters.allResultsEmpty = false;\n\t\t\tcontext.getters.checkForMore = {\n\t\t\t\timage: true\n\t\t\t};\n\t\t\tcontext.state.autoloadCounter = {\n\t\t\t\timage: 1\n\t\t\t};\n\n\t\t\tactions.searchMore( context, true ).then( function () {\n\t\t\t\tconst decreaseAutoloadCounterForMediaTypeCalls = context.commit.mock.calls.filter( function ( call ) { return call[ 0 ] === 'decreaseAutoloadCounterForMediaType'; } );\n\t\t\t\texpect( decreaseAutoloadCounterForMediaTypeCalls.length ).toBe( 0 );\n\t\t\t\tdone();\n\t\t\t} );\n\t\t} );\n\t} );\n\n} );\n\ndescribe( 'clear', function () {\n\n\tit( 'commits all the expected mutations when called', function () {\n\t\tactions.clear( context );\n\t\texpect( context.commit ).toHaveBeenCalledWith( 'clearTerm' );\n\t\texpect( context.commit ).toHaveBeenCalledWith( 'resetFilters' );\n\t\texpect( context.commit ).toHaveBeenCalledWith( 'resetResults' );\n\t\texpect( context.commit ).toHaveBeenCalledWith( 'clearDidYouMean' );\n\t} );\n} );\n\ndescribe( 'ready', function () {\n\n\tit( 'commits the setInitialized mutation when called', function () {\n\t\tactions.ready( context );\n\t\texpect( context.commit ).toHaveBeenCalledWith( 'setInitialized' );\n\t} );\n} );\n\ndescribe( 'fetchDetails', function () {\n\tlet options;\n\n\tbeforeEach( function () {\n\n\t\t// Mocks for mw.config values\n\t\twhen( global.mw.config.get ).calledWith( 'wgUserLanguage' ).mockReturnValue( 'en' );\n\n\t\t// Fake an API response\n\t\tglobal.mw.Api.prototype.get.mockReturnValue(\n\t\t\t$.Deferred().resolve( mockImageDetailsApiResponse ).promise()\n\t\t);\n\n\t} );\n\n\tit( 'makes an API request with the correct params for \"image\" type details search', function () {\n\n\t\toptions = {\n\t\t\ttitle: 'dummy title',\n\t\t\tmediaType: 'image'\n\t\t};\n\n\t\tactions.fetchDetails( context, options );\n\t\texpect( global.mw.Api.prototype.get ).toHaveBeenCalledWith(\n\t\t\texpect.objectContaining( {\n\t\t\t\taction: 'query',\n\t\t\t\tformat: 'json',\n\t\t\t\tuselang: 'en',\n\t\t\t\tinprop: 'url',\n\t\t\t\ttitles: options.title,\n\t\t\t\tiiextmetadatalanguage: 'en',\n\t\t\t\tprop: 'info|imageinfo|entityterms',\n\t\t\t\tiiprop: 'url|size|mime|extmetadata',\n\t\t\t\tiiurlheight: 180\n\t\t\t} )\n\t\t);\n\t} );\n\n\tit( 'makes an API request with the correct params for \"audio\" type details search', function () {\n\n\t\toptions = {\n\t\t\ttitle: 'dummy title',\n\t\t\tmediaType: 'audio'\n\t\t};\n\n\t\tactions.fetchDetails( context, options );\n\t\texpect( global.mw.Api.prototype.get ).toHaveBeenCalledWith(\n\t\t\texpect.objectContaining( {\n\t\t\t\taction: 'query',\n\t\t\t\tformat: 'json',\n\t\t\t\tuselang: 'en',\n\t\t\t\tinprop: 'url',\n\t\t\t\ttitles: options.title,\n\t\t\t\tiiextmetadatalanguage: 'en',\n\t\t\t\tprop: 'info|videoinfo|entityterms',\n\t\t\t\tviprop: 'url|size|mime|extmetadata|derivatives',\n\t\t\t\tviurlwidth: 640\n\t\t\t} )\n\t\t);\n\t} );\n\n\tit( 'makes an API request with the correct params for \"video\" type details search', function () {\n\n\t\toptions = {\n\t\t\ttitle: 'dummy title',\n\t\t\tmediaType: 'video'\n\t\t};\n\n\t\tactions.fetchDetails( context, options );\n\t\texpect( global.mw.Api.prototype.get ).toHaveBeenCalledWith(\n\t\t\texpect.objectContaining( {\n\t\t\t\taction: 'query',\n\t\t\t\tformat: 'json',\n\t\t\t\tuselang: 'en',\n\t\t\t\tinprop: 'url',\n\t\t\t\ttitles: options.title,\n\t\t\t\tiiextmetadatalanguage: 'en',\n\t\t\t\tprop: 'info|videoinfo|entityterms',\n\t\t\t\tviprop: 'url|size|mime|extmetadata|derivatives',\n\t\t\t\tviurlwidth: 640\n\t\t\t} )\n\t\t);\n\t} );\n\n\tit( 'makes an API request with the correct params for \"page\" type details search', function () {\n\n\t\toptions = {\n\t\t\ttitle: 'dummy title',\n\t\t\tmediaType: 'page'\n\t\t};\n\n\t\tactions.fetchDetails( context, options );\n\t\texpect( global.mw.Api.prototype.get ).toHaveBeenCalledWith(\n\t\t\texpect.objectContaining( {\n\t\t\t\taction: 'query',\n\t\t\t\tformat: 'json',\n\t\t\t\tuselang: 'en',\n\t\t\t\tinprop: 'url',\n\t\t\t\ttitles: options.title,\n\t\t\t\tiiextmetadatalanguage: 'en',\n\t\t\t\tprop: 'info|imageinfo|entityterms',\n\t\t\t\tiiprop: 'url|size|mime|extmetadata',\n\t\t\t\tiiurlheight: undefined\n\t\t\t} )\n\t\t);\n\t} );\n} );\n\ndescribe( 'pushQueryToHistoryState', function () {\n\n\tit( 'calls history push state', function () {\n\t\tactions.pushQueryToHistoryState( context );\n\t\texpect( window.history.pushState ).toHaveBeenCalled();\n\t} );\n\n\tit( 'it passes the state.urQuery params', function () {\n\t\tcontext.state.uriQuery = {\n\t\t\tdummy: 'test'\n\t\t};\n\n\t\tactions.pushQueryToHistoryState( context );\n\t\texpect( window.history.pushState.mock.calls[ 0 ][ 0 ] ).toMatchObject( context.state.uriQuery );\n\t} );\n} );\n\ndescribe( 'replaceQueryToHistoryState', function () {\n\n\tit( 'calls history push state', function () {\n\t\tactions.replaceQueryToHistoryState( context );\n\t\texpect( window.history.replaceState ).toHaveBeenCalled();\n\t} );\n\n\tit( 'it passes the state.urQuery params', function () {\n\t\tcontext.state.uriQuery = {\n\t\t\tdummy: 'test'\n\t\t};\n\n\t\tactions.replaceQueryToHistoryState( context );\n\t\texpect( window.history.replaceState.mock.calls[ 0 ][ 0 ] ).toMatchObject( context.state.uriQuery );\n\t} );\n} );\n\ndescribe( 'updateCurrentType', function () {\n\n\tbeforeEach( function () {\n\t\tcontext.getters.currentType = 'dummy';\n\t} );\n\n\tit( 'remove existing filters', function () {\n\t\tactions.updateCurrentType( context );\n\t\texpect( context.commit ).toHaveBeenCalled();\n\t\texpect( context.commit.mock.calls[ 0 ][ 0 ] ).toBe( 'clearFilterQueryParams' );\n\t} );\n\n\tit( 'set current type', function () {\n\t\tconst newType = 'test';\n\t\tactions.updateCurrentType( context, newType );\n\t\texpect( context.commit ).toHaveBeenCalled();\n\t\texpect( context.commit.mock.calls[ 1 ][ 0 ] ).toBe( 'setCurrentType' );\n\t\texpect( context.commit.mock.calls[ 1 ][ 1 ] ).toBe( newType );\n\t} );\n\n\tit( 'updates filter query params with current type', function () {\n\t\tcontext.state.filterValues = {\n\t\t\ttest: {\n\t\t\t\tdummyFilter: true\n\t\t\t}\n\t\t};\n\t\tactions.updateCurrentType( context, 'test' );\n\t\texpect( context.commit ).toHaveBeenCalled();\n\t\texpect( context.commit.mock.calls[ 2 ][ 0 ] ).toBe( 'updateFilterQueryParams' );\n\t\texpect( context.commit.mock.calls[ 2 ][ 1 ] ).toBe( context.state.filterValues.test );\n\t} );\n\n\tit( 'does not trigger anything if type has not changed', function () {\n\t\tcontext.getters.currentType = 'dummy';\n\t\tactions.updateCurrentType( context, 'dummy' );\n\t\texpect( context.commit ).not.toHaveBeenCalled();\n\t} );\n} );\n\ndescribe( 'clearQueryParams', function () {\n\n\tit( 'triggers clearTerm mutation', function () {\n\t\tactions.clearQueryParams( context );\n\t\texpect( context.commit ).toHaveBeenCalled();\n\t\texpect( context.commit.mock.calls[ 0 ][ 0 ] ).toBe( 'clearTerm' );\n\t} );\n\n\tit( 'triggers clearFilterQueryParams mutation', function () {\n\t\tactions.clearQueryParams( context );\n\t\texpect( context.commit ).toHaveBeenCalled();\n\t\texpect( context.commit.mock.calls[ 1 ][ 0 ] ).toBe( 'clearFilterQueryParams' );\n\t} );\n\n\tit( 'triggers pushQueryToHistoryState action', function () {\n\t\tactions.clearQueryParams( context );\n\t\texpect( context.dispatch ).toHaveBeenCalled();\n\t\texpect( context.dispatch ).toHaveBeenCalledWith( 'pushQueryToHistoryState' );\n\t} );\n} );\n\ndescribe( 'syncActiveTypeAndQueryType', function () {\n\n\tconst dummySdmsInitialSearchResultsType = 'dummyType';\n\n\tbeforeEach( function () {\n\t\t// Mocks for mw.config values\n\t\twhen( global.mw.config.get ).calledWith( 'sdmsInitialSearchResults' ).mockReturnValue( {\n\t\t\tactiveType: dummySdmsInitialSearchResultsType\n\t\t} );\n\t} );\n\n\tit( 'fetch active type from sdmsInitialSearchResults', function () {\n\t\tactions.syncActiveTypeAndQueryType( context );\n\n\t\tlet sdmsInitialSearchResultsCall = global.mw.config.get.mock.calls.filter( function ( call ) { return call[ 0 ] === 'sdmsInitialSearchResults'; } );\n\t\texpect( sdmsInitialSearchResultsCall.length ).toEqual( 1 );\n\t} );\n\n\tdescribe( 'when sdmsInitialSearchResults and uriQuery.type missmatch', function () {\n\n\t\tit( 'commit a setCurrentType mutation', function () {\n\t\t\tactions.syncActiveTypeAndQueryType( context );\n\n\t\t\tlet setCurrentTypeCall = context.commit.mock.calls.filter( function ( call ) { return call[ 0 ] === 'setCurrentType'; } );\n\t\t\texpect( setCurrentTypeCall.length ).toEqual( 1 );\n\t\t} );\n\n\t\tit( 'update type with sdmsInitialSearchResults value', function () {\n\t\t\tactions.syncActiveTypeAndQueryType( context );\n\n\t\t\tlet setCurrentTypeCall = context.commit.mock.calls.filter( function ( call ) { return call[ 0 ] === 'setCurrentType'; } );\n\t\t\texpect( setCurrentTypeCall[ 0 ][ 1 ] ).toEqual( dummySdmsInitialSearchResultsType );\n\t\t} );\n\t} );\n\n\tdescribe( 'when sdmsInitialSearchResults and uriQuery.type match', function () {\n\n\t\tit( 'does not trigger setCurrentType commit', function () {\n\n\t\t\tcontext.state.uriQuery = {\n\t\t\t\ttype: dummySdmsInitialSearchResultsType\n\t\t\t};\n\n\t\t\tactions.syncActiveTypeAndQueryType( context );\n\n\t\t\tlet setCurrentTypeCall = context.commit.mock.calls.filter( function ( call ) { return call[ 0 ] === 'setCurrentType'; } );\n\t\t\texpect( setCurrentTypeCall.length ).toEqual( 0 );\n\t\t} );\n\t} );\n} );\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/jest/store/getters.test.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/jest/store/mutations.test.js","messages":[{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":1,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":2,"endColumn":62},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":5,"column":2,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":5,"endColumn":12},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":19,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":19,"endColumn":26},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":45,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":45,"endColumn":38},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":46,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":46,"endColumn":32},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":57,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":57,"endColumn":39},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":58,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":58,"endColumn":33},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":59,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":59,"endColumn":32},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":82,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":82,"endColumn":39},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":83,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":83,"endColumn":33},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":84,"column":5,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":84,"endColumn":32},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":108,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":111,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":120,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":123,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":132,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":135,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":144,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":147,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":156,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":158,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":167,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":167,"endColumn":29},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":168,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":168,"endColumn":30},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":169,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":169,"endColumn":32},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":185,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":185,"endColumn":29},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":186,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":186,"endColumn":30},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":187,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":187,"endColumn":35},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":188,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":188,"endColumn":37},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":189,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":189,"endColumn":32},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":221,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":221,"endColumn":29},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":222,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":222,"endColumn":30},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":223,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":223,"endColumn":35},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":224,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":224,"endColumn":37},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":225,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":225,"endColumn":32},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":226,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":226,"endColumn":31},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":255,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":255,"endColumn":36},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":308,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":324,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":345,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":352,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":423,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":428,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":438,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":438,"endColumn":28},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":454,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":454,"endColumn":25},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":470,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":470,"endColumn":35},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":489,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":492,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":504,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":507,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":522,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":528,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":537,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":537,"endColumn":28},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":545,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":545,"endColumn":28},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":558,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":558,"endColumn":28},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":567,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":567,"endColumn":28}],"suppressedMessages":[],"errorCount":44,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"const mutations = require( '../../../resources/store/mutations.js' ),\n\tinitialState = require( '../fixtures/initialVuexState.js' );\n\ndescribe( 'mutations', function () {\n\tlet state;\n\n\tbeforeEach( function () {\n\t\tstate = JSON.parse( JSON.stringify( initialState ) );\n\t\twindow.scrollY = 0;\n\t} );\n\n\tafterEach( function () {\n\t\tstate = null;\n\t\tjest.useRealTimers();\n\t} );\n\n\tdescribe( 'setSearchTerm', function () {\n\t\tit( 'assigns a new value to the \"search\" property in state.uriQuery', function () {\n\t\t\tconst newTerm = 'cat';\n\t\t\tmutations.setSearchTerm( state, newTerm );\n\t\t\texpect( state.uriQuery.search ).toBe( newTerm );\n\t\t} );\n\t} );\n\n\tdescribe( 'clearTerm', function () {\n\t\tit( 'resets the \"search\" property to an empty string', function () {\n\t\t\tstate.uriQuery.search = 'cat';\n\t\t\tmutations.clearTerm( state );\n\t\t\texpect( state.uriQuery.search ).toBe( '' );\n\t\t} );\n\t} );\n\n\tdescribe( 'setHasError', function () {\n\t\tit( 'sets the error state to the new value', function () {\n\t\t\tmutations.setHasError( state, true );\n\t\t\texpect( state.hasError ).toBe( true );\n\n\t\t\tmutations.setHasError( state, false );\n\t\t\texpect( state.hasError ).toBe( false );\n\t\t} );\n\t} );\n\n\tdescribe( 'addResult', function () {\n\t\tit( 'adds an individual result item to the array of the appropriate type', function () {\n\t\t\tconst resultItem = { foo: 'bar' };\n\t\t\tconst currentType = 'image';\n\n\t\t\tmutations.addResult( state, { type: currentType, item: resultItem } );\n\t\t\texpect( state.results[ currentType ].length ).toBe( 1 );\n\t\t\texpect( state.results[ currentType ][ 0 ] ).toEqual( resultItem );\n\t\t} );\n\t} );\n\n\tdescribe( 'resetResults', function () {\n\t\tdescribe( 'when a payload is provided', function () {\n\t\t\tit( 'resets results, continue, and totalHits properties for the appropriate type', function () {\n\t\t\t\tconst resultItem = { foo: 'bar' };\n\t\t\t\tconst currentType = 'image';\n\t\t\t\tconst secondType = 'video';\n\n\t\t\t\t// Set up some data to ensure it is properly cleared\n\t\t\t\tmutations.addResult( state, { type: currentType, item: resultItem } );\n\t\t\t\tmutations.setContinue( state, { type: currentType, continue: 'gsroffset||' } );\n\t\t\t\tmutations.setTotalHits( state, { mediaType: currentType, totalHits: 12345 } );\n\n\t\t\t\t// Add data in another tab to ensure it is not cleared\n\t\t\t\tmutations.addResult( state, { type: secondType, item: resultItem } );\n\n\t\t\t\t// Clear the current type\n\t\t\t\tmutations.resetResults( state, currentType );\n\n\t\t\t\t// Expect the data for the current type to be reset, while second type is preserved\n\t\t\t\texpect( state.results[ currentType ] ).toEqual( [] );\n\t\t\t\texpect( state.continue[ currentType ] ).toBe( undefined );\n\t\t\t\texpect( state.totalHits[ currentType ] ).toBe( 0 );\n\t\t\t\texpect( state.results[ secondType ] ).toEqual( [ resultItem ] );\n\t\t\t} );\n\t\t} );\n\n\t\tdescribe( 'when no payload is provided', function () {\n\t\t\tit( 'resets results, continue, and totalHits properties for all types', function () {\n\t\t\t\tconst resultItem = { foo: 'bar' };\n\t\t\t\tconst currentType = 'image';\n\t\t\t\tconst secondType = 'video';\n\n\t\t\t\t// Set up some data to ensure it is properly cleared\n\t\t\t\tmutations.addResult( state, { type: currentType, item: resultItem } );\n\t\t\t\tmutations.setContinue( state, { type: currentType, continue: 'gsroffset||' } );\n\t\t\t\tmutations.setTotalHits( state, { mediaType: currentType, totalHits: 12345 } );\n\n\t\t\t\t// Add data in another tab to ensure it is also cleared\n\t\t\t\tmutations.addResult( state, { type: secondType, item: resultItem } );\n\n\t\t\t\t// Clear data for all types\n\t\t\t\tmutations.resetResults( state );\n\n\t\t\t\t// Expect the data for the current type and second type to be reset\n\t\t\t\texpect( state.results[ currentType ] ).toEqual( [] );\n\t\t\t\texpect( state.continue[ currentType ] ).toBe( undefined );\n\t\t\t\texpect( state.totalHits[ currentType ] ).toBe( 0 );\n\t\t\t\texpect( state.results[ secondType ] ).toEqual( [] );\n\t\t\t} );\n\t\t} );\n\t} );\n\n\tdescribe( 'setContinue', function () {\n\t\tit( 'sets the value of provided type within the continue object', function () {\n\t\t\tconst dummyPayload = {\n\t\t\t\ttype: 'dummyType',\n\t\t\t\tcontinue: 'dummyContinue'\n\t\t\t};\n\t\t\tmutations.setContinue( state, dummyPayload );\n\t\t\texpect( state.continue[ dummyPayload.type ] ).toBeTruthy();\n\t\t\texpect( state.continue[ dummyPayload.type ] ).toBe( dummyPayload.continue );\n\t\t} );\n\t} );\n\n\tdescribe( 'setPending', function () {\n\t\tit( 'sets the value of provided type within the pending object', function () {\n\t\t\tconst dummyPayload = {\n\t\t\t\ttype: 'dummyType',\n\t\t\t\tpending: 'dummyPending'\n\t\t\t};\n\t\t\tmutations.setPending( state, dummyPayload );\n\t\t\texpect( state.pending[ dummyPayload.type ] ).toBeTruthy();\n\t\t\texpect( state.pending[ dummyPayload.type ] ).toBe( dummyPayload.pending );\n\t\t} );\n\t} );\n\n\tdescribe( 'setTotalHits', function () {\n\t\tit( 'sets the value of provided mediatype within the totalHits object', function () {\n\t\t\tconst dummyPayload = {\n\t\t\t\tmediaType: 'dummyType',\n\t\t\t\ttotalHits: 10\n\t\t\t};\n\t\t\tmutations.setTotalHits( state, dummyPayload );\n\t\t\texpect( state.totalHits[ dummyPayload.mediaType ] ).toBeTruthy();\n\t\t\texpect( state.totalHits[ dummyPayload.mediaType ] ).toBe( dummyPayload.totalHits );\n\t\t} );\n\t} );\n\n\tdescribe( 'setDetails', function () {\n\t\tit( 'sets the value of provided mediatype within the details object', function () {\n\t\t\tconst dummyPayload = {\n\t\t\t\tmediaType: 'dummyType',\n\t\t\t\tdetails: 10\n\t\t\t};\n\t\t\tmutations.setDetails( state, dummyPayload );\n\t\t\texpect( state.details[ dummyPayload.mediaType ] ).toBeTruthy();\n\t\t\texpect( state.details[ dummyPayload.mediaType ] ).toBe( dummyPayload.details );\n\t\t} );\n\t} );\n\n\tdescribe( 'clearDetails', function () {\n\t\tit( 'clears the value of provided mediatype within the details object', function () {\n\t\t\tconst dummyPayload = {\n\t\t\t\tmediaType: 'dummyType'\n\t\t\t};\n\t\t\tstate.details[ dummyPayload.mediaType ] = 'dummyValue';\n\t\t\tmutations.clearDetails( state, dummyPayload );\n\t\t\texpect( state.details[ dummyPayload.mediaType ] ).toBe( null );\n\t\t} );\n\t} );\n\n\tdescribe( 'addFilterValue', function () {\n\t\tit( 'adds a new key-value pair for the appropriate media type', function () {\n\t\t\tconst filterType = 'foo';\n\t\t\tconst filterValue = 'bar';\n\t\t\tconst currentType = 'image';\n\n\t\t\tmutations.addFilterValue( state, {\n\t\t\t\tmediaType: currentType,\n\t\t\t\tfilterType: filterType,\n\t\t\t\tvalue: filterValue\n\t\t\t} );\n\n\t\t\texpect( state.filterValues[ currentType ] ).toBeInstanceOf( Object );\n\t\t\texpect( Object.keys( state.filterValues[ currentType ] ) ).toHaveLength( 1 );\n\t\t\texpect( state.filterValues[ currentType ][ filterType ] ).toBe( filterValue );\n\t\t} );\n\t} );\n\n\tdescribe( 'removeFilterValue', function () {\n\t\tit( 'removes the specified key-value pair from the appropriate media type', function () {\n\t\t\tconst filterType = 'foo';\n\t\t\tconst filterValue = 'bar';\n\t\t\tconst secondFilterType = 'baz';\n\t\t\tconst secondFilterValue = 'quux';\n\t\t\tconst currentType = 'image';\n\n\t\t\t// Set up some data to remove\n\t\t\tmutations.addFilterValue( state, {\n\t\t\t\tmediaType: currentType,\n\t\t\t\tfilterType: filterType,\n\t\t\t\tvalue: filterValue\n\t\t\t} );\n\n\t\t\tmutations.addFilterValue( state, {\n\t\t\t\tmediaType: currentType,\n\t\t\t\tfilterType: secondFilterType,\n\t\t\t\tvalue: secondFilterValue\n\t\t\t} );\n\n\t\t\texpect( state.filterValues[ currentType ][ filterType ] ).toBe( filterValue );\n\t\t\texpect( state.filterValues[ currentType ][ secondFilterType ] ).toBe( secondFilterValue );\n\t\t\texpect( Object.keys( state.filterValues[ currentType ] ) ).toHaveLength( 2 );\n\n\t\t\t// Test that only the appropriate data is removed\n\t\t\tmutations.removeFilterValue( state, {\n\t\t\t\tmediaType: currentType,\n\t\t\t\tfilterType: filterType\n\t\t\t} );\n\n\t\t\texpect( Object.keys( state.filterValues[ currentType ] ) ).toHaveLength( 1 );\n\t\t\texpect( state.filterValues[ currentType ][ secondFilterType ] ).toBe( secondFilterValue );\n\t\t} );\n\t} );\n\n\tdescribe( 'resetFilters', function () {\n\t\tit( 'Resets all filters across all types to empty values', function () {\n\t\t\tconst filterType = 'foo';\n\t\t\tconst filterValue = 'bar';\n\t\t\tconst secondFilterType = 'baz';\n\t\t\tconst secondFilterValue = 'quux';\n\t\t\tconst currentType = 'image';\n\t\t\tconst secondType = 'video';\n\n\t\t\t// Set up some data to remove\n\t\t\tmutations.addFilterValue( state, {\n\t\t\t\tmediaType: currentType,\n\t\t\t\tfilterType: filterType,\n\t\t\t\tvalue: filterValue\n\t\t\t} );\n\n\t\t\tmutations.addFilterValue( state, {\n\t\t\t\tmediaType: currentType,\n\t\t\t\tfilterType: secondFilterType,\n\t\t\t\tvalue: secondFilterValue\n\t\t\t} );\n\n\t\t\tmutations.addFilterValue( state, {\n\t\t\t\tmediaType: secondType,\n\t\t\t\tfilterType: filterType,\n\t\t\t\tvalue: filterValue\n\t\t\t} );\n\n\t\t\tmutations.resetFilters( state );\n\t\t\texpect( state.filterValues[ currentType ] ).toEqual( {} );\n\t\t\texpect( state.filterValues[ secondType ] ).toEqual( {} );\n\t\t} );\n\t} );\n\n\tdescribe( 'setDidYouMean', function () {\n\t\tit( 'sets the value of didYouMean', function () {\n\t\t\tconst dummyValue = 'dummyValue';\n\t\t\tmutations.setDidYouMean( state, dummyValue );\n\t\t\texpect( state.didYouMean ).toBe( dummyValue );\n\t\t} );\n\t} );\n\n\tdescribe( 'clearDidYouMean', function () {\n\t\tit( 'clears the value of didYouMean', function () {\n\t\t\tstate.didYouMean = 'dummyValue';\n\t\t\tmutations.clearDidYouMean( state );\n\t\t\texpect( state.didYouMean ).toBe( null );\n\t\t} );\n\t} );\n\n\tdescribe( 'setDidYouMean', function () {\n\t\tit( 'sets the value of initialized to true', function () {\n\t\t\tmutations.setInitialized( state );\n\t\t\texpect( state.initialized ).toBe( true );\n\t\t} );\n\t} );\n\n\tdescribe( 'stashPageState', function () {\n\n\t\tit( 'calls setObject on the MW storage object with values from the state', function () {\n\t\t\tstate = {\n\t\t\t\tresults: 'result',\n\t\t\t\tcontinue: 'continue',\n\t\t\t\ttotalHits: 'totalHits',\n\t\t\t\tdetails: 'details',\n\t\t\t\tscrollY: 0\n\t\t\t};\n\n\t\t\tmutations.stashPageState( state );\n\t\t\texpect( mw.storage.setObject ).toHaveBeenCalled();\n\t\t\texpect( mw.storage.setObject.mock.calls[ 0 ][ 1 ] ).toMatchObject( state );\n\n\t\t} );\n\n\t\tit( 'calls setObject on the MW storage using scrollY from windows', function () {\n\t\t\tstate = {\n\t\t\t\tscrollY: 100\n\t\t\t};\n\t\t\twindow.scrollY = state.scrollY;\n\n\t\t\tmutations.stashPageState( state );\n\t\t\texpect( mw.storage.setObject ).toHaveBeenCalled();\n\t\t\texpect( mw.storage.setObject.mock.calls[ 0 ][ 1 ].scrollY ).toBe( state.scrollY );\n\n\t\t} );\n\t} );\n\n\tdescribe( 'restorePageState', function () {\n\t\tit( 'restore the store with stashed values', function () {\n\t\t\tconst stash = {\n\t\t\t\tresults: {\n\t\t\t\t\tdummy: 'result'\n\t\t\t\t},\n\t\t\t\tcontinue: {\n\t\t\t\t\tdummy: 'continue'\n\t\t\t\t},\n\t\t\t\ttotalHits: {\n\t\t\t\t\tdummy: 'totalHits'\n\t\t\t\t},\n\t\t\t\tfilterValues: {\n\t\t\t\t\tdummy: 'filterValues'\n\t\t\t\t},\n\t\t\t\tdetails: {\n\t\t\t\t\tdummy: 'details'\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tstate = {\n\t\t\t\tresults: {},\n\t\t\t\tcontinue: {},\n\t\t\t\ttotalHits: {},\n\t\t\t\tfilterValues: {},\n\t\t\t\tdetails: {}\n\t\t\t};\n\n\t\t\tmw.storage.getObject.mockReturnValue( stash );\n\n\t\t\tmutations.restorePageState( state );\n\t\t\texpect( state.results ).toMatchObject( stash.results );\n\t\t\texpect( state.continue ).toMatchObject( stash.continue );\n\t\t\texpect( state.totalHits ).toMatchObject( stash.totalHits );\n\t\t\texpect( state.filterValues ).toMatchObject( stash.filterValues );\n\t\t\texpect( state.details ).toMatchObject( stash.details );\n\t\t} );\n\n\t\tit( 'restore the scroll position from stashed value', function () {\n\t\t\tconst stash = {\n\t\t\t\tresults: {},\n\t\t\t\tcontinue: {},\n\t\t\t\ttotalHits: {},\n\t\t\t\tdetails: {},\n\t\t\t\tfilterValues: {},\n\t\t\t\tscrollY: 1000\n\t\t\t};\n\n\t\t\tstate = {\n\t\t\t\tresults: {},\n\t\t\t\tcontinue: {},\n\t\t\t\ttotalHits: {},\n\t\t\t\tdetails: {},\n\t\t\t\tfilterValues: {},\n\t\t\t\tscrollY: 0\n\t\t\t};\n\n\t\t\tjest.useFakeTimers();\n\t\t\twindow.scroll = jest.fn();\n\n\t\t\tmw.storage.getObject.mockReturnValue( stash );\n\t\t\tmutations.restorePageState( state );\n\n\t\t\tjest.runAllTimers();\n\n\t\t\texpect( window.scroll ).toHaveBeenCalled();\n\t\t\texpect( window.scroll ).toHaveBeenCalledWith( 0, stash.scrollY );\n\t\t} );\n\t} );\n\n\tdescribe( 'clearStoredPageState', function () {\n\t\tit( 'removes stashed values from mw storage', function () {\n\n\t\t\tmutations.clearStoredPageState();\n\n\t\t\texpect( mw.storage.remove ).toHaveBeenCalled();\n\t\t} );\n\t} );\n\n\tdescribe( 'clearFilterQueryParams', function () {\n\t\tit( 'delete all filter query params from the uriQuery object', function () {\n\t\t\tstate = {\n\t\t\t\tfilterValues: {\n\t\t\t\t\tfakeType: {\n\t\t\t\t\t\tdummy1: 'test',\n\t\t\t\t\t\tdummy2: 'test'\n\t\t\t\t\t},\n\t\t\t\t\tfakeType2: {\n\t\t\t\t\t\tdummy3: 'test',\n\t\t\t\t\t\tdummy4: 'test'\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\turiQuery: {\n\t\t\t\t\tdummy1: 'test',\n\t\t\t\t\tdummy2: 'test',\n\t\t\t\t\tdummy3: 'test',\n\t\t\t\t\tdummy4: 'test'\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tmutations.clearFilterQueryParams( state );\n\n\t\t\texpect( state ).toMatchObject( {} );\n\t\t} );\n\t} );\n\n\tdescribe( 'updateFilterQueryParams', function () {\n\t\tit( 'update all the filters with the provided object', function () {\n\t\t\tstate = {\n\t\t\t\turiQuery: {\n\t\t\t\t\tdummy1: '',\n\t\t\t\t\tdummy2: '',\n\t\t\t\t\tdummy3: '',\n\t\t\t\t\tdummy4: ''\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tconst newValues = {\n\t\t\t\tdummy1: 'test1',\n\t\t\t\tdummy2: 'test2',\n\t\t\t\tdummy3: 'test3',\n\t\t\t\tdummy4: 'test4'\n\t\t\t};\n\n\t\t\tmutations.updateFilterQueryParams( state, newValues );\n\n\t\t\texpect( state.uriQuery ).toMatchObject( newValues );\n\t\t} );\n\t} );\n\n\tdescribe( 'setCurrentType', function () {\n\t\tit( 'sets the uriQuery.type paramether to the media type provided', function () {\n\t\t\tconst newType = 'dummy';\n\n\t\t\tstate = {\n\t\t\t\turiQuery: {\n\t\t\t\t\ttype: ''\n\t\t\t\t},\n\t\t\t\tresults: {\n\t\t\t\t\tdummy: {}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tmutations.setCurrentType( state, newType );\n\n\t\t\texpect( state.uriQuery.type ).toBe( newType );\n\t\t} );\n\t\tit( 'does not set the value if type provided is null', function () {\n\t\t\tconst newType = null;\n\n\t\t\tstate = {\n\t\t\t\turiQuery: {\n\t\t\t\t\ttype: ''\n\t\t\t\t},\n\t\t\t\tresults: {\n\t\t\t\t\tdummy: {}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tmutations.setCurrentType( state, newType );\n\n\t\t\texpect( state.uriQuery.type ).not.toBe( newType );\n\t\t} );\n\t\tit( 'does not set the value if type provided is not one of the results key', function () {\n\t\t\tconst newType = 'anotherDummy';\n\n\t\t\tstate = {\n\t\t\t\turiQuery: {\n\t\t\t\t\ttype: ''\n\t\t\t\t},\n\t\t\t\tresults: {\n\t\t\t\t\tdummy: {}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tmutations.setCurrentType( state, newType );\n\n\t\t\texpect( state.uriQuery.type ).not.toBe( newType );\n\t\t} );\n\t} );\n\n\tdescribe( 'updateOrDeleteQueryParam', function () {\n\t\tit( 'updates the uriQuery params when a value is set', function () {\n\t\t\tconst newParams = {\n\t\t\t\tkey: 'dummyKey',\n\t\t\t\tvalue: 'dummyValue'\n\t\t\t};\n\n\t\t\tstate = {\n\t\t\t\turiQuery: {}\n\t\t\t};\n\n\t\t\tmutations.updateOrDeleteQueryParam( state, newParams );\n\n\t\t\texpect( state.uriQuery[ newParams.key ] ).toBe( newParams.value );\n\t\t} );\n\n\t\tit( 'deletes the uriQuery params when a value is falsy', function () {\n\t\t\tconst newParams = {\n\t\t\t\tkey: 'dummyKey',\n\t\t\t\tvalue: null\n\t\t\t};\n\n\t\t\tstate = {\n\t\t\t\turiQuery: {}\n\t\t\t};\n\n\t\t\tmutations.updateOrDeleteQueryParam( state, newParams );\n\n\t\t\texpect( state.uriQuery[ newParams.key ] ).toBe( undefined );\n\t\t} );\n\t} );\n\n\tdescribe( 'resetAutoLoadForAllMediaType', function () {\n\t\tit( 'reset the autoload state object for all media type', function () {\n\t\t\t// 2 is the defined constant\n\t\t\tconst expectedResult = {\n\t\t\t\timage: 2,\n\t\t\t\taudio: 2,\n\t\t\t\tvideo: 2,\n\t\t\t\tpage: 2,\n\t\t\t\tother: 2\n\t\t\t};\n\n\t\t\tmutations.resetAutoLoadForAllMediaType( state );\n\t\t\texpect( state.autoloadCounter ).toMatchObject( expectedResult );\n\t\t} );\n\t} );\n\n\tdescribe( 'resetAutoLoadForMediaType', function () {\n\t\tit( 'reset the autoload state object for a specific MediaType', function () {\n\t\t\tconst expectedValue = 2;\n\n\t\t\tmutations.resetAutoLoadForMediaType( state, 'image' );\n\t\t\texpect( state.autoloadCounter.image ).toBe( expectedValue );\n\t\t} );\n\n\t\tit( 'does not change the other media types', function () {\n\t\t\t// 2 is the defined constant\n\t\t\tconst expectedValue = 0;\n\n\t\t\tmutations.resetAutoLoadForMediaType( state, 'image' );\n\t\t\texpect( state.autoloadCounter.audio ).toBe( expectedValue );\n\t\t\texpect( state.autoloadCounter.video ).toBe( expectedValue );\n\t\t\texpect( state.autoloadCounter.page ).toBe( expectedValue );\n\t\t\texpect( state.autoloadCounter.other ).toBe( expectedValue );\n\t\t} );\n\t} );\n\n\tdescribe( 'decreaseAutoloadCounterForMediaType', function () {\n\t\tit( 'does not decrease the autoload if value is 0', function () {\n\t\t\t// 2 is the defined constant\n\t\t\tconst expectedValue = 0;\n\n\t\t\texpect( state.autoloadCounter.image ).toBe( expectedValue );\n\t\t\tmutations.decreaseAutoloadCounterForMediaType( state, 'image' );\n\t\t\texpect( state.autoloadCounter.image ).toBe( expectedValue );\n\t\t} );\n\n\t\tit( 'decrease the autoload state object for a specific MediaType', function () {\n\t\t\tstate.autoloadCounter.image = 2;\n\t\t\tconst expectedValue = 1;\n\n\t\t\tmutations.decreaseAutoloadCounterForMediaType( state, 'image' );\n\t\t\texpect( state.autoloadCounter.image ).toBe( expectedValue );\n\t\t} );\n\t} );\n} );\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/jest/store/store.test.js","messages":[{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":12,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":14,"endColumn":30},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":16,"column":1,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":25,"endColumn":5},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":19,"column":8,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":19,"endColumn":15},{"ruleId":"max-statements-per-line","severity":2,"message":"This line has 2 statements. Maximum allowed is 1.","line":22,"column":64,"nodeType":"ReturnStatement","messageId":"exceed","endLine":22,"endColumn":87},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":83,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":86,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":100,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":103,"endColumn":6},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":198,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":198,"endColumn":43},{"ruleId":"es-x/no-block-scoped-variables","severity":2,"message":"ES2015 block-scoped variables are forbidden.","line":209,"column":4,"nodeType":"VariableDeclaration","messageId":"forbidden","endLine":209,"endColumn":43}],"suppressedMessages":[],"errorCount":8,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/*!\n * WikiLambda unit test suite for the root Vuex store\n *\n * @copyright 2020–2021 WikiLambda team; see AUTHORS.txt\n * @license MIT\n */\n\n'use strict';\n\nvar when = require( 'jest-when' ).when;\n\nlet state,\n\tactiveType = 'audio',\n\tensureArrayMock = jest.fn();\n\nconst initializeMocks = ( function ( options ) {\n\t// we set the return of ensureArray to the result if available\n\tensureArrayMock.mockReturnValue( options.sdmsInitialSearchResults.results || [] );\n\tfor ( let key in options ) {\n\t\twhen( global.mw.config.get ).calledWith( key ).mockReturnValue( options[ key ] );\n\t}\n\tjest.mock( '../../../resources/ensureArray.js', function () { return ensureArrayMock; } );\n\tstate = require( '../../../resources/store/state.js' );\n\n} );\n\ndescribe( 'Vuex root state', function () {\n\n\tbeforeEach( function () {\n\t\tjest.resetAllMocks();\n\t\tjest.resetModules();\n\t} );\n\n\tafterEach( function () {\n\t\tstate = null;\n\t\tglobal.mw.config.get = jest.fn();\n\t} );\n\n\tdescribe( 'didYouMean', function () {\n\n\t\tit( 'return config sdmsDidYouMean', function () {\n\n\t\t\tinitializeMocks( {\n\t\t\t\tsdmsInitialFilters: '{}',\n\t\t\t\tsdmsInitialSearchResults: {\n\t\t\t\t\tactiveType: activeType\n\t\t\t\t},\n\t\t\t\tsdmsDidYouMean: 'didYouMean'\n\t\t\t} );\n\t\t\texpect( state.didYouMean ).toBe( 'didYouMean' );\n\t\t} );\n\t} );\n\n\tdescribe( 'hasError', function () {\n\n\t\tit( 'return config sdmsHasError', function () {\n\t\t\tinitializeMocks( {\n\t\t\t\tsdmsInitialFilters: '{}',\n\t\t\t\tsdmsInitialSearchResults: {\n\t\t\t\t\tactiveType: activeType\n\t\t\t\t},\n\t\t\t\tsdmsHasError: 'hasError'\n\t\t\t} );\n\t\t\texpect( state.hasError ).toBe( 'hasError' );\n\t\t} );\n\t} );\n\n\tdescribe( 'results', function () {\n\t\tit( 'return an empty array if result is not set', function () {\n\n\t\t\tinitializeMocks( {\n\t\t\t\tsdmsInitialFilters: '{}',\n\t\t\t\tsdmsInitialSearchResults: {\n\t\t\t\t\tactiveType: activeType\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\texpect( state.results.audio ).toEqual( [] );\n\n\t\t} );\n\t\tit( 'return sdmsInitialSearchResults for active type', function () {\n\n\t\t\tconst mockResult = [\n\t\t\t\t{ index: 1, title: 'foo' },\n\t\t\t\t{ index: 2, title: 'bar' }\n\t\t\t];\n\t\t\tinitializeMocks( {\n\t\t\t\tsdmsInitialFilters: '{}',\n\t\t\t\tsdmsInitialSearchResults: {\n\t\t\t\t\tactiveType: activeType,\n\t\t\t\t\tresults: mockResult\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\texpect( state.results.audio ).toEqual( mockResult );\n\n\t\t} );\n\t\tit( 'return empty for non active type', function () {\n\n\t\t\tconst mockResult = [\n\t\t\t\t{ index: 1, title: 'foo' },\n\t\t\t\t{ index: 2, title: 'bar' }\n\t\t\t];\n\t\t\tinitializeMocks( {\n\t\t\t\tsdmsInitialFilters: '{}',\n\t\t\t\tsdmsInitialSearchResults: {\n\t\t\t\t\tactiveType: activeType,\n\t\t\t\t\tresults: mockResult\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\texpect( state.results[ activeType ] ).toEqual( mockResult );\n\t\t\texpect( state.results.video ).toEqual( [] );\n\n\t\t} );\n\t} );\n\n\tdescribe( 'continue', function () {\n\t\tit( 'return undefined if mediatype continue value is not set', function () {\n\n\t\t\tinitializeMocks( {\n\t\t\t\tsdmsInitialFilters: '{}',\n\t\t\t\tsdmsInitialSearchResults: {\n\t\t\t\t\tactiveType: activeType\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\texpect( state.continue[ activeType ] ).toEqual( undefined );\n\t\t} );\n\t\tit( 'return null if mediatype continue value is set to null', function () {\n\n\t\t\tinitializeMocks( {\n\t\t\t\tsdmsInitialFilters: '{}',\n\t\t\t\tsdmsInitialSearchResults: {\n\t\t\t\t\tactiveType: activeType,\n\t\t\t\t\tcontinue: null\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\texpect( state.continue[ activeType ] ).toEqual( null );\n\t\t} );\n\t\tit( 'return undefined for non active media type', function () {\n\n\t\t\tinitializeMocks( {\n\t\t\t\tsdmsInitialFilters: '{}',\n\t\t\t\tsdmsInitialSearchResults: {\n\t\t\t\t\tactiveType: activeType,\n\t\t\t\t\tcontinue: null\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\texpect( state.continue[ activeType ] ).toEqual( null );\n\t\t\texpect( state.continue.video ).toEqual( undefined );\n\t\t} );\n\t\tit( 'return the continue offset of the active Media type', function () {\n\n\t\t\tinitializeMocks( {\n\t\t\t\tsdmsInitialFilters: '{}',\n\t\t\t\tsdmsInitialSearchResults: {\n\t\t\t\t\tactiveType: activeType,\n\t\t\t\t\tcontinue: 'dummy'\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\texpect( state.continue[ activeType ] ).toEqual( 'dummy' );\n\t\t} );\n\t} );\n\n\tdescribe( 'totalHits', function () {\n\t\tit( 'return totalHits value for current active type', function () {\n\n\t\t\tinitializeMocks( {\n\t\t\t\tsdmsInitialFilters: '{}',\n\t\t\t\tsdmsInitialSearchResults: {\n\t\t\t\t\tactiveType: activeType,\n\t\t\t\t\ttotalHits: 100\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\texpect( state.totalHits[ activeType ] ).toEqual( 100 );\n\t\t} );\n\t\tit( 'return 0 for non active media type', function () {\n\n\t\t\tinitializeMocks( {\n\t\t\t\tsdmsInitialFilters: '{}',\n\t\t\t\tsdmsInitialSearchResults: {\n\t\t\t\t\tactiveType: activeType,\n\t\t\t\t\ttotalHits: 100\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\texpect( state.totalHits.video ).toEqual( 0 );\n\t\t} );\n\t} );\n\n\tdescribe( 'filterValues', function () {\n\t\tit( 'return initialFilters value for current active type', function () {\n\t\t\tconst dummyFilter = { dummy: 'dummy' };\n\t\t\tinitializeMocks( {\n\t\t\t\tsdmsInitialFilters: JSON.stringify( dummyFilter ),\n\t\t\t\tsdmsInitialSearchResults: {\n\t\t\t\t\tactiveType: activeType\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\texpect( state.filterValues[ activeType ] ).toEqual( dummyFilter );\n\t\t} );\n\t\tit( 'return {} for non active media type', function () {\n\t\t\tconst dummyFilter = { dummy: 'dummy' };\n\t\t\tinitializeMocks( {\n\t\t\t\tsdmsInitialFilters: JSON.stringify( dummyFilter ),\n\t\t\t\tsdmsInitialSearchResults: {\n\t\t\t\t\tactiveType: activeType\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\texpect( state.filterValues.video ).toEqual( {} );\n\t\t} );\n\t} );\n} );\n","usedDeprecatedRules":[]}]

--- end ---
$ /usr/bin/npm ci --legacy-peer-deps
--- stderr ---
npm WARN deprecated source-map-url@0.4.1: See https://github.com/lydell/source-map-url#deprecated
npm WARN deprecated urix@0.1.0: Please see https://github.com/lydell/urix#deprecated
npm WARN deprecated resolve-url@0.2.1: https://github.com/lydell/resolve-url#deprecated
npm WARN deprecated source-map-resolve@0.5.3: See https://github.com/lydell/source-map-resolve#deprecated
npm WARN deprecated sourcemap-codec@1.4.8: Please use @jridgewell/sourcemap-codec instead
npm WARN deprecated core-js@2.6.12: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.
--- stdout ---

added 967 packages, and audited 968 packages in 8s

89 packages are looking for funding
  run `npm fund` for details

4 vulnerabilities (1 low, 3 high)

To address issues that do not require attention, run:
  npm audit fix

To address all issues (including breaking changes), run:
  npm audit fix --force

Run `npm audit` for details.

--- end ---
$ /usr/bin/npm test
--- stdout ---

> media-search@0.1.0 test
> grunt test && npm run test:unit

Running "eslint:all" (eslint) task

/src/repo/Gruntfile.js
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/composer.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/extension.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/ann.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/ar.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/as.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/ast.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/ba.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/ban.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/be-tarask.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/bg.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/blk.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/bn.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/bpy.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/br.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/brh.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/bs.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/bto.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/ca.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/ce.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/cs.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/cy.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/da.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/dag.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/de-formal.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/de.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/diq.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/el.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/en-gb.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/en.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/eo.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/es.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/et.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/fa.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/fi.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/fr.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/gld.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/gur.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/guw.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/ha.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/he.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/hi.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/hil.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/hr.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/hsb.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/hu.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/hy.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/hyw.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/ia.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/id.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/io.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/it.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/ja.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/jv.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/kcg.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/kk-cyrl.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/ko.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/ksw.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/ku-latn.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/lb.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/lij.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/lmo.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/lv.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/mk.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/mrh.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/ms.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/my.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/nb.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/nl.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/nn.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/nqo.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/om.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/pl.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/pnb.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/pt-br.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/pt.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/pwn.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/qqq.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/ro.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/roa-tara.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/ru.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/rue.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/scn.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/se.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/skr-arab.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/sl.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/smn.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/sms.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/sr-ec.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/sr-el.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/sv.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/sw.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/syl.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/te.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/th.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/ti.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/tl.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/tr.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/ug-arab.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/uk.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/vec.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/vi.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/xmf.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/yi.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/yue.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/zgh.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/zh-hans.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/i18n/zh-hant.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/lib/icons.js
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/package-lock.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/package.json
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/resources/components/App.vue
    1:1   error    Definition for rule 'es/no-object-values' was not found  es/no-object-values
  365:16  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find

/src/repo/resources/components/DidYouMean.vue
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/resources/components/EmptyState.vue
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/resources/components/EndOfResults.vue
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/resources/components/NamespaceFilterDialog.vue
    1:1   error    Definition for rule 'es/no-object-values' was not found  es/no-object-values
  136:5   warning  ES2015 'Array.prototype.keys' method is forbidden        es-x/no-array-prototype-keys
  146:11  warning  ES2015 'Array.prototype.keys' method is forbidden        es-x/no-array-prototype-keys

/src/repo/resources/components/NoResults.vue
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/resources/components/QuickView.vue
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/resources/components/SearchError.vue
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/resources/components/SearchFilters.vue
    1:1   error    Definition for rule 'es/no-object-values' was not found  es/no-object-values
  169:4   warning  ES2015 'Array.prototype.keys' method is forbidden        es-x/no-array-prototype-keys
  189:11  warning  ES2015 'Array.prototype.keys' method is forbidden        es-x/no-array-prototype-keys
  266:11  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  286:21  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find

/src/repo/resources/components/SearchResults.vue
    1:1  error    Definition for rule 'es/no-object-values' was not found  es/no-object-values
  319:6  warning  ES2015 'Array.prototype.keys' method is forbidden        es-x/no-array-prototype-keys

/src/repo/resources/components/Spinner.vue
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/resources/components/UserNotice.vue
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/resources/components/base/AutocompleteSearchInput.vue
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/resources/components/base/Button.vue
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/resources/components/base/Checkbox.vue
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/resources/components/base/CopyTextLayout.vue
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/resources/components/base/Dialog.vue
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/resources/components/base/Icon.vue
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/resources/components/base/Image.vue
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/resources/components/base/Message.vue
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/resources/components/base/Observer.vue
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/resources/components/base/Player.vue
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/resources/components/base/Radio.vue
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/resources/components/base/Select.vue
    1:1   error    Definition for rule 'es/no-object-values' was not found  es/no-object-values
  372:21  warning  ES2015 'Array.prototype.findIndex' method is forbidden   es-x/no-array-prototype-findindex

/src/repo/resources/components/base/SelectMenu.vue
    1:1   error    Definition for rule 'es/no-object-values' was not found  es/no-object-values
  196:12  warning  ES2015 'Array.prototype.keys' method is forbidden        es-x/no-array-prototype-keys

/src/repo/resources/components/base/Tab.vue
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/resources/components/base/Tabs.vue
    1:1   error    Definition for rule 'es/no-object-values' was not found  es/no-object-values
  123:61  warning  ES2015 'Array.prototype.keys' method is forbidden        es-x/no-array-prototype-keys
  178:19  warning  ES2015 'Array.prototype.keys' method is forbidden        es-x/no-array-prototype-keys
  186:20  warning  ES2015 'Array.prototype.keys' method is forbidden        es-x/no-array-prototype-keys
  193:19  warning  ES2015 'Array.prototype.keys' method is forbidden        es-x/no-array-prototype-keys
  209:18  warning  ES2015 'Array.prototype.keys' method is forbidden        es-x/no-array-prototype-keys

/src/repo/resources/components/base/mixins/binaryInput.js
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/resources/components/base/mixins/observer.js
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/resources/components/results/AudioResult.vue
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/resources/components/results/ImageResult.vue
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/resources/components/results/OtherResult.vue
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/resources/components/results/PageResult.vue
    1:1   error    Definition for rule 'es/no-object-values' was not found  es/no-object-values
  108:11  warning  ES2015 'Array.prototype.keys' method is forbidden        es-x/no-array-prototype-keys

/src/repo/resources/components/results/VideoResult.vue
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/resources/constants.js
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/resources/ensureArray.js
   1:1   error    Definition for rule 'es/no-object-values' was not found  es/no-object-values
  18:10  warning  ES2015 'Array.prototype.keys' method is forbidden        es-x/no-array-prototype-keys

/src/repo/resources/getLocationAgnosticMwApi.js
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/resources/init.js
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/resources/mixins/autocompleteLookupHandler.js
    1:1   error    Definition for rule 'es/no-object-values' was not found        es/no-object-values
   64:33  warning  ES2015 RegExp 'u' flag is forbidden                            es-x/no-regexp-u-flag
   64:33  warning  ES2018 RegExp Unicode property escape sequences are forbidden  es-x/no-regexp-unicode-property-escapes
   65:18  warning  ES2015 RegExp 'u' flag is forbidden                            es-x/no-regexp-u-flag
  108:21  warning  ES2015 RegExp 'u' flag is forbidden                            es-x/no-regexp-u-flag
  108:21  warning  ES2018 RegExp Unicode property escape sequences are forbidden  es-x/no-regexp-unicode-property-escapes

/src/repo/resources/mixins/restoreHistoryHandler.js
   1:1  error    Definition for rule 'es/no-object-values' was not found  es/no-object-values
  57:5  warning  ES2015 'Array.prototype.keys' method is forbidden        es-x/no-array-prototype-keys

/src/repo/resources/mixins/searchResult.js
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/resources/mixins/searchResultTimeBased.js
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/resources/models/SearchFilter.js
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/resources/plugins/eventLogger.js
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/resources/store/actions.js
    1:1   error    Definition for rule 'es/no-object-values' was not found  es/no-object-values
  143:16  warning  ES2015 'Array.prototype.keys' method is forbidden        es-x/no-array-prototype-keys
  151:5   warning  ES2015 'Array.prototype.keys' method is forbidden        es-x/no-array-prototype-keys
  162:21  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  200:2   warning  ES2015 'Array.prototype.keys' method is forbidden        es-x/no-array-prototype-keys
  241:13  warning  ES2015 'Array.prototype.keys' method is forbidden        es-x/no-array-prototype-keys
  287:3   warning  ES2015 'Array.prototype.keys' method is forbidden        es-x/no-array-prototype-keys

/src/repo/resources/store/getters.js
   1:1   error    Definition for rule 'es/no-object-values' was not found  es/no-object-values
  31:24  warning  ES2015 'Array.prototype.keys' method is forbidden        es-x/no-array-prototype-keys
  47:3   warning  ES2015 'Array.prototype.keys' method is forbidden        es-x/no-array-prototype-keys

/src/repo/resources/store/index.js
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/resources/store/mutations.js
    1:1   error    Definition for rule 'es/no-object-values' was not found  es/no-object-values
   45:15  warning  ES2015 'Array.prototype.keys' method is forbidden        es-x/no-array-prototype-keys
  149:20  warning  ES2015 'Array.prototype.keys' method is forbidden        es-x/no-array-prototype-keys
  152:36  warning  ES2015 'Array.prototype.keys' method is forbidden        es-x/no-array-prototype-keys
  217:4   warning  ES2015 'Array.prototype.keys' method is forbidden        es-x/no-array-prototype-keys
  241:3   warning  ES2015 'Array.prototype.keys' method is forbidden        es-x/no-array-prototype-keys
  242:4   warning  ES2015 'Array.prototype.keys' method is forbidden        es-x/no-array-prototype-keys
  254:3   warning  ES2015 'Array.prototype.keys' method is forbidden        es-x/no-array-prototype-keys
  268:22  warning  ES2015 'Array.prototype.keys' method is forbidden        es-x/no-array-prototype-keys
  297:3   warning  ES2015 'Array.prototype.keys' method is forbidden        es-x/no-array-prototype-keys

/src/repo/resources/store/state.js
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/tests/jest/components/DidYouMean.test.js
   1:1   error    Definition for rule 'es/no-object-values' was not found  es/no-object-values
   1:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   2:2   warning  ES2015 destructuring is forbidden                        es-x/no-destructuring
   6:2   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  38:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  44:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  44:19  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  51:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  57:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  57:20  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  63:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables

/src/repo/tests/jest/components/EmptyState.test.js
   1:1   error    Definition for rule 'es/no-object-values' was not found  es/no-object-values
   1:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   1:7   warning  ES2015 destructuring is forbidden                        es-x/no-destructuring
   4:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   6:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  19:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  20:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  20:19  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  28:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  29:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  29:20  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  35:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  36:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  36:20  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  42:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  43:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  43:20  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find

/src/repo/tests/jest/components/EndOfResults.test.js
   1:1   error    Definition for rule 'es/no-object-values' was not found  es/no-object-values
   1:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   1:7   warning  ES2015 destructuring is forbidden                        es-x/no-destructuring
   5:2   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   8:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   8:19  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  12:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  12:19  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find

/src/repo/tests/jest/components/NamespaceFilterDialog.test.js
    1:1   error    Definition for rule 'es/no-object-values' was not found  es/no-object-values
    1:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    1:7   warning  ES2015 destructuring is forbidden                        es-x/no-destructuring
    8:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   17:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   17:19  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
   23:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   39:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   55:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   67:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   82:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   94:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  111:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  129:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  149:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  164:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  176:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  188:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  204:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  218:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  226:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  232:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  240:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  248:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  262:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  276:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  291:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  309:6   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  323:6   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  339:6   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  353:6   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  373:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  387:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables

/src/repo/tests/jest/components/NoResults.test.js
   1:1   error    Definition for rule 'es/no-object-values' was not found  es/no-object-values
   1:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   5:2   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   8:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   8:19  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  12:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  12:19  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  16:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  16:19  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  20:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  20:19  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find

/src/repo/tests/jest/components/QuickView.test.js
     1:1   error    Definition for rule 'es/no-object-values' was not found  es/no-object-values
     1:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
     1:7   warning  ES2015 destructuring is forbidden                        es-x/no-destructuring
     2:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
     4:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
     5:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
     8:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
     9:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    11:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    20:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    25:2   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    37:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    51:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    61:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    61:16  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
    66:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    76:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    76:18  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
    77:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    77:17  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
    78:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    78:17  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
    86:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    96:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    96:18  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
   106:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   116:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   116:17  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
   126:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   136:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   136:17  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
   146:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   156:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   156:16  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
   161:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   171:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   171:16  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
   176:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   186:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   186:16  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
   191:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   201:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   201:16  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
   206:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   216:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   216:16  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
   221:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   234:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   234:16  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
   239:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   249:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   249:16  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
   254:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   264:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   264:16  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
   269:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   279:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   279:16  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
   284:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   294:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   294:16  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
   299:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   309:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   309:16  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
   314:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   324:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   324:24  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
   333:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   347:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   357:12  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
   361:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   371:12  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
   378:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   398:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   430:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   444:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   445:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   464:6   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   465:6   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   482:6   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   483:6   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   505:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   506:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   525:6   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   526:6   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   543:6   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   544:6   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   561:6   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   577:6   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   593:6   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   611:6   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   626:6   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   635:6   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   642:6   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   648:6   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   665:6   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   680:6   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   690:6   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   699:6   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   700:6   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   725:6   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   740:6   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   750:6   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   759:6   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   778:6   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   800:6   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   816:6   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   821:6   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   840:6   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   857:6   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   873:6   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   889:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   904:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   917:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   938:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   965:6   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   976:6   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   984:6   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   995:6   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  1005:6   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  1022:6   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  1031:6   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  1035:6   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  1044:6   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  1050:6   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  1059:6   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  1063:6   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  1072:6   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  1078:6   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  1087:6   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  1099:6   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  1123:6   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  1146:6   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  1162:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  1177:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  1196:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  1215:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  1237:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables

/src/repo/tests/jest/components/SearchFilters.test.js
    1:1  error    Definition for rule 'es/no-object-values' was not found  es/no-object-values
    1:1  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    2:2  warning  ES2015 destructuring is forbidden                        es-x/no-destructuring
    6:1  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    7:1  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   23:1  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   38:2  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   57:3  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   65:3  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   67:3  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   79:5  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   81:5  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   92:5  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   94:5  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   97:5  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  111:5  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  125:5  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  127:5  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  135:5  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  137:5  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  149:5  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  151:5  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  168:5  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  183:5  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  196:5  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  227:5  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  240:5  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  271:5  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  288:5  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  290:5  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  306:5  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  308:5  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables

/src/repo/tests/jest/components/SearchResults.test.js
    1:1   error    Definition for rule 'es/no-object-values' was not found  es/no-object-values
    1:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    2:2   warning  ES2015 destructuring is forbidden                        es-x/no-destructuring
   11:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   52:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   53:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   54:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   70:2   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  128:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  129:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  141:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  143:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  143:20  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  154:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  156:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  156:20  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  165:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  167:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  182:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  184:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  192:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  194:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  205:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  207:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  222:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  224:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  224:20  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  231:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  233:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  233:20  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  245:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  253:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  276:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  277:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  278:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  327:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  336:6   warning  ES2015 computed properties are forbidden                 es-x/no-computed-properties
  339:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  340:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  351:6   warning  ES2015 computed properties are forbidden                 es-x/no-computed-properties
  354:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  356:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  372:6   warning  ES2015 computed properties are forbidden                 es-x/no-computed-properties
  375:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  377:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  389:6   warning  ES2015 computed properties are forbidden                 es-x/no-computed-properties
  392:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  394:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  406:6   warning  ES2015 computed properties are forbidden                 es-x/no-computed-properties
  409:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  411:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  424:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  425:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  428:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  438:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  451:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  471:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  473:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  482:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  483:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  499:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  509:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  521:6   warning  ES2015 computed properties are forbidden                 es-x/no-computed-properties
  524:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  538:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  540:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  558:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  572:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  575:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  589:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  597:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  625:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables

/src/repo/tests/jest/components/Spinner.test.js
  1:1   error    Definition for rule 'es/no-object-values' was not found  es/no-object-values
  1:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  7:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  9:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  9:19  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find

/src/repo/tests/jest/components/UserNotice.test.js
   1:1   error    Definition for rule 'es/no-object-values' was not found  es/no-object-values
   1:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   1:7   warning  ES2015 destructuring is forbidden                        es-x/no-destructuring
  16:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  17:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  17:20  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  22:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  23:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  28:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  29:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  39:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  40:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  40:20  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  46:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  47:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  47:20  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  55:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  56:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  56:20  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  61:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  64:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  64:21  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  73:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  80:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  87:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables

/src/repo/tests/jest/components/app.test.js
    1:1  error    Definition for rule 'es/no-object-values' was not found  es/no-object-values
    1:1  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    2:2  warning  ES2015 destructuring is forbidden                        es-x/no-destructuring
   27:1  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   39:1  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   41:1  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   67:2  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  127:3  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  133:3  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  139:3  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  145:3  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  146:3  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  152:3  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  158:3  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  164:3  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  171:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  179:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  187:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  194:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  201:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  209:5  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  221:5  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  228:5  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  234:5  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  243:3  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  246:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  256:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  271:3  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  274:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  291:3  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  346:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  356:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  366:3  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  396:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  423:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  463:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  516:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  524:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  530:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  537:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  543:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  548:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  554:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  555:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables

/src/repo/tests/jest/components/base/autocompleteSearchInput.test.js
    1:1   error    Definition for rule 'es/no-object-values' was not found  es/no-object-values
    1:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   10:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   17:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   17:19  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
   27:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   34:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   34:20  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
   47:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   48:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   56:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   59:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   59:20  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
   73:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   74:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   83:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   86:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   86:20  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
   99:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  104:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  117:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  117:20  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  126:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  134:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  134:20  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  143:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  151:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  154:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  154:20  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  163:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  171:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  174:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  174:20  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  186:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  194:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  195:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  206:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  206:20  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  215:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  223:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  224:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  235:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  235:20  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  247:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  255:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  256:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  267:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  267:20  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  276:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  284:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  285:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  296:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  296:20  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  309:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  314:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  328:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  339:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  344:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  345:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  360:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  371:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  379:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  380:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  393:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  406:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  411:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  412:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  427:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  427:20  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  443:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  448:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  462:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  462:20  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  475:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  480:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables

/src/repo/tests/jest/components/base/button.test.js
    1:1   error    Definition for rule 'es/no-object-values' was not found  es/no-object-values
    1:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    2:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    3:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    4:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    5:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   12:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   21:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   21:19  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
   28:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   37:3   warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
   47:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   59:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   71:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   83:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   95:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  106:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  118:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  130:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables

/src/repo/tests/jest/components/base/checkbox.test.js
   1:1   error    Definition for rule 'es/no-object-values' was not found  es/no-object-values
   1:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   2:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   3:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   9:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  16:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  16:19  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  21:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  28:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  28:19  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  33:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  39:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  39:17  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  48:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  54:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  54:17  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  63:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  69:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  69:17  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find

/src/repo/tests/jest/components/base/copyTextLayout.test.js
    1:1   error    Definition for rule 'es/no-object-values' was not found  es/no-object-values
    1:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    2:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    3:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    7:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   11:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   17:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   17:19  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
   22:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   28:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   28:23  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
   33:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   40:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   40:18  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
   55:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   56:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   64:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   64:18  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
   74:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   75:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   86:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   86:18  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  101:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  112:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables

/src/repo/tests/jest/components/base/dialog.test.js
    1:1   error    Definition for rule 'es/no-object-values' was not found  es/no-object-values
    1:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    2:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    3:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    7:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   13:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   13:19  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
   18:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   24:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   24:19  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
   29:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   35:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   35:19  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
   40:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   46:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   46:19  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
   56:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   62:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   62:19  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
   74:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   90:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   97:11  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  102:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  114:12  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  120:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  132:12  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  139:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  146:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  146:26  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  158:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  164:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  164:23  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find

/src/repo/tests/jest/components/base/icon.test.js
    1:1   error    Definition for rule 'es/no-object-values' was not found  es/no-object-values
    1:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    2:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    3:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    7:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   13:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   13:19  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
   18:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   19:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   26:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   26:22  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
   33:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   40:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   40:16  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
   47:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   50:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   57:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   57:16  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
   66:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   70:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   76:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   76:16  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
   85:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   90:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  105:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  113:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  120:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  120:16  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  128:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  132:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  138:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  138:16  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  145:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  149:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables

/src/repo/tests/jest/components/base/image.test.js
   1:1   error    Definition for rule 'es/no-object-values' was not found  es/no-object-values
   1:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   2:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   3:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   4:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   8:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  19:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  23:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  23:19  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  30:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  31:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  46:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  56:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  61:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  78:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables

/src/repo/tests/jest/components/base/message.test.js
   1:1   error    Definition for rule 'es/no-object-values' was not found  es/no-object-values
   1:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  10:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  14:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  14:19  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  23:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  29:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  29:19  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  36:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  48:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  58:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  59:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  71:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  72:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  84:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  85:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  97:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  98:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables

/src/repo/tests/jest/components/base/player.test.js
   1:1   error    Definition for rule 'es/no-object-values' was not found  es/no-object-values
   1:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  28:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  32:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  32:19  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  40:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  41:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  47:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  47:19  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  54:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  57:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  63:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  63:19  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  70:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  82:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  83:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables

/src/repo/tests/jest/components/base/radio.test.js
   1:1   error    Definition for rule 'es/no-object-values' was not found  es/no-object-values
   1:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   8:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  14:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  14:19  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  19:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  26:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  26:19  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  31:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  38:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  38:19  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  44:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  50:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  52:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  52:19  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find

/src/repo/tests/jest/components/base/select.test.js
    1:1   error    Definition for rule 'es/no-object-values' was not found  es/no-object-values
    1:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    2:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    3:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    5:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   22:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   23:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   34:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   35:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   44:12  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
   48:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   49:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   50:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   64:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   65:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   66:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   77:13  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
   83:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   84:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   85:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  100:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  101:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  116:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  124:4   warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  131:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  139:4   warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  146:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  154:4   warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  161:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  162:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  171:4   warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  178:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  179:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  188:4   warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  195:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  196:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  204:4   warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  215:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  223:4   warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  226:4   warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  232:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  233:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  245:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  251:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  252:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  263:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  267:4   warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  274:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  275:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  286:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  290:4   warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  298:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  299:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  309:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  313:4   warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  321:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  322:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  336:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  341:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  341:20  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  351:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  352:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  365:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  365:20  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find

/src/repo/tests/jest/components/base/selectMenu.test.js
    1:1  error    Definition for rule 'es/no-object-values' was not found  es/no-object-values
    1:1  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   24:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   25:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   34:4  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
   41:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   42:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   43:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   52:4  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
   63:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   64:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   65:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   85:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   86:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  100:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  101:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  116:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  145:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  146:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  152:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  166:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  167:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables

/src/repo/tests/jest/components/results/ImageResult.test.js
    1:1   error    Definition for rule 'es/no-object-values' was not found  es/no-object-values
    1:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    2:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    3:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    4:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    5:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    9:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   10:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   10:25  warning  ES2015 'Array.prototype.keys' method is forbidden        es-x/no-array-prototype-keys
   11:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   12:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   14:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   31:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   46:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   57:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   62:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   78:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   97:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  107:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  107:16  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  112:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  123:3   warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  131:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  142:3   warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find

/src/repo/tests/jest/components/results/audioResult.test.js
    1:1   error    Definition for rule 'es/no-object-values' was not found  es/no-object-values
    1:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    2:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    3:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    4:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    8:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    9:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    9:25  warning  ES2015 'Array.prototype.keys' method is forbidden        es-x/no-array-prototype-keys
   10:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   11:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   13:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   30:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   41:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   41:19  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
   46:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   56:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   56:27  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
   61:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   71:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   71:23  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
   76:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   86:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   86:16  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
   91:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  102:3   warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  110:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  121:3   warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find

/src/repo/tests/jest/components/results/otherResult.test.js
    1:1   error    Definition for rule 'es/no-object-values' was not found  es/no-object-values
    1:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    2:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    3:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    4:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    8:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    9:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    9:25  warning  ES2015 'Array.prototype.keys' method is forbidden        es-x/no-array-prototype-keys
   10:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   11:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   13:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   30:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   39:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   39:19  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
   44:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   53:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   58:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   66:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   71:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   79:3   warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
   84:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   92:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   92:27  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
   97:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  106:3   warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  111:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  120:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  120:19  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  125:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  134:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  134:19  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  139:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  148:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  148:19  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find

/src/repo/tests/jest/components/results/pageResult.test.js
    1:1    error    Definition for rule 'es/no-object-values' was not found  es/no-object-values
    1:1    warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    2:1    warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    3:1    warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    7:1    warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    8:1    warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    8:25   warning  ES2015 'Array.prototype.keys' method is forbidden        es-x/no-array-prototype-keys
    9:1    warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   10:1    warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   13:1    warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   13:83   warning  This line has 2 statements. Maximum allowed is 1         max-statements-per-line
   13:126  warning  ES2015 'Array.prototype.keys' method is forbidden        es-x/no-array-prototype-keys
   14:1    warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   15:1    warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   17:1    warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   34:3    warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   43:3    warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   43:19   warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
   48:3    warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   55:3    warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   55:30   warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
   61:3    warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   62:3    warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   70:3    warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   70:26   warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
   75:3    warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   83:3    warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   83:31   warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
   88:3    warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   96:3    warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   96:23   warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  101:3    warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  109:3    warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  109:28   warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  114:3    warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  121:3    warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  121:16   warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  126:3    warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  134:3    warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find

/src/repo/tests/jest/components/results/videoResult.test.js
    1:1   error    Definition for rule 'es/no-object-values' was not found  es/no-object-values
    1:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    2:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    3:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    4:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    8:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    9:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    9:25  warning  ES2015 'Array.prototype.keys' method is forbidden        es-x/no-array-prototype-keys
   10:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   11:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   13:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   30:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   41:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   41:19  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
   46:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   56:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   56:27  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
   61:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   71:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   71:24  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
   76:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   86:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   86:23  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
   91:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  101:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  101:16  warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  106:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  117:3   warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  125:3   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  136:3   warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find

/src/repo/tests/jest/ignore/ensureArray.test.js
   1:1   error    Definition for rule 'es/no-object-values' was not found  es/no-object-values
   1:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   2:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   3:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   4:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   5:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  25:3   error    Definition for rule 'es/no-object-values' was not found  es/no-object-values
  26:42  warning  ES2017 'Object.values' method is forbidden               es-x/no-object-values
  27:54  warning  ES2017 'Object.values' method is forbidden               es-x/no-object-values
  28:3   error    Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/tests/jest/mixins/autocompleteLookupHandler.test.js
    1:1  error    Definition for rule 'es/no-object-values' was not found  es/no-object-values
    1:1  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    2:1  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    3:1  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    7:2  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    8:2  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   23:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   28:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   50:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   51:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   56:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   58:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   75:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   76:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   81:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   97:5  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   98:5  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  103:5  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  105:5  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  120:5  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  122:5  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  127:5  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  129:5  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  130:5  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  144:5  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  146:5  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  151:5  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  158:5  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  159:5  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  173:5  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  175:5  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  180:5  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  182:5  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  185:5  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  190:5  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  204:5  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  206:5  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  211:5  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  213:5  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  216:5  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  220:5  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  225:5  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  248:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  249:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  252:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  260:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  265:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  275:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  277:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  282:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  284:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  295:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  310:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  323:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  325:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  330:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  336:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  347:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  365:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  368:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  374:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  379:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  386:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  396:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  399:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  405:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  410:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  417:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  431:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  432:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  434:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  439:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  444:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  446:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  454:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  455:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  457:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  462:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  467:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  469:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables

/src/repo/tests/jest/mixins/observer.test.js
    1:1  error    Definition for rule 'es/no-object-values' was not found  es/no-object-values
    2:1  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    3:1  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    4:1  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    5:1  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    8:2  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   14:3  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   18:3  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   27:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   32:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   37:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   48:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   55:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   62:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   67:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   76:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   84:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   91:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  105:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  122:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  126:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  141:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  145:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  150:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  163:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  167:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  171:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  178:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  182:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  186:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  193:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  197:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  201:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  208:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  212:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  216:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  223:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  227:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  231:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables

/src/repo/tests/jest/mixins/restoreHistoryHandler.test.js
    1:1  error    Definition for rule 'es/no-object-values' was not found  es/no-object-values
    1:1  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    2:1  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    3:1  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    7:2  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   23:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   41:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   59:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   77:5  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   96:5  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  111:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  123:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  141:5  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  142:5  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  147:5  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  160:5  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  162:5  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  167:5  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  188:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  190:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  195:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  202:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  209:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  214:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  222:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  229:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  234:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  242:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  249:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  257:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  274:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  281:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  289:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  306:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  313:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  318:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  325:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  332:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  337:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  347:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  356:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  373:4  warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables

/src/repo/tests/jest/mocks/EventListener.js
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/tests/jest/mocks/ExecCommand.js
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/tests/jest/mocks/IntersectionObserver.js
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/tests/jest/mocks/Performance.js
   1:1   error    Definition for rule 'es/no-object-values' was not found  es/no-object-values
   2:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   6:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   6:46  warning  ES2015 default parameters are forbidden                  es-x/no-default-parameters
  14:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  14:56  warning  ES2015 default parameters are forbidden                  es-x/no-default-parameters
  21:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables

/src/repo/tests/jest/mocks/history.js
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/tests/jest/store/actions.test.js
    1:1    error    Definition for rule 'es/no-object-values' was not found  es/no-object-values
    1:1    warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   11:1    warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   12:1    warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   89:4    warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   89:24   warning  ES2015 'Array.prototype.keys' method is forbidden        es-x/no-array-prototype-keys
  222:4    warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  222:79   warning  This line has 2 statements. Maximum allowed is 1         max-statements-per-line
  226:5    warning  ES2015 'Array.prototype.keys' method is forbidden        es-x/no-array-prototype-keys
  250:5    warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  250:79   warning  This line has 2 statements. Maximum allowed is 1         max-statements-per-line
  268:5    warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  268:25   warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  268:77   warning  This line has 2 statements. Maximum allowed is 1         max-statements-per-line
  269:5    warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  277:4    warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  314:5    warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  314:25   warning  ES2015 'Array.prototype.find' method is forbidden        es-x/no-array-prototype-find
  314:77   warning  This line has 2 statements. Maximum allowed is 1         max-statements-per-line
  315:5    warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  435:5    warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  435:108  warning  This line has 2 statements. Maximum allowed is 1         max-statements-per-line
  464:2    warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  618:3    warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  667:2    warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  679:3    warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  679:98   warning  This line has 2 statements. Maximum allowed is 1         max-statements-per-line
  688:4    warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  688:83   warning  This line has 2 statements. Maximum allowed is 1         max-statements-per-line
  695:4    warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  695:83   warning  This line has 2 statements. Maximum allowed is 1         max-statements-per-line
  710:4    warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  710:83   warning  This line has 2 statements. Maximum allowed is 1         max-statements-per-line

/src/repo/tests/jest/store/getters.test.js
  1:1  error  Definition for rule 'es/no-object-values' was not found  es/no-object-values

/src/repo/tests/jest/store/mutations.test.js
    1:1   error    Definition for rule 'es/no-object-values' was not found  es/no-object-values
    1:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
    5:2   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   19:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   45:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   46:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   57:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   58:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   59:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   82:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   83:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   84:5   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  108:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  120:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  132:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  144:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  156:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  167:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  168:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  169:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  178:12  warning  ES2015 'Array.prototype.keys' method is forbidden        es-x/no-array-prototype-keys
  185:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  186:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  187:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  188:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  189:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  206:12  warning  ES2015 'Array.prototype.keys' method is forbidden        es-x/no-array-prototype-keys
  214:12  warning  ES2015 'Array.prototype.keys' method is forbidden        es-x/no-array-prototype-keys
  221:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  222:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  223:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  224:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  225:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  226:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  255:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  308:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  345:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  423:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  438:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  454:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  470:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  489:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  504:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  522:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  537:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  545:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  558:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  567:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables

/src/repo/tests/jest/store/store.test.js
    1:1   error    Definition for rule 'es/no-object-values' was not found  es/no-object-values
   12:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   16:1   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   19:8   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
   22:64  warning  This line has 2 statements. Maximum allowed is 1         max-statements-per-line
   83:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  100:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  198:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables
  209:4   warning  ES2015 block-scoped variables are forbidden              es-x/no-block-scoped-variables

✖ 1376 problems (203 errors, 1173 warnings)

Warning: Task "eslint:all" failed. Use --force to continue.

Aborted due to warnings.

--- end ---
Traceback (most recent call last):
  File "/venv/lib/python3.9/site-packages/runner-0.1.0-py3.9.egg/runner/__init__.py", line 1400, in main
    libup.run(args.repo, args.output, args.branch)
  File "/venv/lib/python3.9/site-packages/runner-0.1.0-py3.9.egg/runner/__init__.py", line 1338, in run
    self.npm_upgrade(plan)
  File "/venv/lib/python3.9/site-packages/runner-0.1.0-py3.9.egg/runner/__init__.py", line 1049, in npm_upgrade
    self.npm_test()
  File "/venv/lib/python3.9/site-packages/runner-0.1.0-py3.9.egg/runner/__init__.py", line 287, in npm_test
    self.check_call(['npm', 'test'])
  File "/venv/lib/python3.9/site-packages/runner-0.1.0-py3.9.egg/runner/shell2.py", line 54, in check_call
    res.check_returncode()
  File "/usr/lib/python3.9/subprocess.py", line 460, in check_returncode
    raise CalledProcessError(self.returncode, self.args, self.stdout,
subprocess.CalledProcessError: Command '['/usr/bin/npm', 'test']' returned non-zero exit status 3.
Source code is licensed under the AGPL.