Skip to content

Commit 35860b0

Browse files
authored
fix(lambda-events): impl Default for all Kinesis Event structs (#1011)
1 parent fd6f528 commit 35860b0

File tree

2 files changed

+13
-7
lines changed

2 files changed

+13
-7
lines changed

lambda-events/src/encodings/time.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ impl DerefMut for MillisecondTimestamp {
2929
}
3030

3131
/// Timestamp with second precision.
32-
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
32+
#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
3333
pub struct SecondTimestamp(
3434
#[serde(deserialize_with = "deserialize_seconds")]
3535
#[serde(serialize_with = "serialize_seconds")]

lambda-events/src/event/kinesis/event.rs

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ pub struct KinesisEvent {
1313

1414
/// `KinesisTimeWindowEvent` represents an Amazon Dynamodb event when using time windows
1515
/// ref. <https://docs.aws.amazon.com/lambda/latest/dg/with-kinesis.html#services-kinesis-windows>
16-
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
16+
#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
1717
#[serde(rename_all = "camelCase")]
1818
pub struct KinesisTimeWindowEvent {
1919
#[serde(rename = "KinesisEvent")]
@@ -34,7 +34,7 @@ pub struct KinesisTimeWindowEventResponse {
3434
// pub batch_item_failures: Vec<KinesisBatchItemFailure>,
3535
}
3636

37-
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
37+
#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
3838
#[serde(rename_all = "camelCase")]
3939
pub struct KinesisEventRecord {
4040
/// nolint: stylecheck
@@ -59,7 +59,7 @@ pub struct KinesisEventRecord {
5959
pub kinesis: KinesisRecord,
6060
}
6161

62-
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
62+
#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
6363
#[serde(rename_all = "camelCase")]
6464
pub struct KinesisRecord {
6565
pub approximate_arrival_timestamp: SecondTimestamp,
@@ -110,10 +110,16 @@ mod test {
110110
assert_eq!(parsed, reparsed);
111111
}
112112

113+
/// `cargo lambda init` autogenerates code that relies on `Default` being implemented for event structs.
114+
///
115+
/// This test validates that `Default` is implemented for each KinesisEvent struct.
113116
#[test]
114117
#[cfg(feature = "kinesis")]
115-
fn default_kinesis_event() {
116-
let event = KinesisEvent::default();
117-
assert_eq!(event.records, vec![]);
118+
fn test_ensure_default_implemented_for_structs() {
119+
let _kinesis_event = KinesisEvent::default();
120+
let _kinesis_time_window_event = KinesisTimeWindowEvent::default();
121+
let _kinesis_event_record = KinesisEventRecord::default();
122+
let _kinesis_record = KinesisRecord::default();
123+
let _kinesis_encryption_type = KinesisEncryptionType::default();
118124
}
119125
}

0 commit comments

Comments
 (0)