from datetime import date from app.extensions import db from app.models import Expense, User def test_dashboard_and_analytics(logged_user, app): with app.app_context(): user = User.query.filter_by(email='user@test.com').first() db.session.add(Expense(user_id=user.id, title='Fuel', amount=100, currency='PLN', purchase_date=date(2026, 2, 5), payment_method='card')) db.session.add(Expense(user_id=user.id, title='Fuel', amount=50, currency='PLN', purchase_date=date(2026, 3, 5), payment_method='card')) db.session.commit() response = logged_user.get('/dashboard?year=2026&month=3') assert response.status_code == 200 api = logged_user.get('/analytics/data?year=2026') assert api.status_code == 200 data = api.get_json() assert any(item['month'] == 2 for item in data['yearly_totals']) assert 'category_totals' in data def test_preferences_language_switch_and_statistics(logged_user, app): response = logged_user.post('/preferences', data={'language': 'en', 'theme': 'dark', 'report_frequency': 'monthly', 'default_currency': 'EUR'}, follow_redirects=True) assert response.status_code == 200 stats = logged_user.get('/statistics?year=2026') assert stats.status_code == 200 with app.app_context(): user = User.query.filter_by(email='user@test.com').first() assert user.language == 'en' assert user.theme == 'dark' assert user.default_currency == 'EUR' def test_extended_statistics_payload(logged_user, app): response = logged_user.get('/analytics/data?year=2026&start_year=2024&end_year=2026') assert response.status_code == 200 data = response.get_json() assert 'overview' in data assert 'comparison' in data assert 'range_totals' in data