def test_simple_transfer_to(self): t = Transact() t.transfer_to_campaign_goal(Decimal('25.0000'), self.currency, self.campaign_goal, self.user_a) assert_true(t.verify()) t.execute() xfers = TransferModel.query.filter_by(record_id=t.id).all() check_balance = self.user_a.balance_for_currency(self.currency) debit_xfer = [x for x in xfers if x.balance == check_balance] assert_equal(1, len(debit_xfer)) assert_equal(Decimal('25.0000'), check_balance.amount) assert_equal(Decimal('25.0000'), debit_xfer[0].debit) assert_equal(None, debit_xfer[0].credit) check_balance = self.campaign.balance_for_currency(self.currency) credit_xfer = [x for x in xfers if x.balance == check_balance] assert_equal(1, len(credit_xfer)) assert_equal(Decimal('75.0000'), check_balance.amount) assert_equal(Decimal('25.0000'), credit_xfer[0].credit) assert_equal(None, credit_xfer[0].debit) comm_ledger = CampaignGoalLedgerModel.query.filter_by( campaign_goal=self.campaign_goal).all() assert_equal(1, len(comm_ledger)) comm_ledger = comm_ledger[0] assert_equal(Decimal('25.0000'), comm_ledger.credit) assert_equal(None, comm_ledger.debit) assert_equal(self.campaign.id, comm_ledger.campaign_id) assert_equal(self.campaign_goal.id, comm_ledger.campaign_goal_id) assert_equal(self.user_a.id, comm_ledger.party_id) assert_equal('user', comm_ledger.party_type)
def test_basic_transaction(self): t = Transact() t.transaction(self.user_a, 'test-party', 'test-reference-number-test_basic_transaction', self.currency, credit=Decimal('25.0000')) t.external_ledger(self.user_a, 'test-party', 'test-reference-number-test_basic_transaction', self.currency, credit=Decimal('25.0000')) assert_true(t.verify()) t.execute() txn = TransactionModel.query.filter_by( balance_id=self.user_a_balance.id).all() assert_equal(1, len(txn)) txn = txn[0] assert_equal(Decimal('25.0000'), txn.credit) assert_true(txn.debit is None) ldgr = ExternalLedgerModel.query.filter_by(record_id=t.id).all() assert_equal(1, len(ldgr)) ldgr = ldgr[0] assert_equal(Decimal('25.0000'), ldgr.credit) assert_equal('test-party', ldgr.processor) assert_equal(Decimal('75.0000'), self.user_a_balance.amount)
def test_basic_transfer(self): t = Transact() t.transfer(Decimal('25.0000'), self.currency, destination=self.campaign_a, origin=self.user_a) assert_true(t.verify()) t.execute() xfers = TransferModel.query.filter_by(record_id=t.id).all() assert_equal(2, len(xfers)) debit_xfer = [ x for x in xfers if x.balance == self.user_a.balance_for_currency(self.currency) ] assert_equal(1, len(debit_xfer)) assert_equal(Decimal('25.0000'), debit_xfer[0].debit) credit_xfer = [ x for x in xfers if x.balance == self.campaign_a.balance_for_currency(self.currency) ] assert_equal(1, len(credit_xfer)) assert_equal(Decimal('25.0000'), credit_xfer[0].credit)
def test_simple_transfer_to(self): t = Transact() t.transfer_to_campaign_goal(Decimal('25.0000'), self.currency, self.campaign_goal, self.user_a) assert_true(t.verify()) t.execute() xfers = TransferModel.query.filter_by(record_id=t.id).all() check_balance = self.user_a.balance_for_currency(self.currency) debit_xfer = [x for x in xfers if x.balance == check_balance] assert_equal(1, len(debit_xfer)) assert_equal(Decimal('25.0000'), check_balance.amount) assert_equal(Decimal('25.0000'), debit_xfer[0].debit) assert_equal(None, debit_xfer[0].credit) check_balance = self.campaign.balance_for_currency(self.currency) credit_xfer = [x for x in xfers if x.balance == check_balance] assert_equal(1, len(credit_xfer)) assert_equal(Decimal('75.0000'), check_balance.amount) assert_equal(Decimal('25.0000'), credit_xfer[0].credit) assert_equal(None, credit_xfer[0].debit) comm_ledger = CampaignGoalLedgerModel.query.filter_by(campaign_goal=self.campaign_goal).all() assert_equal(1, len(comm_ledger)) comm_ledger = comm_ledger[0] assert_equal(Decimal('25.0000'), comm_ledger.credit) assert_equal(None, comm_ledger.debit) assert_equal(self.campaign.id, comm_ledger.campaign_id) assert_equal(self.campaign_goal.id, comm_ledger.campaign_goal_id) assert_equal(self.user_a.id, comm_ledger.party_id) assert_equal('user', comm_ledger.party_type)
def test_basic_transaction(self): t = Transact() t.transaction(self.user_a, 'test-party', 'test-reference-number-test_basic_transaction', self.currency, credit=Decimal('25.0000')) t.external_ledger(self.user_a, 'test-party', 'test-reference-number-test_basic_transaction', self.currency, credit=Decimal('25.0000')) assert_true(t.verify()) t.execute() txn = TransactionModel.query.filter_by(balance_id=self.user_a_balance.id).all() assert_equal(1, len(txn)) txn = txn[0] assert_equal(Decimal('25.0000'), txn.credit) assert_true(txn.debit is None) ldgr = ExternalLedgerModel.query.filter_by(record_id=t.id).all() assert_equal(1, len(ldgr)) ldgr = ldgr[0] assert_equal(Decimal('25.0000'), ldgr.credit) assert_equal('test-party', ldgr.processor) assert_equal(Decimal('75.0000'), self.user_a_balance.amount)
def test_transfer_with_fee(self): t = Transact() t.transfer(Decimal('25.0000'), self.currency, destination=self.campaign_a, origin=self.user_a) t.transfer(Decimal('5.0000'), self.currency, destination=self.user_b, origin=self.user_a, fee=self.fee) assert_true(t.verify()) t.execute() xfers = TransferModel.query.filter_by(record_id=t.id).all() assert_equal(3, len(xfers)) check_balance = self.user_a.balance_for_currency(self.currency) debit_xfer = [x for x in xfers if x.balance == check_balance] assert_equal(1, len(debit_xfer)) assert_equal(Decimal('20.0000'), check_balance.amount) assert_equal(Decimal('30.0000'), debit_xfer[0].debit) assert_equal(None, debit_xfer[0].credit) check_balance = self.campaign_a.balance_for_currency(self.currency) credit_xfer = [x for x in xfers if x.balance == check_balance] assert_equal(1, len(credit_xfer)) assert_equal(Decimal('75.0000'), check_balance.amount) assert_equal(Decimal('25.0000'), credit_xfer[0].credit) assert_equal(None, credit_xfer[0].debit) check_balance = self.user_b.balance_for_currency(self.currency) debit_xfer = [x for x in xfers if x.balance == check_balance] assert_equal(1, len(debit_xfer)) assert_equal(Decimal('55.0000'), check_balance.amount) assert_equal(Decimal('5.0000'), debit_xfer[0].credit) assert_equal(None, debit_xfer[0].debit) iledgers = InternalLedgerModel.query.filter_by(record_id=t.id).all() assert_equal(2, len(iledgers)) credit_iledger = [ l for l in iledgers if l.party == self.user_b.username ] assert_equal(1, len(credit_iledger)) assert_equal(Decimal('5.0000'), credit_iledger[0].credit) assert_equal(None, credit_iledger[0].debit) debit_iledger = [ l for l in iledgers if l.party == self.user_a.username ] assert_equal(1, len(debit_iledger)) assert_equal(Decimal('5.0000'), debit_iledger[0].debit) assert_equal(None, debit_iledger[0].credit)
def test_basic_transfer(self): t = Transact() t.transfer(Decimal('25.0000'), self.currency, destination=self.campaign_a, origin=self.user_a) assert_true(t.verify()) t.execute() xfers = TransferModel.query.filter_by(record_id=t.id).all() assert_equal(2, len(xfers)) debit_xfer = [x for x in xfers if x.balance == self.user_a.balance_for_currency(self.currency)] assert_equal(1, len(debit_xfer)) assert_equal(Decimal('25.0000'), debit_xfer[0].debit) credit_xfer = [x for x in xfers if x.balance == self.campaign_a.balance_for_currency(self.currency)] assert_equal(1, len(credit_xfer)) assert_equal(Decimal('25.0000'), credit_xfer[0].credit)
def test_transfer_with_fee(self): t = Transact() t.transfer(Decimal('25.0000'), self.currency, destination=self.campaign_a, origin=self.user_a) t.transfer(Decimal('5.0000'), self.currency, destination=self.user_b, origin=self.user_a, fee=self.fee) assert_true(t.verify()) t.execute() xfers = TransferModel.query.filter_by(record_id=t.id).all() assert_equal(3, len(xfers)) check_balance = self.user_a.balance_for_currency(self.currency) debit_xfer = [x for x in xfers if x.balance == check_balance] assert_equal(1, len(debit_xfer)) assert_equal(Decimal('20.0000'), check_balance.amount) assert_equal(Decimal('30.0000'), debit_xfer[0].debit) assert_equal(None, debit_xfer[0].credit) check_balance = self.campaign_a.balance_for_currency(self.currency) credit_xfer = [x for x in xfers if x.balance == check_balance] assert_equal(1, len(credit_xfer)) assert_equal(Decimal('75.0000'), check_balance.amount) assert_equal(Decimal('25.0000'), credit_xfer[0].credit) assert_equal(None, credit_xfer[0].debit) check_balance = self.user_b.balance_for_currency(self.currency) debit_xfer = [x for x in xfers if x.balance == check_balance] assert_equal(1, len(debit_xfer)) assert_equal(Decimal('55.0000'), check_balance.amount) assert_equal(Decimal('5.0000'), debit_xfer[0].credit) assert_equal(None, debit_xfer[0].debit) iledgers = InternalLedgerModel.query.filter_by(record_id=t.id).all() assert_equal(2, len(iledgers)) credit_iledger = [l for l in iledgers if l.party == self.user_b.username] assert_equal(1, len(credit_iledger)) assert_equal(Decimal('5.0000'), credit_iledger[0].credit) assert_equal(None, credit_iledger[0].debit) debit_iledger = [l for l in iledgers if l.party == self.user_a.username] assert_equal(1, len(debit_iledger)) assert_equal(Decimal('5.0000'), debit_iledger[0].debit) assert_equal(None, debit_iledger[0].credit)
def test_transfer_with_fee(self): raise SkipTest() t = Transact() t.transaction(self.user_a, 'test-party', 'test-reference-number-test_transfer_with_fee', self.currency, debit=Decimal('25.0000')) t.external_ledger(self.user_a, 'test-party', 'test-reference-number-test_transfer_with_fee', self.currency, debit=Decimal('5.0000'), fee=self.fee) t.transaction(self.user_a, 'test-party', 'test-reference-number-test_transfer_with_fee', self.currency, debit=Decimal('5.0000'), fee=self.fee) t.external_ledger(self.user_a, 'test-party', 'test-reference-number-test_transfer_with_fee', self.currency, debit=Decimal('5.0000'), fee=self.fee) t.transaction(self.user_a, 'poold', 'test-reference-number-test_transfer_with_fee', self.currency, debit=Decimal('5.0000'), fee=self.fee) t.external_ledger(self.user_a, 'poold', 'test-reference-number-test_transfer_with_fee', self.currency, debit=Decimal('5.0000'), fee=self.fee) assert_true(t.verify()) t.execute() txn = TransactionModel.query.filter_by( balance_id=self.user_a_balance.id).all() assert_equal(1, len(txn)) txn = txn[0] assert_equal(Decimal('35.0000'), txn.debit) assert_true(txn.credit is None) ldgr = ExternalLedgerModel.query.filter_by(record_id=t.id).all() assert_equal(3, len(ldgr)) party_ldgr = [ l for l in ldgr if l.party == 'test-party' and l.fee is None ] assert_equal(1, len(party_ldgr)) party_ldgr = party_ldgr[0] assert_equal(Decimal('25.0000'), party_ldgr.debit) assert_equal('test-party', party_ldgr.party) assert_true(party_ldgr.credit is None) party_fee_ldgr = [ l for l in ldgr if l.party == 'test-party' and l.fee is not None ] assert_equal(1, len(party_fee_ldgr)) party_fee_ldgr = party_fee_ldgr[0] assert_equal(Decimal('5.0000'), party_fee_ldgr.debit) assert_equal('test-party', party_fee_ldgr.party) assert_true(party_fee_ldgr.credit is None) poold_ldgr = [l for l in ldgr if l.party == 'poold'] assert_equal(1, len(poold_ldgr)) poold_ldgr = poold_ldgr[0] assert_equal(Decimal('5.0000'), poold_ldgr.debit) assert_equal('poold', poold_ldgr.party) assert_true(poold_ldgr.credit is None) assert_equal(Decimal('15.0000'), self.user_a_balance.amount)
def test_transfer_with_fee(self): raise SkipTest() t = Transact() t.transaction(self.user_a, 'test-party', 'test-reference-number-test_transfer_with_fee', self.currency, debit=Decimal('25.0000')) t.external_ledger(self.user_a, 'test-party', 'test-reference-number-test_transfer_with_fee', self.currency, debit=Decimal('5.0000'), fee=self.fee) t.transaction(self.user_a, 'test-party', 'test-reference-number-test_transfer_with_fee', self.currency, debit=Decimal('5.0000'), fee=self.fee) t.external_ledger(self.user_a, 'test-party', 'test-reference-number-test_transfer_with_fee', self.currency, debit=Decimal('5.0000'), fee=self.fee) t.transaction(self.user_a, 'poold', 'test-reference-number-test_transfer_with_fee', self.currency, debit=Decimal('5.0000'), fee=self.fee) t.external_ledger(self.user_a, 'poold', 'test-reference-number-test_transfer_with_fee', self.currency, debit=Decimal('5.0000'), fee=self.fee) assert_true(t.verify()) t.execute() txn = TransactionModel.query.filter_by(balance_id=self.user_a_balance.id).all() assert_equal(1, len(txn)) txn = txn[0] assert_equal(Decimal('35.0000'), txn.debit) assert_true(txn.credit is None) ldgr = ExternalLedgerModel.query.filter_by(record_id=t.id).all() assert_equal(3, len(ldgr)) party_ldgr = [l for l in ldgr if l.party == 'test-party' and l.fee is None] assert_equal(1, len(party_ldgr)) party_ldgr = party_ldgr[0] assert_equal(Decimal('25.0000'), party_ldgr.debit) assert_equal('test-party', party_ldgr.party) assert_true(party_ldgr.credit is None) party_fee_ldgr = [l for l in ldgr if l.party == 'test-party' and l.fee is not None] assert_equal(1, len(party_fee_ldgr)) party_fee_ldgr = party_fee_ldgr[0] assert_equal(Decimal('5.0000'), party_fee_ldgr.debit) assert_equal('test-party', party_fee_ldgr.party) assert_true(party_fee_ldgr.credit is None) poold_ldgr = [l for l in ldgr if l.party == 'poold'] assert_equal(1, len(poold_ldgr)) poold_ldgr = poold_ldgr[0] assert_equal(Decimal('5.0000'), poold_ldgr.debit) assert_equal('poold', poold_ldgr.party) assert_true(poold_ldgr.credit is None) assert_equal(Decimal('15.0000'), self.user_a_balance.amount)