@@ -513,3 +513,114 @@ describe('when file is TSX', () => {
513513 } ) ;
514514 } ) ;
515515} ) ;
516+
517+ describe ( 'issue #60 - computed property keys should be preserved' , ( ) => {
518+ describe ( 'when computed property methods should NOT be transformed' , ( ) => {
519+ ruleTester . run ( 'prefer-arrow-functions' , rule , {
520+ valid : [
521+ {
522+ code : `const obj = {
523+ [Symbol.iterator]() {
524+ return this;
525+ },
526+ };` ,
527+ } ,
528+ {
529+ code : `const dynamicKey = 'method';
530+ const obj = {
531+ [dynamicKey]() {
532+ console.log(this.value);
533+ },
534+ };` ,
535+ } ,
536+ {
537+ code : `const obj = {
538+ ['computed-key']() {
539+ return arguments[0];
540+ },
541+ };` ,
542+ } ,
543+ {
544+ code : `const prefix = 'handle';
545+ const suffix = 'Click';
546+ const obj = {
547+ [prefix + suffix]() {
548+ super.onClick();
549+ },
550+ };` ,
551+ } ,
552+ ] ,
553+ invalid : [ ] ,
554+ } ) ;
555+ } ) ;
556+
557+ describe ( 'when computed property methods can be safely transformed' , ( ) => {
558+ ruleTester . run ( 'prefer-arrow-functions' , rule , {
559+ valid : [ ] ,
560+ invalid : [
561+ {
562+ code : `const foo = 'bar';
563+ export default {
564+ [foo]() {
565+ console.log('output');
566+ },
567+ };` ,
568+ output : `const foo = 'bar';
569+ export default {
570+ [foo]: () => {
571+ console.log('output');
572+ },
573+ };` ,
574+ } ,
575+ {
576+ code : `const methodName = 'getData';
577+ const obj = {
578+ [methodName]() {
579+ return 42;
580+ },
581+ };` ,
582+ output : `const methodName = 'getData';
583+ const obj = {
584+ [methodName]: () => 42,
585+ };` ,
586+ } ,
587+ {
588+ code : `const obj = {
589+ ['computed-key']() {
590+ return 'value';
591+ },
592+ };` ,
593+ output : `const obj = {
594+ ['computed-key']: () => 'value',
595+ };` ,
596+ } ,
597+ {
598+ code : `const obj = {
599+ [Symbol.iterator]() {
600+ return 'iterator';
601+ },
602+ };` ,
603+ output : `const obj = {
604+ [Symbol.iterator]: () => 'iterator',
605+ };` ,
606+ } ,
607+ {
608+ code : `const prefix = 'handle';
609+ const suffix = 'Click';
610+ const obj = {
611+ [prefix + suffix]() {
612+ console.log('clicked');
613+ },
614+ };` ,
615+ output : `const prefix = 'handle';
616+ const suffix = 'Click';
617+ const obj = {
618+ [prefix + suffix]: () => {
619+ console.log('clicked');
620+ },
621+ };` ,
622+ } ,
623+ ] . map ( withErrors ( [ 'USE_ARROW_WHEN_FUNCTION' ] ) ) ,
624+ } ) ;
625+ } ) ;
626+ } ) ;
0 commit comments