Skip to content

Commit 9ba0085

Browse files
author
Robert Jackson
authored
Merge pull request #46 from zhanwang626/update-triggerevent-param
2 parents 1c74c1b + a744fc2 commit 9ba0085

File tree

5 files changed

+109
-0
lines changed

5 files changed

+109
-0
lines changed
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: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
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+
};
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)