def test_portfolio_balance(account_checking, account_savings, account_sp500, asset_krw, asset_sp500): """Ensures a portfolio, which is essentially a collection of accounts, calculates its balance correctly. """ portfolio = Portfolio() portfolio.base_asset = asset_krw portfolio.add_accounts(account_checking, account_savings, account_sp500) assert portfolio.balance(parse_date('2016-05-20')) == {} deposit(account_checking, asset_krw, 1500, parse_date('2016-05-01')) deposit(account_savings, asset_krw, 3000, parse_date('2016-05-01')) deposit(account_sp500, asset_sp500, 120, parse_date('2016-05-01')) assert portfolio.balance(parse_date('2016-05-20')) \ == {asset_krw: 4500, asset_sp500: 120} deposit(account_savings, asset_krw, 4000, parse_date('2016-05-02')) deposit(account_savings, asset_krw, 5000, parse_date('2016-05-03')) assert portfolio.balance(parse_date('2016-05-20')) \ == {asset_krw: 13500, asset_sp500: 120} balance_adjustment(account_savings, asset_krw, 10000, parse_date('2016-05-04')) assert portfolio.balance(parse_date('2016-05-20')) \ == {asset_krw: 11500, asset_sp500: 120} db.session.delete(portfolio) db.session.commit()
def test_balance(account_checking, asset_krw, asset_usd): assert account_checking.balance() == {} deposit(account_checking, asset_krw, 1000, parse_date("2016-05-01")) assert account_checking.balance(parse_date("2016-05-19")) == { asset_krw: 1000 } deposit(account_checking, asset_krw, -500, parse_date("2016-05-02")) assert account_checking.balance(parse_date("2016-05-19")) == { asset_krw: 500 } deposit(account_checking, asset_usd, 25, parse_date("2016-05-03")) assert account_checking.balance(parse_date("2016-05-19")) == { asset_krw: 500, asset_usd: 25, } balance_adjustment(account_checking, asset_usd, 40, parse_date("2016-05-04")) assert account_checking.balance(parse_date("2016-05-19")) == { asset_krw: 500, asset_usd: 40, }
def test_balance(account_checking, asset_krw, asset_usd): assert account_checking.balance() == {} deposit(account_checking, asset_krw, 1000, parse_date('2016-05-01')) assert account_checking.balance(parse_date('2016-05-19')) \ == {asset_krw: 1000} deposit(account_checking, asset_krw, -500, parse_date('2016-05-02')) assert account_checking.balance(parse_date('2016-05-19')) \ == {asset_krw: 500} deposit(account_checking, asset_usd, 25, parse_date('2016-05-03')) assert account_checking.balance(parse_date('2016-05-19')) \ == {asset_krw: 500, asset_usd: 25} balance_adjustment(account_checking, asset_usd, 40, parse_date('2016-05-04')) assert account_checking.balance(parse_date('2016-05-19')) \ == {asset_krw: 500, asset_usd: 40}
def test_records(account_checking, asset_krw): with Transaction.create() as t: record = deposit(account_checking, asset_krw, 1000, parse_date('2016-03-14'), t) # Make sure the record type has been set implictly assert RecordType.deposit == record.type with Transaction.create() as t: record = deposit(account_checking, asset_krw, -2000, parse_date('2016-03-14'), t) # Make sure the record type has been set implictly assert RecordType.withdraw == record.type with Transaction.create() as t: record = balance_adjustment(account_checking, asset_krw, 3000, parse_date('2016-03-14'), t) # Make sure the record type has been set explicitly assert RecordType.balance_adjustment == record.type