roth_ira 1.2.1 → 1.2.2

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
- SHA1:
3
- metadata.gz: 4209f2102ebc933fee5d0e0d6b3c8ccc37884b8b
4
- data.tar.gz: 9bac372e285a229dbffed6624f3ba9749487feab
2
+ SHA256:
3
+ metadata.gz: 3b4d9573d6efb1ff7aad5b46461054344c6342f1fa18c691841028864b747195
4
+ data.tar.gz: 48cabe6645d77f44bf21fb1e4c7db03221da2bd6f299cb5d1e20cb4bd3540ee7
5
5
  SHA512:
6
- metadata.gz: 0fc85a36f9aa8043c8e8caf25f7280a1fa54780a612d5c8c6cf5871286bd202f9052299bfe7d5814e5467ed9352a8aaea54db75715cf79b544f098cba4576b69
7
- data.tar.gz: 57df9b0da8afc23a1d106c40ebe972d52ca03f84b842d51a986be8d2ce4456a826dc9cfc1484792907e2bf8c964488c8b432aa96ad9fdb35fd039a75d4b65126
6
+ metadata.gz: 100d3e11c09f6692361a64c58c350dc46f63e6de946c014e184d088795d0131c42b097f4a67e181101611a5f83ed1a668e53b53a8554a4f3ec69650e81c8dd35
7
+ data.tar.gz: 0bfc00ffc4b1b02c0c0d0ea1557c0b791185a053f39d1fa99201a1acb5ebba3f3484bce7f7893e8d0c8abbcf5ed9ba3981e5c6a79004623d337e16138fead47b
@@ -71,3 +71,21 @@
71
71
  :minimum_phase_out: 400
72
72
  :catch_up_contribution: 1000
73
73
  :catch_up_age: 50
74
+ 2019:
75
+ :single:
76
+ :lower_income_limit: 122000
77
+ :upper_income_limit: 137000
78
+ :contribution_limit: 6000
79
+ :minimum_phase_out: 200
80
+ :head_of_household:
81
+ :lower_income_limit: 122000
82
+ :upper_income_limit: 137000
83
+ :contribution_limit: 6000
84
+ :minimum_phase_out: 200
85
+ :married_filing_jointly:
86
+ :lower_income_limit: 193000
87
+ :upper_income_limit: 203000
88
+ :contribution_limit: 12000
89
+ :minimum_phase_out: 400
90
+ :catch_up_contribution: 1000
91
+ :catch_up_age: 50
@@ -4,7 +4,7 @@ class RothIRA
4
4
  attr_reader :age, :agi, :filing_status, :limits, :spouse_age, :year
5
5
 
6
6
  def initialize(year)
7
- raise(ArgumentError, "Invalid Tax Year #{year}") unless year.between?(2015, 2018)
7
+ raise(ArgumentError, "Invalid Tax Year #{year}") unless year.between?(2015, 2019)
8
8
  @year = year
9
9
  @limits = YAML.load(File.read(__dir__ + "/limits.yaml"))[year]
10
10
  end
@@ -1,3 +1,3 @@
1
1
  class RothIRA
2
- VERSION = '1.2.1'
2
+ VERSION = '1.2.2'
3
3
  end
@@ -2,7 +2,7 @@ require 'spec_helper'
2
2
 
3
3
  describe RothIRA do
4
4
  it 'should return correct version string' do
5
- expect(RothIRA::VERSION).to eq('1.2.1')
5
+ expect(RothIRA::VERSION).to eq('1.2.2')
6
6
  end
7
7
 
8
8
  context 'Invalid tax years' do
@@ -10,8 +10,8 @@ describe RothIRA do
10
10
  expect{RothIRA.new(2014)}.to raise_error ArgumentError
11
11
  end
12
12
 
13
- it 'should raise an ArgumentError if tax year is after 2018' do
14
- expect{RothIRA.new(2019)}.to raise_error ArgumentError
13
+ it 'should raise an ArgumentError if tax year is after 2019' do
14
+ expect{RothIRA.new(2020)}.to raise_error ArgumentError
15
15
  end
16
16
  end
17
17
 
@@ -20,8 +20,8 @@ describe RothIRA do
20
20
  expect{RothIRA.new(2015)}.to_not raise_error
21
21
  end
22
22
 
23
- it 'should not raise an ArgumentError if tax year is 2018' do
24
- expect{RothIRA.new(2018)}.to_not raise_error
23
+ it 'should not raise an ArgumentError if tax year is 2019' do
24
+ expect{RothIRA.new(2019)}.to_not raise_error
25
25
  end
26
26
  end
27
27
 
@@ -282,7 +282,7 @@ describe RothIRA do
282
282
  expect(roth_ira.calculate(133000, :single, 40)).to eq(0)
283
283
  end
284
284
 
285
- it 'returns maximum contribution for bottom of income limit with catch-up' do
285
+ it 'returns zero contribution for top of income limit with catch-up' do
286
286
  expect(roth_ira.calculate(133000, :single, 50)).to eq(0)
287
287
  end
288
288
  end
@@ -322,11 +322,11 @@ describe RothIRA do
322
322
  expect(roth_ira.calculate(196000, :married_filing_jointly, 40, 40)).to eq(0)
323
323
  end
324
324
 
325
- it 'returns maximum contribution for bottom of income limit with one catch-up' do
325
+ it 'returns zero contribution for top of income limit with one catch-up' do
326
326
  expect(roth_ira.calculate(196000, :married_filing_jointly, 40, 50)).to eq(0)
327
327
  end
328
328
 
329
- it 'returns maximum contribution for bottom of income limit with both catch-up' do
329
+ it 'returns zero contribution for top of income limit with both catch-up' do
330
330
  expect(roth_ira.calculate(196000, :married_filing_jointly, 50, 50)).to eq(0)
331
331
  end
332
332
  end
@@ -347,7 +347,7 @@ describe RothIRA do
347
347
  expect(roth_ira.calculate(135000, :single, 40)).to eq(0)
348
348
  end
349
349
 
350
- it 'returns maximum contribution for bottom of income limit with catch-up' do
350
+ it 'returns zero contribution for top of income limit with catch-up' do
351
351
  expect(roth_ira.calculate(135000, :single, 50)).to eq(0)
352
352
  end
353
353
  end
@@ -387,13 +387,78 @@ describe RothIRA do
387
387
  expect(roth_ira.calculate(199000, :married_filing_jointly, 40, 40)).to eq(0)
388
388
  end
389
389
 
390
- it 'returns maximum contribution for bottom of income limit with one catch-up' do
390
+ it 'returns zero contribution for top of income limit with one catch-up' do
391
391
  expect(roth_ira.calculate(199000, :married_filing_jointly, 40, 50)).to eq(0)
392
392
  end
393
393
 
394
- it 'returns maximum contribution for bottom of income limit with both catch-up' do
394
+ it 'returns zero contribution for top of income limit with both catch-up' do
395
395
  expect(roth_ira.calculate(199000, :married_filing_jointly, 50, 50)).to eq(0)
396
396
  end
397
397
  end
398
398
  end
399
+
400
+ context 'Tax year 2019' do
401
+ let(:roth_ira) { RothIRA.new(2019) }
402
+ context 'Single' do
403
+ it 'returns maximum contribution for bottom of income limit' do
404
+ expect(roth_ira.calculate(122000, :single, 40)).to eq(6000)
405
+ end
406
+
407
+ it 'returns maximum contribution for bottom of income limit with catch-up' do
408
+ expect(roth_ira.calculate(122000, :single, 50)).to eq(7000)
409
+ end
410
+
411
+ it 'returns zero contribution for top of income limit' do
412
+ expect(roth_ira.calculate(137000, :single, 40)).to eq(0)
413
+ end
414
+
415
+ it 'returns zero contribution for top of income limit with catch-up' do
416
+ expect(roth_ira.calculate(137000, :single, 50)).to eq(0)
417
+ end
418
+ end
419
+
420
+ context 'Head of Household' do
421
+ it 'returns maximum contribution for bottom of income limit' do
422
+ expect(roth_ira.calculate(122000, :head_of_household, 40)).to eq(6000)
423
+ end
424
+
425
+ it 'returns maximum contribution for bottom of income limit with catch-up' do
426
+ expect(roth_ira.calculate(122000, :head_of_household, 50)).to eq(7000)
427
+ end
428
+
429
+ it 'returns zero contribution for top of income limit' do
430
+ expect(roth_ira.calculate(137000, :head_of_household, 40)).to eq(0)
431
+ end
432
+
433
+ it 'returns maximum contribution for bottom of income limit with catch-up' do
434
+ expect(roth_ira.calculate(137000, :head_of_household, 50)).to eq(0)
435
+ end
436
+ end
437
+
438
+ context 'Married Filing Jointly' do
439
+ it 'returns maximum contribution for bottom of income limit' do
440
+ expect(roth_ira.calculate(193000, :married_filing_jointly, 40, 40)).to eq(12000)
441
+ end
442
+
443
+ it 'returns maximum contribution for bottom of income limit with one catch-up' do
444
+ expect(roth_ira.calculate(193000, :married_filing_jointly, 40, 50)).to eq(13000)
445
+ end
446
+
447
+ it 'returns maximum contribution for bottom of income limit with both catch-up' do
448
+ expect(roth_ira.calculate(193000, :married_filing_jointly, 50, 50)).to eq(14000)
449
+ end
450
+
451
+ it 'returns zero contribution for top of income limit' do
452
+ expect(roth_ira.calculate(203000, :married_filing_jointly, 40, 40)).to eq(0)
453
+ end
454
+
455
+ it 'returns zero contribution for top of income limit with one catch-up' do
456
+ expect(roth_ira.calculate(203000, :married_filing_jointly, 40, 50)).to eq(0)
457
+ end
458
+
459
+ it 'returns zero contribution for top of income limit with both catch-up' do
460
+ expect(roth_ira.calculate(203000, :married_filing_jointly, 50, 50)).to eq(0)
461
+ end
462
+ end
463
+ end
399
464
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: roth_ira
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.1
4
+ version: 1.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Randall Reed
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-11-13 00:00:00.000000000 Z
11
+ date: 2018-10-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -57,10 +57,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
57
57
  version: '0'
58
58
  requirements: []
59
59
  rubyforge_project:
60
- rubygems_version: 2.6.11
60
+ rubygems_version: 2.7.7
61
61
  signing_key:
62
62
  specification_version: 4
63
63
  summary: Roth IRA Contribution Limit Calculator
64
64
  test_files:
65
- - spec/roth_ira_spec.rb
66
65
  - spec/spec_helper.rb
66
+ - spec/roth_ira_spec.rb