Skip to content

Commit e1bd45a

Browse files
committed
feat: add uploads to sdk
1 parent 44bc85c commit e1bd45a

File tree

3 files changed

+151
-129
lines changed

3 files changed

+151
-129
lines changed

__tests__/Uploads.spec.ts

Lines changed: 0 additions & 129 deletions
This file was deleted.

__tests__/UploadsApi.spec.ts

Lines changed: 139 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,139 @@
1+
import {
2+
Campaign,
3+
CampaignWritable,
4+
CampaignUpdatable,
5+
CmpScheduleType,
6+
UploadWritable,
7+
ExportModel,
8+
ExportModelTypeEnum,
9+
UploadUpdatable,
10+
UploadState,
11+
Upload,
12+
} from "../models";
13+
import { UploadsApi } from "../api/uploads-api";
14+
import { CONFIG_FOR_INTEGRATION } from "./testFixtures";
15+
import { CampaignsApi } from "../api/campaigns-api";
16+
import FormData from "form-data";
17+
import { createReadStream } from "fs";
18+
import { assert } from "console";
19+
20+
describe("UploadsApi", () => {
21+
jest.setTimeout(1000 * 60);
22+
23+
it("Uploads API can be instantiated", () => {
24+
const uploadsApi = new UploadsApi(CONFIG_FOR_INTEGRATION);
25+
expect(uploadsApi).toBeDefined();
26+
expect(typeof uploadsApi).toEqual("object");
27+
expect(uploadsApi).toBeInstanceOf(UploadsApi);
28+
});
29+
30+
it("all individual Uploads functions exists", () => {
31+
const uploadsApi = new UploadsApi(CONFIG_FOR_INTEGRATION);
32+
expect(uploadsApi.create_export).toBeDefined();
33+
expect(typeof uploadsApi.create_export).toEqual("function");
34+
35+
expect(uploadsApi.create_upload).toBeDefined();
36+
expect(typeof uploadsApi.create_upload).toEqual("function");
37+
38+
expect(uploadsApi.delete_upload).toBeDefined();
39+
expect(typeof uploadsApi.delete_upload).toEqual("function");
40+
41+
expect(uploadsApi.get_export).toBeDefined();
42+
expect(typeof uploadsApi.get_export).toEqual("function");
43+
44+
expect(uploadsApi.get_upload).toBeDefined();
45+
expect(typeof uploadsApi.get_upload).toEqual("function");
46+
47+
expect(uploadsApi.list_upload).toBeDefined();
48+
expect(typeof uploadsApi.list_upload).toEqual("function");
49+
50+
expect(uploadsApi.update_upload).toBeDefined();
51+
expect(typeof uploadsApi.update_upload).toEqual("function");
52+
53+
expect(uploadsApi.upload_file).toBeDefined();
54+
expect(typeof uploadsApi.upload_file).toEqual("function");
55+
});
56+
57+
describe("performs single-uploads operations", () => {
58+
``;
59+
let createdCampaign: Campaign;
60+
let uploadWrite: UploadWritable;
61+
let createdUpload: Upload;
62+
63+
beforeAll(async () => {
64+
try {
65+
const campaignsApi = new CampaignsApi(CONFIG_FOR_INTEGRATION);
66+
67+
const campaignWrite = new CampaignWritable({
68+
name:
69+
"TS Integration Test Campaign for uploads on day " +
70+
Date.now().toString(),
71+
schedule_type: CmpScheduleType.Immediate,
72+
});
73+
createdCampaign = await campaignsApi.create(campaignWrite);
74+
75+
expect(createdCampaign.id).toBeDefined();
76+
} catch (err: any) {
77+
console.error(err.message);
78+
}
79+
80+
uploadWrite = new UploadWritable({
81+
campaignId: createdCampaign.id,
82+
columnMapping: {
83+
name: "recipient",
84+
address_line1: "primary_line",
85+
address_line2: "secondary_line",
86+
address_city: "city",
87+
address_state: "state",
88+
addess_zip: "zip_code",
89+
metadata: "metadata",
90+
},
91+
});
92+
});
93+
94+
const exportModel = new ExportModel({
95+
type: ExportModelTypeEnum.All,
96+
});
97+
98+
it("creates, updates, retrieves, and deletes an upload", async () => {
99+
const uploadsApi = new UploadsApi(CONFIG_FOR_INTEGRATION);
100+
101+
//create upload
102+
103+
const file = createReadStream("lobster-family.csv");
104+
const data = new FormData();
105+
data.append("file", file);
106+
107+
const createdUpload = await uploadsApi.create_upload(uploadWrite, {
108+
data,
109+
});
110+
expect(createdUpload.id).toBeDefined();
111+
112+
//create export
113+
const createdExport = await uploadsApi.create_export(
114+
createdUpload.id,
115+
exportModel
116+
);
117+
expect(createdExport).toBeDefined();
118+
119+
// //get upload
120+
const fetchedUpload = await uploadsApi.get_upload(createdUpload.id);
121+
expect(fetchedUpload).toBeDefined();
122+
expect(fetchedUpload.id).toEqual(createdUpload.id);
123+
124+
//get export
125+
const fetchedExport = await uploadsApi.get_export(
126+
createdUpload.id,
127+
createdExport.exportId
128+
);
129+
expect(fetchedExport).toBeDefined();
130+
expect(fetchedExport.id).toEqual(createdExport.exportId);
131+
expect(fetchedExport.uploadId).toEqual(createdUpload.id);
132+
133+
// //list uploads
134+
const listOfUploads = await uploadsApi.list_upload(createdCampaign.id);
135+
expect(listOfUploads).toBeDefined();
136+
expect(listOfUploads.length).toBeGreaterThan(0);
137+
});
138+
});
139+
});

__tests__/lobster-family.csv

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
recipient,primary line,city,state,zip_code
2+
Larry Lobster,210 King St,San Francisco,CA,94107
3+
Lloyd Lobster,210 King St,San Francisco,CA,94107
4+
Lisa Lobster,210 King St,San Francisco,CA,94107
5+
Linda Lobster,210 King St,San Francisco,CA,94107
6+
Leith Lobster,210 King St,San Francisco,CA,94107
7+
Lala Lobster,Not A Real Street,San Francisco,CA,94107
8+
Krusty Krab,212 King St,San Francisco,CA,94107
9+
Patrick Star,211 King St,San Francisco,CA,94107
10+
Christopher Crawdad,209 King St,San Francisco,CA,94107
11+
Lost Lobster,210 King St,,CA,
12+

0 commit comments

Comments
 (0)