56 lines
1.9 KiB
Python
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')
|