@kombo-api/sdk 0.2.0 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/funcs/generalSendPassthroughRequest.d.ts +3 -0
- package/esm/funcs/generalSendPassthroughRequest.d.ts.map +1 -1
- package/esm/funcs/generalSendPassthroughRequest.js +3 -0
- package/esm/funcs/generalSendPassthroughRequest.js.map +1 -1
- package/esm/lib/config.d.ts +3 -3
- package/esm/lib/config.js +3 -3
- package/esm/models/deletehrisabsencesabsenceidpositiveresponse.d.ts.map +1 -1
- package/esm/models/deletehrisabsencesabsenceidpositiveresponse.js +2 -6
- package/esm/models/deletehrisabsencesabsenceidpositiveresponse.js.map +1 -1
- package/esm/models/getatsjobspositiveresponse.d.ts.map +1 -1
- package/esm/models/getatsjobspositiveresponse.js +6 -26
- package/esm/models/getatsjobspositiveresponse.js.map +1 -1
- package/esm/models/gethrisabsencespositiveresponse.d.ts.map +1 -1
- package/esm/models/gethrisabsencespositiveresponse.js +2 -6
- package/esm/models/gethrisabsencespositiveresponse.js.map +1 -1
- package/esm/models/gethrisemployeespositiveresponse.d.ts +4 -0
- package/esm/models/gethrisemployeespositiveresponse.d.ts.map +1 -1
- package/esm/models/gethrisemployeespositiveresponse.js +11 -46
- package/esm/models/gethrisemployeespositiveresponse.js.map +1 -1
- package/esm/models/gethrisemploymentspositiveresponse.d.ts.map +1 -1
- package/esm/models/gethrisemploymentspositiveresponse.js +4 -16
- package/esm/models/gethrisemploymentspositiveresponse.js.map +1 -1
- package/esm/models/postconnectcreatelinkrequestbody.d.ts +2 -0
- package/esm/models/postconnectcreatelinkrequestbody.d.ts.map +1 -1
- package/esm/models/postconnectcreatelinkrequestbody.js +2 -0
- package/esm/models/postconnectcreatelinkrequestbody.js.map +1 -1
- package/esm/models/posthrisabsencespositiveresponse.d.ts.map +1 -1
- package/esm/models/posthrisabsencespositiveresponse.js +2 -6
- package/esm/models/posthrisabsencespositiveresponse.js.map +1 -1
- package/esm/models/posthrisemployeesformpositiveresponse.d.ts +8 -0
- package/esm/models/posthrisemployeesformpositiveresponse.d.ts.map +1 -1
- package/esm/models/posthrisemployeesformpositiveresponse.js +2 -0
- package/esm/models/posthrisemployeesformpositiveresponse.js.map +1 -1
- package/esm/sdk/general.d.ts +3 -0
- package/esm/sdk/general.d.ts.map +1 -1
- package/esm/sdk/general.js +3 -0
- package/esm/sdk/general.js.map +1 -1
- package/esm/types/enums.d.ts +10 -6
- package/esm/types/enums.d.ts.map +1 -1
- package/esm/types/enums.js +38 -1
- package/esm/types/enums.js.map +1 -1
- package/esm/types/index.d.ts +0 -1
- package/esm/types/index.d.ts.map +1 -1
- package/esm/types/index.js +0 -1
- package/esm/types/index.js.map +1 -1
- package/examples/package-lock.json +4 -2
- package/jsr.json +1 -1
- package/package.json +6 -3
- package/src/funcs/generalSendPassthroughRequest.ts +3 -0
- package/src/lib/config.ts +3 -3
- package/src/models/deletehrisabsencesabsenceidpositiveresponse.ts +5 -6
- package/src/models/getatsjobspositiveresponse.ts +7 -26
- package/src/models/gethrisabsencespositiveresponse.ts +3 -6
- package/src/models/gethrisemployeespositiveresponse.ts +16 -46
- package/src/models/gethrisemploymentspositiveresponse.ts +5 -16
- package/src/models/postconnectcreatelinkrequestbody.ts +2 -0
- package/src/models/posthrisabsencespositiveresponse.ts +3 -6
- package/src/models/posthrisemployeesformpositiveresponse.ts +10 -0
- package/src/sdk/general.ts +3 -0
- package/src/types/enums.ts +55 -6
- package/src/types/index.ts +0 -1
- package/tests/basic-behavior.spec.ts +162 -0
- package/tests/error-handling.spec.ts +604 -0
- package/tests/helpers/test-context.ts +147 -0
- package/tests/job-board.spec.ts +32 -0
- package/vitest.config.ts +8 -0
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import { it, expect } from "vitest";
|
|
2
|
+
import { TestContext, describeSdkSuite } from "./helpers/test-context";
|
|
3
|
+
|
|
4
|
+
// TODO: test basic error handling behavior
|
|
5
|
+
describeSdkSuite("Basic SDK Behavior", () => {
|
|
6
|
+
it("should include API key in Authorization header", async () => {
|
|
7
|
+
const ctx = new TestContext({ apiKey: "my-custom-api-key" });
|
|
8
|
+
|
|
9
|
+
ctx.mockEndpoint({
|
|
10
|
+
method: "GET",
|
|
11
|
+
path: "/v1/ats/jobs",
|
|
12
|
+
response: {
|
|
13
|
+
body: {
|
|
14
|
+
status: "success",
|
|
15
|
+
data: { results: [], next: null },
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
const jobs = await ctx.kombo.ats.getJobs({});
|
|
21
|
+
for await (const _page of jobs) {
|
|
22
|
+
break;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
const request = ctx.getLastRequest();
|
|
26
|
+
expect(request?.headers.authorization).toBe("Bearer my-custom-api-key");
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
it("should include integration ID in X-Integration-Id header when specified", async () => {
|
|
30
|
+
const ctx = new TestContext({
|
|
31
|
+
apiKey: "test-key",
|
|
32
|
+
integrationId: "my-integration-123",
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
ctx.mockEndpoint({
|
|
36
|
+
method: "GET",
|
|
37
|
+
path: "/v1/ats/jobs",
|
|
38
|
+
response: {
|
|
39
|
+
body: {
|
|
40
|
+
status: "success",
|
|
41
|
+
data: { results: [], next: null },
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
const jobs = await ctx.kombo.ats.getJobs({});
|
|
47
|
+
for await (const _page of jobs) {
|
|
48
|
+
break;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
const request = ctx.getLastRequest();
|
|
52
|
+
expect(request?.headers["x-integration-id"]).toBe("my-integration-123");
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
it("should not include X-Integration-Id header when not provided", async () => {
|
|
56
|
+
const ctx = new TestContext({
|
|
57
|
+
apiKey: "test-key",
|
|
58
|
+
integrationId: undefined,
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
ctx.mockEndpoint({
|
|
62
|
+
method: "GET",
|
|
63
|
+
path: "/v1/ats/jobs",
|
|
64
|
+
response: {
|
|
65
|
+
body: {
|
|
66
|
+
status: "success",
|
|
67
|
+
data: { results: [], next: null },
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
// TODO: shouldn't this throw an error?
|
|
73
|
+
const jobs = await ctx.kombo.ats.getJobs({});
|
|
74
|
+
for await (const _page of jobs) {
|
|
75
|
+
break;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
const request = ctx.getLastRequest();
|
|
79
|
+
// When integration ID is undefined, the header is not set
|
|
80
|
+
expect(request?.headers["x-integration-id"]).toBeUndefined();
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
it("should correctly encode comma-separated query parameters", async () => {
|
|
84
|
+
const ctx = new TestContext();
|
|
85
|
+
|
|
86
|
+
ctx.mockEndpoint({
|
|
87
|
+
method: "GET",
|
|
88
|
+
path: "/v1/ats/jobs",
|
|
89
|
+
response: {
|
|
90
|
+
body: {
|
|
91
|
+
status: "success",
|
|
92
|
+
data: {
|
|
93
|
+
results: [],
|
|
94
|
+
next: null,
|
|
95
|
+
},
|
|
96
|
+
},
|
|
97
|
+
},
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
// Make the API call
|
|
101
|
+
const _jobs = await ctx.kombo.ats.getJobs({
|
|
102
|
+
statuses: ["OPEN", "CLOSED"],
|
|
103
|
+
ids: ["CPDifhHr7izJhKHmGPkXqknC", "J7znt8TJRiwPVA7paC2iCh8u"],
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
// Verify and snapshot the request details
|
|
107
|
+
const request = ctx.getLastRequest();
|
|
108
|
+
expect(request.path).toMatchInlineSnapshot(
|
|
109
|
+
`"/v1/ats/jobs?ids=CPDifhHr7izJhKHmGPkXqknC%2CJ7znt8TJRiwPVA7paC2iCh8u&statuses=OPEN%2CCLOSED&include_deleted=false&page_size=100"`
|
|
110
|
+
);
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
it("should correctly encode boolean query parameters", async () => {
|
|
114
|
+
const ctx = new TestContext();
|
|
115
|
+
|
|
116
|
+
ctx.mockEndpoint({
|
|
117
|
+
method: "GET",
|
|
118
|
+
path: "/v1/ats/jobs",
|
|
119
|
+
response: {
|
|
120
|
+
body: {
|
|
121
|
+
status: "success",
|
|
122
|
+
data: { results: [], next: null },
|
|
123
|
+
},
|
|
124
|
+
},
|
|
125
|
+
});
|
|
126
|
+
|
|
127
|
+
// Test with boolean true
|
|
128
|
+
const jobsWithDeleted = await ctx.kombo.ats.getJobs({
|
|
129
|
+
include_deleted: true,
|
|
130
|
+
});
|
|
131
|
+
for await (const _page of jobsWithDeleted) {
|
|
132
|
+
break;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
const requestWithDeleted = ctx.getLastRequest();
|
|
136
|
+
expect(requestWithDeleted.path).toContain("include_deleted=true");
|
|
137
|
+
|
|
138
|
+
ctx.clear();
|
|
139
|
+
|
|
140
|
+
ctx.mockEndpoint({
|
|
141
|
+
method: "GET",
|
|
142
|
+
path: "/v1/ats/jobs",
|
|
143
|
+
response: {
|
|
144
|
+
body: {
|
|
145
|
+
status: "success",
|
|
146
|
+
data: { results: [], next: null },
|
|
147
|
+
},
|
|
148
|
+
},
|
|
149
|
+
});
|
|
150
|
+
|
|
151
|
+
// Test with boolean false
|
|
152
|
+
const jobsWithoutDeleted = await ctx.kombo.ats.getJobs({
|
|
153
|
+
include_deleted: false,
|
|
154
|
+
});
|
|
155
|
+
for await (const _page of jobsWithoutDeleted) {
|
|
156
|
+
break;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
const requestWithoutDeleted = ctx.getLastRequest();
|
|
160
|
+
expect(requestWithoutDeleted.path).toContain("include_deleted=false");
|
|
161
|
+
});
|
|
162
|
+
});
|