Skip to content

Commit

Permalink
chore(schematics): valid migration for tree references
Browse files Browse the repository at this point in the history
  • Loading branch information
splincode committed Dec 27, 2024
1 parent 2a86fb0 commit ebb584c
Show file tree
Hide file tree
Showing 2 changed files with 121 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -294,6 +294,26 @@ export const IDENTIFIERS_TO_REPLACE: ReplacementIdentifierMulti[] = [
from: {name: 'TuiTreeModule', moduleSpecifier: '@taiga-ui/kit'},
to: {name: 'TuiTree', moduleSpecifier: '@taiga-ui/kit', spreadInModule: true},
},
{
from: {name: 'TuiTreeItemComponent', moduleSpecifier: '@taiga-ui/kit'},
to: {name: 'TuiTreeItem', moduleSpecifier: '@taiga-ui/kit'},
},
{
from: {name: 'TuiTreeItemContentComponent', moduleSpecifier: '@taiga-ui/kit'},
to: {name: 'TuiTreeItemContent', moduleSpecifier: '@taiga-ui/kit'},
},
{
from: {name: 'TuiTreeChildrenDirective', moduleSpecifier: '@taiga-ui/kit'},
to: {name: 'TuiTreeChildren', moduleSpecifier: '@taiga-ui/kit'},
},
{
from: {name: 'TuiTreeItemControllerDirective', moduleSpecifier: '@taiga-ui/kit'},
to: {name: 'TuiTreeItemController', moduleSpecifier: '@taiga-ui/kit'},
},
{
from: {name: 'TuiTreeNodeDirective', moduleSpecifier: '@taiga-ui/kit'},
to: {name: 'TuiTreeNode', moduleSpecifier: '@taiga-ui/kit'},
},
{
from: {
name: 'TuiDataListDropdownManagerModule',
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
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 { TuiTreeModule, TuiTreeComponent,
TuiTreeItemComponent,
TuiTreeItemContentComponent,
TuiTreeChildrenDirective,
TuiTreeItemControllerDirective,
TuiTreeControllerDirective,
TuiTreeNodeDirective } from "@taiga-ui/kit";
@Component({
standalone: true,
template: '',
imports: [TuiTreeModule]
})
export class Test {
protected readonly list = [
TuiTreeComponent,
TuiTreeItemComponent,
TuiTreeItemContentComponent,
TuiTreeChildrenDirective,
TuiTreeItemControllerDirective,
TuiTreeControllerDirective,
TuiTreeNodeDirective,
];
}`;

const COMPONENT_AFTER = `
import { TuiTreeComponent, TuiTreeControllerDirective, TuiTree, TuiTreeItem, TuiTreeItemContent, TuiTreeChildren, TuiTreeItemController, TuiTreeNode } from "@taiga-ui/kit";
@Component({
standalone: true,
template: '',
imports: [TuiTree]
})
export class Test {
protected readonly list = [
TuiTreeComponent,
TuiTreeItem,
TuiTreeItemContent,
TuiTreeChildren,
TuiTreeItemController,
TuiTreeControllerDirective,
TuiTreeNode,
];
}`;

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 tree 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.component.ts')).toEqual(COMPONENT_AFTER);
});

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

function createMainFiles(): void {
createSourceFile('test/app/test.component.ts', COMPONENT_BEFORE);
createAngularJson();
createSourceFile(
'package.json',
'{"dependencies": {"@angular/core": "~13.0.0", "@taiga-ui/addon-commerce": "~3.42.0"}}',
);
}

0 comments on commit ebb584c

Please sign in to comment.