|
GnuCash 2.4.99
|
00001 from unittest import main 00002 00003 from gnucash import Transaction, Book, Account, Split 00004 from unittest_support import * 00005 00006 from test_book import BookSession 00007 00008 class TransactionSession( BookSession ): 00009 def setUp(self): 00010 self.domain1 = "gnc.engine" 00011 self.domain2 = "gnc.engine.scrub" 00012 level = G_LOG_LEVEL_CRITICAL 00013 check1 = TestErrorStruct() 00014 check1.log_domain = self.domain1 00015 check1.log_level = level 00016 check1.msg = "[xaccScrubUtilityGetOrMakeAccount()] No currency specified!" 00017 test_add_error(check1) 00018 check2 = TestErrorStruct() 00019 check2.log_domain = self.domain1 00020 check2.log_level = level 00021 check2.msg = "[xaccTransScrubSplits()] Transaction doesn't have a currency!" 00022 test_add_error(check2) 00023 self.hdlr1 = test_set_list_handler(self.domain1, level, None) 00024 check3 = TestErrorStruct() 00025 check3.log_domain = "gnc.engine.scrub" 00026 check3.log_level = level 00027 check3.msg = "[xaccScrubUtilityGetOrMakeAccount()] No currency specified!" 00028 self.hdlr2 = test_set_checked_handler(self.domain2, level, check3) 00029 BookSession.setUp(self) 00030 self.trans = Transaction(self.book) 00031 #Evil bug means we must set a split for the transaction before making 00032 #any other changes (is slightly useful for later tests) 00033 self.split = Split(self.book) 00034 self.split.SetParent(self.trans) 00035 ############ 00036 self.trans.SetCurrency(self.currency) 00037 00038 def tearDown(self): 00039 g_log_remove_handler(self.domain1, self.hdlr1) 00040 g_log_remove_handler(self.domain2, self.hdlr2) 00041 test_clear_error_list () 00042 00043 class TestTransaction( TransactionSession ): 00044 def test_equal(self): 00045 TRANS = self.trans 00046 self.assertTrue( TRANS.Equal(self.trans, True, False, False, False) ) 00047 00048 def test_clone(self): 00049 domain = "gnc.engine" 00050 level = G_LOG_LEVEL_WARNING 00051 check = TestErrorStruct() 00052 check.log_domain = domain 00053 check.log_level = level 00054 check.msg = "[xaccTransEqual()] GUIDs differ" 00055 hdlr = test_set_checked_handler(domain, level, check) 00056 00057 TRANS = self.trans.Clone() 00058 #Clone and original should have different GUIDs 00059 self.assertFalse( TRANS.Equal(self.trans, True, False, False, False) ) 00060 #Clone and original should have the same balance 00061 self.assertTrue( TRANS.Equal(self.trans, False, False, True, False) ) 00062 00063 g_log_remove_handler(domain, hdlr) 00064 00065 def test_setcurrency(self): 00066 self.assertTrue( self.currency.equal( self.trans.GetCurrency() ) ) 00067 00068 def test_edit(self): 00069 self.assertFalse( self.trans.IsOpen() ) 00070 self.trans.BeginEdit() 00071 self.assertTrue( self.trans.IsOpen() ) 00072 self.trans.CommitEdit() 00073 self.assertFalse( self.trans.IsOpen() ) 00074 00075 def test_rollback(self): 00076 self.assertEquals( '', self.trans.GetDescription() ) 00077 self.trans.BeginEdit() 00078 DESC = 'Food' 00079 self.trans.SetDescription(DESC) 00080 self.assertEquals( DESC, self.trans.GetDescription() ) 00081 self.trans.RollbackEdit() 00082 self.assertEquals( '', self.trans.GetDescription() ) 00083 00084 def test_findsplit(self): 00085 ACCT = Account(self.book) 00086 ACCT.SetCommodity(self.currency) 00087 self.split.SetAccount( ACCT ) 00088 SPLIT = self.trans.FindSplitByAccount( ACCT ) 00089 self.assertTrue( SPLIT.Equal(self.split, True, False, False) ) 00090 00091 def test_getsplit(self): 00092 SPLIT = self.trans.GetSplit(0) 00093 self.assertTrue( SPLIT.Equal(self.split, True, False, False) ) 00094 00095 def test_getsplitindex(self): 00096 self.assertEquals( 0, self.trans.GetSplitIndex(self.split) ) 00097 00098 def test_countsplits(self): 00099 self.assertEquals( 1, self.trans.CountSplits() ) 00100 00101 def test_readonly(self): 00102 self.assertEquals( None, self.trans.GetReadOnly() ) 00103 REASON = 'none' 00104 self.trans.SetReadOnly(REASON) 00105 self.assertEquals( REASON, self.trans.GetReadOnly() ) 00106 self.trans.ClearReadOnly() 00107 self.assertEquals( None, self.trans.GetReadOnly() ) 00108 00109 def test_txntype(self): 00110 self.assertEquals( '\x00', self.trans.GetTxnType() ) 00111 TYPE = 'I' 00112 self.trans.SetTxnType(TYPE) 00113 self.assertEquals( TYPE, self.trans.GetTxnType() ) 00114 TYPE = 'P' 00115 self.trans.SetTxnType(TYPE) 00116 self.assertEquals( TYPE, self.trans.GetTxnType() ) 00117 00118 def test_num(self): 00119 NUM = '5' 00120 self.assertEquals( '', self.trans.GetNum() ) 00121 self.trans.SetNum(NUM) 00122 self.assertEquals( NUM, self.trans.GetNum() ) 00123 00124 def test_description(self): 00125 DESCR = 'Groceries' 00126 self.assertEquals( '', self.trans.GetDescription() ) 00127 self.trans.SetDescription(DESCR) 00128 self.assertEquals( DESCR, self.trans.GetDescription() ) 00129 00130 def test_notes(self): 00131 NOTE = 'For dinner party' 00132 self.assertEquals( None, self.trans.GetNotes() ) 00133 self.trans.SetNotes(NOTE) 00134 self.assertEquals( NOTE, self.trans.GetNotes() ) 00135 00136 if __name__ == '__main__': 00137 main()
1.7.4