Skip to content

Commit b17f132

Browse files
committed
Test for Postgres date-time types
Signed-off-by: itowlson <[email protected]>
1 parent d8e9b6f commit b17f132

File tree

1 file changed

+41
-6
lines changed
  • tests/test-components/components/outbound-postgres/src

1 file changed

+41
-6
lines changed

tests/test-components/components/outbound-postgres/src/lib.rs

Lines changed: 41 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use helper::{ensure, ensure_eq, ensure_matches, ensure_ok};
22

3-
use bindings::fermyon::spin2_0_0::{postgres, rdbms_types};
3+
use bindings::spin::postgres::postgres;
44

55
helper::define_component!(Component);
66
const DB_URL_ENV: &str = "DB_URL";
@@ -21,15 +21,19 @@ impl Component {
2121

2222
let rowset = ensure_ok!(numeric_types(&conn));
2323
ensure!(rowset.rows.iter().all(|r| r.len() == 12));
24-
ensure_matches!(rowset.rows[0][11], rdbms_types::DbValue::Floating64(f) if f == 1.0);
24+
ensure_matches!(rowset.rows[0][11], postgres::DbValue::Floating64(f) if f == 1.0);
2525

2626
let rowset = ensure_ok!(character_types(&conn));
2727
ensure!(rowset.rows.iter().all(|r| r.len() == 3));
28-
ensure!(matches!(rowset.rows[0][0], rdbms_types::DbValue::Str(ref s) if s == "rvarchar"));
28+
ensure!(matches!(rowset.rows[0][0], postgres::DbValue::Str(ref s) if s == "rvarchar"));
29+
30+
let rowset = ensure_ok!(date_time_types(&conn));
31+
ensure!(rowset.rows.iter().all(|r| r.len() == 3));
32+
ensure_matches!(rowset.rows[0][0], postgres::DbValue::Date((y, m, d)) if y == 2525 && m == 12 && d == 25);
2933

3034
let rowset = ensure_ok!(nullable(&conn));
3135
ensure!(rowset.rows.iter().all(|r| r.len() == 1));
32-
ensure!(matches!(rowset.rows[0][0], rdbms_types::DbValue::DbNull));
36+
ensure!(matches!(rowset.rows[0][0], postgres::DbValue::DbNull));
3337

3438
let pid1 = format!("{:?}", ensure_ok!(pg_backend_pid(&conn)));
3539
let pid2 = format!("{:?}", ensure_ok!(pg_backend_pid(&conn)));
@@ -117,6 +121,37 @@ fn character_types(conn: &postgres::Connection) -> Result<postgres::RowSet, post
117121
conn.query(sql, &[])
118122
}
119123

124+
fn date_time_types(conn: &postgres::Connection) -> Result<postgres::RowSet, postgres::Error> {
125+
let create_table_sql = r#"
126+
CREATE TEMPORARY TABLE test_date_time_types (
127+
rdate date NOT NULL,
128+
rtime time NOT NULL,
129+
rtimestamp timestamp NOT NULL
130+
);
131+
"#;
132+
133+
conn.execute(create_table_sql, &[])?;
134+
135+
let insert_sql = r#"
136+
INSERT INTO test_date_time_types
137+
(rdate, rtime, rtimestamp)
138+
VALUES
139+
(date '2525-12-25', time '04:05:06.789', timestamp '1989-11-24 01:02:03');
140+
"#;
141+
142+
conn.execute(insert_sql, &[])?;
143+
144+
let sql = r#"
145+
SELECT
146+
rdate,
147+
rtime,
148+
rtimestamp
149+
FROM test_date_time_types;
150+
"#;
151+
152+
conn.query(sql, &[])
153+
}
154+
120155
fn nullable(conn: &postgres::Connection) -> Result<postgres::RowSet, postgres::Error> {
121156
let create_table_sql = r#"
122157
CREATE TEMPORARY TABLE test_nullable (
@@ -133,7 +168,7 @@ fn nullable(conn: &postgres::Connection) -> Result<postgres::RowSet, postgres::E
133168
($1);
134169
"#;
135170

136-
conn.execute(insert_sql, &[rdbms_types::ParameterValue::DbNull])?;
171+
conn.execute(insert_sql, &[postgres::ParameterValue::DbNull])?;
137172

138173
let sql = r#"
139174
SELECT
@@ -144,7 +179,7 @@ fn nullable(conn: &postgres::Connection) -> Result<postgres::RowSet, postgres::E
144179
conn.query(sql, &[])
145180
}
146181

147-
fn pg_backend_pid(conn: &postgres::Connection) -> Result<rdbms_types::DbValue, postgres::Error> {
182+
fn pg_backend_pid(conn: &postgres::Connection) -> Result<postgres::DbValue, postgres::Error> {
148183
let sql = "SELECT pg_backend_pid()";
149184

150185
let rowset = conn.query(sql, &[])?;

0 commit comments

Comments
 (0)