thefox-wallet 0.11.1 → 0.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bf365b008e5d9b802de0eb91ae0af58b6d6c0e6f
4
- data.tar.gz: 2f080b576a13d23d478444a06c923572cf3fb66e
3
+ metadata.gz: 56796aa16f66d2b8b8b7b8652e96ea8902378868
4
+ data.tar.gz: 6c0613faf7cf12813eeb2e6ba502ff465dc00d8c
5
5
  SHA512:
6
- metadata.gz: f9a52143371846aea71e3b95fca402e39402cf43241651ad96aef60ace651f69443698634c01686c91e9e81c86029c9b870226ccf3f05d049e090b671d236dd1
7
- data.tar.gz: 732497bdff090fc7adcec7533ea926cc8e0cfc3592ffc5ba66c892bb68e97f6588fd2f6d4d5e5985f894c351e57af6a44557f6048002d79713f6cb9aa05a09dc
6
+ metadata.gz: f44c9aba9e010c71ff9e33a9718d593a2d9cee845c472afc3ca079f912374e1bd7483b42fb9b1f5fa5a50835230d47fa5224c468953bdc9c40280bbbc3d82de8
7
+ data.tar.gz: 8e9dc9c815689b7accd033091b2e5228d41b05a18fc58bf2b43af5bc00f44637f292d7c6ab8a534834512219fbcf761165570784ebdc822c4397b7e02af3f626
data/.ackrc ADDED
@@ -0,0 +1,7 @@
1
+
2
+ --type=ruby
3
+ --type=yaml
4
+
5
+ --ignore-dir=coverage
6
+ --ignore-dir=tmp
7
+
data/.gitignore CHANGED
@@ -1,6 +1,7 @@
1
1
  /.bundle/
2
2
  .setup
3
3
  CHANGELOG-*.txt
4
+ /coverage/
4
5
  /bin/test
5
6
  Gemfile.lock
6
7
  /releases/
@@ -8,4 +9,4 @@ Gemfile.lock
8
9
  /wallet/
9
10
  /wallet_test/
10
11
  *.csv
11
- *.txt
12
+ *.txt
data/.travis.yml CHANGED
@@ -1,6 +1,5 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 2.0
4
3
  - 2.1
5
4
  - 2.2
6
5
  - 2.3
data/Makefile CHANGED
@@ -5,7 +5,7 @@ include Makefile.common
5
5
 
6
6
  .PHONY: test
7
7
  test:
8
- RUBYOPT=-w $(BUNDLER) exec ./tests/ts_all.rb
8
+ RUBYOPT=-w $(BUNDLER) exec ./test/suite_all.rb
9
9
 
10
10
  dev:
11
11
  RUBYOPT=-rbundler/setup ruby ./bin/wallet
data/README.md CHANGED
@@ -24,7 +24,7 @@ The preferred method of installation is via RubyGems.org:
24
24
 
25
25
  or via `Gemfile`:
26
26
 
27
- gem 'thefox-wallet', '~>0.10'
27
+ gem 'thefox-wallet', '~>0.12'
28
28
 
29
29
  Use it in your sources:
30
30
 
@@ -28,7 +28,7 @@ module TheFox::Wallet
28
28
  def run
29
29
  end
30
30
 
31
- def self.create_by_name(name, options)
31
+ def self.create_by_name(name, options = nil)
32
32
  classes = [
33
33
  AddCommand,
34
34
  ListCommand,
@@ -8,6 +8,7 @@ module TheFox::Wallet
8
8
  if @options[:entry_category].nil?
9
9
  @options[:entry_category] = 'default'
10
10
  end
11
+
11
12
  if @options[:is_interactively]
12
13
  print "title: [#{@options[:entry_title]}] "
13
14
  title_t = STDIN.gets.strip
@@ -6,26 +6,6 @@ module TheFox::Wallet
6
6
  NAME = 'csv'
7
7
 
8
8
  def run
9
- if @options[:is_interactively]
10
- vi_file = Tempfile.create('wallet-vi-import', '/tmp')
11
- vi_file.puts('# This is a comment line.')
12
- vi_file.puts('# Date,Title,Revenue,Expense,Category,Comment')
13
- vi_file.puts('# Date,Title,Expense')
14
- vi_file.puts
15
- vi_file.puts
16
- vi_file.close
17
-
18
- puts 'cwd: ' + Dir.pwd
19
- puts 'editor: ' + ENV['EDITOR']
20
- puts 'file: ' + vi_file.path
21
-
22
- system("#{ENV['EDITOR']} #{vi_file.path}")
23
- system("grep -v '#' #{vi_file.path} | grep -v ^$ > #{vi_file.path}.ok")
24
-
25
- @options[:path] = "#{vi_file.path}.ok"
26
- File.unlink(vi_file.path)
27
- end
28
-
29
9
  if @options[:path].nil?
30
10
  raise "Option --path is required for command '#{NAME}'"
31
11
  end
@@ -36,11 +16,6 @@ module TheFox::Wallet
36
16
  puts "import csv #{@options[:path]} ..."
37
17
  wallet.import_csv_file(@options[:path])
38
18
  puts "import csv #{@options[:path]} done"
39
-
40
- if @options[:is_interactively]
41
- puts "delete #{@options[:path]}"
42
- File.unlink(@options[:path])
43
- end
44
19
  elsif @options[:is_export]
45
20
  puts "export csv #{@options[:path]} ..."
46
21
  wallet.export_csv_file(@options[:path])
data/lib/wallet/entry.rb CHANGED
@@ -1,5 +1,6 @@
1
1
 
2
2
  require 'uuid'
3
+ require 'date'
3
4
 
4
5
  module TheFox
5
6
  module Wallet
@@ -56,13 +57,20 @@ module TheFox
56
57
  end
57
58
 
58
59
  def date=(date)
59
- if date.is_a?(String)
60
- # puts "date parse: '#{date}'"
60
+ # puts "class: #{date.class}"
61
+ case date
62
+ when String
63
+ # puts 'String'
61
64
  @date = Date.parse(date)
62
- elsif date.is_a?(Date)
65
+ when Fixnum
66
+ # puts 'Fixnum'
67
+ @date = Time.at(date).to_date
68
+ when Date
69
+ # puts 'Date'
63
70
  @date = date
64
71
  else
65
- raise ArgumentError, 'date must be a String or a Date instance'
72
+ # puts 'RAISE'
73
+ raise ArgumentError, "Wrong class: #{date.class}"
66
74
  end
67
75
  end
68
76
 
@@ -2,8 +2,8 @@
2
2
  module TheFox
3
3
  module Wallet
4
4
  NAME = 'Wallet'
5
- VERSION = '0.11.1'
6
- DATE = '2016-09-10'
5
+ VERSION = '0.12.1'
6
+ DATE = '2016-09-12'
7
7
  HOMEPAGE = 'https://github.com/TheFox/wallet'
8
8
  NUMBER_FORMAT = '%.2f'
9
9
  NUMBER_ROUND = 5
data/lib/wallet/wallet.rb CHANGED
@@ -1,6 +1,7 @@
1
1
 
2
2
  # Schmeisst die Fuffies durch den Club und schreit Boah Boah!
3
3
 
4
+ require 'logger'
4
5
  require 'yaml'
5
6
  require 'yaml/store'
6
7
  require 'csv'
@@ -20,6 +21,7 @@ module TheFox
20
21
 
21
22
  def initialize(dir_path = 'wallet')
22
23
  @exit = false
24
+ @log = nil
23
25
  @dir_path = dir_path
24
26
  @data_path = File.expand_path('data', @dir_path)
25
27
  @html_path = File.expand_path('html', @dir_path)
@@ -37,6 +39,10 @@ module TheFox
37
39
  end
38
40
  end
39
41
 
42
+ def log=(log)
43
+ @log = log
44
+ end
45
+
40
46
  def add(entry, is_unique = false)
41
47
  if !entry.is_a?(Entry)
42
48
  raise ArgumentError, 'variable must be a Entry instance'
@@ -86,6 +92,9 @@ module TheFox
86
92
  }
87
93
  end
88
94
 
95
+ if file['days'].is_a?(Array)
96
+ file['days'] = {}
97
+ end
89
98
  if !file['days'].has_key?(date_s)
90
99
  file['days'][date_s] = []
91
100
  end
@@ -101,6 +110,9 @@ module TheFox
101
110
  file['meta']['updated_at'] = DateTime.now.to_s
102
111
  end
103
112
 
113
+ if file['days'].is_a?(Array)
114
+ file['days'] = {}
115
+ end
104
116
  if !file['days'].has_key?(date_s)
105
117
  file['days'][date_s] = []
106
118
  end
@@ -827,8 +839,10 @@ module TheFox
827
839
  !find_entry_by_id(entry.id).nil?
828
840
  end
829
841
 
830
- def find_entry_by_id(id)
831
- if @entries_by_ids.nil?
842
+ def build_entry_by_id_index(force = false)
843
+ if @entries_by_ids.nil? || force
844
+ @log.debug('build entry-by-id index') if @log
845
+
832
846
  glob = File.expand_path('month_*.yml', @data_path)
833
847
 
834
848
  @entries_by_ids = Dir[glob].map { |file_path|
@@ -844,6 +858,10 @@ module TheFox
844
858
 
845
859
  # pp @entries_by_ids
846
860
  end
861
+ end
862
+
863
+ def find_entry_by_id(id)
864
+ build_entry_by_id_index
847
865
 
848
866
  @entries_by_ids[id]
849
867
  end
@@ -21,9 +21,10 @@ Gem::Specification.new do |spec|
21
21
  spec.bindir = 'bin'
22
22
  spec.executables = ['wallet']
23
23
  spec.require_paths = ['lib']
24
- spec.required_ruby_version = '>=2.0.0'
24
+ spec.required_ruby_version = '>=2.1.0'
25
25
 
26
26
  spec.add_development_dependency 'minitest', '~>5.7'
27
+ spec.add_development_dependency 'simplecov', '~>0.12'
27
28
 
28
29
  spec.add_dependency 'uuid', '~>2.3'
29
30
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: thefox-wallet
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.1
4
+ version: 0.12.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christian Mayer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-09-10 00:00:00.000000000 Z
11
+ date: 2016-09-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '5.7'
27
+ - !ruby/object:Gem::Dependency
28
+ name: simplecov
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0.12'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0.12'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: uuid
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -45,6 +59,7 @@ executables:
45
59
  extensions: []
46
60
  extra_rdoc_files: []
47
61
  files:
62
+ - ".ackrc"
48
63
  - ".editorconfig"
49
64
  - ".gitignore"
50
65
  - ".travis.yml"
@@ -64,10 +79,6 @@ files:
64
79
  - lib/wallet/entry.rb
65
80
  - lib/wallet/version.rb
66
81
  - lib/wallet/wallet.rb
67
- - tests/tc_command_add.rb
68
- - tests/tc_entry.rb
69
- - tests/tc_wallet.rb
70
- - tests/ts_all.rb
71
82
  - thefox-wallet.gemspec
72
83
  - wallet.sublime-project
73
84
  homepage: https://github.com/TheFox/wallet
@@ -82,7 +93,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
82
93
  requirements:
83
94
  - - ">="
84
95
  - !ruby/object:Gem::Version
85
- version: 2.0.0
96
+ version: 2.1.0
86
97
  required_rubygems_version: !ruby/object:Gem::Requirement
87
98
  requirements:
88
99
  - - ">="
@@ -1,63 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'minitest/autorun'
4
- require 'wallet'
5
-
6
-
7
- class TestAddCommand < MiniTest::Test
8
-
9
- include TheFox::Wallet
10
-
11
- def test_revenue
12
- cmd = AddCommand.new
13
-
14
- # String
15
- assert_equal(nil, cmd.revenue(nil))
16
- assert_equal(nil, cmd.revenue(''))
17
- assert_equal(21.0, cmd.revenue('21'))
18
- assert_equal(21.0, cmd.revenue(' 21 '))
19
-
20
- # Negative
21
- assert_equal(21.0, cmd.revenue('-21'))
22
-
23
- # Float
24
- assert_equal(21.2, cmd.revenue('21.2'))
25
- assert_equal(21.2, cmd.revenue('21.20'))
26
- assert_equal(21.87, cmd.revenue('21.87'))
27
-
28
- # Calc
29
- assert_equal(16, cmd.revenue('21-5'))
30
- assert_equal(15.8, cmd.revenue('21.7-5.9'))
31
- assert_equal(14.8, cmd.revenue('22,7-7,9'))
32
- assert_equal(29, cmd.revenue('21-50'))
33
- assert_equal(0.1, cmd.revenue('0,1-0,2'))
34
- assert_equal(0.0, cmd.revenue('0,1-0,1'))
35
- end
36
-
37
- def test_expense
38
- cmd = AddCommand.new
39
-
40
- # String
41
- assert_equal(nil, cmd.expense(nil))
42
- assert_equal(nil, cmd.expense(''))
43
- assert_equal(-21.0, cmd.expense('21'))
44
- assert_equal(-21.0, cmd.expense(' 21 '))
45
-
46
- # Positive
47
- assert_equal(-21.0, cmd.expense('-21'))
48
- assert_equal(-21.0, cmd.expense('21'))
49
-
50
- # Float
51
- assert_equal(-21.2, cmd.expense('21.2'))
52
- assert_equal(-21.2, cmd.expense('21.20'))
53
- assert_equal(-21.87, cmd.expense('21.87'))
54
-
55
- # Calc
56
- assert_equal(-16, cmd.expense('21-5'))
57
- assert_equal(-15.8, cmd.expense('21.7-5.9'))
58
- assert_equal(-14.8, cmd.expense('22,7-7,9'))
59
- assert_equal(-29, cmd.expense('21-50'))
60
- assert_equal(-0.1, cmd.expense('0,1-0,2'))
61
- assert_equal(0.0, cmd.expense('0,1-0,1'))
62
- end
63
- end
data/tests/tc_entry.rb DELETED
@@ -1,140 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'minitest/autorun'
4
- require 'wallet'
5
-
6
-
7
- class TestEntry < MiniTest::Test
8
-
9
- include TheFox::Wallet
10
-
11
- def test_base
12
- entry = Entry.new
13
-
14
- assert_equal('TheFox::Wallet::Entry', entry.class.to_s)
15
- end
16
-
17
- def test_set_title
18
- entry = Entry.new(nil, 'test1')
19
- assert_equal('test1', entry.title)
20
-
21
- entry.title = 'test2'
22
- assert_equal('test2', entry.title)
23
- end
24
-
25
- def test_set_date
26
- now = Date.today
27
-
28
- entry = Entry.new
29
- assert_equal('Date', entry.date.class.to_s)
30
- assert_equal(now.to_s, entry.date.to_s)
31
-
32
- entry = Entry.new(nil, 'test', '2015-02-21')
33
- assert_equal('Date', entry.date.class.to_s)
34
- assert_equal('2015-02-21', entry.date.to_s)
35
-
36
- entry.date = '2015-01-01'
37
- assert_equal('2015-01-01', entry.date.to_s)
38
-
39
- entry = Entry.new(nil, 'test', '2014-2-21')
40
- assert_equal('2014-02-21', entry.date.to_s)
41
-
42
- entry.date = '2013-1-1'
43
- assert_equal('2013-01-01', entry.date.to_s)
44
-
45
- entry = Entry.new(nil, 'test', Date.parse('2015-01-02'))
46
- assert_equal('2015-01-02', entry.date.to_s)
47
-
48
- entry = Entry.new
49
- entry.date = Date.today
50
- assert_equal(now.to_s, entry.date.to_s)
51
-
52
- assert_raises(ArgumentError){ entry.date = 12 }
53
- assert_raises(ArgumentError){ entry.date = '2014-4-31' }
54
- end
55
-
56
- def test_set_revenue_expense
57
- entry = Entry.new
58
- assert_equal(0, entry.revenue)
59
- assert_equal(0, entry.expense)
60
-
61
- entry = Entry.new(nil, 'test', '2015-02-21', 20)
62
- assert_equal(20, entry.revenue)
63
- assert_equal(0, entry.expense)
64
- assert_equal(20, entry.balance)
65
-
66
- entry = Entry.new(nil, 'test', '2015-02-21', '20', '-21')
67
- assert_equal(20, entry.revenue)
68
- assert_equal(-21, entry.expense)
69
- assert_equal(-1, entry.balance)
70
-
71
- entry.revenue = 24
72
- entry.expense = -25
73
- assert_equal(24, entry.revenue)
74
- assert_equal(-25, entry.expense)
75
- assert_equal(-1, entry.balance)
76
-
77
- entry.revenue = 1.01
78
- entry.expense = -1.02
79
- assert_equal(1.01, entry.revenue)
80
- assert_equal(-1.02, entry.expense)
81
- assert_equal(-0.01, entry.balance)
82
-
83
- entry.revenue = 1
84
- entry.expense = -2.02
85
- assert_equal(1, entry.revenue)
86
- assert_equal(-2.02, entry.expense)
87
- assert_equal(-1.02, entry.balance)
88
-
89
- entry = Entry.new(nil, 'test', '2015-02-21', -42)
90
- assert_equal(0, entry.revenue)
91
- assert_equal(-42, entry.expense)
92
- assert_equal(-42, entry.balance)
93
-
94
- entry = Entry.new(nil, 'test', '2015-02-21', -30.03)
95
- assert_equal(0, entry.revenue)
96
- assert_equal(-30.03, entry.expense)
97
- assert_equal(-30.03, entry.balance)
98
-
99
- entry.revenue = 'string1'
100
- assert_equal(0, entry.revenue)
101
-
102
- entry.expense = 'string1'
103
- assert_equal(0, entry.expense)
104
-
105
- assert_raises(RangeError){ entry.revenue = -1.23 }
106
- assert_raises(RangeError){ entry.expense = 1.23 }
107
- end
108
-
109
- def test_set_category
110
- entry = Entry.new(nil, 'test', '2015-02-21', 20, 0, 'c1')
111
- assert_equal('c1', entry.category)
112
-
113
- entry.category = 'c2'
114
- assert_equal('c2', entry.category)
115
-
116
- entry.category = 1.23
117
- assert_equal('1.23', entry.category)
118
- end
119
-
120
- def test_set_comment
121
- entry = Entry.new(nil, 'test', '2015-02-21', 20, 0, 'c1', 'co1')
122
- assert_equal('co1', entry.comment)
123
-
124
- entry.comment = 'co2'
125
- assert_equal('co2', entry.comment)
126
-
127
- entry.comment = 1.23
128
- assert_equal('1.23', entry.comment)
129
- end
130
-
131
- def test_to_hash
132
- entry = Entry.new(nil, 'test', '2015-02-21', 20, -12.34, 'c3')
133
-
134
- assert_equal('2015-02-21', entry.to_h['date'].to_s)
135
- assert_equal(20, entry.to_h['revenue'])
136
- assert_equal(-12.34, entry.to_h['expense'])
137
- assert_equal(7.66, entry.to_h['balance'])
138
- assert_equal('c3', entry.to_h['category'])
139
- end
140
- end
data/tests/tc_wallet.rb DELETED
@@ -1,236 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'minitest/autorun'
4
- require 'fileutils'
5
- require 'wallet'
6
-
7
-
8
- class TestWallet < MiniTest::Test
9
-
10
- include TheFox::Wallet
11
-
12
- def test_that_it_has_a_version_number
13
- refute_nil(::TheFox::Wallet::VERSION)
14
- end
15
-
16
- def test_base
17
- wallet = Wallet.new('wallet_test')
18
-
19
- assert_equal('TheFox::Wallet::Wallet', wallet.class.to_s)
20
- assert_equal(true, !Dir.exist?('wallet_test'))
21
- end
22
-
23
- def test_add1
24
- wallet = Wallet.new('wallet_test')
25
-
26
- wallet.add(Entry.new(nil, 'test', '2014-01-01', 100))
27
- wallet.add(Entry.new(nil, 'test', '2014-01-01', 50))
28
- wallet.add(Entry.new(nil, 'test', '2014-01-01', -10))
29
- wallet.add(Entry.new(nil, 'test', '2014-01-02', -10))
30
- wallet.add(Entry.new(nil, 'test', '2015-01-01', 100, 0, 'c1'))
31
- wallet.add(Entry.new(nil, 'test', '2015-01-02', 0, -10, 'c2'))
32
- wallet.add(Entry.new(nil, 'test', '2015-02-21', 20))
33
- wallet.add(Entry.new(nil, 'test', '2015-02-21', 0, -5, 'c1'))
34
- wallet.add(Entry.new(nil, 'test', '2015-02-21', 0, -1.5, 'c2'))
35
- wallet.add(Entry.new(nil, 'test', '2015-02-22', 10))
36
-
37
- sum = wallet.sum
38
- assert_equal(280, sum[:revenue])
39
- assert_equal(-36.5, sum[:expense])
40
- assert_equal(243.5, sum[:balance])
41
-
42
- sum = wallet.sum(2014)
43
- assert_equal(150, sum[:revenue])
44
- assert_equal(-20, sum[:expense])
45
- assert_equal(130, sum[:balance])
46
-
47
- sum = wallet.sum(2014, 1)
48
- assert_equal(150, sum[:revenue])
49
- assert_equal(-20, sum[:expense])
50
- assert_equal(130, sum[:balance])
51
-
52
- sum = wallet.sum(2014, 1, 1)
53
- assert_equal(150, sum[:revenue])
54
- assert_equal(-10, sum[:expense])
55
- assert_equal(140, sum[:balance])
56
-
57
- sum = wallet.sum(2015)
58
- assert_equal(130, sum[:revenue])
59
- assert_equal(-16.5, sum[:expense])
60
- assert_equal(113.5, sum[:balance])
61
-
62
- sum = wallet.sum(2015, 1)
63
- assert_equal(100, sum[:revenue])
64
- assert_equal(-10, sum[:expense])
65
- assert_equal(90, sum[:balance])
66
-
67
- sum = wallet.sum(2015, 2)
68
- assert_equal(30, sum[:revenue])
69
- assert_equal(-6.5, sum[:expense])
70
- assert_equal(23.5, sum[:balance])
71
-
72
- sum = wallet.sum(2015, 2, 21)
73
- assert_equal(20, sum[:revenue])
74
- assert_equal(-6.5, sum[:expense])
75
- assert_equal(13.5, sum[:balance])
76
-
77
- sum = wallet.sum(2015, 2, 22)
78
- assert_equal(10, sum[:revenue])
79
- assert_equal(0, sum[:expense])
80
- assert_equal(10, sum[:balance])
81
-
82
- sum = wallet.sum(nil, nil, nil, 'c1')
83
- assert_equal(100, sum[:revenue])
84
- assert_equal(-5, sum[:expense])
85
- assert_equal(95, sum[:balance])
86
-
87
- sum = wallet.sum(2014, nil, nil, 'c1')
88
- assert_equal(0, sum[:revenue])
89
- assert_equal(0, sum[:expense])
90
- assert_equal(0, sum[:balance])
91
-
92
- sum = wallet.sum(2014, 1, nil, 'c1')
93
- assert_equal(0, sum[:revenue])
94
- assert_equal(0, sum[:expense])
95
- assert_equal(0, sum[:balance])
96
-
97
- sum = wallet.sum(2014, 1, 1, 'c1')
98
- assert_equal(0, sum[:revenue])
99
- assert_equal(0, sum[:expense])
100
- assert_equal(0, sum[:balance])
101
-
102
- sum = wallet.sum(2015, nil, nil, 'c1')
103
- assert_equal(100, sum[:revenue])
104
- assert_equal(-5, sum[:expense])
105
- assert_equal(95, sum[:balance])
106
-
107
- sum = wallet.sum(2015, 1, nil, 'c1')
108
- assert_equal(100, sum[:revenue])
109
- assert_equal(0, sum[:expense])
110
- assert_equal(100, sum[:balance])
111
-
112
- sum = wallet.sum(2015, 1, 1, 'c1')
113
- assert_equal(100, sum[:revenue])
114
- assert_equal(0, sum[:expense])
115
- assert_equal(100, sum[:balance])
116
-
117
- sum = wallet.sum(2015, 2, nil, 'c1')
118
- assert_equal(0, sum[:revenue])
119
- assert_equal(-5, sum[:expense])
120
- assert_equal(-5, sum[:balance])
121
-
122
- sum = wallet.sum(2015, 2, 1, 'c1')
123
- assert_equal(0, sum[:revenue])
124
- assert_equal(0, sum[:expense])
125
- assert_equal(0, sum[:balance])
126
-
127
- sum = wallet.sum(2015, 2, 21, 'c1')
128
- assert_equal(0, sum[:revenue])
129
- assert_equal(-5, sum[:expense])
130
- assert_equal(-5, sum[:balance])
131
-
132
- sum = wallet.sum(nil, nil, nil, 'c2')
133
- assert_equal(0, sum[:revenue])
134
- assert_equal(-11.5, sum[:expense])
135
- assert_equal(-11.5, sum[:balance])
136
-
137
- sum = wallet.sum(2014, nil, nil, 'c2')
138
- assert_equal(0, sum[:revenue])
139
- assert_equal(0, sum[:expense])
140
- assert_equal(0, sum[:balance])
141
-
142
- sum = wallet.sum(2014, 1, nil, 'c2')
143
- assert_equal(0, sum[:revenue])
144
- assert_equal(0, sum[:expense])
145
- assert_equal(0, sum[:balance])
146
-
147
- sum = wallet.sum(2014, 1, 1, 'c2')
148
- assert_equal(0, sum[:revenue])
149
- assert_equal(0, sum[:expense])
150
- assert_equal(0, sum[:balance])
151
-
152
- sum = wallet.sum(2015, nil, nil, 'c2')
153
- assert_equal(0, sum[:revenue])
154
- assert_equal(-11.5, sum[:expense])
155
- assert_equal(-11.5, sum[:balance])
156
-
157
- sum = wallet.sum(2015, 1, nil, 'c2')
158
- assert_equal(0, sum[:revenue])
159
- assert_equal(-10, sum[:expense])
160
- assert_equal(-10, sum[:balance])
161
-
162
- sum = wallet.sum(2015, 1, 1, 'c2')
163
- assert_equal(0, sum[:revenue])
164
- assert_equal(0, sum[:expense])
165
- assert_equal(0, sum[:balance])
166
-
167
- sum = wallet.sum(2015, 2, nil, 'c2')
168
- assert_equal(0, sum[:revenue])
169
- assert_equal(-1.5, sum[:expense])
170
- assert_equal(-1.5, sum[:balance])
171
-
172
- sum = wallet.sum(2015, 2, 1, 'c2')
173
- assert_equal(0, sum[:revenue])
174
- assert_equal(0, sum[:expense])
175
- assert_equal(0, sum[:balance])
176
-
177
- sum = wallet.sum(2015, 2, 21, 'c2')
178
- assert_equal(0, sum[:revenue])
179
- assert_equal(-1.5, sum[:expense])
180
- assert_equal(-1.5, sum[:balance])
181
-
182
- assert_equal(['default', 'c1', 'c2'], wallet.categories)
183
- end
184
-
185
- def test_add2
186
- wallet = Wallet.new('wallet_test')
187
-
188
- assert_equal(true, wallet.add(Entry.new(nil, 'test', '2014-01-01', 1)))
189
- assert_equal(true, wallet.add(Entry.new(nil, 'test', '2014-01-01', 1), true))
190
-
191
- assert_equal(true, wallet.add(Entry.new(1, 'test', '2014-01-01', 1), true))
192
- assert_equal(false, wallet.add(Entry.new(1, 'test', '2014-01-01', 1), true))
193
-
194
- assert_equal(true, wallet.add(Entry.new('my_id', 'test', '2014-01-01', 1), true))
195
- assert_equal(false, wallet.add(Entry.new('my_id', 'test', '2014-01-01', 1), true))
196
- assert_equal(true, wallet.add(Entry.new('my_id', 'test', '2014-01-01', 1), false))
197
- end
198
-
199
- def test_exceptions
200
- wallet = Wallet.new('wallet_test')
201
-
202
- assert_raises(ArgumentError) do
203
- wallet.add(12)
204
- end
205
- end
206
-
207
- def test_find_entry_by_id
208
- wallet = Wallet.new('wallet_test')
209
-
210
- wallet.add(Entry.new(nil, 'test', '2014-01-01', -1))
211
- wallet.add(Entry.new(1, 'test', '2014-01-01', 1))
212
- wallet.add(Entry.new(2, 'test', '2014-01-02', 2))
213
- wallet.add(Entry.new(3, 'test', '2015-03-04', 3))
214
-
215
- found_entry = wallet.find_entry_by_id(1)
216
- assert_instance_of(Entry, found_entry)
217
- assert_equal(1, found_entry.id)
218
-
219
- found_entry = wallet.find_entry_by_id(2)
220
- assert_instance_of(Entry, found_entry)
221
- assert_equal(2, found_entry.id)
222
-
223
- found_entry = wallet.find_entry_by_id(3)
224
- assert_instance_of(Entry, found_entry)
225
- assert_equal(3, found_entry.id)
226
-
227
- assert_nil(wallet.find_entry_by_id(4))
228
- assert_nil(wallet.find_entry_by_id(5))
229
- assert_nil(wallet.find_entry_by_id(6))
230
- end
231
-
232
- def teardown
233
- FileUtils.rm_r('wallet_test', {:force => true})
234
- end
235
-
236
- end
data/tests/ts_all.rb DELETED
@@ -1,5 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require_relative 'tc_wallet'
4
- require_relative 'tc_entry'
5
- require_relative 'tc_command_add'