igniteui-angular-sovn
Version:
Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps
143 lines (129 loc) • 6.03 kB
text/typescript
import * as path from "path";
import { EmptyTree } from "@angular-devkit/schematics";
import {
SchematicTestRunner,
UnitTestTree,
} from "@angular-devkit/schematics/testing";
describe("Update 8.2.0", () => {
let appTree: UnitTestTree;
const schematicRunner = new SchematicTestRunner(
"ig-migrate",
path.join(__dirname, "../migration-collection.json")
);
const configJson = {
projects: {
testProj: {
root: "/",
sourceRoot: "/testSrc",
},
},
schematics: {
"@schematics/angular:component": {
prefix: "appPrefix",
},
},
};
beforeEach(() => {
appTree = new UnitTestTree(new EmptyTree());
appTree.create("/angular.json", JSON.stringify(configJson));
});
it("should update Excel Style Filtering template selectors", async () => {
appTree.create(
"/testSrc/appPrefix/component/custom.component.html",
`<igx-grid [data]="data" height="500px" [autoGenerate]="true" [allowFiltering]="true" [filterMode]="'excelStyleFilter'">
<ng-template igxExcelStyleSortingTemplate><div class="esf-custom-sorting">Sorting Template</div></ng-template>
<ng-template igxExcelStyleHidingTemplate><div class="esf-custom-hiding">Hiding Template</div></ng-template>
<ng-template igxExcelStyleMovingTemplate><div class="esf-custom-moving">Moving Template</div></ng-template>
<ng-template igxExcelStylePinningTemplate><div class="esf-custom-pinning">Pinning Template</div></ng-template>
</igx-grid>`
);
const tree = await schematicRunner
.runSchematicAsync("migration-10", {}, appTree)
.toPromise();
expect(
tree.readContent(
"/testSrc/appPrefix/component/custom.component.html"
)
).toEqual(
`<igx-grid [data]="data" height="500px" [autoGenerate]="true" [allowFiltering]="true" [filterMode]="'excelStyleFilter'">
<ng-template igxExcelStyleSorting><div class="esf-custom-sorting">Sorting Template</div></ng-template>
<ng-template igxExcelStyleHiding><div class="esf-custom-hiding">Hiding Template</div></ng-template>
<ng-template igxExcelStyleMoving><div class="esf-custom-moving">Moving Template</div></ng-template>
<ng-template igxExcelStylePinning><div class="esf-custom-pinning">Pinning Template</div></ng-template>
</igx-grid>`
);
});
it("should update igxDrag input bindings", async () => {
appTree.create(
"/testSrc/appPrefix/component/custom.component.html",
`<div igxDrag [renderGhost]="true" [ghostImageClass]="'casper'" [dragGhostHost]="host">Drag me</div>`
);
const tree = await schematicRunner
.runSchematicAsync("migration-10", {}, appTree)
.toPromise();
expect(
tree.readContent(
"/testSrc/appPrefix/component/custom.component.html"
)
).toEqual(
`<div igxDrag [ghost]="true" [ghostClass]="'casper'" [ghostHost]="host">Drag me</div>`
);
});
it("should update igxDrag and igxDrop outputs bindings", async () => {
appTree.create(
"/testSrc/appPrefix/component/custom.component.html",
`<div igxDrag (onGhostCreate)="ghostCreateHandler($event)"
(onGhostDestroy)="ghostDestroyHandler($event)"
(returnMoveEnd)="moveEndHandler($event)"
(dragClicked)="clickHandler($event)">
Drag me
</div>
<div igxDrop (onEnter)="enterHandler($event)" (onLeave)="leaveHandler($event)" (onDrop)="dropHandler($event)">drop area</div>
`
);
const tree = await schematicRunner
.runSchematicAsync("migration-10", {}, appTree)
.toPromise();
expect(
tree.readContent(
"/testSrc/appPrefix/component/custom.component.html"
)
).toEqual(
`<div igxDrag (ghostCreate)="ghostCreateHandler($event)"
(ghostDestroy)="ghostDestroyHandler($event)"
(transitioned)="moveEndHandler($event)"
(click)="clickHandler($event)">
Drag me
</div>
<div igxDrop (enter)="enterHandler($event)" (leave)="leaveHandler($event)" (dropped)="dropHandler($event)">drop area</div>
`
);
});
it("should update igxDrag and igxDrop event argument interfaces", async () => {
appTree.create(
"/testSrc/appPrefix/component/test.component.ts",
`import { IgxDragDirective, IgxDropDirective, IgxDropEnterEventArgs,
IgxDropLeaveEventArgs, IgxDropEventArgs } from 'igniteui-angular-sovn';
export class DragDropSampleComponent {
public onEnterHandler(event: IgxDropEnterEventArgs) {}
public onLeaveHandler(event: IgxDropLeaveEventArgs) {}
public onDropHandler(event: IgxDropEventArgs) {}
}`
);
const tree = await schematicRunner
.runSchematicAsync("migration-10", {}, appTree)
.toPromise();
// V.S. 18th May 2021: No longer leave duplicate imports in post-migration file
expect(
tree.readContent("/testSrc/appPrefix/component/test.component.ts")
).toEqual(
`import { IgxDragDirective, IgxDropDirective, IDropBaseEventArgs,
IDropDroppedEventArgs } from 'igniteui-angular-sovn';
export class DragDropSampleComponent {
public onEnterHandler(event: IDropBaseEventArgs) {}
public onLeaveHandler(event: IDropBaseEventArgs) {}
public onDropHandler(event: IDropDroppedEventArgs) {}
}`
);
});
});