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
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 |
|
)
|
|
|