Skip to content

Commit ef3da8d

Browse files
Add batch tests
1 parent ec5c323 commit ef3da8d

File tree

1 file changed

+296
-0
lines changed

1 file changed

+296
-0
lines changed

test/batchTest.ts

Lines changed: 296 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,296 @@
1+
/*
2+
* --------------------------------------------------------------------------------
3+
* <copyright company="Aspose" file="batchTest.ts">
4+
* Copyright (c) 2021 Aspose.Words for Cloud
5+
* </copyright>
6+
* <summary>
7+
* Permission is hereby granted, free of charge, to any person obtaining a copy
8+
* of this software and associated documentation files (the "Software"), to deal
9+
* in the Software without restriction, including without limitation the rights
10+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11+
* copies of the Software, and to permit persons to whom the Software is
12+
* furnished to do so, subject to the following conditions:
13+
*
14+
* The above copyright notice and this permission notice shall be included in all
15+
* copies or substantial portions of the Software.
16+
*
17+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23+
* SOFTWARE.
24+
* </summary>
25+
* --------------------------------------------------------------------------------
26+
*/
27+
28+
import { assert, expect } from "chai";
29+
import "mocha";
30+
import * as fs from "fs";
31+
32+
import * as model from "../src/model/model";
33+
import * as BaseTest from "./baseTest";
34+
35+
describe("batch tests", () => {
36+
const remoteDataFolder = BaseTest.remoteBaseTestDataFolder + "/DocumentElements/Paragraphs";
37+
38+
describe("Empty batch request test", () => {
39+
it("should throw an error", () => {
40+
const wordsApi = BaseTest.initializeWordsApi();
41+
return wordsApi.batch()
42+
.then((_) => {assert.fail("Error is expected");})
43+
.catch((_) => {assert.ok("Passed");})
44+
});
45+
});
46+
47+
describe("Batch request for a single json test", () => {
48+
const remoteFileName = "TestBatchSingleJsonRequest.docx";
49+
const localFile = "Common/test_multi_pages.docx";
50+
51+
it("should return response with code 200", () => {
52+
const wordsApi = BaseTest.initializeWordsApi();
53+
return wordsApi.uploadFileToStorage(
54+
remoteDataFolder + "/" + remoteFileName,
55+
BaseTest.localBaseTestDataFolder + localFile
56+
).then((result0) => {
57+
expect(result0.response.statusMessage).to.equal("OK");
58+
const request1 = new model.GetParagraphsRequest({
59+
name: remoteFileName,
60+
nodePath: "sections/0",
61+
folder: remoteDataFolder
62+
});
63+
64+
return wordsApi.batch(request1)
65+
.then((resultApi) => {
66+
// Assert
67+
expect(resultApi.response.statusCode).to.equal(200);
68+
expect(resultApi.body.length).to.equal(1);
69+
expect(resultApi.body[0].constructor.name).to.equal("ParagraphLinkCollectionResponse"); // GetParagraphs
70+
});
71+
});
72+
});
73+
});
74+
75+
describe("Batch request for a single file test", () => {
76+
const remoteFileName = "TestBatchSingleFileRequest.docx";
77+
const localFile = "Common/test_multi_pages.docx";
78+
79+
it("should return response with code 200", () => {
80+
const wordsApi = BaseTest.initializeWordsApi();
81+
return wordsApi.uploadFileToStorage(
82+
remoteDataFolder + "/" + remoteFileName,
83+
BaseTest.localBaseTestDataFolder + localFile
84+
).then((result0) => {
85+
expect(result0.response.statusMessage).to.equal("OK");
86+
87+
const request1 = new model.GetParagraphsRequest({
88+
name: remoteFileName,
89+
nodePath: "sections/0",
90+
folder: remoteDataFolder
91+
});
92+
93+
const request2 = new model.DownloadFileRequest({
94+
path: remoteDataFolder + "/" + remoteFileName,
95+
});
96+
97+
request2.dependsOn(request1);
98+
99+
return wordsApi.batch(request1, request2)
100+
.then((resultApi) => {
101+
// Assert
102+
expect(resultApi.response.statusCode).to.equal(200);
103+
expect(resultApi.body.length).to.equal(2);
104+
expect(resultApi.body[1].constructor.name).to.equal("Buffer");
105+
106+
fs.writeFileSync("d:/result.docx", resultApi.body[0]);
107+
});
108+
});
109+
});
110+
});
111+
112+
describe("Batch Request for a single form test", () => {
113+
const remoteFileName = "TestGetFullBatchRequest.docx";
114+
const localFile = "Common/test_multi_pages.docx";
115+
116+
it("should return response with code 200", () => {
117+
const wordsApi = BaseTest.initializeWordsApi();
118+
return wordsApi.uploadFileToStorage(
119+
remoteDataFolder + "/" + remoteFileName,
120+
BaseTest.localBaseTestDataFolder + localFile
121+
).then((result0) => {
122+
expect(result0.response.statusMessage).to.equal("OK");
123+
const request1 = new model.InsertParagraphRequest({
124+
name: remoteFileName,
125+
paragraph: new model.ParagraphInsert({
126+
text: "This is a new paragraph for your document"
127+
}),
128+
nodePath: "sections/0",
129+
folder: remoteDataFolder
130+
});
131+
132+
return wordsApi.batch(request1)
133+
.then((resultApi) => {
134+
// Assert
135+
expect(resultApi.response.statusCode).to.equal(200);
136+
expect(resultApi.body.length).to.equal(1);
137+
expect(resultApi.body[0].constructor.name).to.equal("ParagraphResponse"); // InsertParagraph
138+
});
139+
});
140+
});
141+
});
142+
143+
describe("Batch request for a single online request test", () => {
144+
const remoteFileName = "TesBatchSingleOnlineRequest.docx";
145+
const reportingFolder = "DocumentActions/Reporting";
146+
const localFile = "Common/test_multi_pages.docx";
147+
148+
it("should return response with code 200", () => {
149+
const wordsApi = BaseTest.initializeWordsApi();
150+
return wordsApi.uploadFileToStorage(
151+
remoteDataFolder + "/" + remoteFileName,
152+
BaseTest.localBaseTestDataFolder + localFile
153+
).then((result0) => {
154+
expect(result0.response.statusMessage).to.equal("OK");
155+
156+
const localDocumentFile = "ReportTemplate.docx";
157+
const localDataFile = fs.readFileSync(BaseTest.localBaseTestDataFolder + reportingFolder + "/ReportData.json", 'utf8');
158+
159+
const request = new model.BuildReportOnlineRequest({
160+
template: fs.createReadStream(BaseTest.localBaseTestDataFolder + reportingFolder + "/" + localDocumentFile),
161+
data: localDataFile,
162+
reportEngineSettings: new model.ReportEngineSettings({
163+
dataSourceType: model.ReportEngineSettings.DataSourceTypeEnum.Json,
164+
dataSourceName: "persons"
165+
})
166+
});
167+
168+
return wordsApi.batch(request)
169+
.then((resultApi) => {
170+
// Assert
171+
expect(resultApi.response.statusMessage).to.equal("OK");
172+
expect(resultApi.body.length).to.equal(1);
173+
expect(resultApi.body[0].constructor.name).to.equal("Buffer"); // BuildReportOnline
174+
});
175+
});
176+
});
177+
});
178+
179+
describe("Run Full Batch Request test", () => {
180+
const remoteFileName = "TestGetFullBatchRequest.docx";
181+
const reportingFolder = "DocumentActions/Reporting";
182+
const localFile = "Common/test_multi_pages.docx";
183+
184+
it("should return response with code 200", () => {
185+
const wordsApi = BaseTest.initializeWordsApi();
186+
return wordsApi.uploadFileToStorage(
187+
remoteDataFolder + "/" + remoteFileName,
188+
BaseTest.localBaseTestDataFolder + localFile
189+
).then((result0) => {
190+
expect(result0.response.statusMessage).to.equal("OK");
191+
const request1 = new model.GetParagraphsRequest({
192+
name: remoteFileName,
193+
nodePath: "sections/0",
194+
folder: remoteDataFolder
195+
});
196+
const request2 = new model.GetParagraphRequest({
197+
name: remoteFileName,
198+
index: 0,
199+
nodePath: "sections/0",
200+
folder: remoteDataFolder
201+
});
202+
const request3 = new model.InsertParagraphRequest({
203+
name: remoteFileName,
204+
paragraph: new model.ParagraphInsert({
205+
text: "This is a new paragraph for your document"
206+
}),
207+
nodePath: "sections/0",
208+
folder: remoteDataFolder
209+
});
210+
const request4 = new model.DeleteParagraphRequest({
211+
name: remoteFileName,
212+
index: 0,
213+
nodePath: "",
214+
folder: remoteDataFolder
215+
});
216+
217+
const localDocumentFile = "ReportTemplate.docx";
218+
const localDataFile = fs.readFileSync(BaseTest.localBaseTestDataFolder + reportingFolder + "/ReportData.json", 'utf8');
219+
220+
const request5 = new model.BuildReportOnlineRequest({
221+
template: fs.createReadStream(BaseTest.localBaseTestDataFolder + reportingFolder + "/" + localDocumentFile),
222+
data: localDataFile,
223+
reportEngineSettings: new model.ReportEngineSettings({
224+
dataSourceType: model.ReportEngineSettings.DataSourceTypeEnum.Json,
225+
dataSourceName: "persons"
226+
})
227+
});
228+
229+
return wordsApi.batch(request1, request2, request3, request4, request5)
230+
.then((resultApi) => {
231+
// Assert
232+
expect(resultApi.response.statusCode).to.equal(200);
233+
expect(resultApi.body.length).to.equal(5);
234+
expect(resultApi.body[0].constructor.name).to.equal("ParagraphLinkCollectionResponse"); // GetParagraphs
235+
expect(resultApi.body[1].constructor.name).to.equal("ParagraphResponse"); // GetParagraph
236+
expect(resultApi.body[2].constructor.name).to.equal("ParagraphResponse"); // InsertParagraph
237+
expect(resultApi.body[3]).to.be.null; // DeleteParagraph
238+
expect(resultApi.body[4].constructor.name).to.equal("Buffer"); // BuildReportOnline
239+
});
240+
});
241+
});
242+
});
243+
244+
describe("Run batch request with depenency tree test", () => {
245+
const remoteFileName = "TestGetFullBatchRequest.docx";
246+
const localFile = "Common/test_multi_pages.docx";
247+
248+
it("should return response with code 200", () => {
249+
const wordsApi = BaseTest.initializeWordsApi();
250+
return wordsApi.uploadFileToStorage(
251+
remoteDataFolder + "/" + remoteFileName,
252+
BaseTest.localBaseTestDataFolder + localFile
253+
).then((result0) => {
254+
expect(result0.response.statusMessage).to.equal("OK");
255+
256+
const request1 = new model.GetParagraphsRequest({
257+
name: remoteFileName,
258+
nodePath: "sections/0",
259+
folder: remoteDataFolder
260+
});
261+
const request2 = new model.GetParagraphsRequest({
262+
name: remoteFileName,
263+
nodePath: "sections/0",
264+
folder: remoteDataFolder
265+
});
266+
const request3 = new model.InsertParagraphRequest({
267+
name: remoteFileName,
268+
paragraph: new model.ParagraphInsert({
269+
text: "This is a new paragraph for your document"
270+
}),
271+
nodePath: "sections/0",
272+
folder: remoteDataFolder
273+
});
274+
const request4 = new model.DeleteParagraphRequest({
275+
name: remoteFileName,
276+
nodePath: "sections/0",
277+
index: 0,
278+
folder: remoteDataFolder
279+
});
280+
281+
// set dependency
282+
request4.dependsOn(request2);
283+
request2.dependsOn(request3);
284+
request3.dependsOn(request1);
285+
286+
return wordsApi.batch(request1, request2, request3, request4)
287+
.then((resultApi) => {
288+
// Assert
289+
// expected order of request: 1, 3, 2, 4
290+
expect(resultApi.response.statusCode).to.equal(200);
291+
expect(resultApi.body[2].paragraphs.paragraphLinkList.length).to.equal(resultApi.body[0].paragraphs.paragraphLinkList.length + 1);
292+
});
293+
});
294+
});
295+
});
296+
});

0 commit comments

Comments
 (0)