Skip to content

Commit 23501b7

Browse files
committed
Add some simple (non-horizontal-filter) unit tests
1 parent 0fca605 commit 23501b7

File tree

1 file changed

+129
-0
lines changed

1 file changed

+129
-0
lines changed

src/builder.rs

Lines changed: 129 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,5 +175,134 @@ impl Builder {
175175
}
176176
}
177177

178+
#[cfg(test)]
179+
mod tests {
180+
use super::*;
181+
use crate::Postgrest;
182+
183+
const REST_URL: &str = "http://localhost:3000";
184+
185+
#[test]
186+
fn only_accept_json() {
187+
let client = Postgrest::new(REST_URL);
188+
let builder = client.from("users");
189+
assert_eq!(
190+
builder.headers.get("Accept").unwrap(),
191+
HeaderValue::from_static("application/json")
192+
);
193+
}
194+
195+
#[test]
196+
fn auth_with_token() {
197+
let client = Postgrest::new(REST_URL);
198+
let builder = client.from("users").auth("$Up3rS3crET");
199+
assert_eq!(
200+
builder.headers.get("Authentication").unwrap(),
201+
HeaderValue::from_static("Bearer $Up3rS3crET")
202+
);
203+
}
204+
205+
#[test]
206+
fn select_assert_query() {
207+
let client = Postgrest::new(REST_URL);
208+
let builder = client.from("users").select("some_table");
209+
assert_eq!(builder.method, Method::GET);
210+
assert_eq!(
211+
builder
212+
.queries
213+
.contains(&("select".to_string(), "some_table".to_string())),
214+
true
215+
);
216+
}
217+
218+
#[test]
219+
fn order_assert_query() {
220+
let client = Postgrest::new(REST_URL);
221+
let builder = client.from("users").order("id");
222+
assert_eq!(
223+
builder
224+
.queries
225+
.contains(&("order".to_string(), "id".to_string())),
226+
true
227+
);
228+
}
229+
230+
#[test]
231+
fn limit_assert_range_header() {
232+
let client = Postgrest::new(REST_URL);
233+
let builder = client.from("users").limit(20);
234+
assert_eq!(
235+
builder.headers.get("Range").unwrap(),
236+
HeaderValue::from_static("0-19")
237+
);
238+
}
239+
240+
#[test]
241+
fn range_assert_range_header() {
242+
let client = Postgrest::new(REST_URL);
243+
let builder = client.from("users").range(10, 20);
244+
assert_eq!(
245+
builder.headers.get("Range").unwrap(),
246+
HeaderValue::from_static("10-20")
247+
);
248+
}
249+
250+
#[test]
251+
fn single_assert_accept_header() {
252+
let client = Postgrest::new(REST_URL);
253+
let builder = client.from("users").single();
254+
assert_eq!(
255+
builder.headers.get("Accept").unwrap(),
256+
HeaderValue::from_static("application/vnd.pgrst.object+json")
257+
);
258+
}
259+
260+
#[test]
261+
fn insert_csv_assert_content_type() {
262+
let client = Postgrest::new(REST_URL);
263+
let builder = client.from("users").insert_csv("ignored");
264+
assert_eq!(
265+
builder.headers.get("Content-Type").unwrap(),
266+
HeaderValue::from_static("text/csv")
267+
);
268+
}
269+
270+
#[test]
271+
fn upsert_assert_prefer_header() {
272+
let client = Postgrest::new(REST_URL);
273+
let builder = client.from("users").upsert("ignored");
274+
assert_eq!(
275+
builder.headers.get("Prefer").unwrap(),
276+
HeaderValue::from_static("return=representation; resolution=merge-duplicates")
277+
);
278+
}
279+
280+
#[test]
281+
fn single_upsert_assert_prefer_header() {
282+
let client = Postgrest::new(REST_URL);
283+
let builder = client
284+
.from("users")
285+
.single_upsert("ignored", "ignored", "ignored");
286+
assert_eq!(
287+
builder.headers.get("Prefer").unwrap(),
288+
HeaderValue::from_static("return=representation")
289+
);
290+
}
291+
292+
// filters...
293+
294+
#[test]
295+
fn not_rpc_should_not_have_flag() {
296+
let client = Postgrest::new(REST_URL);
297+
let builder = client.from("users").select("column");
298+
assert_eq!(builder.is_rpc, false);
299+
}
300+
301+
#[test]
302+
fn rpc_should_have_body_and_flag() {
303+
let client = Postgrest::new(REST_URL);
304+
let builder = client.from("users").rpc("{\"a\": 1, \"b\": 2}");
305+
assert_eq!(builder.body.unwrap(), "{\"a\": 1, \"b\": 2}");
306+
assert_eq!(builder.is_rpc, true);
178307
}
179308
}

0 commit comments

Comments
 (0)