You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[Testing] Zero test coverage for ProfileScreen and EditProfileScreen — profile display, stats, achievement unlock, and edit persistence #145
ProfileScreen is the primary UX surface for the impact dashboard (trees planted, plastic collected, CO₂ reduced) and achievement system — both of which are listed as shipped features. It also hosts the disconnect/logout path, which clears both userStore and walletStore. EditProfileScreen is the only way to update name and bio, and it calls api.updateProfile. Neither screen has any test coverage.
Problem / What
src/screens/ProfileScreen.tsx renders ImpactStats, AchievementGrid, and a settings menu with navigation to EditProfile and NotificationPreferences. src/screens/EditProfileScreen.tsx has controlled inputs, a save handler that calls api.updateProfile, and local error state.
There are no test files for either screen. components.test.tsx does test ImpactStats in isolation, but the integration of stats display within ProfileScreen (driven by userStore.profile.stats) is untested.
Key Challenges
ProfileScreen uses useStellarWallet which has a complex mock requirement (connectAccount, disconnectWallet, Stellar service calls).
EditProfileScreen calls api.updateProfile — mock src/services/api with jest.mock.
The disconnectWallet + logout combined action must be tested to ensure both stores are cleared atomically.
Achievement thresholds (already tested in achievements.test.ts) should be verified to render correctly in ProfileScreen via AchievementGrid.
Acceptance Criteria
ProfileScreen.test.tsx: renders name, wallet address, ImpactStats, AchievementGrid; disconnect triggers both useWalletStore.disconnect and useUserStore.logout; navigation to EditProfile and NotificationPreferences works.
EditProfileScreen.test.tsx: form inputs update state; save calls api.updateProfile with the correct payload; success updates userStore.profile; error state is displayed on API failure.
All tests pass in CI.
Relevant files / functions
src/screens/ProfileScreen.tsx
src/screens/EditProfileScreen.tsx
src/store/userStore.ts
src/store/walletStore.ts
src/services/api.ts — updateProfile
Out of scope
Testing avatar upload (not yet implemented).
Testing the "Language" or "About" settings rows (no-op currently).
I’d like to work on this issue because it addresses an important area of the project and presents a great opportunity to make a meaningful contribution. I’m particularly interested in delivering a solution that is reliable, maintainable, and aligned with the project’s existing architecture and development standards.
I have experience working across software development, including backend and frontend development, APIs, databases, testing, DevOps, and blockchain-based applications. I’m comfortable understanding existing codebases, identifying the root cause of issues, implementing clean and scalable solutions, and writing thorough tests to prevent regressions.
My approach would be to first understand the existing implementation and project conventions, then develop the solution in a focused and incremental way. I’ll ensure the changes are well-tested, documented where necessary, and do not introduce unnecessary complexity or break existing functionality. I’m also committed to clear communication, responding to review feedback, and delivering a polished contribution that provides real value to the project.
Activity
devOgazi commentedon Aug 28, 2026
I’d like to work on this issue because it addresses an important area of the project and presents a great opportunity to make a meaningful contribution. I’m particularly interested in delivering a solution that is reliable, maintainable, and aligned with the project’s existing architecture and development standards.
I have experience working across software development, including backend and frontend development, APIs, databases, testing, DevOps, and blockchain-based applications. I’m comfortable understanding existing codebases, identifying the root cause of issues, implementing clean and scalable solutions, and writing thorough tests to prevent regressions.
My approach would be to first understand the existing implementation and project conventions, then develop the solution in a focused and incremental way. I’ll ensure the changes are well-tested, documented where necessary, and do not introduce unnecessary complexity or break existing functionality. I’m also committed to clear communication, responding to review feedback, and delivering a polished contribution that provides real value to the project.
grantfox-oss commentedon Aug 28, 2026
🦊 GrantFox — @devOgazi has been assigned to this issue as part of the Third Campaign campaign!
Next steps:
Closes #145)Good luck! Track your progress on GrantFox.
test(profile): add coverage for ProfileScreen and EditProfileScreen
test(profile): add coverage for ProfileScreen and EditProfileScreen (#…
grantfox-oss commentedon Aug 29, 2026
🎉 This issue has been marked as completed on GrantFox as part of the Third Campaign campaign!
@devOgazi's PR #154 was approved and merged by @cybermax4200.
🏆 @devOgazi: You earned 35 FoxPoints for this contribution! Your current tier: Explorer (659 total points). Track your full progress on GrantFox.
👏 Great work, @devOgazi! Keep contributing to ecotask-network.