import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:tasq/screens/programmer_tasks/dashboard/badges_strip.dart'; import 'package:tasq/screens/programmer_tasks/dashboard/stat_tiles.dart'; import 'package:tasq/utils/programmer_stats.dart'; // --------------------------------------------------------------------------- // Helpers // --------------------------------------------------------------------------- ProgrammerStats _makeStats({ int currentStreak = 0, int bestStreak = 0, int completedThisWeek = 0, int completedLastWeek = 0, double? firstPassRate, }) { return ProgrammerStats( todayFocus: Duration.zero, helpGivenThisMonth: Duration.zero, approvedTotal: Duration.zero, helpGivenTotal: Duration.zero, completedThisWeek: completedThisWeek, completedLastWeek: completedLastWeek, currentStreak: currentStreak, bestStreak: bestStreak, completedTotal: 0, bugFixCompleted: 0, firstPassRate: firstPassRate, hasCleanWeek: false, ); } Widget _wrap(Widget child) { return MaterialApp(home: Scaffold(body: SingleChildScrollView(child: child))); } // --------------------------------------------------------------------------- // Tests // --------------------------------------------------------------------------- void main() { testWidgets('sheet stats hidden when showSheetStats is false', (tester) async { final stats = _makeStats(currentStreak: 6, bestStreak: 9); await tester.pumpWidget(_wrap( StatTiles(stats: stats, showSheetStats: false), )); expect(find.text('STREAK'), findsNothing); }); testWidgets('streak tile shows days and best', (tester) async { final stats = _makeStats(currentStreak: 6, bestStreak: 9); await tester.pumpWidget(_wrap( StatTiles(stats: stats, showSheetStats: true), )); expect(find.text('6 days'), findsOneWidget); expect(find.text('Best 9'), findsOneWidget); }); testWidgets('locked badge shows progress', (tester) async { const badge = BadgeProgress( id: 'finisher', title: 'Finisher', description: 'Complete 10 tasks', icon: Icons.task_alt, current: 7, target: 10, earned: false, ); await tester.pumpWidget(_wrap( const BadgesStrip(badges: [badge]), )); expect(find.text('7/10'), findsOneWidget); }); }