import pytest @pytest.mark.fun @pytest.mark.parametrize( "vendor,returned,found", [ ("vwr", "VWR", True), ("vr", "VWR", True), ("https://www.vwr.de/foo?q=x", "VWR", True), ("carl roth", "Carl Roth", True), ("roth", "Carl Roth", True), ("cr", "Carl Roth", True), ("merck", "Merck", True), ("merk", "Merck", True), ("Neue Firma", "Neue Firma", False), ], ) def test_check_vendor_name(testapp, login_as, vendor, returned, found): 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.post("/orders/vendor", {"vendor": vendor}, xhr=True) assert response.json == {"name": returned, "found": found} @pytest.mark.fun def test_vendor_list(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("/vendors") assert "Vendor Autocorrect List" in response assert "VWR" in response assert "Carl Roth" in response assert "Merck" in response @pytest.mark.fun def test_vendor_edit_ok(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("/vendors") assert "Vendor Autocorrect List" in response assert "VWR" in response assert "Carl Roth" in response assert "Merck" in response response = testapp.get("/vendors/VWR") form = response.forms[1] form["vendor"] = "Merck" form["terms"] = "\n".join(["vwr", "de.vwr.com"]) form.submit("change") response = testapp.get("/vendors") assert "Vendor Autocorrect List" in response assert "The autocorrect for" in response assert "VWR" not in response assert "Carl Roth" in response assert "Merck" in response response = testapp.get("/vendors/Merck") form = response.forms[1] assert form["vendor"].value == "Merck" terms = form["terms"].value.strip().split() assert set(terms) == {"vwr", "de.vwr.com", "merck", "merk"} response = testapp.post("/orders/vendor", {"vendor": "vwr"}, xhr=True) assert response.json == {"name": "Merck", "found": True} response = testapp.post("/orders/vendor", {"vendor": "vr"}, xhr=True) assert response.json == {"name": "vr", "found": False} @pytest.mark.fun def test_vendor_edit_cancel(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("/vendors") assert "Vendor Autocorrect List" in response assert "VWR" in response assert "Carl Roth" in response assert "Merck" in response response = testapp.get("/vendors/VWR") form = response.forms[1] form["vendor"] = "Merck" form["terms"] = "\n".join(["vwr", "de.vwr.com"]) form.submit("cancel") response = testapp.get("/vendors") assert "Vendor Autocorrect List" in response assert "The autocorrect for" not in response assert "VWR" in response assert "Carl Roth" in response assert "Merck" in response response = testapp.get("/vendors/Merck") form = response.forms[1] assert form["vendor"].value == "Merck" terms = form["terms"].value.strip().split() assert set(terms) == {"merck", "merk"} @pytest.mark.fun def test_vendor_edit_form_error(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("/vendors") assert "Vendor Autocorrect List" in response assert "VWR" in response assert "Carl Roth" in response assert "Merck" in response response = testapp.get("/vendors/VWR") assert "is-invalid" not in response form = response.forms[1] form["vendor"] = "" form["terms"] = "" response = form.submit("change") assert "is-invalid" in response response = testapp.get("/vendors") assert "Vendor Autocorrect List" in response assert "The autocorrect for" not in response assert "VWR" in response assert "Carl Roth" in response assert "Merck" in response @pytest.mark.fun def test_vendor_edit_unknonw_vendor(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("/vendors") assert "Vendor Autocorrect List" in response assert "VWR" in response assert "Carl Roth" in response assert "Merck" in response response = testapp.get("/vendors/unknown").follow() assert "My Orders" in response