diff options
| -rw-r--r-- | src/schema.rs | 2 | ||||
| -rw-r--r-- | tests/schema_tests.rs | 34 |
2 files changed, 35 insertions, 1 deletions
diff --git a/src/schema.rs b/src/schema.rs index 4d2b442..b67bce4 100644 --- a/src/schema.rs +++ b/src/schema.rs | |||
| @@ -90,7 +90,7 @@ pub struct Transaction { | |||
| 90 | /// https://serde.rs/container-attrs.html might be valuable to normalize the serialize/deserialize | 90 | /// https://serde.rs/container-attrs.html might be valuable to normalize the serialize/deserialize |
| 91 | /// conventions as these will be hashed | 91 | /// conventions as these will be hashed |
| 92 | /// | 92 | /// |
| 93 | #[derive(Serialize, Deserialize, Debug)] | 93 | #[derive(Serialize, Deserialize, Debug, PartialEq)] |
| 94 | pub struct Block { | 94 | pub struct Block { |
| 95 | #[serde(skip_serializing_if = "Vec::is_empty")] | 95 | #[serde(skip_serializing_if = "Vec::is_empty")] |
| 96 | pub transaction_list: Vec<PublicKeySignature>, | 96 | pub transaction_list: Vec<PublicKeySignature>, |
diff --git a/tests/schema_tests.rs b/tests/schema_tests.rs index fc06796..d3da804 100644 --- a/tests/schema_tests.rs +++ b/tests/schema_tests.rs | |||
| @@ -85,17 +85,51 @@ mod tests { | |||
| 85 | 85 | ||
| 86 | #[test] | 86 | #[test] |
| 87 | fn block_serialize_correctly() { | 87 | fn block_serialize_correctly() { |
| 88 | let block = Block { | ||
| 89 | transaction_list: vec!["transaction1".to_owned()], | ||
| 90 | nonce: 0, | ||
| 91 | timestamp: NaiveDate::from_ymd(2021, 4, 2).and_hms(4, 2, 42), | ||
| 92 | hash: "hash".to_owned() | ||
| 93 | }; | ||
| 88 | 94 | ||
| 95 | assert_tokens( | ||
| 96 | &block, | ||
| 97 | &[ | ||
| 98 | Token::Struct{name: "Block", len: 4}, | ||
| 99 | Token::String("transaction_list"), | ||
| 100 | Token::String("transaction1"), | ||
| 101 | Token::String("nonce"), | ||
| 102 | Token::I32(0), | ||
| 103 | Token::String("timestamp"), | ||
| 104 | Token::String("2021-04-02T04:02:42"), | ||
| 105 | Token::String("hash"), | ||
| 106 | Token::String("hash"), | ||
| 107 | Token::StructEnd, | ||
| 108 | ] | ||
| 109 | ) | ||
| 89 | } | 110 | } |
| 90 | 111 | ||
| 91 | #[test] | 112 | #[test] |
| 92 | fn block_deserialize_correctly() { | 113 | fn block_deserialize_correctly() { |
| 114 | let expected_block = Block { | ||
| 115 | transaction_list: vec!["transaction1".to_owned()], | ||
| 116 | nonce: 0, | ||
| 117 | timestamp: NaiveDate::from_ymd(2021, 4, 2).and_hms(4, 2, 42), | ||
| 118 | hash: "hash".to_owned() | ||
| 119 | }; | ||
| 120 | let data = r#"{"transaction_list":["transaction1"],"nonce":0,"timestamp":"2021-04-02T04:02:42","hash":"hash"}"#; | ||
| 121 | let block: Block = serde_json::from_str(data).unwrap(); | ||
| 122 | |||
| 123 | assert_eq!(block, expected_block); | ||
| 93 | 124 | ||
| 94 | } | 125 | } |
| 95 | 126 | ||
| 96 | #[test] | 127 | #[test] |
| 97 | fn block_deserialize_when_vec_emptpy() { | 128 | fn block_deserialize_when_vec_emptpy() { |
| 129 | let data = r#"{"transaction_list":[],"nonce":0,"timestamp":"2021-04-02T04:02:42","hash":"hash"}"#; | ||
| 130 | let err: Error = serde_json::from_str::<Block>(data).unwrap_err(); | ||
| 98 | 131 | ||
| 132 | assert_eq!(err.is_data(), true); | ||
| 99 | } | 133 | } |
| 100 | 134 | ||
| 101 | #[test] | 135 | #[test] |
