mithril_signer/message_adapters/
from_epoch_settings.rs1use anyhow::Context;
2use mithril_common::{
3 StdResult,
4 messages::{EpochSettingsMessage, SignerMessagePart, TryFromMessageAdapter},
5};
6
7use crate::entities::SignerEpochSettings;
8
9pub struct FromEpochSettingsAdapter;
11
12impl TryFromMessageAdapter<EpochSettingsMessage, SignerEpochSettings> for FromEpochSettingsAdapter {
13 fn try_adapt(message: EpochSettingsMessage) -> StdResult<SignerEpochSettings> {
15 let epoch_settings = SignerEpochSettings {
16 epoch: message.epoch,
17 current_signers: SignerMessagePart::try_into_signers(message.current_signers)
18 .with_context(|| "'FromMessageAdapter' can not convert the current signers")?,
19 next_signers: SignerMessagePart::try_into_signers(message.next_signers)
20 .with_context(|| "'FromMessageAdapter' can not convert the next signers")?,
21 };
22 Ok(epoch_settings)
23 }
24}
25
26#[cfg(test)]
27mod tests {
28 use mithril_common::test::double::Dummy;
29
30 use super::*;
31
32 #[test]
33 fn try_adapt_epoch_settings_message_to_entity() {
34 let message = EpochSettingsMessage::dummy();
35 let epoch = message.epoch;
36 let epoch_settings = FromEpochSettingsAdapter::try_adapt(message).unwrap();
37
38 assert_eq!(epoch, epoch_settings.epoch);
39 }
40}