Skip to content

Commit 87d8be8

Browse files
authored
Add new methods to When and Then (#27)
Signed-off-by: declark1 <[email protected]>
1 parent c118f35 commit 87d8be8

File tree

3 files changed

+89
-3
lines changed

3 files changed

+89
-3
lines changed

book/src/concepts/mock-builder/then.md

+9-1
Original file line numberDiff line numberDiff line change
@@ -23,5 +23,13 @@
2323
- `error()`
2424
- `ok()`
2525
- `bad_request()`
26-
- `internal_server_error()`
26+
- `unauthorized()`
27+
- `forbidden()`
2728
- `not_found()`
29+
- `unsupported_media_type()`
30+
- `unprocessable_content()`
31+
- `internal_server_error()`
32+
- `not_implemented()`
33+
- `bad_gateway()`
34+
- `service_unavailable()`
35+
- `gateway_timeout()`

mocktail/src/mock_builder/then.rs

+74-2
Original file line numberDiff line numberDiff line change
@@ -163,31 +163,103 @@ impl Then {
163163
self
164164
}
165165

166+
/// 200 Ok
166167
pub fn ok(self) -> Self {
167168
self.update(|r| {
168169
r.status = StatusCode::OK;
169170
});
170171
self
171172
}
172173

174+
// Common client errors
175+
176+
/// 400 Bad Request
177+
pub fn bad_request(self) -> Self {
178+
self.update(|r| {
179+
r.status = StatusCode::BAD_REQUEST;
180+
});
181+
self
182+
}
183+
184+
/// 401 Unauthorized
185+
pub fn unauthorized(self) -> Self {
186+
self.update(|r| {
187+
r.status = StatusCode::UNAUTHORIZED;
188+
});
189+
self
190+
}
191+
192+
/// 403 Forbidden
193+
pub fn forbidden(self) -> Self {
194+
self.update(|r| {
195+
r.status = StatusCode::FORBIDDEN;
196+
});
197+
self
198+
}
199+
200+
/// 404 Not Found
173201
pub fn not_found(self) -> Self {
174202
self.update(|r| {
175203
r.status = StatusCode::NOT_FOUND;
176204
});
177205
self
178206
}
179207

180-
pub fn bad_request(self) -> Self {
208+
/// 415 Unsupported Media Type
209+
pub fn unsupported_media_type(self) -> Self {
181210
self.update(|r| {
182-
r.status = StatusCode::BAD_REQUEST;
211+
r.status = StatusCode::UNSUPPORTED_MEDIA_TYPE;
212+
});
213+
self
214+
}
215+
216+
/// 422 Unprocessable Content
217+
pub fn unprocessable_content(self) -> Self {
218+
self.update(|r| {
219+
r.status = StatusCode::UNPROCESSABLE_ENTITY;
183220
});
184221
self
185222
}
186223

224+
// Common server errors
225+
226+
/// 500 Internal Server Error
187227
pub fn internal_server_error(self) -> Self {
188228
self.update(|r| {
189229
r.status = StatusCode::INTERNAL_SERVER_ERROR;
190230
});
191231
self
192232
}
233+
234+
/// 501 Not Implemented
235+
pub fn not_implemented(self) -> Self {
236+
self.update(|r| {
237+
r.status = StatusCode::NOT_IMPLEMENTED;
238+
});
239+
self
240+
}
241+
242+
/// 502 Bad Gateway
243+
pub fn bad_gateway(self) -> Self {
244+
self.update(|r| {
245+
r.status = StatusCode::BAD_GATEWAY;
246+
});
247+
self
248+
}
249+
250+
/// 503 Service Unavailable
251+
pub fn service_unavailable(self) -> Self {
252+
self.update(|r| {
253+
r.status = StatusCode::SERVICE_UNAVAILABLE;
254+
});
255+
self
256+
}
257+
258+
/// 504 Gateway Timeout
259+
pub fn gateway_timeout(self) -> Self {
260+
self.update(|r| {
261+
r.status = StatusCode::GATEWAY_TIMEOUT;
262+
});
263+
self
264+
}
193265
}

mocktail/src/mock_builder/when.rs

+6
Original file line numberDiff line numberDiff line change
@@ -213,4 +213,10 @@ impl When {
213213
self.push(matchers::method(Method::DELETE));
214214
self
215215
}
216+
217+
/// HTTP HEAD method.
218+
pub fn head(self) -> Self {
219+
self.push(matchers::method(Method::HEAD));
220+
self
221+
}
216222
}

0 commit comments

Comments
 (0)