41 lines
1.7 KiB
Python
41 lines
1.7 KiB
Python
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
|