Files
aufmass-web/_aufmass_web/scripts/test_v2.py
T

75 lines
2.4 KiB
Python

"""Quick integration test for v2 changes"""
import sys, os, json
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..'))
from app import create_app
from app.extensions import db
from app.models.position import Position
from app.models.user import User
app = create_app()
with app.test_client() as c:
c.post('/auth/login', data={'email': 'fk@kpt-consulting.de', 'password': 'kpt2024'})
# 1. Add a custom position
r = c.post('/projekt/1/1/position/hinzufuegen', data={
'pos_nr': 'TEST-001', 'kurztext': 'Testposition',
'einheit': 'ST', 'einzelpreis': '100.00'
})
print(f'1. Position hinzufuegen: {r.status_code}')
# 2. List positions
r = c.get('/projekt/1/1/positionen')
data = json.loads(r.data)
print(f'2. Positionen: {len(data)} found')
# 3. Update cell
positions = Position.query.filter_by(aufmass_id=1).all()
if positions:
pos_id = positions[0].id
r = c.post(f'/projekt/1/1/position/{pos_id}/update-cell', json={
'field': 'menge', 'value': 5.0
})
res = json.loads(r.data)
print(f'3. Update-cell menge: {r.status_code} -> hinten={res.get("menge_hinten")} gp={res.get("gesamtpreis")}')
# 4. Farben endpoint
r = c.get('/projekt/1/1/positionen/farben')
print(f'4. Farben: {r.status_code}')
# 5. Firmen page
r = c.get('/admin/firma')
print(f'5. Firma page: {r.status_code}')
# 6. Superadmin test
c.post('/auth/login', data={'email': 'super@admin.de', 'password': 'admin'})
r = c.get('/superadmin/')
html = r.data.decode()
print(f'6. Superadmin dashboard: {r.status_code} (Firmen: {"KPT" in html})')
# 7. Firm detail
r = c.get('/superadmin/firma/1')
print(f'7. Firm detail: {r.status_code}')
# 8. LV page as superadmin
r = c.get('/lv/')
print(f'8. LV page: {r.status_code}')
# 9. Create new aufmass
c.post('/auth/login', data={'email': 'fk@kpt-consulting.de', 'password': 'kpt2024'})
r = c.post('/projekt/1/projekt/neu', data={
'name': 'Teilaufmass 1', 'typ': 'Teilaufmass'
}, follow_redirects=True)
print(f'9. Aufmass created: {r.status_code}')
# 10. List aufmasse
r = c.get('/projekt/1')
print(f'10. Aufmass list: {r.status_code}')
# 11. Check new aufmass in editor
r = c.get('/projekt/1/2')
print(f'11. Editor for new aufmass: {r.status_code}')
print('\n=== ALL TESTS PASSED ===')