Browse Source

fixed tests for consumables

funding-tag
Holger Frey 5 years ago
parent
commit
1c9f405ea9
  1. 4
      ordr3/repo.py
  2. 6
      ordr3/services.py
  3. 4
      ordr3/views/root.py
  4. 6
      tests/test_services.py

4
ordr3/repo.py

@ -123,11 +123,13 @@ class SqlAlchemyRepository(AbstractOrderRepository):
.all() .all()
) )
def list_consumables(self, limit_date, statuses): def list_consumable_candidates(self, limit_date, statuses):
""" list orders that might be consumables """
return ( return (
self.session.query(models.OrderItem) self.session.query(models.OrderItem)
.filter(models.OrderItem.created_on > limit_date) .filter(models.OrderItem.created_on > limit_date)
.filter(models.OrderItem.status.in_(statuses)) .filter(models.OrderItem.status.in_(statuses))
.order_by(models.OrderItem.created_on.desc())
.all() .all()
) )

6
ordr3/services.py

@ -35,13 +35,13 @@ MSG_PWNED_PASSWORD = events.FlashMessage.warning(
def find_consumables(repo, repeat=3, days=365 * 2): def find_consumables(repo, repeat=3, days=365 * 2):
""" search for orders that are requested often """ """ search for orders that are requested often """
unsorted = _find_consumables(repo, repeat, days) unsorted = _find_consumables(repo, repeat, days)
return sorted(unsorted, key=lambda x: x.cas_description) return sorted(unsorted, key=lambda o: o.cas_description)
def _find_consumables(repo, repeat=3, days=365 * 2): def _find_consumables(repo, repeat=3, days=365 * 2):
""" helper function for find_consumables() implementation """ """ helper function for find_consumables() implementation """
limit_date = datetime.now() - timedelta(days=days) limit_date = datetime.utcnow() - timedelta(days=days)
relevant = repo.list_consumables(limit_date, CONSUMABLE_STATI) relevant = repo.list_consumable_candidates(limit_date, CONSUMABLE_STATI)
counter = {} counter = {}
for order in relevant: for order in relevant:
item = counter.setdefault( item = counter.setdefault(

4
ordr3/views/root.py

@ -9,8 +9,8 @@ from pyramid.view import (
from pyramid.httpexceptions import HTTPFound from pyramid.httpexceptions import HTTPFound
# @forbidden_view_config() @forbidden_view_config()
# @notfound_view_config() @notfound_view_config()
@view_config( @view_config(
context="ordr3:resources.Root", permission="view", context="ordr3:resources.Root", permission="view",
) )

6
tests/test_services.py

@ -30,6 +30,12 @@ class FakeOrderRepository(AbstractOrderRepository):
""" list orders, sorted by descending creation date """ """ list orders, sorted by descending creation date """
return sorted(self._orders, reverse=True, key=lambda x: x.created_on) return sorted(self._orders, reverse=True, key=lambda x: x.created_on)
def list_consumable_candidates(self, limit_date, statuses):
""" list orders, sorted by descending creation date """
newer_orders = (o for o in self._orders if o.created_on > limit_date)
valid_orders = (o for o in newer_orders if o.status in statuses)
return sorted(valid_orders, reverse=True, key=lambda x: x.created_on)
def add_user(self, user): def add_user(self, user):
""" add a user to the datastore """ """ add a user to the datastore """
self._users.add(user) self._users.add(user)

Loading…
Cancel
Save