File tree Expand file tree Collapse file tree 5 files changed +109
-0
lines changed
transforms/update-triggerevent-file-param Expand file tree Collapse file tree 5 files changed +109
-0
lines changed Original file line number Diff line number Diff line change
1
+ # update-triggerevent-file-param
2
+ A transform to update param in ` triggerEvent ` from ` [ file ] ` to ` { files: [ file ] } `
3
+
4
+ ## Usage
5
+
6
+ ```
7
+ npx ember-test-helpers-codemod update-triggerevent-file-param path/of/files/ or/some**/*glob.js
8
+
9
+ # or
10
+
11
+ yarn global add ember-test-helpers-codemod
12
+ ember-test-helpers-codemod update-triggerevent-file-param path/of/files/ or/some**/*glob.js
13
+ ```
14
+
15
+ ## Input / Output
16
+
17
+ <!-- FIXTURES_TOC_START-->
18
+ * [ basic] ( #basic )
19
+ <!-- FIXTURES_TOC_END-->
20
+
21
+ <!-- FIXTURES_CONTENT_START-->
22
+ ---
23
+ <a id =" basic " >** basic** </a >
24
+
25
+ ** Input** (<small >[ basic.input.js] ( transforms/update-triggerevent-file-param/__testfixtures__/basic.input.js ) </small >):
26
+ ``` js
27
+ import { triggerEvent } from ' @ember/test-helpers' ;
28
+
29
+ test (' test' , async function (assert ) {
30
+ await triggerEvent (' [data-test-file-upload-button__input]' , ' change' , [file]);
31
+ await triggerEvent (' [data-test-file-upload-button__input]' , ' change' , []);
32
+ });
33
+
34
+ ```
35
+
36
+ ** Output** (<small >[ basic.input.js] ( transforms/update-triggerevent-file-param/__testfixtures__/basic.output.js ) </small >):
37
+ ``` js
38
+ import { triggerEvent } from ' @ember/test-helpers' ;
39
+
40
+ test (' test' , async function (assert ) {
41
+ await triggerEvent (' [data-test-file-upload-button__input]' , ' change' , {
42
+ files: [file]
43
+ });
44
+ await triggerEvent (' [data-test-file-upload-button__input]' , ' change' , {
45
+ files: []
46
+ });
47
+ });
48
+
49
+ ```
50
+ <!-- FIXTURE_CONTENT_END-->
Original file line number Diff line number Diff line change
1
+ import { triggerEvent } from '@ember/test-helpers' ;
2
+
3
+ test ( 'test' , async function ( assert ) {
4
+ await triggerEvent ( '[data-test-file-upload-button__input]' , 'change' , [ file ] ) ;
5
+ await triggerEvent ( '[data-test-file-upload-button__input]' , 'change' , [ ] ) ;
6
+ } ) ;
Original file line number Diff line number Diff line change
1
+ import { triggerEvent } from '@ember/test-helpers' ;
2
+
3
+ test ( 'test' , async function ( assert ) {
4
+ await triggerEvent ( '[data-test-file-upload-button__input]' , 'change' , {
5
+ files : [ file ]
6
+ } ) ;
7
+ await triggerEvent ( '[data-test-file-upload-button__input]' , 'change' , {
8
+ files : [ ]
9
+ } ) ;
10
+ } ) ;
Original file line number Diff line number Diff line change
1
+ const { getParser } = require ( 'codemod-cli' ) . jscodeshift ;
2
+
3
+ module . exports = function transformer ( file , api ) {
4
+ const j = getParser ( api ) ;
5
+ const root = j ( file . source ) ;
6
+
7
+ /**
8
+ * A transform to update param in `triggerEvent` from `[ file ]` to `{ files: [ file ] }`
9
+ */
10
+ function transform ( ) {
11
+ root
12
+ . find ( j . CallExpression , {
13
+ callee : {
14
+ name : 'triggerEvent' ,
15
+ } ,
16
+ } )
17
+ . find ( j . ArrayExpression )
18
+ . replaceWith ( ( path ) => {
19
+ // make sure we just modify the arrayExpression which is the param of triggerEvent call expression
20
+ if (
21
+ path . parent . node . type === 'CallExpression' &&
22
+ path . parent . node . callee . name === 'triggerEvent'
23
+ ) {
24
+ return j . objectExpression ( [ j . property ( 'init' , j . identifier ( 'files' ) , path . node ) ] ) ;
25
+ } else return path . node ;
26
+ } ) ;
27
+ }
28
+
29
+ transform ( ) ;
30
+
31
+ return root . toSource ( {
32
+ quote : 'single' ,
33
+ trailingComma : false ,
34
+ } ) ;
35
+ } ;
Original file line number Diff line number Diff line change
1
+ 'use strict' ;
2
+
3
+ const { runTransformTest } = require ( 'codemod-cli' ) ;
4
+
5
+ runTransformTest ( {
6
+ type : 'jscodeshift' ,
7
+ name : 'update-triggerevent-file-param' ,
8
+ } ) ;
You can’t perform that action at this time.
0 commit comments