Browse Source

finished functional tests with vendors

funding-tag
Holger Frey 5 years ago
parent
commit
08d36e485d
  1. 9
      tests/functional/conftest.py
  2. 11
      tests/functional/test_login.py
  3. 21
      tests/functional/test_order.py
  4. 11
      tests/functional/test_order_list.py
  5. 159
      tests/functional/test_vendors.py

9
tests/functional/conftest.py

@ -187,6 +187,15 @@ def _example_data(_sqlite_repo): @@ -187,6 +187,15 @@ def _example_data(_sqlite_repo):
)
order_4.add_to_log(log_entry)
_sqlite_repo.session.add(models.Vendor("vwr", "VWR"))
_sqlite_repo.session.add(models.Vendor("vr", "VWR"))
_sqlite_repo.session.add(models.Vendor("vwr.de", "VWR"))
_sqlite_repo.session.add(models.Vendor("carl roth", "Carl Roth"))
_sqlite_repo.session.add(models.Vendor("roth", "Carl Roth"))
_sqlite_repo.session.add(models.Vendor("cr", "Carl Roth"))
_sqlite_repo.session.add(models.Vendor("merck", "Merck"))
_sqlite_repo.session.add(models.Vendor("merk", "Merck"))
_sqlite_repo.session.flush()

11
tests/functional/test_login.py

@ -9,6 +9,17 @@ def test_login_ok(testapp): @@ -9,6 +9,17 @@ def test_login_ok(testapp):
assert "My Orders" in response
def test_login_wrong_username(testapp):
response = testapp.get("/", status=302).follow(status=200)
assert "Please Log In" in response
form = response.form
form["username"] = "XXAdmin"
form["password"] = "jane"
response = form.submit("Log In")
assert "Credentials are invalid" in response
def test_login_wrong_password(testapp):
response = testapp.get("/", status=302).follow(status=200)
assert "Please Log In" in response

21
tests/functional/test_order.py

@ -286,6 +286,27 @@ def test_edit_order_cancel(testapp, login_as, contains): @@ -286,6 +286,27 @@ def test_edit_order_cancel(testapp, login_as, contains):
)
def test_edit_order_purchaser_vs_user(testapp, login_as, contains):
response = testapp.get("/", status=302).follow(status=200)
assert "Please Log In" in response
response = login_as("TestAdmin", "jane").follow(status=200)
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(status=200)
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")
def test_delete_order_ok(testapp, login_as, contains):
response = testapp.get("/", status=302).follow(status=200)
assert "Please Log In" in response

11
tests/functional/test_order_list.py

@ -249,14 +249,3 @@ def test_multi_delete_cancel(testapp, login_as, contains): @@ -249,14 +249,3 @@ def test_multi_delete_cancel(testapp, login_as, contains):
assert contains(
response, Eppis=True, Ethanol=True, NaCl=True, Spritzen=True
)
def test_check_vendor_name(testapp, login_as, contains):
response = testapp.get("/", status=302).follow(status=200)
assert "Please Log In" in response
response = login_as("TestAdmin", "jane").follow(status=200)
assert "My Orders" in response
response = testapp.post("/orders/vendor", {"vendor": "test"}, xhr=True)
assert '{"name": "test", "found": false}' in response

159
tests/functional/test_vendors.py

@ -0,0 +1,159 @@ @@ -0,0 +1,159 @@
import pytest
@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(status=200)
assert "Please Log In" in response
response = login_as("TestAdmin", "jane").follow(status=200)
assert "My Orders" in response
response = testapp.post("/orders/vendor", {"vendor": vendor}, xhr=True)
assert response.json == {"name": returned, "found": found}
def test_vendor_list(testapp, login_as):
response = testapp.get("/", status=302).follow(status=200)
assert "Please Log In" in response
response = login_as("TestAdmin", "jane").follow(status=200)
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
def test_vendor_edit_ok(testapp, login_as):
response = testapp.get("/", status=302).follow(status=200)
assert "Please Log In" in response
response = login_as("TestAdmin", "jane").follow(status=200)
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}
def test_vendor_edit_cancel(testapp, login_as):
response = testapp.get("/", status=302).follow(status=200)
assert "Please Log In" in response
response = login_as("TestAdmin", "jane").follow(status=200)
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"}
def test_vendor_edit_form_error(testapp, login_as):
response = testapp.get("/", status=302).follow(status=200)
assert "Please Log In" in response
response = login_as("TestAdmin", "jane").follow(status=200)
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
def test_vendor_edit_unknonw_vendor(testapp, login_as):
response = testapp.get("/", status=302).follow(status=200)
assert "Please Log In" in response
response = login_as("TestAdmin", "jane").follow(status=200)
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
Loading…
Cancel
Save