Feat/horizon sync integration tests#822
Open
dev-fani wants to merge 2 commits into
Open
Conversation
- After submitSignedXdr() succeeds, redirect to /pools/{poolId}
- Removed SuccessScreen component and submitted state
- Added parseApiError import for error handling
- Pool ID is captured from createPool() response and used for redirect
Resolves Web3Novalabs#723
- Added processDonationEvent() to SyncService for handling donation events - Added recordDonation() method to DonationsService - Added incrementRaised() method to PoolsService - Created comprehensive integration tests for sync pipeline: * Test processPoolCreatedEvent() creates Pool record in DB * Test processDonationEvent() creates Donation and updates pool.raised * Test processPoolClosedEvent() sets pool.status to Completed * Test duplicate tx hash is skipped (idempotency) * Test complete pool lifecycle flow - All tests use mocked repositories (no live network needed) - 12 integration tests passing, all 81 tests passing Resolves Web3Novalabs#691
|
@dev-fani Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits. You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀 |
Author
|
hello maintainer, please merge my pr |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
closes #691
Summary
I've successfully implemented integration tests for Horizon sync with mocked responses and created pull request #2. Here's what was delivered:
🎯 Deliverables (All Complete)
✅ Test: processPoolCreatedEvent() creates a Pool record in DB
Verifies pool creation with correct data
Tests upsert behavior for existing pools
✅ Test: processDonationEvent() creates a Donation record and updates pool.raised
Validates donation record creation
Confirms pool.raised is incremented correctly
Tests accumulation of multiple donations
Handles missing txHash gracefully
✅ Test: processPoolClosedEvent() sets pool.status to Completed
Verifies status transition to Completed
✅ Test: duplicate tx hash is skipped (idempotency)
Tests duplicate donation events
Tests duplicate pool creation events
Tests duplicate pool closed events
Tests within-run duplicate detection
✅ Mock Horizon HTTP calls - Using mocked repositories (no live network needed)
✅ npm run test passes - All 81 tests passing (12 new integration tests + 69 existing)
📝 Code Changes
New Files:
sync.service.integration.spec.ts
Modified Files:
sync.service.ts
donations.service.ts
pools.service.ts
🔑 Key Features
No Network Dependency: All tests use mocked repositories
Complete Coverage: Tests cover event processing, idempotency, and full lifecycle
Fast & Isolated: Each test runs with fresh mock state
BigInt Arithmetic: Handles large donation amounts correctly
CI-Ready: All tests pass, build succeeds