Skip to content

Commit e1f4bc8

Browse files
author
Zhan Wang
committed
add update triggerEvent param
1 parent 1c74c1b commit e1f4bc8

5 files changed

Lines changed: 103 additions & 0 deletions

File tree

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
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-->
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
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+
});
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
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+
});
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
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.find(j.CallExpression, {
12+
callee: {
13+
name: 'triggerEvent'
14+
}
15+
}).find(j.ArrayExpression).replaceWith(path => {
16+
// make sure we just modify the arrayExpression which is the param of triggerEvent call expression
17+
if (path.parent.node.type === 'CallExpression' && path.parent.node.callee.name === 'triggerEvent'){
18+
return j.objectExpression([j.property('init',j.identifier('files'), path.node)])
19+
} else return path.node
20+
})
21+
}
22+
23+
transform();
24+
25+
return root.toSource({
26+
quote: 'single',
27+
trailingComma: false,
28+
});
29+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
'use strict';
2+
3+
const { runTransformTest } = require('codemod-cli');
4+
5+
runTransformTest({
6+
type: 'jscodeshift',
7+
name: 'update-triggerevent-file-param',
8+
});

0 commit comments

Comments
 (0)