Our custom ordering system
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

476 lines
14 KiB

import pytest
@pytest.mark.functional
def test_view_order(testapp, login_as):
response = testapp.get("/", status=302).follow()
assert "Please Log In" in response
response = login_as("TestAdmin", "jane").follow()
assert "My Orders" in response
response = testapp.get("/orders/3/view/")
assert "Eppis" in response
assert "345" in response
assert "VWR" in response
assert "Biolab" in response
assert "3 St" in response
assert "34.50" in response
assert "3" in response
assert "USD" in response
assert "103.50" in response
assert "Toto" in response
assert "auf der Seite" in response
assert 'href="http://www.example.com/foo"' in response
assert ">http://www.example.com/foo</a>" in response
assert "open" in response
assert "completed" in response
assert "TestAdmin" in response
assert "TestUser" in response
@pytest.mark.functional
def test_add_order_ok(testapp, login_as, contains):
response = testapp.get("/", status=302).follow()
assert "Please Log In" in response
response = login_as("TestAdmin", "jane").follow()
assert "My Orders" in response
assert contains(
response,
Eppis=True,
Ethanol=True,
NaCl=True,
Spritzen=True,
Aceton=False,
)
response = testapp.get("/orders/add/")
form = response.forms[1]
form["cas_description"] = "Aceton"
form["category"] = "SOLVENT"
form["catalog_nr"] = "567"
form["vendor"] = "Carl Roth"
form["package_size"] = "25 l"
form["quantity"] = "5"
form["funds"] = "DFG"
form["comment"] = "Ein Kommentar!"
form.fields["amount"][0].value = "5.67"
form.fields["amount"][1].value = "5.67"
form.fields["currency"][0].value = "USD"
form.fields["currency"][1].value = "USD"
form.submit("Place_Order")
response = testapp.get("/orders/")
assert "My Orders" in response
assert contains(
response,
Eppis=True,
Ethanol=True,
NaCl=True,
Spritzen=True,
Aceton=True,
)
response = testapp.get("/orders/5/view/")
assert "Aceton" in response
assert "Solvent" in response
assert "567" in response
assert "Carl Roth" in response
assert "25 l" in response
assert "DFG" in response
assert "Ein Kommentar!" in response
assert "5.67" in response
assert "28.35" in response
@pytest.mark.functional
def test_add_order_validation_error(testapp, login_as, contains):
response = testapp.get("/", status=302).follow()
assert "Please Log In" in response
response = login_as("TestAdmin", "jane").follow()
assert "My Orders" in response
assert contains(
response,
Eppis=True,
Ethanol=True,
NaCl=True,
Spritzen=True,
Aceton=False,
)
response = testapp.get("/orders/add/")
form = response.forms[1]
response = form.submit("Place_Order")
assert "There was a problem with your submission" in response
response = testapp.get("/orders/")
assert contains(
response,
Eppis=True,
Ethanol=True,
NaCl=True,
Spritzen=True,
Aceton=False,
)
@pytest.mark.functional
def test_add_order_cancel(testapp, login_as, contains):
response = testapp.get("/", status=302).follow()
assert "Please Log In" in response
response = login_as("TestAdmin", "jane").follow()
assert "My Orders" in response
assert contains(
response,
Eppis=True,
Ethanol=True,
NaCl=True,
Spritzen=True,
Aceton=False,
)
response = testapp.get("/orders/add/")
form = response.forms[1]
form["cas_description"] = "Aceton"
form["category"] = "SOLVENT"
form["catalog_nr"] = "567"
form["vendor"] = "Carl Roth"
form["package_size"] = "25 l"
form["quantity"] = "5"
form["funds"] = "DFG"
form["comment"] = "Ein Kommentar!"
form.fields["amount"][0].value = "5.67"
form.fields["amount"][1].value = "5.67"
form.fields["currency"][0].value = "USD"
form.fields["currency"][1].value = "USD"
form.submit("cancel")
response = testapp.get("/orders/")
assert "My Orders" in response
assert contains(
response,
Eppis=True,
Ethanol=True,
NaCl=True,
Spritzen=True,
Aceton=False,
)
@pytest.mark.functional
def test_edit_order_ok(testapp, login_as, contains, parse_latest_mail):
response = testapp.get("/", status=302).follow()
assert "Please Log In" in response
response = login_as("TestAdmin", "jane").follow()
assert "My Orders" in response
assert contains(
response,
Eppis=True,
Ethanol=True,
NaCl=True,
Spritzen=True,
Aceton=False,
)
response = testapp.get("/orders/3/edit/")
form = response.forms[1]
form["cas_description"] = "Aceton"
form["status"].value = "HOLD"
form["category"].value = "SOLVENT"
form["catalog_nr"] = "567"
form["vendor"] = "Carl Roth"
form["package_size"] = "25 l"
form["quantity"] = "5"
form["funds"] = "DFG"
form["comment"] = "Ein Kommentar!"
form.fields["amount"][0].value = "5.67"
form.fields["amount"][1].value = "5.67"
form.fields["currency"][0].value = "USD"
form.fields["currency"][1].value = "USD"
form.submit("Save_Changes")
response = testapp.get("/orders/")
assert "My Orders" in response
assert contains(
response,
Eppis=False,
Ethanol=True,
NaCl=True,
Spritzen=True,
Aceton=True,
)
response = testapp.get("/orders/3/view/")
assert "Aceton" in response
assert "hold" in response
assert "Solvent" in response
assert "567" in response
assert "Carl Roth" in response
assert "25 l" in response
assert "DFG" in response
assert "Ein Kommentar!" in response
assert "5.67" in response
assert "28.35" in response
parsed = parse_latest_mail()
assert "The status of one or more of your orders" in parsed.body
assert "Aceton" in parsed.body
assert "- new status: Hold" in parsed.body
@pytest.mark.functional
def test_edit_order_form_error(testapp, login_as, contains):
response = testapp.get("/", status=302).follow()
assert "Please Log In" in response
response = login_as("TestAdmin", "jane").follow()
assert "My Orders" in response
response = testapp.get("/orders/3/edit/")
form = response.forms[1]
form["cas_description"] = ""
form["category"] = "SOLVENT"
form["catalog_nr"] = "567"
form["vendor"] = "Carl Roth"
form["package_size"] = "25 l"
form["quantity"] = "5"
form["funds"] = "DFG"
form["comment"] = "Ein Kommentar!"
form.fields["amount"][0].value = "5.67"
form.fields["amount"][1].value = "5.67"
form.fields["currency"][0].value = "USD"
form.fields["currency"][1].value = "USD"
response = form.submit("Save_Changes")
assert "There was a problem with your submission" in response
response = testapp.get("/orders/")
assert "My Orders" in response
assert contains(
response,
Eppis=True,
Ethanol=True,
NaCl=True,
Spritzen=True,
Aceton=False,
)
@pytest.mark.functional
def test_edit_order_cancel(testapp, login_as, contains):
response = testapp.get("/", status=302).follow()
assert "Please Log In" in response
response = login_as("TestAdmin", "jane").follow()
assert "My Orders" in response
response = testapp.get("/orders/3/edit/")
form = response.forms[1]
form["cas_description"] = "Aceton"
form["category"] = "SOLVENT"
form["catalog_nr"] = "567"
form["vendor"] = "Carl Roth"
form["package_size"] = "25 l"
form["quantity"] = "5"
form["funds"] = "DFG"
form["comment"] = "Ein Kommentar!"
form.fields["amount"][0].value = "5.67"
form.fields["amount"][1].value = "5.67"
form.fields["currency"][0].value = "USD"
form.fields["currency"][1].value = "USD"
form.submit("cancel")
response = testapp.get("/orders/")
assert "My Orders" in response
assert contains(
response,
Eppis=True,
Ethanol=True,
NaCl=True,
Spritzen=True,
Aceton=False,
)
@pytest.mark.functional
def test_edit_order_purchaser_vs_user(testapp, login_as, contains): # noqa: ARG001
response = testapp.get("/", status=302).follow()
assert "Please Log In" in response
response = login_as("TestAdmin", "jane").follow()
assert "My Orders" in response
response = testapp.get("/orders/4/edit/")
soup = response.html
status = soup.find("select", {"id": "deformField3"})
assert not status.has_attr("readonly")
response = login_as("TestUser", "jon").follow()
assert "My Orders" in response
response = testapp.get("/orders/4/edit/")
soup = response.html
status = soup.find("input", {"id": "deformField3"})
assert status.has_attr("readonly")
@pytest.mark.functional
def test_delete_order_ok(testapp, login_as, contains):
response = testapp.get("/", status=302).follow()
assert "Please Log In" in response
response = login_as("TestAdmin", "jane").follow()
assert "My Orders" in response
assert contains(response, Eppis=True, Ethanol=True, NaCl=True)
# don't check for "Spritzen", the term will apear in the flash message
# check for edit link
assert "/orders/4/edit" in response
response = testapp.get("/orders/4/delete")
form = response.forms[1]
form["confirmation"].checked = True
form.submit("delete")
response = testapp.get("/orders/")
assert "has been deleted" in response
assert "My Orders" in response
assert contains(response, Eppis=True, Ethanol=True, NaCl=True)
# don't check for "Spritzen", the term will apear in the flash message
# check for edit link
assert "/orders/4/edit" not in response
@pytest.mark.functional
def test_delete_order_cancel(testapp, login_as, contains):
response = testapp.get("/", status=302).follow()
assert "Please Log In" in response
response = login_as("TestAdmin", "jane").follow()
assert "My Orders" in response
assert contains(response, Eppis=True, Ethanol=True, NaCl=True)
# don't check for "Spritzen", the term will apear in the flash message
# check for edit link
assert "/orders/4/edit" in response
response = testapp.get("/orders/4/delete")
form = response.forms[1]
form["confirmation"].checked = True
form.submit("cancel")
response = testapp.get("/orders/")
assert "has been deleted" not in response
assert "My Orders" in response
assert contains(response, Eppis=True, Ethanol=True, NaCl=True)
# don't check for "Spritzen", the term will apear in the flash message
# check for edit link
assert "/orders/4/edit" in response
@pytest.mark.functional
def test_delete_order_no_confirm(testapp, login_as, contains):
response = testapp.get("/", status=302).follow()
assert "Please Log In" in response
response = login_as("TestAdmin", "jane").follow()
assert "My Orders" in response
assert contains(response, Eppis=True, Ethanol=True, NaCl=True)
# don't check for "Spritzen", the term will apear in the flash message
# check for edit link
assert "/orders/4/edit" in response
response = testapp.get("/orders/4/delete")
form = response.forms[1]
form["confirmation"].checked = False
form.submit("delete")
response = testapp.get("/orders/")
assert "has been deleted" not in response
assert "My Orders" in response
assert contains(response, Eppis=True, Ethanol=True, NaCl=True)
# don't check for "Spritzen", the term will apear in the flash message
# check for edit link
assert "/orders/4/edit" in response
@pytest.mark.functional
def test_reorder_ok(testapp, login_as, contains):
response = testapp.get("/", status=302).follow()
assert "Please Log In" in response
response = login_as("TestAdmin", "jane").follow()
assert "My Orders" in response
assert "1138,50" not in response
assert "/orders/5/edit" not in response
response = testapp.get("/orders/3/reorder/")
form = response.forms[1]
form["quantity"] = "33"
form.submit("Place_Order")
response = testapp.get("/orders/")
assert "has been placed." in response
assert "1138,50" in response
assert "/orders/5/edit" in response
response = testapp.get("/orders?status=open", status=200)
assert contains(
response, Eppis=True, Ethanol=False, NaCl=False, Spritzen=True
)
response = testapp.get("/orders?status=completed", status=200)
assert contains(
response, Eppis=True, Ethanol=True, NaCl=False, Spritzen=False
)
@pytest.mark.functional
def test_reorder_cancel(testapp, login_as, contains):
response = testapp.get("/", status=302).follow()
assert "Please Log In" in response
response = login_as("TestAdmin", "jane").follow()
assert "My Orders" in response
assert "1138,50" not in response
assert "/orders/5/edit" not in response
response = testapp.get("/orders/3/reorder/")
form = response.forms[1]
form["quantity"] = "33"
form.submit("cancel")
response = testapp.get("/orders/")
assert "has been placed." not in response
assert "1138,50" not in response
assert "/orders/5/edit" not in response
response = testapp.get("/orders?status=open", status=200)
assert contains(
response, Eppis=False, Ethanol=False, NaCl=False, Spritzen=True
)
@pytest.mark.functional
def test_reorder_form_error(testapp, login_as, contains):
response = testapp.get("/", status=302).follow()
assert "Please Log In" in response
response = login_as("TestAdmin", "jane").follow()
assert "My Orders" in response
assert "1138,50" not in response
assert "/orders/5/edit" not in response
response = testapp.get("/orders/3/reorder/")
form = response.forms[1]
form["quantity"] = ""
response = form.submit("Place_Order")
assert "There was a problem with your submission" in response
response = testapp.get("/orders?status=open", status=200)
assert contains(
response, Eppis=False, Ethanol=False, NaCl=False, Spritzen=True
)