@@ -33,6 +33,7 @@ pub struct MithrilSignableBuilderService {
33
33
immutable_signable_builder : Arc < dyn SignableBuilder < CardanoDbBeacon > > ,
34
34
cardano_transactions_signable_builder : Arc < dyn SignableBuilder < BlockNumber > > ,
35
35
cardano_stake_distribution_builder : Arc < dyn SignableBuilder < Epoch > > ,
36
+ cardano_database_signable_builder : Arc < dyn SignableBuilder < CardanoDbBeacon > > ,
36
37
logger : Logger ,
37
38
}
38
39
@@ -42,6 +43,7 @@ pub struct SignableBuilderServiceDependencies {
42
43
immutable_signable_builder : Arc < dyn SignableBuilder < CardanoDbBeacon > > ,
43
44
cardano_transactions_signable_builder : Arc < dyn SignableBuilder < BlockNumber > > ,
44
45
cardano_stake_distribution_builder : Arc < dyn SignableBuilder < Epoch > > ,
46
+ cardano_database_signable_builder : Arc < dyn SignableBuilder < CardanoDbBeacon > > ,
45
47
}
46
48
47
49
impl SignableBuilderServiceDependencies {
@@ -51,12 +53,14 @@ impl SignableBuilderServiceDependencies {
51
53
immutable_signable_builder : Arc < dyn SignableBuilder < CardanoDbBeacon > > ,
52
54
cardano_transactions_signable_builder : Arc < dyn SignableBuilder < BlockNumber > > ,
53
55
cardano_stake_distribution_builder : Arc < dyn SignableBuilder < Epoch > > ,
56
+ cardano_database_signable_builder : Arc < dyn SignableBuilder < CardanoDbBeacon > > ,
54
57
) -> Self {
55
58
Self {
56
59
mithril_stake_distribution_builder,
57
60
immutable_signable_builder,
58
61
cardano_transactions_signable_builder,
59
62
cardano_stake_distribution_builder,
63
+ cardano_database_signable_builder,
60
64
}
61
65
}
62
66
}
@@ -77,6 +81,7 @@ impl MithrilSignableBuilderService {
77
81
cardano_transactions_signable_builder : dependencies
78
82
. cardano_transactions_signable_builder ,
79
83
cardano_stake_distribution_builder : dependencies. cardano_stake_distribution_builder ,
84
+ cardano_database_signable_builder : dependencies. cardano_database_signable_builder ,
80
85
logger : logger. new_with_component_name :: < Self > ( ) ,
81
86
}
82
87
}
@@ -117,11 +122,14 @@ impl MithrilSignableBuilderService {
117
122
. with_context ( || format ! (
118
123
"Signable builder service can not compute protocol message with block_number: '{block_number}'"
119
124
) ) ?,
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
+ ) ) ?,
125
133
} ;
126
134
127
135
Ok ( protocol_message)
@@ -208,6 +216,7 @@ mod tests {
208
216
MockSignableBuilderImpl < CardanoDbBeacon > ,
209
217
mock_cardano_transactions_signable_builder : MockSignableBuilderImpl < BlockNumber > ,
210
218
mock_cardano_stake_distribution_signable_builder : MockSignableBuilderImpl < Epoch > ,
219
+ mock_cardano_database_signable_builder : MockSignableBuilderImpl < CardanoDbBeacon > ,
211
220
}
212
221
213
222
impl MockDependencyInjector {
@@ -219,6 +228,7 @@ mod tests {
219
228
mock_cardano_immutable_files_full_signable_builder : MockSignableBuilderImpl :: new ( ) ,
220
229
mock_cardano_stake_distribution_signable_builder : MockSignableBuilderImpl :: new ( ) ,
221
230
mock_cardano_transactions_signable_builder : MockSignableBuilderImpl :: new ( ) ,
231
+ mock_cardano_database_signable_builder : MockSignableBuilderImpl :: new ( ) ,
222
232
}
223
233
}
224
234
@@ -228,6 +238,7 @@ mod tests {
228
238
Arc :: new ( self . mock_cardano_immutable_files_full_signable_builder ) ,
229
239
Arc :: new ( self . mock_cardano_transactions_signable_builder ) ,
230
240
Arc :: new ( self . mock_cardano_stake_distribution_signable_builder ) ,
241
+ Arc :: new ( self . mock_cardano_database_signable_builder ) ,
231
242
) ;
232
243
233
244
MithrilSignableBuilderService :: new (
@@ -340,17 +351,21 @@ mod tests {
340
351
}
341
352
342
353
#[ 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 ( ) {
345
355
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 ( ) ) ) ;
347
362
let signable_builder_service = mock_container. build_signable_builder_service ( ) ;
348
363
let signed_entity_type = SignedEntityType :: CardanoDatabase ( CardanoDbBeacon :: default ( ) ) ;
349
364
350
365
signable_builder_service
351
366
. compute_protocol_message ( signed_entity_type)
352
367
. await
353
- . expect_err ( "Should return error because CardanoDatabase is not implemented yet." ) ;
368
+ . unwrap ( ) ;
354
369
}
355
370
}
356
371
@@ -443,5 +458,23 @@ mod tests {
443
458
. await
444
459
. unwrap ( ) ;
445
460
}
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
+ }
446
479
}
447
480
}
0 commit comments