Skip to content

Commit 47afcdb

Browse files
authored
feat: schedule.deleteEvent (#35)
1 parent e5c6c1b commit 47afcdb

5 files changed

+51
-5
lines changed

docs/schedule.md

+20
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
- [getEvents](#getevents)
55
- [addEvent](#addevent)
66
- [updateEvent](#updateevent)
7+
- [deleteEvent](#deleteevent)
78

89
## Overview
910

@@ -135,6 +136,7 @@ Update an event by specifying the event ID. A tentative event cannot be updated
135136

136137
| Name | Type | Required | Description |
137138
| -------------------------- | :--------------: | :-------------------------: | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
139+
| id | Number or String | Yes | The event ID. |
138140
| eventMenu | String | | The event menu. An empty string is taken as the default setting ("-----"). |
139141
| subject | String | | The event subject. |
140142
| notes | String | | The event memo. |
@@ -178,3 +180,21 @@ See the example response in the `Reference`.
178180
#### Reference
179181

180182
- https://developer.cybozu.io/hc/ja/articles/360000495746#step1
183+
184+
### deleteEvent
185+
186+
Delete an event by specifying the event ID. If an ID of a repeating event is specified, all ranges of the event will be deleted. A tentative event cannot be deleted by this API.
187+
188+
#### Parameters
189+
190+
| Name | Type | Required | Description |
191+
| ---- | :--------------: | :------: | ------------- |
192+
| id | Number or String | Yes | The event ID. |
193+
194+
#### Returns
195+
196+
See the example response in the `Reference`.
197+
198+
#### Reference
199+
200+
- https://developer.cybozu.io/hc/ja/articles/360000393866

src/GaroonRequestConfigBuilder.ts

+2-4
Original file line numberDiff line numberDiff line change
@@ -121,13 +121,11 @@ export class GaroonRequestConfigBuilder implements RequestConfigBuilder {
121121
};
122122
}
123123
case "delete": {
124-
const requestUrl = this.buildRequestUrl(
125-
path,
126-
await this.buildData(params)
127-
);
124+
const requestUrl = this.buildRequestUrl(path, params);
128125
return {
129126
...requestConfig,
130127
url: requestUrl,
128+
data: await this.buildData({}),
131129
};
132130
}
133131
default: {

src/__tests__/GaroonRequestConfigBuilder.test.ts

+5-1
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ describe("GaroonRequestConfigBuilder", () => {
9898
"User-Agent": expectedUa,
9999
"X-Cybozu-Authorization": expectedAuth,
100100
},
101+
data: {},
101102
});
102103
});
103104
});
@@ -185,10 +186,13 @@ describe("GaroonRequestConfigBuilder", () => {
185186
expect(requestConfig).toStrictEqual({
186187
method: "delete",
187188
proxy: undefined,
188-
url: `${baseUrl}/api/v1/schedule/events/1?__REQUEST_TOKEN__=${requestToken}&key=value`,
189+
url: `${baseUrl}/api/v1/schedule/events/1?key=value`,
189190
headers: {
190191
"X-Requested-With": "XMLHttpRequest",
191192
},
193+
data: {
194+
__REQUEST_TOKEN__: requestToken,
195+
},
192196
});
193197
});
194198
});

src/client/ScheduleClient.ts

+6
Original file line numberDiff line numberDiff line change
@@ -160,4 +160,10 @@ export class ScheduleClient {
160160
const path = buildPath({ endpointName: `schedule/events/${id}` });
161161
return this.client.patch(path, event);
162162
}
163+
164+
public async deleteEvent(params: { id: EventID }): Promise<void> {
165+
const { id } = params;
166+
const path = buildPath({ endpointName: `schedule/events/${id}` });
167+
await this.client.delete(path, {});
168+
}
163169
}

src/client/__tests__/ScheduleClient.test.ts

+18
Original file line numberDiff line numberDiff line change
@@ -228,4 +228,22 @@ describe("ScheduleClient", () => {
228228
expect(mockClient.getLogs()[0].params).toEqual(params.event);
229229
});
230230
});
231+
232+
describe("deleteEvent", () => {
233+
const params = {
234+
id: "1",
235+
};
236+
beforeEach(async () => {
237+
await scheduleClient.deleteEvent(params);
238+
});
239+
it("should pass the path to the http client", () => {
240+
expect(mockClient.getLogs()[0].path).toBe("/api/v1/schedule/events/1");
241+
});
242+
it("should send a delete request", () => {
243+
expect(mockClient.getLogs()[0].method).toBe("delete");
244+
});
245+
it("should pass an empty object as a param to the http client", () => {
246+
expect(mockClient.getLogs()[0].params).toEqual({});
247+
});
248+
});
231249
});

0 commit comments

Comments
 (0)