Skip to content

Commit 858a826

Browse files
author
Zhan Wang
committed
add transform for migrate deprecated ember-test-helpers import to @ember/test-helpers
1 parent 9b72eea commit 858a826

9 files changed

Lines changed: 151 additions & 0 deletions

File tree

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
# ember-test-helper-api-migration
2+
This codemod transfer is to migrate deprecated nameplace `ember-test-helpers` to nameplace `@ember/test-helpers`
3+
4+
## Usage
5+
6+
```
7+
npx ember-test-helpers-codemod ember-test-helper-api-migration path/of/files/ or/some**/*glob.js
8+
9+
# or
10+
11+
yarn global add ember-test-helpers-codemod
12+
ember-test-helpers-codemod ember-test-helper-api-migration path/of/files/ or/some**/*glob.js
13+
```
14+
15+
## Input / Output
16+
17+
<!--FIXTURES_TOC_START-->
18+
* [basic](#basic)
19+
* [do-not-have-@ember-test-helpers-import](#do-not-have-@ember-test-helpers-import)
20+
* [do-not-have-ember-test-helpers-import](#do-not-have-ember-test-helpers-import)
21+
<!--FIXTURES_TOC_END-->
22+
23+
<!--FIXTURES_CONTENT_START-->
24+
---
25+
<a id="basic">**basic**</a>
26+
27+
**Input** (<small>[basic.input.js](transforms/ember-test-helper-api-migration/__testfixtures__/basic.input.js)</small>):
28+
```js
29+
import { setApplication } from '@ember/test-helpers';
30+
import { start } from 'ember-qunit';
31+
import { setResolver } from 'ember-test-helpers';
32+
```
33+
34+
**Output** (<small>[basic.input.js](transforms/ember-test-helper-api-migration/__testfixtures__/basic.output.js)</small>):
35+
```js
36+
import { setApplication, setResolver } from '@ember/test-helpers';
37+
import { start } from 'ember-qunit';
38+
```
39+
---
40+
<a id="do-not-have-@ember-test-helpers-import">**do-not-have-@ember-test-helpers-import**</a>
41+
42+
**Input** (<small>[[email protected]](transforms/ember-test-helper-api-migration/__testfixtures__/[email protected])</small>):
43+
```js
44+
import { start } from 'ember-qunit';
45+
import { setResolver } from 'ember-test-helpers';
46+
```
47+
48+
**Output** (<small>[[email protected]](transforms/ember-test-helper-api-migration/__testfixtures__/[email protected])</small>):
49+
```js
50+
import { setResolver } from '@ember/test-helpers';
51+
import { start } from 'ember-qunit';
52+
```
53+
---
54+
<a id="do-not-have-ember-test-helpers-import">**do-not-have-ember-test-helpers-import**</a>
55+
56+
**Input** (<small>[do-not-have-ember-test-helpers-import.input.js](transforms/ember-test-helper-api-migration/__testfixtures__/do-not-have-ember-test-helpers-import.input.js)</small>):
57+
```js
58+
import { moduleForComponent, test } from 'ember-qunit';
59+
import hbs from 'htmlbars-inline-precompile';
60+
61+
moduleForComponent('foo-bar', 'Integration | Component | foo bar', {
62+
integration: true
63+
});
64+
```
65+
66+
**Output** (<small>[do-not-have-ember-test-helpers-import.input.js](transforms/ember-test-helper-api-migration/__testfixtures__/do-not-have-ember-test-helpers-import.output.js)</small>):
67+
```js
68+
import { moduleForComponent, test } from 'ember-qunit';
69+
import hbs from 'htmlbars-inline-precompile';
70+
71+
moduleForComponent('foo-bar', 'Integration | Component | foo bar', {
72+
integration: true
73+
});
74+
```
75+
<!--FIXTURE_CONTENT_END-->
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import { setApplication } from '@ember/test-helpers';
2+
import { start } from 'ember-qunit';
3+
import { setResolver } from 'ember-test-helpers';
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
import { setApplication, setResolver } from '@ember/test-helpers';
2+
import { start } from 'ember-qunit';
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
import { start } from 'ember-qunit';
2+
import { setResolver } from 'ember-test-helpers';
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
import { setResolver } from '@ember/test-helpers';
2+
import { start } from 'ember-qunit';
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import { moduleForComponent, test } from 'ember-qunit';
2+
import hbs from 'htmlbars-inline-precompile';
3+
4+
moduleForComponent('foo-bar', 'Integration | Component | foo bar', {
5+
integration: true
6+
});
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import { moduleForComponent, test } from 'ember-qunit';
2+
import hbs from 'htmlbars-inline-precompile';
3+
4+
moduleForComponent('foo-bar', 'Integration | Component | foo bar', {
5+
integration: true
6+
});
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
const { getParser } = require('codemod-cli').jscodeshift;
2+
const { addImportStatement, writeImportStatements } = require('../utils');
3+
4+
module.exports = function transformer(file, api) {
5+
const j = getParser(api);
6+
const root = j(file.source);
7+
8+
/**
9+
* Transform imports from ember-test-helpers to @ember/test-helpers
10+
*/
11+
function transform() {
12+
let deprecatedEmberTestHelperStatements = root.find(j.ImportDeclaration, {
13+
source: { value: 'ember-test-helpers'}
14+
})
15+
16+
if (deprecatedEmberTestHelperStatements.length === 0) {
17+
return root.toSource({
18+
quote: 'single',
19+
trailingComma: true,
20+
});
21+
}
22+
23+
let newImports = [];
24+
25+
deprecatedEmberTestHelperStatements.forEach((importStatement) => {
26+
let oldSpecifiers = importStatement.get('specifiers');
27+
28+
oldSpecifiers.each(({ node: specifier }) => {
29+
let importedName = specifier.imported.name;
30+
newImports.push(importedName)
31+
});
32+
33+
// Remove "ember-test-helper" import statement
34+
j(importStatement).remove();
35+
});
36+
37+
addImportStatement(newImports);
38+
writeImportStatements(j, root);
39+
}
40+
41+
transform();
42+
43+
return root.toSource({
44+
quote: 'single',
45+
trailingComma: true,
46+
});
47+
}
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: 'ember-test-helper-api-migration',
8+
});

0 commit comments

Comments
 (0)