thefox-wallet 0.11.1 → 0.12.1

Sign up to get free protection for your applications and to get access to all the features.
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'