@@ -33,6 +33,7 @@ pub struct MithrilSignableBuilderService {
3333 immutable_signable_builder : Arc < dyn SignableBuilder < CardanoDbBeacon > > ,
3434 cardano_transactions_signable_builder : Arc < dyn SignableBuilder < BlockNumber > > ,
3535 cardano_stake_distribution_builder : Arc < dyn SignableBuilder < Epoch > > ,
36+ cardano_database_signable_builder : Arc < dyn SignableBuilder < CardanoDbBeacon > > ,
3637 logger : Logger ,
3738}
3839
@@ -42,6 +43,7 @@ pub struct SignableBuilderServiceDependencies {
4243 immutable_signable_builder : Arc < dyn SignableBuilder < CardanoDbBeacon > > ,
4344 cardano_transactions_signable_builder : Arc < dyn SignableBuilder < BlockNumber > > ,
4445 cardano_stake_distribution_builder : Arc < dyn SignableBuilder < Epoch > > ,
46+ cardano_database_signable_builder : Arc < dyn SignableBuilder < CardanoDbBeacon > > ,
4547}
4648
4749impl SignableBuilderServiceDependencies {
@@ -51,12 +53,14 @@ impl SignableBuilderServiceDependencies {
5153 immutable_signable_builder : Arc < dyn SignableBuilder < CardanoDbBeacon > > ,
5254 cardano_transactions_signable_builder : Arc < dyn SignableBuilder < BlockNumber > > ,
5355 cardano_stake_distribution_builder : Arc < dyn SignableBuilder < Epoch > > ,
56+ cardano_database_signable_builder : Arc < dyn SignableBuilder < CardanoDbBeacon > > ,
5457 ) -> Self {
5558 Self {
5659 mithril_stake_distribution_builder,
5760 immutable_signable_builder,
5861 cardano_transactions_signable_builder,
5962 cardano_stake_distribution_builder,
63+ cardano_database_signable_builder,
6064 }
6165 }
6266}
@@ -77,6 +81,7 @@ impl MithrilSignableBuilderService {
7781 cardano_transactions_signable_builder : dependencies
7882 . cardano_transactions_signable_builder ,
7983 cardano_stake_distribution_builder : dependencies. cardano_stake_distribution_builder ,
84+ cardano_database_signable_builder : dependencies. cardano_database_signable_builder ,
8085 logger : logger. new_with_component_name :: < Self > ( ) ,
8186 }
8287 }
@@ -117,11 +122,14 @@ impl MithrilSignableBuilderService {
117122 . with_context ( || format ! (
118123 "Signable builder service can not compute protocol message with block_number: '{block_number}'"
119124 ) ) ?,
120- SignedEntityType :: CardanoDatabase ( _) => {
121- return Err ( anyhow:: anyhow!(
122- "Signable builder service can not compute protocol message for Cardano database because it is not yet implemented."
123- ) ) ;
124- }
125+ SignedEntityType :: CardanoDatabase ( beacon) =>
126+ self
127+ . cardano_database_signable_builder
128+ . compute_protocol_message ( beacon. clone ( ) )
129+ . await
130+ . with_context ( || format ! (
131+ "Signable builder service can not compute protocol message for Cardano database with beacon: '{beacon}'"
132+ ) ) ?,
125133 } ;
126134
127135 Ok ( protocol_message)
@@ -208,6 +216,7 @@ mod tests {
208216 MockSignableBuilderImpl < CardanoDbBeacon > ,
209217 mock_cardano_transactions_signable_builder : MockSignableBuilderImpl < BlockNumber > ,
210218 mock_cardano_stake_distribution_signable_builder : MockSignableBuilderImpl < Epoch > ,
219+ mock_cardano_database_signable_builder : MockSignableBuilderImpl < CardanoDbBeacon > ,
211220 }
212221
213222 impl MockDependencyInjector {
@@ -219,6 +228,7 @@ mod tests {
219228 mock_cardano_immutable_files_full_signable_builder : MockSignableBuilderImpl :: new ( ) ,
220229 mock_cardano_stake_distribution_signable_builder : MockSignableBuilderImpl :: new ( ) ,
221230 mock_cardano_transactions_signable_builder : MockSignableBuilderImpl :: new ( ) ,
231+ mock_cardano_database_signable_builder : MockSignableBuilderImpl :: new ( ) ,
222232 }
223233 }
224234
@@ -228,6 +238,7 @@ mod tests {
228238 Arc :: new ( self . mock_cardano_immutable_files_full_signable_builder ) ,
229239 Arc :: new ( self . mock_cardano_transactions_signable_builder ) ,
230240 Arc :: new ( self . mock_cardano_stake_distribution_signable_builder ) ,
241+ Arc :: new ( self . mock_cardano_database_signable_builder ) ,
231242 ) ;
232243
233244 MithrilSignableBuilderService :: new (
@@ -340,17 +351,21 @@ mod tests {
340351 }
341352
342353 #[ tokio:: test]
343- async fn build_cardano_database_signable_when_given_cardano_database_entity_type_return_error (
344- ) {
354+ async fn build_cardano_database_signable_when_given_cardano_database_entity_type ( ) {
345355 let current_era = SupportedEra :: Pythagoras ;
346- let mock_container = MockDependencyInjector :: new ( current_era) ;
356+ let mut mock_container = build_mock_container ( current_era) ;
357+ mock_container
358+ . mock_cardano_database_signable_builder
359+ . expect_compute_protocol_message ( )
360+ . once ( )
361+ . return_once ( |_| Ok ( ProtocolMessage :: new ( ) ) ) ;
347362 let signable_builder_service = mock_container. build_signable_builder_service ( ) ;
348363 let signed_entity_type = SignedEntityType :: CardanoDatabase ( CardanoDbBeacon :: default ( ) ) ;
349364
350365 signable_builder_service
351366 . compute_protocol_message ( signed_entity_type)
352367 . await
353- . expect_err ( "Should return error because CardanoDatabase is not implemented yet." ) ;
368+ . unwrap ( ) ;
354369 }
355370 }
356371
@@ -443,5 +458,23 @@ mod tests {
443458 . await
444459 . unwrap ( ) ;
445460 }
461+
462+ #[ tokio:: test]
463+ async fn build_cardano_database_signable_when_given_cardano_database_entity_type ( ) {
464+ let current_era = SupportedEra :: Thales ;
465+ let mut mock_container = build_mock_container ( current_era) ;
466+ mock_container
467+ . mock_cardano_database_signable_builder
468+ . expect_compute_protocol_message ( )
469+ . once ( )
470+ . return_once ( |_| Ok ( ProtocolMessage :: new ( ) ) ) ;
471+ let signable_builder_service = mock_container. build_signable_builder_service ( ) ;
472+ let signed_entity_type = SignedEntityType :: CardanoDatabase ( CardanoDbBeacon :: default ( ) ) ;
473+
474+ signable_builder_service
475+ . compute_protocol_message ( signed_entity_type)
476+ . await
477+ . unwrap ( ) ;
478+ }
446479 }
447480}
0 commit comments