Skip to content

Commit

Permalink
issue #19 - PayPeriod method for per_period ScheduledTransactions
Browse files Browse the repository at this point in the history
  • Loading branch information
jantman committed Apr 3, 2017
1 parent 6edd2a8 commit e9eef16
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 0 deletions.
15 changes: 15 additions & 0 deletions biweeklybudget/payperiods.py
Original file line number Diff line number Diff line change
Expand Up @@ -221,3 +221,18 @@ def scheduled_transactions_date(self, db_session):
db_session.query(ScheduledTransaction),
ScheduledTransaction.date
)

def scheduled_transactions_per_period(self, db_session):
"""
Return a Query for all :py:class:`~.ScheduledTransaction` defined by
number per period (schedule_type == "per period") for this pay period.
:param db_session: DB Session to run query with
:type db_session: sqlalchemy.orm.session.Session
:return: Query matching all ScheduledTransactions defined by number
per period, for this pay period.
:rtype: sqlalchemy.orm.query.Query
"""
return db_session.query(ScheduledTransaction).filter(
ScheduledTransaction.schedule_type.__eq__('per period')
)
14 changes: 14 additions & 0 deletions biweeklybudget/tests/unit/test_payperiods.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
import pytest
from datetime import datetime, date, timedelta
from sqlalchemy.orm.session import Session
from sqlalchemy.sql.expression import BindParameter

from biweeklybudget.payperiods import BiweeklyPayPeriod
from biweeklybudget.models.ofx_transaction import OFXTransaction
Expand Down Expand Up @@ -170,3 +171,16 @@ def test_scheduled_transactions_date(self):
assert mock_sess.mock_calls == [
call.query(ScheduledTransaction)
]

def test_scheduled_transactions_per_period(self):
mock_sess = Mock(spec_set=Session)
res = self.cls.scheduled_transactions_per_period(mock_sess)
assert res == mock_sess.query.return_value.filter.return_value
assert mock_sess.mock_calls[0] == call.query(ScheduledTransaction)
kall = mock_sess.mock_calls[1]
assert kall[0] == 'query().filter'
expected = ScheduledTransaction.schedule_type.__eq__('per period')
actual = kall[1][0]
assert str(expected) == str(actual)
assert isinstance(actual.right, BindParameter)
assert actual.right.value == 'per period'

0 comments on commit e9eef16

Please sign in to comment.