thefox-wallet 0.8.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,137 @@
1
+ #!/usr/bin/env ruby -w
2
+
3
+ require 'bundler/setup'
4
+ require 'minitest/autorun'
5
+ require 'wallet'
6
+
7
+ class TestEntry < MiniTest::Test
8
+ def test_base
9
+ entry = TheFox::Wallet::Entry.new
10
+
11
+ assert_equal('TheFox::Wallet::Entry', entry.class.to_s)
12
+ end
13
+
14
+ def test_set_title
15
+ entry = TheFox::Wallet::Entry.new('test1')
16
+ assert_equal('test1', entry.title)
17
+
18
+ entry.title = 'test2'
19
+ assert_equal('test2', entry.title)
20
+ end
21
+
22
+ def test_set_date
23
+ now = Date.today
24
+
25
+ entry = TheFox::Wallet::Entry.new
26
+ assert_equal('Date', entry.date.class.to_s)
27
+ assert_equal(now.to_s, entry.date.to_s)
28
+
29
+ entry = TheFox::Wallet::Entry.new('test', '2015-02-21')
30
+ assert_equal('Date', entry.date.class.to_s)
31
+ assert_equal('2015-02-21', entry.date.to_s)
32
+
33
+ entry.date = '2015-01-01'
34
+ assert_equal('2015-01-01', entry.date.to_s)
35
+
36
+ entry = TheFox::Wallet::Entry.new('test', '2014-2-21')
37
+ assert_equal('2014-02-21', entry.date.to_s)
38
+
39
+ entry.date = '2013-1-1'
40
+ assert_equal('2013-01-01', entry.date.to_s)
41
+
42
+ entry = TheFox::Wallet::Entry.new('test', Date.parse('2015-01-02'))
43
+ assert_equal('2015-01-02', entry.date.to_s)
44
+
45
+ entry = TheFox::Wallet::Entry.new
46
+ entry.date = Date.today
47
+ assert_equal(now.to_s, entry.date.to_s)
48
+
49
+ assert_raises(ArgumentError){ entry.date = 12 }
50
+ assert_raises(ArgumentError){ entry.date = '2014-4-31' }
51
+ end
52
+
53
+ def test_set_revenue_expense
54
+ entry = TheFox::Wallet::Entry.new
55
+ assert_equal(0, entry.revenue)
56
+ assert_equal(0, entry.expense)
57
+
58
+ entry = TheFox::Wallet::Entry.new('test', '2015-02-21', 20)
59
+ assert_equal(20, entry.revenue)
60
+ assert_equal(0, entry.expense)
61
+ assert_equal(20, entry.balance)
62
+
63
+ entry = TheFox::Wallet::Entry.new('test', '2015-02-21', '20', '-21')
64
+ assert_equal(20, entry.revenue)
65
+ assert_equal(-21, entry.expense)
66
+ assert_equal(-1, entry.balance)
67
+
68
+ entry.revenue = 24
69
+ entry.expense = -25
70
+ assert_equal(24, entry.revenue)
71
+ assert_equal(-25, entry.expense)
72
+ assert_equal(-1, entry.balance)
73
+
74
+ entry.revenue = 1.01
75
+ entry.expense = -1.02
76
+ assert_equal(1.01, entry.revenue)
77
+ assert_equal(-1.02, entry.expense)
78
+ assert_equal(-0.01, entry.balance)
79
+
80
+ entry.revenue = 1
81
+ entry.expense = -2.02
82
+ assert_equal(1, entry.revenue)
83
+ assert_equal(-2.02, entry.expense)
84
+ assert_equal(-1.02, entry.balance)
85
+
86
+ entry = TheFox::Wallet::Entry.new('test', '2015-02-21', -42)
87
+ assert_equal(0, entry.revenue)
88
+ assert_equal(-42, entry.expense)
89
+ assert_equal(-42, entry.balance)
90
+
91
+ entry = TheFox::Wallet::Entry.new('test', '2015-02-21', -30.03)
92
+ assert_equal(0, entry.revenue)
93
+ assert_equal(-30.03, entry.expense)
94
+ assert_equal(-30.03, entry.balance)
95
+
96
+ entry.revenue = 'string1'
97
+ assert_equal(0, entry.revenue)
98
+
99
+ entry.expense = 'string1'
100
+ assert_equal(0, entry.expense)
101
+
102
+ assert_raises(RangeError){ entry.revenue = -1.23 }
103
+ assert_raises(RangeError){ entry.expense = 1.23 }
104
+ end
105
+
106
+ def test_set_category
107
+ entry = TheFox::Wallet::Entry.new('test', '2015-02-21', 20, 0, 'c1')
108
+ assert_equal('c1', entry.category)
109
+
110
+ entry.category = 'c2'
111
+ assert_equal('c2', entry.category)
112
+
113
+ entry.category = 1.23
114
+ assert_equal('1.23', entry.category)
115
+ end
116
+
117
+ def test_set_comment
118
+ entry = TheFox::Wallet::Entry.new('test', '2015-02-21', 20, 0, 'c1', 'co1')
119
+ assert_equal('co1', entry.comment)
120
+
121
+ entry.comment = 'co2'
122
+ assert_equal('co2', entry.comment)
123
+
124
+ entry.comment = 1.23
125
+ assert_equal('1.23', entry.comment)
126
+ end
127
+
128
+ def test_to_hash
129
+ entry = TheFox::Wallet::Entry.new('test', '2015-02-21', 20, -12.34, 'c3')
130
+
131
+ assert_equal('2015-02-21', entry.to_h['date'].to_s)
132
+ assert_equal(20, entry.to_h['revenue'])
133
+ assert_equal(-12.34, entry.to_h['expense'])
134
+ assert_equal(7.66, entry.to_h['balance'])
135
+ assert_equal('c3', entry.to_h['category'])
136
+ end
137
+ end
@@ -0,0 +1,198 @@
1
+ #!/usr/bin/env ruby -w
2
+
3
+ require 'bundler/setup'
4
+ require 'minitest/autorun'
5
+ require 'wallet'
6
+
7
+ class TestWallet < MiniTest::Test
8
+ def test_that_it_has_a_version_number
9
+ refute_nil ::TheFox::Wallet::VERSION
10
+ end
11
+
12
+ def test_base
13
+ wallet = TheFox::Wallet::Wallet.new('wallet_test')
14
+
15
+ assert_equal('TheFox::Wallet::Wallet', wallet.class.to_s)
16
+ assert_equal(true, !Dir.exist?('wallet_test'))
17
+ end
18
+
19
+ def test_add
20
+ wallet = TheFox::Wallet::Wallet.new('wallet_test')
21
+
22
+ wallet.add TheFox::Wallet::Entry.new('test', '2014-01-01', 100)
23
+ wallet.add TheFox::Wallet::Entry.new('test', '2014-01-01', 50)
24
+ wallet.add TheFox::Wallet::Entry.new('test', '2014-01-01', -10)
25
+ wallet.add TheFox::Wallet::Entry.new('test', '2014-01-02', -10)
26
+ wallet.add TheFox::Wallet::Entry.new('test', '2015-01-01', 100, 0, 'c1')
27
+ wallet.add TheFox::Wallet::Entry.new('test', '2015-01-02', 0, -10, 'c2')
28
+ wallet.add TheFox::Wallet::Entry.new('test', '2015-02-21', 20)
29
+ wallet.add TheFox::Wallet::Entry.new('test', '2015-02-21', 0, -5, 'c1')
30
+ wallet.add TheFox::Wallet::Entry.new('test', '2015-02-21', 0, -1.5, 'c2')
31
+ wallet.add TheFox::Wallet::Entry.new('test', '2015-02-22', 10)
32
+
33
+ sum = wallet.sum()
34
+ assert_equal(280, sum[:revenue])
35
+ assert_equal(-36.5, sum[:expense])
36
+ assert_equal(243.5, sum[:balance])
37
+
38
+ sum = wallet.sum(2014)
39
+ assert_equal(150, sum[:revenue])
40
+ assert_equal(-20, sum[:expense])
41
+ assert_equal(130, sum[:balance])
42
+
43
+ sum = wallet.sum(2014, 1)
44
+ assert_equal(150, sum[:revenue])
45
+ assert_equal(-20, sum[:expense])
46
+ assert_equal(130, sum[:balance])
47
+
48
+ sum = wallet.sum(2014, 1, 1)
49
+ assert_equal(150, sum[:revenue])
50
+ assert_equal(-10, sum[:expense])
51
+ assert_equal(140, sum[:balance])
52
+
53
+ sum = wallet.sum(2015)
54
+ assert_equal(130, sum[:revenue])
55
+ assert_equal(-16.5, sum[:expense])
56
+ assert_equal(113.5, sum[:balance])
57
+
58
+ sum = wallet.sum(2015, 1)
59
+ assert_equal(100, sum[:revenue])
60
+ assert_equal(-10, sum[:expense])
61
+ assert_equal(90, sum[:balance])
62
+
63
+ sum = wallet.sum(2015, 2)
64
+ assert_equal(30, sum[:revenue])
65
+ assert_equal(-6.5, sum[:expense])
66
+ assert_equal(23.5, sum[:balance])
67
+
68
+ sum = wallet.sum(2015, 2, 21)
69
+ assert_equal(20, sum[:revenue])
70
+ assert_equal(-6.5, sum[:expense])
71
+ assert_equal(13.5, sum[:balance])
72
+
73
+ sum = wallet.sum(2015, 2, 22)
74
+ assert_equal(10, sum[:revenue])
75
+ assert_equal(0, sum[:expense])
76
+ assert_equal(10, sum[:balance])
77
+
78
+ sum = wallet.sum(nil, nil, nil, 'c1')
79
+ assert_equal(100, sum[:revenue])
80
+ assert_equal(-5, sum[:expense])
81
+ assert_equal(95, sum[:balance])
82
+
83
+ sum = wallet.sum(2014, nil, nil, 'c1')
84
+ assert_equal(0, sum[:revenue])
85
+ assert_equal(0, sum[:expense])
86
+ assert_equal(0, sum[:balance])
87
+
88
+ sum = wallet.sum(2014, 1, nil, 'c1')
89
+ assert_equal(0, sum[:revenue])
90
+ assert_equal(0, sum[:expense])
91
+ assert_equal(0, sum[:balance])
92
+
93
+ sum = wallet.sum(2014, 1, 1, 'c1')
94
+ assert_equal(0, sum[:revenue])
95
+ assert_equal(0, sum[:expense])
96
+ assert_equal(0, sum[:balance])
97
+
98
+ sum = wallet.sum(2015, nil, nil, 'c1')
99
+ assert_equal(100, sum[:revenue])
100
+ assert_equal(-5, sum[:expense])
101
+ assert_equal(95, sum[:balance])
102
+
103
+ sum = wallet.sum(2015, 1, nil, 'c1')
104
+ assert_equal(100, sum[:revenue])
105
+ assert_equal(0, sum[:expense])
106
+ assert_equal(100, sum[:balance])
107
+
108
+ sum = wallet.sum(2015, 1, 1, 'c1')
109
+ assert_equal(100, sum[:revenue])
110
+ assert_equal(0, sum[:expense])
111
+ assert_equal(100, sum[:balance])
112
+
113
+ sum = wallet.sum(2015, 2, nil, 'c1')
114
+ assert_equal(0, sum[:revenue])
115
+ assert_equal(-5, sum[:expense])
116
+ assert_equal(-5, sum[:balance])
117
+
118
+ sum = wallet.sum(2015, 2, 1, 'c1')
119
+ assert_equal(0, sum[:revenue])
120
+ assert_equal(0, sum[:expense])
121
+ assert_equal(0, sum[:balance])
122
+
123
+ sum = wallet.sum(2015, 2, 21, 'c1')
124
+ assert_equal(0, sum[:revenue])
125
+ assert_equal(-5, sum[:expense])
126
+ assert_equal(-5, sum[:balance])
127
+
128
+ sum = wallet.sum(nil, nil, nil, 'c2')
129
+ assert_equal(0, sum[:revenue])
130
+ assert_equal(-11.5, sum[:expense])
131
+ assert_equal(-11.5, sum[:balance])
132
+
133
+ sum = wallet.sum(2014, nil, nil, 'c2')
134
+ assert_equal(0, sum[:revenue])
135
+ assert_equal(0, sum[:expense])
136
+ assert_equal(0, sum[:balance])
137
+
138
+ sum = wallet.sum(2014, 1, nil, 'c2')
139
+ assert_equal(0, sum[:revenue])
140
+ assert_equal(0, sum[:expense])
141
+ assert_equal(0, sum[:balance])
142
+
143
+ sum = wallet.sum(2014, 1, 1, 'c2')
144
+ assert_equal(0, sum[:revenue])
145
+ assert_equal(0, sum[:expense])
146
+ assert_equal(0, sum[:balance])
147
+
148
+ sum = wallet.sum(2015, nil, nil, 'c2')
149
+ assert_equal(0, sum[:revenue])
150
+ assert_equal(-11.5, sum[:expense])
151
+ assert_equal(-11.5, sum[:balance])
152
+
153
+ sum = wallet.sum(2015, 1, nil, 'c2')
154
+ assert_equal(0, sum[:revenue])
155
+ assert_equal(-10, sum[:expense])
156
+ assert_equal(-10, sum[:balance])
157
+
158
+ sum = wallet.sum(2015, 1, 1, 'c2')
159
+ assert_equal(0, sum[:revenue])
160
+ assert_equal(0, sum[:expense])
161
+ assert_equal(0, sum[:balance])
162
+
163
+ sum = wallet.sum(2015, 2, nil, 'c2')
164
+ assert_equal(0, sum[:revenue])
165
+ assert_equal(-1.5, sum[:expense])
166
+ assert_equal(-1.5, sum[:balance])
167
+
168
+ sum = wallet.sum(2015, 2, 1, 'c2')
169
+ assert_equal(0, sum[:revenue])
170
+ assert_equal(0, sum[:expense])
171
+ assert_equal(0, sum[:balance])
172
+
173
+ sum = wallet.sum(2015, 2, 21, 'c2')
174
+ assert_equal(0, sum[:revenue])
175
+ assert_equal(-1.5, sum[:expense])
176
+ assert_equal(-1.5, sum[:balance])
177
+
178
+ assert_equal(['default', 'c1', 'c2'], wallet.categories)
179
+
180
+ assert_equal(true, File.exist?('wallet_test/data/month_2014_01.yml'))
181
+ assert_equal(true, File.exist?('wallet_test/data/month_2015_01.yml'))
182
+ assert_equal(true, File.exist?('wallet_test/data/month_2015_02.yml'))
183
+
184
+ File.unlink 'wallet_test/data/month_2014_01.yml'
185
+ File.unlink 'wallet_test/data/month_2015_01.yml'
186
+ File.unlink 'wallet_test/data/month_2015_02.yml'
187
+ Dir.unlink 'wallet_test/data'
188
+ File.unlink 'wallet_test/tmp/.gitignore'
189
+ Dir.unlink 'wallet_test/tmp'
190
+ Dir.unlink 'wallet_test'
191
+ end
192
+
193
+ def test_exceptions
194
+ wallet = TheFox::Wallet::Wallet.new('wallet_test')
195
+
196
+ assert_raises(ArgumentError){ wallet.add 12 }
197
+ end
198
+ end
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby -w
2
+
3
+ require_relative 'tc_wallet'
4
+ require_relative 'tc_entry'
@@ -0,0 +1,32 @@
1
+ # coding: UTF-8
2
+
3
+ lib = File.expand_path('../lib', __FILE__)
4
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
+
6
+ require 'wallet/version'
7
+
8
+ Gem::Specification.new do |spec|
9
+ spec.name = 'thefox-wallet'
10
+ spec.version = TheFox::Wallet::VERSION
11
+ spec.date = TheFox::Wallet::DATE
12
+ spec.author = 'Christian Mayer'
13
+ spec.email = 'christian@fox21.at'
14
+
15
+ spec.summary = %q{Finances Tracking}
16
+ spec.description = %q{A Ruby library for tracking your finances.}
17
+ spec.homepage = TheFox::Wallet::HOMEPAGE
18
+ spec.license = 'GPL-3.0'
19
+
20
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
21
+ spec.bindir = 'bin'
22
+ spec.executables = ['wallet']
23
+ spec.require_paths = ['lib']
24
+ spec.required_ruby_version = '>=2.2.0'
25
+
26
+ spec.add_development_dependency 'bundler', '~>1.10'
27
+ spec.add_development_dependency 'rake', '~>10.0'
28
+ spec.add_development_dependency 'pry', '~>0.10'
29
+ spec.add_development_dependency 'minitest', '~>5.7'
30
+
31
+ spec.add_dependency 'ArgsParser', '~>1.0'
32
+ end
@@ -0,0 +1,10 @@
1
+ {
2
+ "folders":[
3
+ {
4
+ "path": ".",
5
+ "name": "Wallet",
6
+ "folder_exclude_patterns": [ ],
7
+ "file_exclude_patterns": [ ]
8
+ }
9
+ ]
10
+ }
metadata ADDED
@@ -0,0 +1,132 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: thefox-wallet
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.8.1
5
+ platform: ruby
6
+ authors:
7
+ - Christian Mayer
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-12-07 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.10'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.10'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: pry
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '0.10'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '0.10'
55
+ - !ruby/object:Gem::Dependency
56
+ name: minitest
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '5.7'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '5.7'
69
+ - !ruby/object:Gem::Dependency
70
+ name: ArgsParser
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '1.0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '1.0'
83
+ description: A Ruby library for tracking your finances.
84
+ email: christian@fox21.at
85
+ executables:
86
+ - wallet
87
+ extensions: []
88
+ extra_rdoc_files: []
89
+ files:
90
+ - ".gitignore"
91
+ - Gemfile
92
+ - Gemfile.lock
93
+ - Makefile
94
+ - Makefile.common
95
+ - README.md
96
+ - Rakefile
97
+ - bin/wallet
98
+ - lib/wallet.rb
99
+ - lib/wallet/entry.rb
100
+ - lib/wallet/version.rb
101
+ - lib/wallet/wallet.rb
102
+ - tests/tc_entry.rb
103
+ - tests/tc_wallet.rb
104
+ - tests/ts_all.rb
105
+ - thefox-wallet.gemspec
106
+ - wallet.sublime-project
107
+ homepage: https://github.com/TheFox/wallet
108
+ licenses:
109
+ - GPL-3.0
110
+ metadata: {}
111
+ post_install_message:
112
+ rdoc_options: []
113
+ require_paths:
114
+ - lib
115
+ required_ruby_version: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - ">="
118
+ - !ruby/object:Gem::Version
119
+ version: 2.2.0
120
+ required_rubygems_version: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ requirements: []
126
+ rubyforge_project:
127
+ rubygems_version: 2.4.7
128
+ signing_key:
129
+ specification_version: 4
130
+ summary: Finances Tracking
131
+ test_files: []
132
+ has_rdoc: