import pytest @pytest.mark.fun 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" in response assert "open" in response assert "completed" in response assert "TestAdmin" in response assert "TestUser" in response @pytest.mark.fun 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["account"] = "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.fun 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.fun 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["account"] = "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.fun 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["account"] = "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.fun 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["account"] = "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.fun 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["account"] = "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.fun def test_edit_order_purchaser_vs_user(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/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.fun 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.fun 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.fun 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.fun 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.fun 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.fun 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 )