75 lines
2.4 KiB
Python
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 ===')
|