123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177 |
- /**
- * @fileoverview disallow `this` in `asyncData/fetch`
- * @author Xin Du <clark.duxin@gmail.com>
- */
- 'use strict'
- // ------------------------------------------------------------------------------
- // Requirements
- // ------------------------------------------------------------------------------
- const rule = require('../no-this-in-fetch-data')
- const RuleTester = require('eslint').RuleTester
- const parserOptions = {
- ecmaVersion: 2018,
- sourceType: 'module'
- }
- // ------------------------------------------------------------------------------
- // Tests
- // ------------------------------------------------------------------------------
- const ruleTester = new RuleTester()
- ruleTester.run('no-this-in-fetch-data', rule, {
- valid: [
- {
- filename: 'test.vue',
- code: `
- export default {
- ...foo,
- asyncData() {
- },
- fetch() {
- }
- }
- `,
- parserOptions
- }
- ],
- invalid: [
- {
- filename: 'test.vue',
- code: `
- export default {
- ...foo,
- asyncData() {
- if(this.$route.path === 'foo') {}
- }
- }
- `,
- errors: [{
- message: 'Unexpected this in asyncData.',
- type: 'ThisExpression'
- }],
- parserOptions
- },
- {
- filename: 'test.vue',
- code: `
- export default {
- ...foo,
- async asyncData() {
- if(this.$route.path === 'foo') {}
- }
- }
- `,
- errors: [{
- message: 'Unexpected this in asyncData.',
- type: 'ThisExpression'
- }],
- parserOptions
- },
- {
- filename: 'test.vue',
- code: `
- export default {
- ...foo,
- asyncData: () => {
- if(this.$route.path === 'foo') {}
- }
- }
- `,
- errors: [{
- message: 'Unexpected this in asyncData.',
- type: 'ThisExpression'
- }],
- parserOptions
- },
- {
- filename: 'test.vue',
- code: `
- export default {
- ...foo,
- asyncData: function test() {
- if(this.$route.path === 'foo') {}
- }
- }
- `,
- errors: [{
- message: 'Unexpected this in asyncData.',
- type: 'ThisExpression'
- }],
- parserOptions
- },
- {
- filename: 'test.vue',
- code: `
- export default {
- ...foo,
- fetch() {
- if(this.$route.path === 'foo') {}
- }
- }
- `,
- errors: [{
- message: 'Unexpected this in fetch.',
- type: 'ThisExpression'
- }],
- options: [{ methods: ['fetch'] }],
- parserOptions
- },
- {
- filename: 'test.vue',
- code: `
- export default {
- ...foo,
- async fetch() {
- if(this.$route.path === 'foo') {}
- }
- }
- `,
- errors: [{
- message: 'Unexpected this in fetch.',
- type: 'ThisExpression'
- }],
- options: [{ methods: ['fetch'] }],
- parserOptions
- },
- {
- filename: 'test.vue',
- code: `
- export default {
- ...foo,
- fetch: () => {
- if(this.$route.path === 'foo') {}
- }
- }
- `,
- errors: [{
- message: 'Unexpected this in fetch.',
- type: 'ThisExpression'
- }],
- options: [{ methods: ['fetch'] }],
- parserOptions
- },
- {
- filename: 'test.vue',
- code: `
- export default {
- ...foo,
- fetch: function test() {
- if(this.$route.path === 'foo') {}
- }
- }
- `,
- errors: [{
- message: 'Unexpected this in fetch.',
- type: 'ThisExpression'
- }],
- options: [{ methods: ['fetch'] }],
- parserOptions
- }
- ]
- })
|