User Story:
As a developer, I want donations rejected after the campaign deadline so that the contract enforces time-bound fundraising.
Acceptance Criteria:
env.ledger().timestamp() > campaign.end_time check in donate
- Panics with
Error::CampaignEnded
- Deadline checked on every donation
- Atomic check-and-transfer to prevent race conditions
User Story:
As a developer, I want donations rejected after the campaign deadline so that the contract enforces time-bound fundraising.
Acceptance Criteria:
env.ledger().timestamp() > campaign.end_timecheck indonateError::CampaignEnded