Skip to content

Commit a4d0127

Browse files
committed
chore: updated unit test
Signed-off-by: Manish Dait <daitmanish88@gmail.com>
1 parent 2158a56 commit a4d0127

6 files changed

Lines changed: 46 additions & 54 deletions

File tree

src/hiero_sdk_python/consensus/topic_message_submit_transaction.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -385,18 +385,19 @@ def body_size_all_chunks(self) -> list[int]:
385385
self._require_frozen()
386386
sizes = []
387387

388-
original_index = self._current_chunk_index
389-
original_transaction_id = self.transaction_id
388+
original_transaction_index = self._current_transaction_id_index
390389

391390
try:
392-
for i, transaction_id in enumerate(self._transaction_ids):
393-
self._current_chunk_index = i
394-
self.transaction_id = transaction_id
395-
391+
for i, _ in enumerate(self._transaction_ids):
392+
self._current_transaction_id_index = i
393+
self._chunk_info = consensus_submit_message_pb2.ConsensusMessageChunkInfo(
394+
initialTransactionID=self._initial_transaction_id._to_proto(),
395+
total=self._total_chunks,
396+
number=i + 1,
397+
)
396398
sizes.append(self.body_size)
397399
finally:
398-
self._current_chunk_index = original_index
399-
self.transaction_id = original_transaction_id
400+
self._current_transaction_id_index = original_transaction_index
400401

401402
return sizes
402403

src/hiero_sdk_python/file/file_append_transaction.py

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -420,18 +420,15 @@ def body_size_all_chunks(self) -> list[int]:
420420
self._require_frozen()
421421
sizes = []
422422

423-
original_index = self._current_chunk_index
424-
original_transaction_id = self.transaction_id
423+
original_transaction_index = self._current_transaction_id_index
425424

426425
try:
427-
for i, transaction_id in enumerate(self._transaction_ids):
426+
for i, _ in enumerate(self._transaction_ids):
427+
self._current_transaction_id_index = i
428428
self._current_chunk_index = i
429-
self.transaction_id = transaction_id
430-
431429
sizes.append(self.body_size)
432430
finally:
433-
self._current_chunk_index = original_index
434-
self.transaction_id = original_transaction_id
431+
self._current_transaction_id_index = original_transaction_index
435432

436433
return sizes
437434

src/hiero_sdk_python/query/fee_estimate_query.py

Lines changed: 5 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -194,17 +194,11 @@ def _execute_single(self, url: str, mode: FeeEstimateMode) -> FeeEstimateRespons
194194
data = self._post(url, self._transaction._to_proto().SerializeToString())
195195
return self._to_response(data, mode)
196196

197-
def _execute_chunked(self, client, url: str, mode: FeeEstimateMode) -> FeeEstimateResponse:
197+
def _execute_chunked(self, url: str, mode: FeeEstimateMode) -> FeeEstimateResponse:
198198
"""
199199
Aggregate fees across all chunks into a single response.
200200
"""
201201

202-
# Save original state to restore later
203-
original_id = self._transaction.transaction_id
204-
original_index = getattr(self._transaction, "_current_chunk_index", 0)
205-
original_bodies = dict(self._transaction._transaction_body_bytes)
206-
original_signatures = dict(self._transaction._signature_map)
207-
208202
total_node_base = 0
209203
total_service_base = 0
210204
total_network_subtotal = 0
@@ -215,15 +209,10 @@ def _execute_chunked(self, client, url: str, mode: FeeEstimateMode) -> FeeEstima
215209
final_multiplier = 0
216210
final_hvm = 0
217211

212+
self._transaction._current_transaction_id_index = 0
218213
try:
219-
for i, chunk_tx_id in enumerate(self._transaction._transaction_ids):
220-
self._transaction._current_chunk_index = i
221-
self._transaction.transaction_id = chunk_tx_id
222-
223-
self._transaction._transaction_body_bytes.clear()
224-
225-
self._transaction.freeze_with(client)
226-
214+
for i in range(len(self._transaction._transaction_ids)):
215+
self._transaction._current_transaction_id_index = i
227216
tx_bytes = self._transaction._to_proto().SerializeToString()
228217
data = self._post(url, tx_bytes)
229218
response = self._to_response(data, mode)
@@ -242,12 +231,7 @@ def _execute_chunked(self, client, url: str, mode: FeeEstimateMode) -> FeeEstima
242231
final_hvm = response.high_volume_multiplier
243232

244233
finally:
245-
self._transaction.transaction_id = original_id
246-
self._transaction._current_chunk_index = original_index
247-
self._transaction._transaction_body_bytes.clear()
248-
self._transaction._transaction_body_bytes.update(original_bodies)
249-
self._transaction._signature_map.clear()
250-
self._transaction._signature_map.update(original_signatures)
234+
self._transaction._current_transaction_id_index = 0
251235

252236
return FeeEstimateResponse(
253237
mode=mode,

src/hiero_sdk_python/transaction/transaction.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -410,9 +410,9 @@ def _generate_transaction_ids(self, initial_transaction: TransactionId, count: i
410410
for i in range(count):
411411
self._transaction_ids.append(transaction_id)
412412

413-
next_nanos = transaction_id.valid_start.nanos + (i + 1)
413+
next_nanos = initial_transaction.valid_start.nanos + (i + 1)
414414
next_valid_start = timestamp_pb2.Timestamp(
415-
seconds=transaction_id.valid_start.seconds + next_nanos // 1_000_000_000,
415+
seconds=initial_transaction.valid_start.seconds + next_nanos // 1_000_000_000,
416416
nanos=next_nanos % 1_000_000_000,
417417
)
418418

@@ -430,7 +430,7 @@ def is_signed_by(self, public_key):
430430
"""
431431
public_key_bytes = public_key.to_bytes_raw()
432432

433-
sig_map = self._signature_map.get(self._transaction_body_bytes.get(self._node_account_id))
433+
sig_map = self._signature_map.get(self._transaction_body_bytes[self.transaction_id][self._node_account_id])
434434

435435
if sig_map is None:
436436
return False

tests/unit/transaction_freeze_and_bytes_test.py

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,8 @@ def test_freeze_with_valid_parameters():
6363

6464
# Should have transaction body bytes set
6565
assert len(transaction._transaction_body_bytes) > 0
66-
assert node_id in transaction._transaction_body_bytes
66+
assert transaction.transaction_id in transaction._transaction_body_bytes
67+
# TODO check fro node ids
6768

6869

6970
def test_freeze_is_idempotent():
@@ -464,7 +465,8 @@ def test_freeze_only_builds_for_single_node():
464465

465466
# Should only have one node in the transaction body bytes map
466467
assert len(transaction._transaction_body_bytes) == 1
467-
assert node_id in transaction._transaction_body_bytes
468+
assert transaction.transaction_id in transaction._transaction_body_bytes
469+
# TODO check fro node ids
468470

469471

470472
def test_signed_and_unsigned_bytes_are_different():
@@ -575,7 +577,8 @@ def test_transaction_freeze_with_node_ids(mock_client):
575577
assert tx.node_account_ids == [single_node_id]
576578
# Verify creates transaction_bytes for single node_id
577579
assert len(tx._transaction_body_bytes) == 1
578-
assert set(tx._transaction_body_bytes.keys()) == {single_node_id}
580+
assert set(tx._transaction_body_bytes.keys()) == {tx._transaction_ids[0]}
581+
# TODO check fro node ids
579582

580583
# Case 2 node_account_id list
581584
node_account_ids = [AccountId(0, 0, 3), AccountId(0, 0, 4)]
@@ -586,8 +589,9 @@ def test_transaction_freeze_with_node_ids(mock_client):
586589

587590
assert tx.node_account_ids == node_account_ids
588591
# Verify creates transaction_bytes for two node_ids
589-
assert len(tx._transaction_body_bytes) == 2
590-
assert set(tx._transaction_body_bytes.keys()) == set(node_account_ids)
592+
assert len(tx._transaction_body_bytes) == 1
593+
assert set(tx._transaction_body_bytes.keys()) == {tx._transaction_ids[0]}
594+
# TODO check fro node ids
591595

592596

593597
def test_transaction_freeze_with_node_ids_without_client():
@@ -606,8 +610,10 @@ def test_transaction_freeze_with_node_ids_without_client():
606610

607611
assert tx.node_account_ids == [single_node_id]
608612
# Verify creates transaction_bytes for single node_id
609-
assert len(tx._transaction_body_bytes) == 1
610-
assert set(tx._transaction_body_bytes.keys()) == {single_node_id}
613+
assert len(tx._transaction_body_bytes) == len(tx._transaction_ids)
614+
assert set(tx._transaction_body_bytes.keys()) == {tx.transaction_id}
615+
616+
# TODO: check for node_ids
611617

612618
# Case 2 node_account_id list
613619
node_account_ids = [AccountId(0, 0, 3), AccountId(0, 0, 4)]
@@ -619,8 +625,9 @@ def test_transaction_freeze_with_node_ids_without_client():
619625

620626
assert tx.node_account_ids == node_account_ids
621627
# Verify creates transaction_bytes for two node_ids
622-
assert len(tx._transaction_body_bytes) == 2
623-
assert set(tx._transaction_body_bytes.keys()) == set(node_account_ids)
628+
assert len(tx._transaction_body_bytes) == 1
629+
assert set(tx._transaction_body_bytes.keys()) == {tx._transaction_ids[0]}
630+
# TODO: check for the node ids
624631

625632

626633
def test_transaction_freeze_without_node_ids(mock_client):
@@ -632,8 +639,10 @@ def test_transaction_freeze_without_node_ids(mock_client):
632639

633640
assert tx.node_account_ids == [node._account_id for node in mock_client.network.nodes]
634641
# Verify creates transaction_bytes for client network nodes
635-
assert len(tx._transaction_body_bytes) == len(mock_client.network.nodes)
636-
assert set(tx._transaction_body_bytes.keys()) == set(node._account_id for node in mock_client.network.nodes)
642+
assert len(tx._transaction_body_bytes) == len(tx._transaction_ids)
643+
assert set(tx._transaction_body_bytes.keys()) == set(tx_id for tx_id in tx._transaction_ids)
644+
645+
# TODO: check for node_ids
637646

638647

639648
def test_map_response_raises_if_proto_request_is_not_transaction():

tests/unit/transaction_test.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -342,7 +342,6 @@ def test_message_submit_chunk_tx_should_return_list_of_body_sizes(topic_id, acco
342342
sizes = tx.body_size_all_chunks
343343
assert isinstance(sizes, list)
344344
assert len(sizes) == 3
345-
assert tx._current_chunk_index == 0
346345

347346

348347
def test_message_submit_single_chunk_tx_return_list_of_len_one(topic_id, account_id, transaction_id):
@@ -487,7 +486,8 @@ def test_high_volume_is_included_in_protobuf_output(
487486

488487
assert transaction._transaction_body_bytes
489488

490-
body_bytes = next(iter(transaction._transaction_body_bytes.values()))
489+
node_bytes = next(iter(transaction._transaction_body_bytes.values()))
490+
body_bytes = next(iter(node_bytes.values()))
491491

492492
body = transaction_pb2.TransactionBody()
493493
body.ParseFromString(body_bytes)
@@ -504,7 +504,8 @@ def test_high_volume_is_included_in_protobuf_output(
504504
.freeze()
505505
)
506506

507-
body_bytes_false = next(iter(transaction_false._transaction_body_bytes.values()))
507+
node_bytes_false = next(iter(transaction_false._transaction_body_bytes.values()))
508+
body_bytes_false = next(iter(node_bytes_false.values()))
508509

509510
body_false = transaction_pb2.TransactionBody()
510511
body_false.ParseFromString(body_bytes_false)
@@ -632,7 +633,7 @@ def test_freeze_with_sets_transaction_id_and_node_ids_from_client(mock_client):
632633
"""Test that freeze_with() populates the transaction ID and node IDs from the client."""
633634
tx = TransferTransaction().freeze_with(mock_client)
634635
expected_node_ids = [node._account_id for node in mock_client.network.nodes]
635-
636+
636637
# Generated when freeze with using clinet
637638
expected_transaction_ids = tx._transaction_ids
638639

0 commit comments

Comments
 (0)