campaign_cash 2.3.2 → 2.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,57 +1,59 @@
1
1
  module CampaignCash
2
2
  class IndependentExpenditure < Base
3
-
4
- attr_reader :committee, :district, :state, :committee_name, :purpose, :candidate, :candidate_name, :support_or_oppose, :date, :amount, :office, :amendment, :date_received, :payee, :fec_uri, :transaction_id, :unique_id, :filing_id, :amended_from
5
-
3
+
4
+ attr_reader :committee, :district, :state, :committee_name, :purpose, :candidate, :candidate_name,
5
+ :support_or_oppose, :date, :amount, :office, :amendment, :date_received, :payee, :fec_uri,
6
+ :transaction_id, :unique_id, :filing_id, :amended_from
7
+
6
8
  def initialize(params={})
7
9
  params.each_pair do |k,v|
8
10
  instance_variable_set("@#{k}", v)
9
11
  end
10
12
  end
11
-
13
+
12
14
  def self.create(params={})
13
15
  self.new :committee => parse_committee(params['fec_committee']),
14
- :committee_name => params['fec_committee_name'],
15
- :candidate => parse_candidate(params['fec_candidate']),
16
- :office => params['office'],
17
- :state => params['state'] ? params['state'].strip : nil,
18
- :district => params['district'],
19
- :date => date_parser(params['date']),
20
- :support_or_oppose => params['support_or_oppose'],
21
- :payee => params['payee'],
22
- :purpose => params['purpose'],
23
- :amount => params['amount'],
24
- :fec_uri => params['fec_uri'],
25
- :date_received => date_parser(params['date_received']),
26
- :amendment => params['amendment'],
27
- :transaction_id => params['transaction_id'],
28
- :candidate_name => params['candidate_name'],
29
- :filing_id => params['filing_id'],
30
- :amended_from => params['amended_from'], # <= original filing ID will be nil if amendment is false
31
- # unique_id is a SHA1 of filing_id and transaction_id
32
- # If the expenditure is amended, the unique_id will be amended_from + transaction_id
33
- # so it can be used as an overrideable unique key
34
- :unique_id => params['unique_id']
16
+ :committee_name => params['fec_committee_name'],
17
+ :candidate => parse_candidate(params['fec_candidate']),
18
+ :office => params['office'],
19
+ :state => params['state'] ? params['state'].strip : nil,
20
+ :district => params['district'],
21
+ :date => date_parser(params['date']),
22
+ :support_or_oppose => params['support_or_oppose'],
23
+ :payee => params['payee'],
24
+ :purpose => params['purpose'],
25
+ :amount => params['amount'].to_f,
26
+ :fec_uri => params['fec_uri'],
27
+ :date_received => date_parser(params['date_received']),
28
+ :amendment => params['amendment'],
29
+ :transaction_id => params['transaction_id'],
30
+ :candidate_name => params['candidate_name'],
31
+ :filing_id => params['filing_id'].to_i,
32
+ :amended_from => params['amended_from'], # <= original filing ID will be nil if amendment is false
33
+ # unique_id is a SHA1 of filing_id and transaction_id
34
+ # If the expenditure is amended, the unique_id will be amended_from + transaction_id
35
+ # so it can be used as an overrideable unique key
36
+ :unique_id => params['unique_id']
35
37
  end
36
-
38
+
37
39
  def self.latest(offset=nil)
38
40
  reply = Base.invoke("#{Base::CURRENT_CYCLE}/independent_expenditures",{:offset => offset})
39
41
  results = reply['results']
40
42
  results.map{|c| IndependentExpenditure.create(c)}
41
43
  end
42
-
44
+
43
45
  def self.date(date,offset=nil)
44
46
  d = Date.strptime(date, '%m/%d/%Y')
45
47
  cycle = cycle_from_date(d)
46
48
  reply = Base.invoke("#{cycle}/independent_expenditures/#{d.year}/#{d.month}/#{d.day}", {:offset => offset})
47
- results = reply['results']
49
+ results = reply['results']
48
50
  results.map{|c| IndependentExpenditure.create(c)}
49
51
  end
50
-
52
+
51
53
  def self.committee(id, cycle, offset=nil)
52
54
  independent_expenditures = []
53
55
  reply = Base.invoke("#{cycle}/committees/#{id}/independent_expenditures",{:offset => offset})
54
- results = reply['results']
56
+ results = reply['results']
55
57
  comm = reply['fec_committee']
56
58
  results.each do |result|
57
59
  result['fec_committee'] = comm
@@ -59,11 +61,11 @@ module CampaignCash
59
61
  end
60
62
  independent_expenditures
61
63
  end
62
-
64
+
63
65
  def self.candidate(id, cycle, offset=nil)
64
66
  independent_expenditures = []
65
67
  reply = Base.invoke("#{cycle}/candidates/#{id}/independent_expenditures",{:offset => offset})
66
- results = reply['results']
68
+ results = reply['results']
67
69
  cand = reply['fec_candidate']
68
70
  results.each do |result|
69
71
  result['fec_candidate'] = cand
@@ -71,12 +73,12 @@ module CampaignCash
71
73
  end
72
74
  independent_expenditures
73
75
  end
74
-
76
+
75
77
  def self.president(cycle=CURRENT_CYCLE,offset=nil)
76
78
  reply = Base.invoke("#{cycle}/president/independent_expenditures",{:offset => offset})
77
79
  results = reply['results']
78
80
  results.map{|c| IndependentExpenditure.create(c)}
79
81
  end
80
-
82
+
81
83
  end
82
- end
84
+ end
@@ -1,35 +1,35 @@
1
1
  module CampaignCash
2
2
  class IndividualContribution < Base
3
-
3
+
4
4
  attr_reader :zip5, :system_code, :occupation, :conduit_zip, :conduit_address_two, :city, :zip, :increased_limit, :donor_candidate, :conduit_name, :conduit_city, :prefix, :memo_text, :back_ref_tran_id, :aggregate_amount, :filing_id, :donor_office, :back_ref_sched_name, :address_two, :pac_name, :exclude, :conduit_address_one, :amount, :transaction_type, :lng, :flag_orgind, :date, :fec_form_type, :donor_state, :donor_cand_id, :last_name, :full_name, :employer, :donor_district, :conduit_state, :address_one, :tran_id, :suffix, :donor_cmte_id, :display_name, :transaction_description, :prigen, :memo_code, :linenumber, :lat, :amended_cd, :state, :middle_name, :first_name
5
-
5
+
6
6
  def initialize(params={})
7
7
  params.each_pair do |k,v|
8
8
  instance_variable_set("@#{k}", v)
9
9
  end
10
10
  end
11
-
11
+
12
12
  def self.create(params={})
13
13
  self.new(params)
14
14
  end
15
-
15
+
16
16
  def self.committee(fecid, offset=nil)
17
17
  cycle = CURRENT_CYCLE
18
18
  results = invoke("#{cycle}/contributions/committee/#{fecid}", {:offset => offset})['results']
19
- results.map{|c| IndividualContribution.create(c) }
19
+ results.map{|c| IndividualContribution.create(c) }
20
20
  end
21
-
21
+
22
22
  def self.filing(form_id, offset=nil)
23
23
  cycle = CURRENT_CYCLE
24
24
  results = invoke("#{cycle}/contributions/filing/#{form_id}", {:offset => offset})['results']
25
- results.map{|c| IndividualContribution.create(c) }
25
+ results.map{|c| IndividualContribution.create(c) }
26
26
  end
27
-
27
+
28
28
  def self.candidate(fecid, offset=nil)
29
29
  cycle = CURRENT_CYCLE
30
30
  results = invoke("#{cycle}/contributions/candidate/#{fecid}", {:offset => offset})['results']
31
- results.map{|c| IndividualContribution.create(c) }
31
+ results.map{|c| IndividualContribution.create(c) }
32
32
  end
33
-
33
+
34
34
  end
35
- end
35
+ end
@@ -0,0 +1,37 @@
1
+ module CampaignCash
2
+ class LateContribution < Base
3
+
4
+ attr_reader :contribution_date, :contributor_prefix, :contributor_zip, :contributor_suffix, :contributor_state,
5
+ :entity_type, :contributor_employer, :contributor_occupation, :fec_committee_id, :transaction_id, :contributor_last_name,
6
+ :office_state, :contributor_fec_id, :contribution_amount, :contributor_street_1, :contributor_street_2, :contributor_city,
7
+ :contributor_middle_name, :cycle, :fec_filing_id, :fec_candidate_id, :contributor_first_name, :contributor_organization_name
8
+
9
+ def initialize(params={})
10
+ params.each_pair do |k,v|
11
+ instance_variable_set("@#{k}", v)
12
+ end
13
+ end
14
+
15
+ def self.create(params={})
16
+ self.new(params)
17
+ end
18
+
19
+ def self.latest(offset = nil)
20
+ cycle = CURRENT_CYCLE
21
+ results = invoke("#{cycle}/contributions/48hour", {:offset => offset})['results']
22
+ results.map {|obj| create(obj)}
23
+ end
24
+
25
+ def self.candidate(candidate_id, offset = nil)
26
+ cycle = CURRENT_CYCLE
27
+ results = invoke("#{cycle}/candidates/#{candidate_id}/48hour", {:offset => offset})['results']
28
+ results.map {|obj| create(obj)}
29
+ end
30
+
31
+ def self.committee(committee_id, offset = nil)
32
+ cycle = CURRENT_CYCLE
33
+ results = invoke("#{cycle}/committees/#{committee_id}/48hour", {:offset => offset})['results']
34
+ results.map {|obj| create(obj)}
35
+ end
36
+ end
37
+ end
@@ -2,10 +2,10 @@ module CampaignCash
2
2
  class President < Base
3
3
 
4
4
  attr_reader :committee_id, :name, :id, :party, :office, :date_coverage_from, :date_coverage_to, :total_receipts, :total_disbursements,
5
- :end_cash, :total_refunds, :total_contributions, :net_individual_contributions, :net_pac_contributions, :transfers_in,
6
- :net_party_contributions, :net_candidate_contributions, :net_primary_contributions, :net_general_contributions,
7
- :federal_funds, :contributions_less_than_200, :contributions_200_499, :contributions_500_1499, :contributions_1500_2499,
8
- :contributions_max
5
+ :end_cash, :total_refunds, :total_contributions, :net_individual_contributions, :net_pac_contributions, :transfers_in,
6
+ :net_party_contributions, :net_candidate_contributions, :net_primary_contributions, :net_general_contributions,
7
+ :federal_funds, :contributions_less_than_200, :contributions_200_499, :contributions_500_1499, :contributions_1500_2499,
8
+ :contributions_max
9
9
 
10
10
  def initialize(params={})
11
11
  params.each_pair do |k,v|
@@ -14,47 +14,47 @@ module CampaignCash
14
14
  end
15
15
 
16
16
  # Creates a new president summary object from a JSON API presidential response.
17
- def self.create_summary(params={})
18
- self.new :name => params['name'],
19
- :id => params['candidate_id'],
20
- :party => get_party(params['party']),
21
- :office => 'president',
22
- :committee_id => params['committee_id'],
23
- :total_receipts => params['total_receipts'],
24
- :total_disbursements => params['total_disbursements'],
25
- :end_cash => params['cash_on_hand'],
26
- :date_coverage_from => params['date_coverage_from'],
27
- :date_coverage_to => params['date_coverage_to']
28
- end
17
+ def self.create_summary(params={})
18
+ self.new :name => params['name'],
19
+ :id => params['candidate_id'],
20
+ :party => get_party(params['party']),
21
+ :office => 'president',
22
+ :committee_id => params['committee_id'],
23
+ :total_receipts => params['total_receipts'],
24
+ :total_disbursements => params['total_disbursements'],
25
+ :end_cash => params['cash_on_hand'],
26
+ :date_coverage_from => params['date_coverage_from'],
27
+ :date_coverage_to => params['date_coverage_to']
28
+ end
29
29
 
30
- # Creates a detailed president object
31
- def self.create_detail(params={})
32
- self.new :name => params['candidate_name'],
33
- :id => params['candidate_id'],
34
- :party => get_party(params['party']),
35
- :office => 'president',
36
- :committee_id => params['committee_id'],
37
- :total_receipts => params['total_receipts'],
38
- :total_contributions => params['total_contributions'],
39
- :total_disbursements => params['total_disbursements'],
40
- :end_cash => params['cash_on_hand'],
41
- :date_coverage_from => params['date_coverage_from'],
42
- :date_coverage_to => params['date_coverage_to'],
43
- :total_refunds => params['total_refunds'],
44
- :net_individual_contributions => params['net_individual_contributions'],
45
- :net_pac_contributions => params['net_pac_contributions'],
46
- :net_party_contributions => params['net_party_contributions'],
47
- :net_candidate_contributions => params['net_candidate_contributions'],
48
- :net_primary_contributions => params['net_primary_contributions'],
49
- :net_general_contributions => params['net_general_contributions'],
50
- :federal_funds => params['federal_funds'],
51
- :transfers_in => params['transfers_in'],
52
- :contributions_less_than_200 => params['total_contributions_less_than_200'],
53
- :contributions_200_499 => params['contributions_200_499'],
54
- :contributions_500_1499 => params['contributions_500_1499'],
55
- :contributions_1500_2499 => params['contributions_1500_2499'],
56
- :contributions_max => params['total_contributions_max']
57
- end
30
+ # Creates a detailed president object
31
+ def self.create_detail(params={})
32
+ self.new :name => params['candidate_name'],
33
+ :id => params['candidate_id'],
34
+ :party => get_party(params['party']),
35
+ :office => 'president',
36
+ :committee_id => params['committee_id'],
37
+ :total_receipts => params['total_receipts'],
38
+ :total_contributions => params['total_contributions'],
39
+ :total_disbursements => params['total_disbursements'],
40
+ :end_cash => params['cash_on_hand'],
41
+ :date_coverage_from => params['date_coverage_from'],
42
+ :date_coverage_to => params['date_coverage_to'],
43
+ :total_refunds => params['total_refunds'],
44
+ :net_individual_contributions => params['net_individual_contributions'],
45
+ :net_pac_contributions => params['net_pac_contributions'],
46
+ :net_party_contributions => params['net_party_contributions'],
47
+ :net_candidate_contributions => params['net_candidate_contributions'],
48
+ :net_primary_contributions => params['net_primary_contributions'],
49
+ :net_general_contributions => params['net_general_contributions'],
50
+ :federal_funds => params['federal_funds'],
51
+ :transfers_in => params['transfers_in'],
52
+ :contributions_less_than_200 => params['total_contributions_less_than_200'],
53
+ :contributions_200_499 => params['contributions_200_499'],
54
+ :contributions_500_1499 => params['contributions_500_1499'],
55
+ :contributions_1500_2499 => params['contributions_1500_2499'],
56
+ :contributions_max => params['total_contributions_max']
57
+ end
58
58
 
59
59
  # Returns an array of presidential candidates for a given cycle, defaults to the current cycle.
60
60
  # Only returns candidates that The New York Times is tracking for financial activity.
@@ -68,16 +68,16 @@ module CampaignCash
68
68
  # Only returns candidates tracked by The New York Times.
69
69
  def self.detail(id, cycle=CURRENT_CYCLE)
70
70
  reply = invoke("#{cycle}/president/candidates/#{id}", {})
71
- results = reply['results'].first
71
+ results = reply['results'].first
72
72
  create_detail(results)
73
73
  end
74
74
 
75
75
  private
76
76
 
77
77
  def self.get_party party_identifier
78
- return "DEM" if party_identifier == "D"
79
- return "REP" if party_identifier == "R"
80
- party_identifier
78
+ return "DEM" if party_identifier == "D"
79
+ return "REP" if party_identifier == "R"
80
+ party_identifier
81
81
  end
82
82
  end
83
- end
83
+ end
@@ -1,3 +1,3 @@
1
1
  module CampaignCash
2
- VERSION = "2.3.2"
2
+ VERSION = "2.4"
3
3
  end
data/lib/campaign_cash.rb CHANGED
@@ -1,3 +1,3 @@
1
- %w(base candidate committee contribution individual_contribution filing filing_summary form independent_expenditure president electioneering_communication).each do |f|
1
+ %w(base candidate committee contribution individual_contribution filing filing_summary form independent_expenditure president electioneering_communication late_contribution).each do |f|
2
2
  require File.join(File.dirname(__FILE__), '../lib/campaign_cash', f)
3
3
  end
@@ -61,7 +61,7 @@ class TestCampaignCash::TestCandidate < Test::Unit::TestCase
61
61
 
62
62
  context "candidate leaders" do
63
63
  setup do
64
- reply = Base.invoke('2010/candidates/leaders/end-cash', {})
64
+ reply = Base.invoke('2012/candidates/leaders/end-cash', {})
65
65
  results = reply['results']
66
66
  @candidates = results.map{|c| Candidate.create(c)}
67
67
  end
@@ -88,8 +88,8 @@ class TestCampaignCash::TestCommittee < Test::Unit::TestCase
88
88
  @contribution = Contribution.find('C00458588', 2010)
89
89
  end
90
90
 
91
- should "return 125 total results" do
92
- assert_equal @contribution.total_results, 125
91
+ should "return 141 total results" do
92
+ assert_equal @contribution.total_results, 141
93
93
  end
94
94
 
95
95
  should "return a $5,000 contribution to Renee Ellmers" do
@@ -19,7 +19,7 @@ class TestCampaignCash::TestIndependentExpenditure < Test::Unit::TestCase
19
19
  end
20
20
 
21
21
  should "return at least one independent expenditure against Barack Obama" do
22
- assert_equal("P80003338", @independent_expenditures.first.candidate)
22
+ assert_equal("P80003338", @independent_expenditures.select{|ie| ie.candidate == 'P80003338'}.first.candidate)
23
23
  end
24
24
  end
25
25
 
@@ -0,0 +1,24 @@
1
+ require 'test_helper'
2
+
3
+ class TestCampaignCash::TestLateContribution < Test::Unit::TestCase
4
+ include CampaignCash
5
+
6
+ context "get late contributions" do
7
+ objs_collection = []
8
+ objs_collection << LateContribution.committee("C00505255")
9
+ objs_collection << LateContribution.latest
10
+ objs_collection << LateContribution.candidate("H2NC09092")
11
+
12
+ objs_collection.each do |objs|
13
+ should "return a list of objects of the IndividualContribution type or an empty list" do
14
+ if objs.size > 0
15
+ objs.each do |obj|
16
+ assert_kind_of(LateContribution, obj)
17
+ end
18
+ else
19
+ assert_equal([], objs)
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
data/test/test_helper.rb CHANGED
@@ -4,7 +4,7 @@ require 'shoulda'
4
4
  require 'json'
5
5
  require 'ostruct'
6
6
 
7
- %w(base candidate committee contribution individual_contribution filing filing_summary form independent_expenditure president electioneering_communication).each do |f|
7
+ %w(base candidate committee contribution individual_contribution filing filing_summary form independent_expenditure president electioneering_communication late_contribution).each do |f|
8
8
  require File.join(File.dirname(__FILE__), '../lib/campaign_cash', f)
9
9
  end
10
10
 
metadata CHANGED
@@ -1,67 +1,91 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: campaign_cash
3
- version: !ruby/object:Gem::Version
4
- version: 2.3.2
3
+ version: !ruby/object:Gem::Version
4
+ hash: 11
5
5
  prerelease:
6
+ segments:
7
+ - 2
8
+ - 4
9
+ version: "2.4"
6
10
  platform: ruby
7
- authors:
11
+ authors:
8
12
  - Derek Willis
9
13
  autorequire:
10
14
  bindir: bin
11
15
  cert_chain: []
12
- date: 2012-04-10 00:00:00.000000000Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
16
+
17
+ date: 2012-07-19 00:00:00 Z
18
+ dependencies:
19
+ - !ruby/object:Gem::Dependency
15
20
  name: json
16
- requirement: &2153723340 !ruby/object:Gem::Requirement
21
+ prerelease: false
22
+ requirement: &id001 !ruby/object:Gem::Requirement
17
23
  none: false
18
- requirements:
19
- - - ! '>='
20
- - !ruby/object:Gem::Version
21
- version: '0'
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ hash: 3
28
+ segments:
29
+ - 0
30
+ version: "0"
22
31
  type: :runtime
23
- prerelease: false
24
- version_requirements: *2153723340
25
- - !ruby/object:Gem::Dependency
32
+ version_requirements: *id001
33
+ - !ruby/object:Gem::Dependency
26
34
  name: rake
27
- requirement: &2153722800 !ruby/object:Gem::Requirement
35
+ prerelease: false
36
+ requirement: &id002 !ruby/object:Gem::Requirement
28
37
  none: false
29
- requirements:
30
- - - =
31
- - !ruby/object:Gem::Version
38
+ requirements:
39
+ - - "="
40
+ - !ruby/object:Gem::Version
41
+ hash: 49
42
+ segments:
43
+ - 0
44
+ - 8
45
+ - 7
32
46
  version: 0.8.7
33
47
  type: :development
34
- prerelease: false
35
- version_requirements: *2153722800
36
- - !ruby/object:Gem::Dependency
48
+ version_requirements: *id002
49
+ - !ruby/object:Gem::Dependency
37
50
  name: bundler
38
- requirement: &2153722300 !ruby/object:Gem::Requirement
51
+ prerelease: false
52
+ requirement: &id003 !ruby/object:Gem::Requirement
39
53
  none: false
40
- requirements:
41
- - - ! '>='
42
- - !ruby/object:Gem::Version
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ hash: 23
58
+ segments:
59
+ - 1
60
+ - 0
61
+ - 0
43
62
  version: 1.0.0
44
63
  type: :development
45
- prerelease: false
46
- version_requirements: *2153722300
47
- - !ruby/object:Gem::Dependency
64
+ version_requirements: *id003
65
+ - !ruby/object:Gem::Dependency
48
66
  name: shoulda
49
- requirement: &2153721920 !ruby/object:Gem::Requirement
67
+ prerelease: false
68
+ requirement: &id004 !ruby/object:Gem::Requirement
50
69
  none: false
51
- requirements:
52
- - - ! '>='
53
- - !ruby/object:Gem::Version
54
- version: '0'
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ hash: 3
74
+ segments:
75
+ - 0
76
+ version: "0"
55
77
  type: :development
56
- prerelease: false
57
- version_requirements: *2153721920
78
+ version_requirements: *id004
58
79
  description: A client for The New York Times Campaign Finance API
59
- email:
80
+ email:
60
81
  - dwillis@nytimes.com
61
82
  executables: []
83
+
62
84
  extensions: []
85
+
63
86
  extra_rdoc_files: []
64
- files:
87
+
88
+ files:
65
89
  - .gitignore
66
90
  - Gemfile
67
91
  - Gemfile.lock
@@ -80,6 +104,7 @@ files:
80
104
  - lib/campaign_cash/form.rb
81
105
  - lib/campaign_cash/independent_expenditure.rb
82
106
  - lib/campaign_cash/individual_contribution.rb
107
+ - lib/campaign_cash/late_contribution.rb
83
108
  - lib/campaign_cash/president.rb
84
109
  - lib/campaign_cash/version.rb
85
110
  - test/campaign_cash/test_candidate.rb
@@ -90,33 +115,45 @@ files:
90
115
  - test/campaign_cash/test_form.rb
91
116
  - test/campaign_cash/test_independent_expenditure.rb
92
117
  - test/campaign_cash/test_individual_contribution.rb
118
+ - test/campaign_cash/test_late_contribution.rb
93
119
  - test/campaign_cash/test_president.rb
94
120
  - test/test_helper.rb
95
121
  homepage: http://rubygems.org/gems/campaign_cash
96
122
  licenses: []
123
+
97
124
  post_install_message:
98
125
  rdoc_options: []
99
- require_paths:
126
+
127
+ require_paths:
100
128
  - lib
101
- required_ruby_version: !ruby/object:Gem::Requirement
129
+ required_ruby_version: !ruby/object:Gem::Requirement
102
130
  none: false
103
- requirements:
104
- - - ! '>='
105
- - !ruby/object:Gem::Version
106
- version: '0'
107
- required_rubygems_version: !ruby/object:Gem::Requirement
131
+ requirements:
132
+ - - ">="
133
+ - !ruby/object:Gem::Version
134
+ hash: 3
135
+ segments:
136
+ - 0
137
+ version: "0"
138
+ required_rubygems_version: !ruby/object:Gem::Requirement
108
139
  none: false
109
- requirements:
110
- - - ! '>='
111
- - !ruby/object:Gem::Version
140
+ requirements:
141
+ - - ">="
142
+ - !ruby/object:Gem::Version
143
+ hash: 23
144
+ segments:
145
+ - 1
146
+ - 3
147
+ - 6
112
148
  version: 1.3.6
113
149
  requirements: []
150
+
114
151
  rubyforge_project: campaign_cash
115
152
  rubygems_version: 1.8.17
116
153
  signing_key:
117
154
  specification_version: 3
118
155
  summary: Following the money.
119
- test_files:
156
+ test_files:
120
157
  - test/campaign_cash/test_candidate.rb
121
158
  - test/campaign_cash/test_committee.rb
122
159
  - test/campaign_cash/test_electioneering_communication.rb
@@ -125,5 +162,6 @@ test_files:
125
162
  - test/campaign_cash/test_form.rb
126
163
  - test/campaign_cash/test_independent_expenditure.rb
127
164
  - test/campaign_cash/test_individual_contribution.rb
165
+ - test/campaign_cash/test_late_contribution.rb
128
166
  - test/campaign_cash/test_president.rb
129
167
  - test/test_helper.rb