Skip to content

Commit ed5f844

Browse files
committed
Update Artifact Builder Service in aggregator
1 parent 25e0b7a commit ed5f844

File tree

1 file changed

+39
-43
lines changed

1 file changed

+39
-43
lines changed
Lines changed: 39 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,31 @@
11
use std::sync::Arc;
22

33
use mithril_common::{
4-
entities::{Certificate, SignedEntityType},
5-
signable_builder::{Artifact, DummyBeacon},
4+
entities::{Certificate, Epoch, SignedEntityType},
5+
signable_builder::Artifact,
66
StdResult,
77
};
88

9-
use crate::artifact_builder::{ArtifactBuilder, DummyArtifactBuilder};
9+
use crate::artifact_builder::ArtifactBuilder;
10+
11+
use super::MithrilStakeDistribution;
1012

1113
/// ArtifactBuilder Service
12-
// TODO: temporary implementation
1314
pub struct ArtifactBuilderService {
14-
dummy_artifact_builder: DummyArtifactBuilder,
15+
mithril_stake_distribution_artifact_builder:
16+
Arc<dyn ArtifactBuilder<Epoch, MithrilStakeDistribution>>,
1517
}
1618

1719
impl ArtifactBuilderService {
1820
/// ArtifactBuilderService factory
1921
#[allow(dead_code)]
20-
pub fn new(dummy_artifact_builder: DummyArtifactBuilder) -> Self {
22+
pub fn new(
23+
mithril_stake_distribution_artifact_builder: Arc<
24+
dyn ArtifactBuilder<Epoch, MithrilStakeDistribution>,
25+
>,
26+
) -> Self {
2127
Self {
22-
dummy_artifact_builder,
28+
mithril_stake_distribution_artifact_builder,
2329
}
2430
}
2531
}
@@ -33,20 +39,11 @@ impl ArtifactBuilderService {
3339
) -> StdResult<Arc<impl Artifact>> {
3440
let artifact = match signed_entity_type {
3541
SignedEntityType::MithrilStakeDistribution(e) => Arc::new(
36-
self.dummy_artifact_builder
37-
.compute_artifact(DummyBeacon { epoch: e }, certificate)
38-
.await?,
39-
),
40-
SignedEntityType::CardanoStakeDistribution(e) => Arc::new(
41-
self.dummy_artifact_builder
42-
.compute_artifact(DummyBeacon { epoch: e }, certificate)
43-
.await?,
44-
),
45-
SignedEntityType::CardanoImmutableFilesFull(b) => Arc::new(
46-
self.dummy_artifact_builder
47-
.compute_artifact(DummyBeacon { epoch: b.epoch }, certificate)
42+
self.mithril_stake_distribution_artifact_builder
43+
.compute_artifact(e, certificate)
4844
.await?,
4945
),
46+
_ => todo!(),
5047
};
5148

5249
Ok(artifact)
@@ -55,37 +52,36 @@ impl ArtifactBuilderService {
5552

5653
#[cfg(test)]
5754
mod tests {
58-
use mithril_common::entities::{Beacon, Epoch};
55+
use mithril_common::{entities::Epoch, test_utils::fake_data};
5956

6057
use super::*;
6158

62-
// TODO: temporary test
63-
#[tokio::test]
64-
async fn test_artifact_builder_service() {
65-
let dummy_artifact_builder = DummyArtifactBuilder::default();
66-
let artifact_builder_service = ArtifactBuilderService::new(dummy_artifact_builder);
67-
let certificate = Certificate::default();
59+
use crate::artifact_builder::MockArtifactBuilder;
6860

69-
let signed_entity_type_1 = SignedEntityType::MithrilStakeDistribution(Epoch(1));
70-
let artifact_1 = artifact_builder_service
71-
.compute_artifact(signed_entity_type_1, &certificate)
72-
.await
73-
.unwrap();
61+
#[tokio::test]
62+
async fn test_artifact_builder_service_mithril_stake_distribution() {
63+
let signers_with_stake = fake_data::signers_with_stakes(5);
64+
let mithril_stake_distribution_expected = MithrilStakeDistribution::new(signers_with_stake);
65+
let mithril_stake_distribution_clone = mithril_stake_distribution_expected.clone();
66+
let mut mock_mithril_stake_distribution_artifact_builder =
67+
MockArtifactBuilder::<Epoch, MithrilStakeDistribution>::new();
68+
mock_mithril_stake_distribution_artifact_builder
69+
.expect_compute_artifact()
70+
.once()
71+
.return_once(move |_, _| Ok(mithril_stake_distribution_clone));
7472

75-
let signed_entity_type_2 = SignedEntityType::CardanoStakeDistribution(Epoch(0));
76-
let artifact_2 = artifact_builder_service
77-
.compute_artifact(signed_entity_type_2, &certificate)
78-
.await
79-
.unwrap();
73+
let artifact_builder_service =
74+
ArtifactBuilderService::new(Arc::new(mock_mithril_stake_distribution_artifact_builder));
75+
let certificate = Certificate::default();
8076

81-
let signed_entity_type_3 = SignedEntityType::CardanoImmutableFilesFull(Beacon::default());
82-
let artifact_3 = artifact_builder_service
83-
.compute_artifact(signed_entity_type_3, &certificate)
77+
let signed_entity_type = SignedEntityType::MithrilStakeDistribution(Epoch(1));
78+
let artifact = artifact_builder_service
79+
.compute_artifact(signed_entity_type, &certificate)
8480
.await
8581
.unwrap();
86-
87-
assert_ne!(artifact_1, artifact_2);
88-
assert_ne!(artifact_1, artifact_3);
89-
assert_eq!(artifact_2, artifact_3);
82+
assert_eq!(
83+
serde_json::to_string(&mithril_stake_distribution_expected).unwrap(),
84+
serde_json::to_string(&artifact).unwrap()
85+
);
9086
}
9187
}

0 commit comments

Comments
 (0)