from datetime import date from app.extensions import db from app.models import Category, Expense, User def test_expense_filters_apply(logged_user, app): with app.app_context(): user = User.query.filter_by(email='user@test.com').first() category = Category.query.first() db.session.add(Expense(user_id=user.id, title='Office Supplies', vendor='Paper Shop', tags='office', amount=20, currency='PLN', purchase_date=date(2026, 3, 12), payment_method='card', category_id=category.id, status='confirmed')) db.session.add(Expense(user_id=user.id, title='Cinema', vendor='Movie', tags='fun', amount=40, currency='PLN', purchase_date=date(2026, 3, 12), payment_method='cash', status='new')) db.session.commit() category_id = category.id response = logged_user.get(f'/expenses/?year=2026&month=3&q=Paper&category_id={category_id}&payment_method=card') assert response.status_code == 200 assert b'Office Supplies' in response.data assert b'Cinema' not in response.data def test_extended_analytics_payload(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='Q1', amount=10, currency='PLN', purchase_date=date(2026, 1, 10), payment_method='card')) db.session.add(Expense(user_id=user.id, title='Q2', amount=20, currency='PLN', purchase_date=date(2026, 4, 10), payment_method='card')) db.session.commit() response = logged_user.get('/analytics/data?year=2026&start_year=2025&end_year=2026') data = response.get_json() assert 'quarterly_totals' in data assert 'weekday_totals' in data assert any(item['quarter'] == 'Q1' for item in data['quarterly_totals']) def test_statistics_page_uses_fixed_chart_canvas(logged_user): response = logged_user.get('/statistics') assert response.status_code == 200 assert b'chart-canvas' in response.data def test_create_page_has_mobile_camera_controls(logged_user): response = logged_user.get('/expenses/create') assert response.status_code == 200 assert b'cameraCaptureButton' in response.data assert b'data-mobile-hint' in response.data