first commit
This commit is contained in:
40
tests/test_main.py
Normal file
40
tests/test_main.py
Normal file
@@ -0,0 +1,40 @@
|
||||
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
|
||||
Reference in New Issue
Block a user