diff --git a/ordr3/templates/orders/batch_delete.jinja2 b/ordr3/templates/orders/batch_delete.jinja2
index 1383f7a..5a6b4f8 100644
--- a/ordr3/templates/orders/batch_delete.jinja2
+++ b/ordr3/templates/orders/batch_delete.jinja2
@@ -46,7 +46,7 @@
{{ order.vendor }}
- {{ "%.2f"|format(order.total_price)|replace(".", ",") }} {{ order.currency }}
+ {{ "%.2f"|format(order.total_price)|replace(".", ",") }} {{ order.currency }}
|
{{ order.created_by }}
diff --git a/ordr3/templates/orders/batch_edit.jinja2 b/ordr3/templates/orders/batch_edit.jinja2
index 26b2a3b..a67f259 100644
--- a/ordr3/templates/orders/batch_edit.jinja2
+++ b/ordr3/templates/orders/batch_edit.jinja2
@@ -43,7 +43,7 @@
{{ order.vendor }}
|
- {{ "%.2f"|format(order.total_price)|replace(".", ",") }} {{ order.currency }}
+ {{ "%.2f"|format(order.total_price)|replace(".", ",") }} {{ order.currency }}
|
{{ order.created_by }}
diff --git a/ordr3/views/orders.py b/ordr3/views/orders.py
index 3cf9a13..4cb66e4 100644
--- a/ordr3/views/orders.py
+++ b/ordr3/views/orders.py
@@ -151,7 +151,8 @@ def order_list(context, request):
renderer="ordr3:templates/orders/batch_delete.jinja2",
)
def batch_delete(context, request):
- orders = get_multiple_orders(context, request)
+ subnmitted_orders = get_multiple_orders(context, request)
+ orders = [o for o in subnmitted_orders if not o.in_process]
if not orders:
return HTTPFound(request.resource_url(context))
diff --git a/tests/functional/conftest.py b/tests/functional/conftest.py
index 632b4d1..f8e600d 100644
--- a/tests/functional/conftest.py
+++ b/tests/functional/conftest.py
@@ -147,16 +147,47 @@ def _example_data(_sqlite_repo):
3,
"USD",
"Toto",
- "gefunden bei http://www.example.com/foo",
+ "auf der Seite http://www.example.com/foo gefunden",
)
_sqlite_repo.add_order(order_3)
log_entry = models.LogEntry(
order_3.id,
- models.OrderStatus.COMPLETED,
+ models.OrderStatus.OPEN,
user.username,
today - timedelta(days=3),
)
order_3.add_to_log(log_entry)
+ log_entry = models.LogEntry(
+ order_3.id,
+ models.OrderStatus.COMPLETED,
+ admin.username,
+ today - timedelta(days=2),
+ )
+ order_3.add_to_log(log_entry)
+
+ order_4 = models.OrderItem(
+ 4,
+ "Spritzen",
+ "456",
+ "Sigma Aldrich",
+ models.OrderCategory.BIOLAB,
+ "4 St",
+ 4.5,
+ 4,
+ "EUR",
+ "",
+ "",
+ )
+ _sqlite_repo.add_order(order_4)
+ log_entry = models.LogEntry(
+ order_4.id,
+ models.OrderStatus.OPEN,
+ user.username,
+ today - timedelta(days=4),
+ )
+ order_4.add_to_log(log_entry)
+
+ _sqlite_repo.session.flush()
@pytest.fixture
diff --git a/tests/functional/test_a_order.py b/tests/functional/test_a_order.py
new file mode 100644
index 0000000..b060095
--- /dev/null
+++ b/tests/functional/test_a_order.py
@@ -0,0 +1,141 @@
+def test_add_order(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
+ assert "Eppis" in response
+ assert "Ethanol" in response
+ assert "NaCl" in response
+ assert "Spritzen" in response
+ assert "Aceton" not in response
+
+ 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 "Eppis" in response
+ assert "Ethanol" in response
+ assert "NaCl" in response
+ assert "Spritzen" in response
+ assert "Aceton" in response
+
+ 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
+
+
+def test_view_order(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("/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
+
+
+def test_edit_order_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("/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("Save_Changes")
+
+ response = testapp.get("/orders/")
+ assert "My Orders" in response
+ assert "Eppis" not in response
+ assert "Ethanol" in response
+ assert "NaCl" in response
+ assert "Spritzen" in response
+ assert "Aceton" in response
+
+ response = testapp.get("/orders/3/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
+
+
+def test_delete_order(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
+ assert "Eppis" in response
+ assert "Ethanol" in response
+ assert "NaCl" in response
+ 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 "Eppis" in response
+ assert "Ethanol" in response
+ assert "NaCl" in response
+ assert "/orders/4/edit" not in response
diff --git a/tests/functional/test_order_list.py b/tests/functional/test_order_list.py
new file mode 100644
index 0000000..fcfad85
--- /dev/null
+++ b/tests/functional/test_order_list.py
@@ -0,0 +1,125 @@
+def test_order_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
+ assert "Eppis" in response
+ assert "Ethanol" in response
+ assert "NaCl" in response
+ assert "Spritzen" in response
+
+ response = testapp.get("/orders?status=completed", status=200)
+ assert "Eppis" in response
+ assert "Ethanol" in response
+ assert "NaCl" not in response
+ assert "Spritzen" not in response
+
+ response = testapp.get("/orders?user=TestAdmin", status=200)
+ assert "Eppis" not in response
+ assert "Ethanol" in response
+ assert "NaCl" in response
+ assert "Spritzen" not in response
+
+ response = testapp.get(
+ "/orders?user=TestAdmin&status=completed", status=200
+ )
+ assert "Eppis" not in response
+ assert "Ethanol" in response
+ assert "NaCl" not in response
+ assert "Spritzen" not in response
+
+ response = testapp.get(
+ "/orders?user=TestAdmin&status=approval", status=200
+ )
+ assert "Eppis" not in response
+ assert "Ethanol" not in response
+ assert "NaCl" in response
+ assert "Spritzen" not in response
+
+ response = testapp.get("/orders?user=-purchaser-", status=200)
+ assert "Eppis" in response
+ assert "Ethanol" in response
+ assert "NaCl" in response
+ assert "Spritzen" not in response
+
+ response = testapp.get("/orders?search=vwr", status=200)
+ assert "Eppis" in response
+ assert "Ethanol" in response
+ assert "NaCl" not in response
+ assert "Spritzen" not in response
+
+
+def test_multi_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
+
+ form = response.forms[1]
+ form.action = "/orders/batch-edit/"
+ select_checkboxes = form.fields["selection"]
+ select_checkboxes[0].checked = True
+ select_checkboxes[1].checked = True
+
+ response = form.submit()
+ assert "Eppis" not in response
+ assert "Ethanol" in response
+ assert "NaCl" in response
+ assert "Spritzen" not in response
+
+ form = response.forms[1]
+ form["status-1"].value = "HOLD"
+ form["status-2"].value = "HOLD"
+ form.submit("change")
+
+ response = testapp.get("/orders?status=completed", status=200)
+ assert "orders have been updated." in response
+ assert "Eppis" in response
+ assert "Ethanol" not in response
+ assert "NaCl" not in response
+ assert "Spritzen" not in response
+
+ response = testapp.get("/orders?status=open", status=200)
+ assert "Eppis" not in response
+ assert "Ethanol" not in response
+ assert "NaCl" not in response
+ assert "Spritzen" in response
+
+ response = testapp.get("/orders?status=hold", status=200)
+ assert "Eppis" not in response
+ assert "Ethanol" in response
+ assert "NaCl" in response
+ assert "Spritzen" not in response
+
+
+def test_multi_delete_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
+
+ form = response.forms[1]
+ form.action = "/orders/batch-delete/"
+ select_checkboxes = form.fields["selection"]
+ select_checkboxes[0].checked = True
+ select_checkboxes[3].checked = True
+
+ response = form.submit()
+ assert "Eppis" not in response
+ assert "Ethanol" not in response
+ assert "NaCl" not in response
+ assert "Spritzen" in response
+
+ form = response.forms[1]
+ form["confirmation"].checked = True
+ form.submit("delete")
+
+ response = testapp.get("/orders", status=200)
+ assert "orders have been deleted." in response
+ assert "Eppis" in response
+ assert "Ethanol" in response
+ assert "NaCl" in response
+ assert "Spritzen" not in response
|