Skip to content

Commit c06d3ea

Browse files
committed
Merge branch 'copilot/add-pdf-export-feature' of https://github.com/IgniteUI/igniteui-angular into copilot/add-pdf-export-feature
2 parents 80529b4 + 8b09ed1 commit c06d3ea

File tree

4 files changed

+96
-0
lines changed

4 files changed

+96
-0
lines changed

projects/igniteui-angular/ng-package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
"@types/hammerjs",
1010
"hammerjs",
1111
"fflate",
12+
"jspdf",
1213
"igniteui-trial-watermark",
1314
"lodash-es",
1415
"@igniteui/material-icons-extended",

projects/igniteui-angular/ng-package.prod.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
"@types/hammerjs",
99
"hammerjs",
1010
"fflate",
11+
"jspdf",
1112
"igniteui-trial-watermark",
1213
"lodash-es",
1314
"@igniteui/material-icons-extended",

projects/igniteui-angular/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
"drag drop",
4141
"drop down",
4242
"excel export",
43+
"pdf export",
4344
"expansion panel",
4445
"grid",
4546
"hierarchical grid",
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
import { TestBed, waitForAsync } from '@angular/core/testing';
2+
import { IgxGridComponent } from '../../grids/grid/grid.component';
3+
import { ExportUtilities } from '../exporter-common/export-utilities';
4+
import { IgxPdfExporterService } from './pdf-exporter';
5+
import { IgxPdfExporterOptions } from './pdf-exporter-options';
6+
import { GridIDNameJobTitleComponent } from '../../test-utils/grid-samples.spec';
7+
import { first } from 'rxjs/operators';
8+
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
9+
10+
describe('PDF Grid Exporter', () => {
11+
let exporter: IgxPdfExporterService;
12+
let options: IgxPdfExporterOptions;
13+
14+
beforeEach(waitForAsync(() => {
15+
TestBed.configureTestingModule({
16+
imports: [
17+
NoopAnimationsModule,
18+
GridIDNameJobTitleComponent
19+
]
20+
}).compileComponents();
21+
}));
22+
23+
beforeEach(() => {
24+
exporter = new IgxPdfExporterService();
25+
options = new IgxPdfExporterOptions('PdfGridExport');
26+
27+
// Spy the saveBlobToFile method so the files are not really created
28+
spyOn(ExportUtilities as any, 'saveBlobToFile');
29+
});
30+
31+
it('should export grid as displayed.', (done) => {
32+
const fix = TestBed.createComponent(GridIDNameJobTitleComponent);
33+
fix.detectChanges();
34+
35+
const grid = fix.componentInstance.grid;
36+
37+
exporter.exportEnded.pipe(first()).subscribe(() => {
38+
expect(ExportUtilities.saveBlobToFile).toHaveBeenCalledTimes(1);
39+
done();
40+
});
41+
42+
exporter.export(grid, options);
43+
});
44+
45+
it('should export grid with custom page orientation', (done) => {
46+
const fix = TestBed.createComponent(GridIDNameJobTitleComponent);
47+
fix.detectChanges();
48+
49+
const grid = fix.componentInstance.grid;
50+
options.pageOrientation = 'landscape';
51+
52+
exporter.exportEnded.pipe(first()).subscribe(() => {
53+
expect(ExportUtilities.saveBlobToFile).toHaveBeenCalledTimes(1);
54+
done();
55+
});
56+
57+
exporter.export(grid, options);
58+
});
59+
60+
it('should honor ignoreColumnsVisibility option', (done) => {
61+
const fix = TestBed.createComponent(GridIDNameJobTitleComponent);
62+
fix.detectChanges();
63+
64+
const grid = fix.componentInstance.grid;
65+
grid.columnList.get(0).hidden = true;
66+
options.ignoreColumnsVisibility = false;
67+
68+
fix.detectChanges();
69+
70+
exporter.exportEnded.pipe(first()).subscribe(() => {
71+
expect(ExportUtilities.saveBlobToFile).toHaveBeenCalledTimes(1);
72+
done();
73+
});
74+
75+
exporter.export(grid, options);
76+
});
77+
78+
it('should handle empty grid', (done) => {
79+
const fix = TestBed.createComponent(GridIDNameJobTitleComponent);
80+
fix.detectChanges();
81+
82+
const grid = fix.componentInstance.grid;
83+
grid.data = [];
84+
fix.detectChanges();
85+
86+
exporter.exportEnded.pipe(first()).subscribe(() => {
87+
expect(ExportUtilities.saveBlobToFile).toHaveBeenCalledTimes(1);
88+
done();
89+
});
90+
91+
exporter.export(grid, options);
92+
});
93+
});

0 commit comments

Comments
 (0)