From 034740f461f48ce5c7031c0776e88ef4b31d6208 Mon Sep 17 00:00:00 2001 From: kensato Date: Thu, 9 Jan 2025 14:19:58 +0900 Subject: [PATCH 1/2] Add tests for WhatsOnChain classes with Network enum support --- tests/test_woc.py | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 tests/test_woc.py diff --git a/tests/test_woc.py b/tests/test_woc.py new file mode 100644 index 0000000..5ed6151 --- /dev/null +++ b/tests/test_woc.py @@ -0,0 +1,33 @@ +import pytest +from bsv.broadcasters.whatsonchain import WhatsOnChainBroadcaster +from bsv.constants import Network +from bsv.broadcaster import BroadcastResponse, BroadcastFailure + + +class TestWhatsOnChainBroadcast: + def test_network_enum(self): + # Network enumでの初期化 + broadcaster = WhatsOnChainBroadcaster(Network.MAINNET) + assert broadcaster.URL == "https://api.whatsonchain.com/v1/bsv/main/tx/raw" + + broadcaster = WhatsOnChainBroadcaster(Network.TESTNET) + assert broadcaster.URL == "https://api.whatsonchain.com/v1/bsv/test/tx/raw" + + def test_network_string(self): + # 文字列での初期化(後方互換性) + broadcaster = WhatsOnChainBroadcaster("main") + assert broadcaster.URL == "https://api.whatsonchain.com/v1/bsv/main/tx/raw" + + broadcaster = WhatsOnChainBroadcaster("test") + assert broadcaster.URL == "https://api.whatsonchain.com/v1/bsv/test/tx/raw" + + broadcaster = WhatsOnChainBroadcaster("mainnet") + assert broadcaster.URL == "https://api.whatsonchain.com/v1/bsv/main/tx/raw" + + broadcaster = WhatsOnChainBroadcaster("testnet") + assert broadcaster.URL == "https://api.whatsonchain.com/v1/bsv/test/tx/raw" + + def test_invalid_network(self): + # 無効なネットワーク文字列 + with pytest.raises(ValueError, match="Invalid network string:"): + WhatsOnChainBroadcaster("invalid_network") \ No newline at end of file From f11a03a4debc7e1b7081544dc14893454bbd4dda Mon Sep 17 00:00:00 2001 From: kensato Date: Thu, 9 Jan 2025 14:41:03 +0900 Subject: [PATCH 2/2] Add tests for WhatsOnChain classes with Network enum support and changelog --- CHANGELOG.md | 16 ++++++++++++++++ tests/test_woc.py | 40 ++++++++++++++++++++-------------------- 2 files changed, 36 insertions(+), 20 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 48301bf..0c74888 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -34,6 +34,22 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - (Notify of any improvements related to security vulnerabilities or potential risks.) --- +## [1.0.1] - 2025-01-09 + +### Added +- Enhanced WhatsOnChainBroadcaster network handling: + - Added support for Network enum initialization (Network.MAINNET/Network.TESTNET) + - Added robust backward compatibility for string network parameters ('main'/'test'/'mainnet'/'testnet') + - Added input validation and clear error messages for invalid network parameters + - Added type hints and docstrings for better code clarity +- Added comprehensive test suite for WhatsOnChainBroadcaster: + - Added test cases for Network enum initialization + - Added test cases for string-based network parameters + - Added validation tests for invalid network inputs + - Added URL construction validation tests + +--- + ## [1.0.0] - 2024-12-23 diff --git a/tests/test_woc.py b/tests/test_woc.py index 5ed6151..2cdf35a 100644 --- a/tests/test_woc.py +++ b/tests/test_woc.py @@ -5,29 +5,29 @@ class TestWhatsOnChainBroadcast: - def test_network_enum(self): - # Network enumでの初期化 - broadcaster = WhatsOnChainBroadcaster(Network.MAINNET) - assert broadcaster.URL == "https://api.whatsonchain.com/v1/bsv/main/tx/raw" + def test_network_enum(self): + # Initialize with Network enum + broadcaster = WhatsOnChainBroadcaster(Network.MAINNET) + assert broadcaster.URL == "https://api.whatsonchain.com/v1/bsv/main/tx/raw" - broadcaster = WhatsOnChainBroadcaster(Network.TESTNET) - assert broadcaster.URL == "https://api.whatsonchain.com/v1/bsv/test/tx/raw" + broadcaster = WhatsOnChainBroadcaster(Network.TESTNET) + assert broadcaster.URL == "https://api.whatsonchain.com/v1/bsv/test/tx/raw" - def test_network_string(self): - # 文字列での初期化(後方互換性) - broadcaster = WhatsOnChainBroadcaster("main") - assert broadcaster.URL == "https://api.whatsonchain.com/v1/bsv/main/tx/raw" + def test_network_string(self): + # Initialize with string (backward compatibility) + broadcaster = WhatsOnChainBroadcaster("main") + assert broadcaster.URL == "https://api.whatsonchain.com/v1/bsv/main/tx/raw" - broadcaster = WhatsOnChainBroadcaster("test") - assert broadcaster.URL == "https://api.whatsonchain.com/v1/bsv/test/tx/raw" + broadcaster = WhatsOnChainBroadcaster("test") + assert broadcaster.URL == "https://api.whatsonchain.com/v1/bsv/test/tx/raw" - broadcaster = WhatsOnChainBroadcaster("mainnet") - assert broadcaster.URL == "https://api.whatsonchain.com/v1/bsv/main/tx/raw" + broadcaster = WhatsOnChainBroadcaster("mainnet") + assert broadcaster.URL == "https://api.whatsonchain.com/v1/bsv/main/tx/raw" - broadcaster = WhatsOnChainBroadcaster("testnet") - assert broadcaster.URL == "https://api.whatsonchain.com/v1/bsv/test/tx/raw" + broadcaster = WhatsOnChainBroadcaster("testnet") + assert broadcaster.URL == "https://api.whatsonchain.com/v1/bsv/test/tx/raw" - def test_invalid_network(self): - # 無効なネットワーク文字列 - with pytest.raises(ValueError, match="Invalid network string:"): - WhatsOnChainBroadcaster("invalid_network") \ No newline at end of file + def test_invalid_network(self): + # Test invalid network string + with pytest.raises(ValueError, match="Invalid network string:"): + WhatsOnChainBroadcaster("invalid_network") \ No newline at end of file