Skip to content

Commit cd2c4b8

Browse files
committed
Use MockResolver in tests
1 parent 9c53d1d commit cd2c4b8

File tree

7 files changed

+58
-33
lines changed

7 files changed

+58
-33
lines changed

TODO.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818

1919
FIXME: Mock resolver in tests + unit test the two resolvers.
2020

21+
FIXME: Refactor cli.js
22+
2123
FIXME: Figure out how to pass no-babel option to jscodeshift via codemod-cli
2224

2325
FIXME: Extract ember codemod buildtime resolver

transforms/no-implicit-this/__testfixtures__/-mock-telemetry.d.json.ts

Lines changed: 0 additions & 5 deletions
This file was deleted.

transforms/no-implicit-this/__testfixtures__/-mock-telemetry.json

Lines changed: 0 additions & 11 deletions
This file was deleted.

transforms/no-implicit-this/helpers/options.ts

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { getOptions as getCLIOptions } from 'codemod-cli';
22
import fs from 'node:fs';
33
import path from 'node:path';
44
import { ZodError, ZodType, z } from 'zod';
5-
import Resolver, { EmbroiderResolver, RuntimeResolver } from './resolver';
5+
import Resolver, { EmbroiderResolver, MockResolver, RuntimeResolver } from './resolver';
66

77
export interface Options {
88
customHelpers: string[];
@@ -33,11 +33,18 @@ export function getOptions(): Options {
3333
const cliOptions = parse(getCLIOptions(), CLIOptions);
3434
return {
3535
customHelpers: getCustomHelpersFromConfig(cliOptions.config),
36-
resolver:
37-
cliOptions.telemetry === 'runtime' ? RuntimeResolver.build() : EmbroiderResolver.build(),
36+
resolver: buildResolver(cliOptions),
3837
};
3938
}
4039

40+
function buildResolver(cliOptions: CLIOptions): Resolver {
41+
if (process.env['TESTING']) {
42+
return MockResolver.build();
43+
} else {
44+
return cliOptions.telemetry === 'runtime' ? RuntimeResolver.build() : EmbroiderResolver.build();
45+
}
46+
}
47+
4148
// FIXME: Document
4249
/**
4350
* Accepts the config path for custom helpers and returns the array of helpers

transforms/no-implicit-this/helpers/resolver.ts

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,3 +108,31 @@ export class EmbroiderResolver extends Resolver {
108108
}
109109
}
110110
}
111+
112+
export class MockResolver extends Resolver {
113+
private static components: string[] = [];
114+
static setComponents(components: string[]) {
115+
this.components = components;
116+
}
117+
118+
private static helpers: string[] = [];
119+
static setHelpers(helpers: string[]) {
120+
this.helpers = helpers;
121+
}
122+
123+
static build(): MockResolver {
124+
return new MockResolver(this.components, this.helpers);
125+
}
126+
127+
constructor(private components: string[], private helpers: string[]) {
128+
super();
129+
}
130+
131+
hasComponent(name: string): boolean {
132+
return !!this.components.includes(name);
133+
}
134+
135+
hasHelper(name: string): boolean {
136+
return !!this.helpers.includes(name);
137+
}
138+
}
Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,18 @@
1-
import { setTelemetry } from 'ember-codemods-telemetry-helpers';
2-
import path from 'node:path';
3-
import mockTelemetryData, { type Telemetry } from './__testfixtures__/-mock-telemetry.json';
1+
import { MockResolver } from './helpers/resolver';
42

5-
export function setupTelemetry() {
6-
const mockTelemetry: Telemetry = {};
3+
const MOCK_COMPONENTS = [
4+
'block-component',
5+
'foo-bar-baz',
6+
'foo',
7+
'my-component',
8+
'namespace/foo',
9+
'namespace/my-component',
10+
'some-component',
11+
];
712

8-
Object.keys(mockTelemetryData).forEach((key) => {
9-
const value = mockTelemetryData[key] || {};
10-
const mockPath = path.resolve(__dirname, `./__testfixtures__/${key}`);
13+
const MOCK_HELPERS = ['a-helper', 'my-helper'];
1114

12-
mockTelemetry[mockPath] = value;
13-
});
14-
15-
setTelemetry(mockTelemetry);
15+
export function setupResolver() {
16+
MockResolver.setComponents(MOCK_COMPONENTS);
17+
MockResolver.setHelpers(MOCK_HELPERS);
1618
}

transforms/no-implicit-this/test.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
'use strict';
22

33
import { runTransformTest } from 'codemod-cli';
4-
import { setupTelemetry } from './test-helpers';
4+
import { setupResolver } from './test-helpers';
55

6-
setupTelemetry();
6+
process.env['TESTING'] = 'true';
7+
8+
setupResolver();
79

810
runTransformTest({
911
type: 'jscodeshift',

0 commit comments

Comments
 (0)