Skip to content

Commit

Permalink
chore(schematics): valid migration for scrollbar
Browse files Browse the repository at this point in the history
  • Loading branch information
splincode committed Jan 9, 2025
1 parent 37c92d1 commit 2b5bba7
Show file tree
Hide file tree
Showing 2 changed files with 132 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -545,7 +545,10 @@ export const IDENTIFIERS_TO_REPLACE: ReplacementIdentifierMulti[] = [
{name: 'TuiScrollbarModule', moduleSpecifier: '@taiga-ui/core'},
{name: 'TuiScrollbarComponent', moduleSpecifier: '@taiga-ui/core'},
],
to: {name: 'TuiScrollbar', moduleSpecifier: '@taiga-ui/core'},
to: [
{name: 'TuiScrollbar', moduleSpecifier: '@taiga-ui/core'},
{name: 'TuiScrollable', moduleSpecifier: '@taiga-ui/core'},
],
},
{
from: [
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
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 { TuiScrollbarModule } from "@taiga-ui/core";
@Component({
standalone: true,
templateUrl: './test.template.html',
imports: [TuiScrollbarModule]
})
export class Test {
}`;

const COMPONENT_AFTER = `import { TuiScrollbar, TuiScrollable } from "@taiga-ui/core";
@Component({
standalone: true,
templateUrl: './test.template.html',
imports: [TuiScrollbar, TuiScrollable]
})
export class Test {
}`;

const TEMPLATE_BEFORE = `
<tui-scrollbar>
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
</tui-scrollbar>
<tui-scrollbar>
<cdk-virtual-scroll-viewport
itemSize="50"
tuiScrollable
class="tui-zero-scrollbar"
>
<div
*cdkVirtualFor="let item of items"
>
{{ item }}
</div>
</cdk-virtual-scroll-viewport>
</tui-scrollbar>
`;

const TEMPLATE_AFTER = `
<tui-scrollbar>
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
</tui-scrollbar>
<tui-scrollbar>
<cdk-virtual-scroll-viewport
itemSize="50"
tuiScrollable
class="tui-zero-scrollbar"
>
<div
*cdkVirtualFor="let item of items"
>
{{ item }}
</div>
</cdk-virtual-scroll-viewport>
</tui-scrollbar>
`;

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 scrollbar', 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);
expect(tree.readContent('test/app/test.template.html')).toEqual(TEMPLATE_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 2b5bba7

Please sign in to comment.