Files
expense_monitor/tests/test_premium_features.py
Mateusz Gruszczyński 986ffb200a first commit
2026-03-13 15:17:32 +01:00

45 lines
2.2 KiB
Python

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