Skip to content

Commit

Permalink
chore(schematics): valid migration for resizable module (#10088)
Browse files Browse the repository at this point in the history
  • Loading branch information
splincode authored Jan 9, 2025
1 parent 5260dea commit cc674a2
Show file tree
Hide file tree
Showing 3 changed files with 116 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -296,4 +296,13 @@ export const ATTRS_TO_REPLACE: ReplacementAttribute[] = [
attrName: '*ngFor',
},
},
{
from: {
attrName: 'tuiResizeable',
withTagNames: ['*'],
},
to: {
attrName: 'tuiResizable',
},
},
];
Original file line number Diff line number Diff line change
Expand Up @@ -2533,4 +2533,15 @@ export const IDENTIFIERS_TO_REPLACE: ReplacementIdentifierMulti[] = [
from: {name: 'TuiObscuredModule', moduleSpecifier: '@taiga-ui/cdk'},
to: {name: 'TuiObscured', moduleSpecifier: '@taiga-ui/cdk'},
},
{
from: {name: 'TuiResizerModule', moduleSpecifier: '@taiga-ui/cdk'},
to: [
{name: 'TuiResizable', moduleSpecifier: '@taiga-ui/cdk'},
{name: 'TuiResizer', moduleSpecifier: '@taiga-ui/cdk'},
],
},
{
from: {name: 'TuiResizeableDirective', moduleSpecifier: '@taiga-ui/cdk'},
to: {name: 'TuiResizable', moduleSpecifier: '@taiga-ui/cdk'},
},
];
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
import {join} from 'node:path';

import {HostTree} from '@angular-devkit/schematics';
import {SchematicTestRunner, UnitTestTree} from '@angular-devkit/schematics/testing';
import type {TuiSchema} from '@taiga-ui/cdk/schematics/ng-add/schema';
import {
createProject,
createSourceFile,
resetActiveProject,
saveActiveProject,
setActiveProject,
} from 'ng-morph';

import {createAngularJson} from '../../../utils/create-angular-json';

const collectionPath = join(__dirname, '../../../migration.json');

const COMPONENT_BEFORE = `
import { TuiResizerModule, TuiResizeableDirective } from "@taiga-ui/cdk";
@Component({
standalone: true,
templateUrl: './test.template.html',
imports: [TuiResizerModule]
})
export class Test {
@ViewChild(TuiResizeableDirective, {static: true})
private readonly resizable?: ElementRef<HTMLElement>;
}`;

const COMPONENT_AFTER = `
import { TuiResizable, TuiResizer } from "@taiga-ui/cdk";
@Component({
standalone: true,
templateUrl: './test.template.html',
imports: [TuiResizable, TuiResizer]
})
export class Test {
@ViewChild(TuiResizable, {static: true})
private readonly resizable?: ElementRef<HTMLElement>;
}`;

const TEMPLATE_BEFORE = `
<div tuiResizeable>
<div [tuiResizer]="[1, 0]"></div>
</div>
`;

const TEMPLATE_AFTER = `
<div tuiResizable>
<div [tuiResizer]="[1, 0]"></div>
</div>
`;

describe('ng-update', () => {
let host: UnitTestTree;
let runner: SchematicTestRunner;

beforeEach(() => {
host = new UnitTestTree(new HostTree());
runner = new SchematicTestRunner('schematics', collectionPath);

setActiveProject(createProject(host));

createMainFiles();

saveActiveProject();
});

it('should migrate resizable references', async () => {
const tree = await runner.runSchematic(
'updateToV4',
{'skip-logs': process.env['TUI_CI'] === 'true'} as Partial<TuiSchema>,
host,
);

expect(tree.readContent('test/app/test.template.html')).toEqual(TEMPLATE_AFTER);
expect(tree.readContent('test/app/test.component.ts')).toEqual(COMPONENT_AFTER);
});

afterEach(() => {
resetActiveProject();
});
});

function createMainFiles(): void {
createSourceFile('test/app/test.component.ts', COMPONENT_BEFORE);
createSourceFile('test/app/test.template.html', TEMPLATE_BEFORE);

createAngularJson();
createSourceFile(
'package.json',
'{"dependencies": {"@angular/core": "~13.0.0", "@taiga-ui/addon-commerce": "~3.42.0"}}',
);
}

0 comments on commit cc674a2

Please sign in to comment.