feat(frontend): add Rate Partner button and dashboard tests

- Add Rate button to MatchCard (shows when video exchange complete & not rated)
- Add 15 comprehensive tests for DashboardPage component
- Tests cover: loading, empty states, events, matches, requests, navigation
This commit is contained in:
Radosław Gierwiało
2025-11-21 21:21:58 +01:00
parent f3bd169dbf
commit 4187157b94
2 changed files with 498 additions and 8 deletions

View File

@@ -338,6 +338,9 @@ const MatchCard = ({ match }) => {
const navigate = useNavigate();
const { partner, event, videoExchange, ratings } = match;
// Can rate when video exchange is complete and user hasn't rated yet
const canRate = videoExchange?.sentByMe && videoExchange?.receivedFromPartner && !ratings?.ratedByMe;
return (
<div className="bg-white rounded-lg shadow-sm border border-gray-200 p-4 hover:shadow-md transition-shadow">
<div className="flex items-start gap-4">
@@ -374,14 +377,25 @@ const MatchCard = ({ match }) => {
</div>
</div>
{/* Action */}
<button
onClick={() => navigate(`/matches/${match.slug}/chat`)}
className="flex-shrink-0 flex items-center gap-2 px-4 py-2 bg-primary-600 text-white rounded-md hover:bg-primary-700 transition-colors"
>
<MessageCircle className="w-4 h-4" />
Chat
</button>
{/* Actions */}
<div className="flex-shrink-0 flex flex-col gap-2">
<button
onClick={() => navigate(`/matches/${match.slug}/chat`)}
className="flex items-center gap-2 px-4 py-2 bg-primary-600 text-white rounded-md hover:bg-primary-700 transition-colors"
>
<MessageCircle className="w-4 h-4" />
Chat
</button>
{canRate && (
<button
onClick={() => navigate(`/matches/${match.slug}/rate`)}
className="flex items-center gap-2 px-4 py-2 border border-amber-500 text-amber-600 rounded-md hover:bg-amber-50 transition-colors"
>
<Star className="w-4 h-4" />
Rate
</button>
)}
</div>
</div>
</div>
);