Parent: #877
Depends on: #878, #879, #880, #881, #882, #883, #884, #885, #886, #887, #888, #889, #890, #891
Scope
End-to-end test of the full airdrop pipeline on mainnet with a tiny pool (10 PLOT, 3 days).
Setup
| Parameter |
Test Value |
Production Value |
| Pool |
10 PLOT |
50,000 PLOT |
| Duration |
3 days |
6 months |
| Bronze target |
$7,000 (current mcap) |
$1M |
| Silver target |
$10,000 |
$10M |
| Gold target |
$50,000 |
$70M |
| Env var |
NEXT_PUBLIC_AIRDROP_MODE=test |
NEXT_PUBLIC_AIRDROP_MODE=prod |
Bronze at current mcap guarantees the claim flow can be tested.
Test Plan
Day 0 — Setup
- Set
NEXT_PUBLIC_AIRDROP_MODE=test in Vercel env
- Deploy Phases 1-4 code
- Lock 10 PLOT via Mint Club Locker (3-day unlock time)
- Verify
/airdrop page loads with test config (3-day timer, $7K Bronze target)
Day 1 — Point Accumulation
- SIWE check-in → verify streak = 1 (no boost yet)
- Buy a story token with P7 wallet → verify buy points appear
- Generate referral code (test both nanoid and Farcaster username option) → open referral link in a second wallet → buy a token → verify referrer gets 20% points
- Test manual referral input: third wallet connects without ref link → sets referrer via "Who referred you?" input → verify future buys generate referral points (not past ones)
- Publish a storyline → verify 50 PL write points
- Rate a story → verify 5 PL rate points
- Try check-in again within 30 min → should be rejected
- Test story sharing: share a story → verify shared URL contains
?ref=CODE → open in another browser → verify ref is captured in localStorage
- Verify daily price snapshot cron ran and
pl_daily_prices has an entry
Day 2 — Monitoring
- SIWE check-in → verify streak = 2
- Verify points continue accumulating from new buys
- Check referral relationship persists (second wallet buys again → referrer gets more points)
- Verify anti-gaming: rate same story twice (should be rejected), exceed 10 ratings/day (should cap)
- Manually trigger weekly snapshot cron → verify
pl_weekly_snapshots entry
- (Optional) Manually set streak to 7 in DB → buy a token → verify +5% boost applied to points
Day 3 — Campaign End & Claim
- Wait for campaign end timestamp
- Verify point accumulation stops (new buys after end don't generate points)
- Run finalize script: compute TWAP → determine milestone → generate Merkle tree
- Unlock 10 PLOT from Mint Club Locker
- Deploy MerkleClaim contract with earned portion
- Send burn portion to dead address
- Test claim flow: connect wallet on
/airdrop → click Claim → verify PLOT received
- Verify claimed status displays correctly
After Test
DELETE FROM pl_points;
DELETE FROM pl_referrals;
DELETE FROM pl_referral_codes;
DELETE FROM pl_streaks;
DELETE FROM pl_daily_prices;
DELETE FROM pl_weekly_snapshots;
Acceptance Criteria
Parent: #877
Depends on: #878, #879, #880, #881, #882, #883, #884, #885, #886, #887, #888, #889, #890, #891
Scope
End-to-end test of the full airdrop pipeline on mainnet with a tiny pool (10 PLOT, 3 days).
Setup
NEXT_PUBLIC_AIRDROP_MODE=testNEXT_PUBLIC_AIRDROP_MODE=prodBronze at current mcap guarantees the claim flow can be tested.
Test Plan
Day 0 — Setup
NEXT_PUBLIC_AIRDROP_MODE=testin Vercel env/airdroppage loads with test config (3-day timer, $7K Bronze target)Day 1 — Point Accumulation
?ref=CODE→ open in another browser → verify ref is captured in localStoragepl_daily_priceshas an entryDay 2 — Monitoring
pl_weekly_snapshotsentryDay 3 — Campaign End & Claim
/airdrop→ click Claim → verify PLOT receivedAfter Test
NEXT_PUBLIC_AIRDROP_MODE=prodAcceptance Criteria
/airdrop