@@ -16,10 +16,22 @@ class AccountTests: XCTestCase {
16
16
let date20170610 = Date ( timeIntervalSince1970: 1_497_078_000 )
17
17
18
18
let amount = Amount ( number: Decimal ( 1 ) , commodity: Commodity ( symbol: " EUR " ) )
19
+ let accountName = " Assets:Cash "
20
+ let invalidNames = [ " Assets " , " Liabilities " , " Income " , " Expenses " , " Equity " , " Assets: " , " Assets:Test: " , " Assets:Test: " , " Assets:Test::Test " , " 💰 " , " " ]
21
+ let validNames = [ " Assets:Cash " , " Assets:Cash:Test:Test:A " , " Assets:Cash:💰 " , " Assets:Cash:Ca💰h:Test:💰 " , " Liabilities:Test " , " Income:Test " , " Expenses:Test " , " Equity:Test " ]
22
+
23
+ func testInit( ) {
24
+ for name in validNames {
25
+ XCTAssertNoThrow ( try Account ( name: name) )
26
+ }
27
+ for name in invalidNames {
28
+ XCTAssertThrowsError ( try Account ( name: name) )
29
+ }
30
+ }
19
31
20
32
func testDescription( ) {
21
33
let name = " Assets:Cash "
22
- let accout = Account ( name: name, accountType : . asset )
34
+ let accout = try ! Account ( name: name)
23
35
XCTAssertEqual ( String ( describing: accout) , " " )
24
36
accout. opening = date20170608
25
37
XCTAssertEqual ( String ( describing: accout) , " 2017-06-08 open \( name) " )
@@ -32,7 +44,7 @@ class AccountTests: XCTestCase {
32
44
33
45
func testDescriptionSpecialCharacters( ) {
34
46
let name = " Assets:💰 "
35
- let accout = Account ( name: name, accountType : . asset )
47
+ let accout = try ! Account ( name: name)
36
48
XCTAssertEqual ( String ( describing: accout) , " " )
37
49
accout. opening = date20170608
38
50
XCTAssertEqual ( String ( describing: accout) , " 2017-06-08 open \( name) " )
@@ -44,13 +56,21 @@ class AccountTests: XCTestCase {
44
56
}
45
57
46
58
func testNameItem( ) {
47
- XCTAssertEqual ( Account ( name: " Assets:Cash " , accountType: . asset) . nameItem, " Cash " )
48
- XCTAssertEqual ( Account ( name: " Assets:A:B:C:D:E:Cash " , accountType: . asset) . nameItem, " Cash " )
49
- XCTAssertEqual ( Account ( name: " Assets:💰 " , accountType: . asset) . nameItem, " 💰 " )
59
+ XCTAssertEqual ( try ! Account ( name: " Assets:Cash " ) . nameItem, " Cash " )
60
+ XCTAssertEqual ( try ! Account ( name: " Assets:A:B:C:D:E:Cash " ) . nameItem, " Cash " )
61
+ XCTAssertEqual ( try ! Account ( name: " Assets:💰 " ) . nameItem, " 💰 " )
62
+ }
63
+
64
+ func testAccountType( ) {
65
+ XCTAssertEqual ( try ! Account ( name: " Assets:Test " ) . accountType, AccountType . asset)
66
+ XCTAssertEqual ( try ! Account ( name: " Liabilities:Test " ) . accountType, AccountType . liability)
67
+ XCTAssertEqual ( try ! Account ( name: " Income:Test " ) . accountType, AccountType . income)
68
+ XCTAssertEqual ( try ! Account ( name: " Expenses:Test " ) . accountType, AccountType . expense)
69
+ XCTAssertEqual ( try ! Account ( name: " Equity:Test " ) . accountType, AccountType . equity)
50
70
}
51
71
52
72
func testIsPostingValid_NotOpenPast( ) {
53
- let account = Account ( name: " name " , accountType : . asset )
73
+ let account = try ! Account ( name: accountName )
54
74
let transaction = Transaction ( metaData: TransactionMetaData ( date: Date ( timeIntervalSince1970: 0 ) ,
55
75
payee: " Payee " ,
56
76
narration: " Narration " ,
@@ -61,14 +81,14 @@ class AccountTests: XCTestCase {
61
81
}
62
82
63
83
func testIsPostingValid_NotOpenPresent( ) {
64
- let account = Account ( name: " name " , accountType : . asset )
84
+ let account = try ! Account ( name: accountName )
65
85
let transaction = Transaction ( metaData: TransactionMetaData ( date: Date ( ) , payee: " Payee " , narration: " Narration " , flag: Flag . complete, tags: [ ] ) )
66
86
let posting = Posting ( account: account, amount: Amount ( number: Decimal ( 1 ) , commodity: Commodity ( symbol: " EUR " ) ) , transaction: transaction)
67
87
XCTAssertFalse ( account. isPostingValid ( posting) )
68
88
}
69
89
70
90
func testIsPostingValid_BeforeOpening( ) {
71
- let account = Account ( name: " name " , accountType : . asset )
91
+ let account = try ! Account ( name: accountName )
72
92
account. opening = date20170609
73
93
74
94
let transaction1 = Transaction ( metaData: TransactionMetaData ( date: Date ( timeIntervalSince1970: 0 ) ,
@@ -85,7 +105,7 @@ class AccountTests: XCTestCase {
85
105
}
86
106
87
107
func testIsPostingValid_AfterOpening( ) {
88
- let account = Account ( name: " name " , accountType : . asset )
108
+ let account = try ! Account ( name: accountName )
89
109
account. opening = date20170609
90
110
91
111
let transaction1 = Transaction ( metaData: TransactionMetaData ( date: date20170609, payee: " Payee " , narration: " Narration " , flag: Flag . complete, tags: [ ] ) )
@@ -98,7 +118,7 @@ class AccountTests: XCTestCase {
98
118
}
99
119
100
120
func testIsPostingValid_BeforeClosing( ) {
101
- let account = Account ( name: " name " , accountType : . asset )
121
+ let account = try ! Account ( name: accountName )
102
122
account. opening = date20170609
103
123
account. closing = date20170609
104
124
let transaction = Transaction ( metaData: TransactionMetaData ( date: date20170609, payee: " Payee " , narration: " Narration " , flag: Flag . complete, tags: [ ] ) )
@@ -107,7 +127,7 @@ class AccountTests: XCTestCase {
107
127
}
108
128
109
129
func testIsPostingValid_AfterClosing( ) {
110
- let account = Account ( name: " name " , accountType : . asset )
130
+ let account = try ! Account ( name: accountName )
111
131
account. opening = date20170609
112
132
account. closing = date20170609
113
133
let transaction = Transaction ( metaData: TransactionMetaData ( date: date20170610, payee: " Payee " , narration: " Narration " , flag: Flag . complete, tags: [ ] ) )
@@ -116,7 +136,7 @@ class AccountTests: XCTestCase {
116
136
}
117
137
118
138
func testIsPostingValid_WithoutCommodity( ) {
119
- let account = Account ( name: " name " , accountType : . asset )
139
+ let account = try ! Account ( name: accountName )
120
140
account. opening = date20170608
121
141
122
142
let transaction1 = Transaction ( metaData: TransactionMetaData ( date: date20170609, payee: " Payee " , narration: " Narration " , flag: Flag . complete, tags: [ ] ) )
@@ -129,7 +149,7 @@ class AccountTests: XCTestCase {
129
149
}
130
150
131
151
func testIsPostingValid_CorrectCommodity( ) {
132
- let account = Account ( name: " name " , accountType : . asset )
152
+ let account = try ! Account ( name: accountName )
133
153
account. commodity = amount. commodity
134
154
account. opening = date20170608
135
155
let transaction = Transaction ( metaData: TransactionMetaData ( date: date20170609, payee: " Payee " , narration: " Narration " , flag: Flag . complete, tags: [ ] ) )
@@ -138,7 +158,7 @@ class AccountTests: XCTestCase {
138
158
}
139
159
140
160
func testIsPostingValid_WrongCommodity( ) {
141
- let account = Account ( name: " name " , accountType : . asset )
161
+ let account = try ! Account ( name: accountName )
142
162
account. commodity = Commodity ( symbol: " \( amount. commodity. symbol) 1 " )
143
163
account. opening = date20170608
144
164
let transaction = Transaction ( metaData: TransactionMetaData ( date: date20170609, payee: " Payee " , narration: " Narration " , flag: Flag . complete, tags: [ ] ) )
@@ -147,16 +167,16 @@ class AccountTests: XCTestCase {
147
167
}
148
168
149
169
func testEqual( ) {
150
- let name1 = " Asset :Cash"
151
- let name2 = " Asset :💰"
170
+ let name1 = " Assets :Cash"
171
+ let name2 = " Assets :💰"
152
172
let commodity1 = Commodity ( symbol: " EUR " )
153
173
let commodity2 = Commodity ( symbol: " 💵 " )
154
174
let date1 = date20170608
155
175
let date2 = date20170609
156
176
157
- let account1 = Account ( name: name1, accountType : . asset )
158
- let account2 = Account ( name: name1, accountType : . asset )
159
- let account3 = Account ( name: name2, accountType : . asset )
177
+ let account1 = try ! Account ( name: name1)
178
+ let account2 = try ! Account ( name: name1)
179
+ let account3 = try ! Account ( name: name2)
160
180
161
181
// equal
162
182
XCTAssertEqual ( account1, account2)
@@ -186,4 +206,13 @@ class AccountTests: XCTestCase {
186
206
account2. closing = date1
187
207
}
188
208
209
+ func testIsAccountNameVaild( ) {
210
+ for name in validNames {
211
+ XCTAssert ( Account . isNameValid ( name) )
212
+ }
213
+ for name in invalidNames {
214
+ XCTAssertFalse ( Account . isNameValid ( name) )
215
+ }
216
+ }
217
+
189
218
}
0 commit comments