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

56 lines
1.9 KiB
Python

"""Test the formel update API flow"""
import urllib.request, urllib.parse, json, sys
BASE = 'http://127.0.0.1:5000'
# Login
s = urllib.request.build_opener(urllib.request.HTTPCookieProcessor())
req = urllib.request.Request(BASE + '/auth/login',
data=b'email=fk@kpt-consulting.de&password=kpt2024')
s.open(req)
# Add a test position
data = urllib.parse.urlencode({
'pos_nr': 'FORMEL-TEST', 'kurztext': 'Test Formel',
'einheit': 'M', 'einzelpreis': '50',
'faktor': '1.0', 'laenge': '5.0'
}).encode()
req = urllib.request.Request(BASE + '/projekt/1/1/position/hinzufuegen',
data=data, method='POST')
r = s.open(req)
print('Add position:', r.status)
# Get positions
req = urllib.request.Request(BASE + '/projekt/1/1/positionen')
r = s.open(req)
positions = json.loads(r.read())
pos_id = positions[-1]['id']
print(f'Position ID: {pos_id}')
# Set formel_typ to frei
body = json.dumps({'field': 'formel_typ', 'value': 'frei'}).encode()
req = urllib.request.Request(
BASE + f'/projekt/1/1/position/{pos_id}/update-cell',
data=body, method='POST',
headers={'Content-Type': 'application/json'})
r = s.open(req)
resp = json.loads(r.read())
print(f'After formel_typ=frei: menge={resp.get("menge")} gp={resp.get("gesamtpreis")} hinten={resp.get("menge_hinten")}')
# Set formel value
body = json.dumps({'field': 'formel', 'value': '2*3+1'}).encode()
req = urllib.request.Request(
BASE + f'/projekt/1/1/position/{pos_id}/update-cell',
data=body, method='POST',
headers={'Content-Type': 'application/json'})
r = s.open(req)
resp = json.loads(r.read())
print(f'After formel=2*3+1: menge={resp.get("menge")} gp={resp.get("gesamtpreis")} hinten={resp.get("menge_hinten")}')
# Cleanup: delete test position
req = urllib.request.Request(
BASE + f'/projekt/1/1/position/{pos_id}/loeschen', method='POST')
s.open(req)
print(f'Test position {pos_id} deleted')
print('\nSUCCESS: menge_hinten was correctly returned in response')