Skip to content

Commit c65ba73

Browse files
committed
Fix tests
1 parent d602574 commit c65ba73

5 files changed

Lines changed: 26 additions & 34 deletions

File tree

diesel/src/pg/types/json.rs

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -66,20 +66,18 @@ fn json_to_sql() {
6666

6767
#[test]
6868
fn some_json_from_sql() {
69-
use pg::StaticSqlType;
7069
let input_json = b"true";
7170
let output_json: serde_json::Value = FromSql::<sql_types::Json, Pg>::from_sql(Some(
72-
PgValue::new(input_json, sql_types::Json::OID),
71+
PgValue::for_test(input_json),
7372
))
7473
.unwrap();
7574
assert_eq!(output_json, serde_json::Value::Bool(true));
7675
}
7776

7877
#[test]
7978
fn bad_json_from_sql() {
80-
use pg::StaticSqlType;
8179
let uuid: Result<serde_json::Value, _> =
82-
FromSql::<sql_types::Json, Pg>::from_sql(Some(PgValue::new(b"boom", sql_types::Json::OID)));
80+
FromSql::<sql_types::Json, Pg>::from_sql(Some(PgValue::for_test(b"boom")));
8381
assert_eq!(uuid.unwrap_err().description(), "JSON error");
8482
}
8583

@@ -102,29 +100,26 @@ fn jsonb_to_sql() {
102100

103101
#[test]
104102
fn some_jsonb_from_sql() {
105-
use pg::StaticSqlType;
106103
let input_json = b"\x01true";
107104
let output_json: serde_json::Value = FromSql::<sql_types::Jsonb, Pg>::from_sql(Some(
108-
PgValue::new(input_json, sql_types::Jsonb::OID),
105+
PgValue::for_test(input_json),
109106
))
110107
.unwrap();
111108
assert_eq!(output_json, serde_json::Value::Bool(true));
112109
}
113110

114111
#[test]
115112
fn bad_jsonb_from_sql() {
116-
use pg::StaticSqlType;
117113
let uuid: Result<serde_json::Value, _> = FromSql::<sql_types::Jsonb, Pg>::from_sql(Some(
118-
PgValue::new(b"\x01boom", sql_types::Jsonb::OID),
114+
PgValue::for_test(b"\x01boom"),
119115
));
120116
assert_eq!(uuid.unwrap_err().description(), "JSON error");
121117
}
122118

123119
#[test]
124120
fn bad_jsonb_version_from_sql() {
125-
use pg::StaticSqlType;
126121
let uuid: Result<serde_json::Value, _> = FromSql::<sql_types::Jsonb, Pg>::from_sql(Some(
127-
PgValue::new(b"\x02true", sql_types::Jsonb::OID),
122+
PgValue::for_test(b"\x02true"),
128123
));
129124
assert_eq!(
130125
uuid.unwrap_err().description(),

diesel/src/pg/types/network_address.rs

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -159,13 +159,12 @@ impl_Sql!(Cidr, 1);
159159

160160
#[test]
161161
fn macaddr_roundtrip() {
162-
use pg::StaticSqlType;
163162

164163
let mut bytes = Output::test();
165164
let input_address = [0x52, 0x54, 0x00, 0xfb, 0xc6, 0x16];
166165
ToSql::<MacAddr, Pg>::to_sql(&input_address, &mut bytes).unwrap();
167166
let output_address: [u8; 6] =
168-
FromSql::from_sql(Some(PgValue::new(bytes.as_ref(), MacAddr::OID))).unwrap();
167+
FromSql::from_sql(Some(PgValue::for_test(bytes.as_ref()))).unwrap();
169168
assert_eq!(input_address, output_address);
170169
}
171170

@@ -187,16 +186,14 @@ fn v4address_to_sql() {
187186

188187
#[test]
189188
fn some_v4address_from_sql() {
190-
use pg::StaticSqlType;
191-
192189
macro_rules! test_some_address_from_sql {
193190
($ty:tt) => {
194191
let input_address =
195192
IpNetwork::V4(Ipv4Network::new(Ipv4Addr::new(127, 0, 0, 1), 32).unwrap());
196193
let mut bytes = Output::test();
197194
ToSql::<$ty, Pg>::to_sql(&input_address, &mut bytes).unwrap();
198195
let output_address =
199-
FromSql::<$ty, Pg>::from_sql(Some(PgValue::new(bytes.as_ref(), $ty::OID))).unwrap();
196+
FromSql::<$ty, Pg>::from_sql(Some(PgValue::for_test(bytes.as_ref()))).unwrap();
200197
assert_eq!(input_address, output_address);
201198
};
202199
}
@@ -247,16 +244,14 @@ fn v6address_to_sql() {
247244

248245
#[test]
249246
fn some_v6address_from_sql() {
250-
use pg::StaticSqlType;
251-
252247
macro_rules! test_some_address_from_sql {
253248
($ty:tt) => {
254249
let input_address =
255250
IpNetwork::V6(Ipv6Network::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1), 64).unwrap());
256251
let mut bytes = Output::test();
257252
ToSql::<$ty, Pg>::to_sql(&input_address, &mut bytes).unwrap();
258253
let output_address =
259-
FromSql::<$ty, Pg>::from_sql(Some(PgValue::new(bytes.as_ref(), $ty::OID))).unwrap();
254+
FromSql::<$ty, Pg>::from_sql(Some(PgValue::for_test(bytes.as_ref()))).unwrap();
260255
assert_eq!(input_address, output_address);
261256
};
262257
}
@@ -267,11 +262,10 @@ fn some_v6address_from_sql() {
267262

268263
#[test]
269264
fn bad_address_from_sql() {
270-
use pg::StaticSqlType;
271265
macro_rules! bad_address_from_sql {
272266
($ty:tt) => {
273267
let address: Result<IpNetwork, _> =
274-
FromSql::<$ty, Pg>::from_sql(Some(PgValue::new(&[7, PGSQL_AF_INET, 0], $ty::OID)));
268+
FromSql::<$ty, Pg>::from_sql(Some(PgValue::for_test(&[7, PGSQL_AF_INET, 0])));
275269
assert_eq!(
276270
address.unwrap_err().description(),
277271
"invalid network address format. input is too short."

diesel/src/pg/types/uuid.rs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,18 +38,15 @@ fn uuid_to_sql() {
3838

3939
#[test]
4040
fn some_uuid_from_sql() {
41-
use pg::StaticSqlType;
4241
let input_uuid = uuid::Uuid::from_fields(0xFFFF_FFFF, 0xFFFF, 0xFFFF, b"abcdef12").unwrap();
4342
let output_uuid =
44-
FromSql::<Uuid, Pg>::from_sql(Some(PgValue::new(input_uuid.as_bytes(), Uuid::OID)))
45-
.unwrap();
43+
FromSql::<Uuid, Pg>::from_sql(Some(PgValue::for_test(input_uuid.as_bytes()))).unwrap();
4644
assert_eq!(input_uuid, output_uuid);
4745
}
4846

4947
#[test]
5048
fn bad_uuid_from_sql() {
51-
use pg::StaticSqlType;
52-
let uuid = uuid::Uuid::from_sql(Some(PgValue::new(b"boom", Uuid::OID)));
49+
let uuid = uuid::Uuid::from_sql(Some(PgValue::for_test(b"boom")));
5350
assert_eq!(uuid.unwrap_err().description(), "UUID parse error");
5451
}
5552

diesel/src/pg/types/uuid_v0_7.rs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,19 +38,16 @@ fn uuid_to_sql() {
3838

3939
#[test]
4040
fn some_uuid_from_sql() {
41-
use pg::StaticSqlType;
4241
let input_uuid = uuid::Uuid::from_fields(0xFFFF_FFFF, 0xFFFF, 0xFFFF, b"abcdef12").unwrap();
4342
let output_uuid =
44-
FromSql::<Uuid, Pg>::from_sql(Some(PgValue::new(input_uuid.as_bytes(), Uuid::OID)))
45-
.unwrap();
43+
FromSql::<Uuid, Pg>::from_sql(Some(PgValue::for_test(input_uuid.as_bytes()))).unwrap();
4644
assert_eq!(input_uuid, output_uuid);
4745
}
4846

4947
#[test]
5048
fn bad_uuid_from_sql() {
51-
use pg::StaticSqlType;
52-
let uuid = uuid::Uuid::from_sql(Some(PgValue::new(b"boom", Uuid::OID)));
53-
assert_eq!(uuid.unwrap_err().description(), "UUID parse error");
49+
let uuid = uuid::Uuid::from_sql(Some(PgValue::for_test(b"boom")));
50+
assert_eq!(uuid.unwrap_err().description(), "invalid number of uuid bytes");
5451
}
5552

5653
#[test]

diesel/src/pg/value.rs

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ use std::ops::Range;
99
pub struct PgValue<'a> {
1010
raw_value: &'a [u8],
1111
type_oid: NonZeroU32,
12-
metadata: &'a PgMetadataLookup,
12+
metadata: Option<&'a PgMetadataLookup>,
1313
}
1414

1515
impl<'a> BinaryRawValue<'a> for Pg {
@@ -19,6 +19,15 @@ impl<'a> BinaryRawValue<'a> for Pg {
1919
}
2020

2121
impl<'a> PgValue<'a> {
22+
#[cfg(test)]
23+
pub(crate) fn for_test(raw_value: &'a [u8]) -> Self {
24+
Self {
25+
raw_value,
26+
type_oid: NonZeroU32::new(42).unwrap(),
27+
metadata: None,
28+
}
29+
}
30+
2231
pub(crate) fn new(
2332
raw_value: &'a [u8],
2433
type_oid: NonZeroU32,
@@ -27,7 +36,7 @@ impl<'a> PgValue<'a> {
2736
Self {
2837
raw_value,
2938
type_oid,
30-
metadata,
39+
metadata: Some(metadata),
3140
}
3241
}
3342

@@ -43,7 +52,7 @@ impl<'a> PgValue<'a> {
4352

4453
/// Get a instance for type lookup
4554
pub fn get_metadata_lookup(&self) -> &PgMetadataLookup {
46-
self.metadata
55+
self.metadata.expect("It's only not there for tests")
4756
}
4857

4958
pub(crate) fn subslice(&self, range: Range<usize>) -> Self {

0 commit comments

Comments
 (0)