Skip to content

Commit d19397b

Browse files
committed
chore(test): fetch pptx template from url
1 parent 2bb2210 commit d19397b

File tree

4 files changed

+84
-2
lines changed

4 files changed

+84
-2
lines changed
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
import * as fs from 'fs/promises';
2+
import Automizer from '../src/automizer';
3+
import { ChartData, modify } from '../src';
4+
5+
test('create presentation from buffer/from directory and add basic slides', async () => {
6+
const automizer = new Automizer({
7+
outputDir: `${__dirname}/pptx-output`,
8+
templateDir: `${__dirname}/pptx-templates`,
9+
});
10+
const rootTemplate = await fs.readFile(
11+
`${__dirname}/pptx-templates/RootTemplate.pptx`,
12+
);
13+
const slideWithShapes = await fs.readFile(
14+
`${__dirname}/pptx-templates/SlideWithShapes.pptx`,
15+
);
16+
17+
const url =
18+
'https://raw.githubusercontent.com/singerla/pptx-automizer/main/__tests__/pptx-templates/SlideWithShapes.pptx';
19+
20+
const response = await fetch(url);
21+
const buffer = await response.arrayBuffer();
22+
const bytes = new Uint8Array(buffer);
23+
24+
const pres = automizer
25+
.loadRoot(rootTemplate)
26+
.load(bytes, 'shapesFromWeb')
27+
.load('SlideWithCharts.pptx', 'chartsFromDir')
28+
.load(slideWithShapes, 'shapes');
29+
30+
pres.addSlide('chartsFromDir', 2, (slide) => {
31+
slide.modifyElement('ColumnChart', [
32+
modify.setChartData(<ChartData>{
33+
series: [{ label: 'series 1' }, { label: 'series 2' }],
34+
categories: [
35+
{ label: 'cat 2-1', values: [50, 50] },
36+
{ label: 'cat 2-2', values: [14, 50] },
37+
{ label: 'cat 2-3', values: [15, 50] },
38+
{ label: 'cat 2-4', values: [26, 50] },
39+
],
40+
}),
41+
]);
42+
});
43+
44+
for (let i = 0; i <= 10; i++) {
45+
pres.addSlide('shapes', 1);
46+
}
47+
48+
pres.addSlide('shapesFromWeb', 2);
49+
50+
await pres.write(`create-presentation-from-buffer-mixed.test.pptx`);
51+
52+
expect(pres).toBeInstanceOf(Automizer);
53+
});

__tests__/create-presentation-from-buffer.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import fs from 'fs/promises';
1+
import * as fs from 'fs/promises';
22
import Automizer from '../src/automizer';
33

44
test('create presentation from buffer and add basic slide', async () => {
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import Automizer, { LabelPosition, modify } from '../src/index';
2+
3+
test('modify chart series data labels.', async () => {
4+
const automizer = new Automizer({
5+
templateDir: `${__dirname}/pptx-templates`,
6+
outputDir: `${__dirname}/pptx-output`,
7+
});
8+
9+
const pres = automizer
10+
.loadRoot(`RootTemplate.pptx`)
11+
.load(`ChartBarsStackedLabels.pptx`, 'charts');
12+
13+
const result = await pres
14+
.addSlide('charts', 1, (slide) => {
15+
slide.modifyElement('BarsStacked', [
16+
modify.setDataLabelAttributes({
17+
dLblPos: LabelPosition.OutsideEnd,
18+
}),
19+
]);
20+
})
21+
.write(`modify-chart-data-labels.test.pptx`);
22+
23+
expect(result.charts).toBe(2);
24+
});

src/automizer.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -571,7 +571,12 @@ export default class Automizer implements IPresentationProps {
571571
} else if (fs.existsSync(this.templateFallbackDir + location)) {
572572
return this.templateFallbackDir + location;
573573
} else {
574-
vd('No file matches "' + location + '"');
574+
if (typeof location === 'string') {
575+
vd('No file matches "' + location + '"');
576+
} else {
577+
vd('Invalid filename');
578+
}
579+
575580
vd('@templateDir: ' + this.templateDir);
576581
vd('@templateFallbackDir: ' + this.templateFallbackDir);
577582
}

0 commit comments

Comments
 (0)