hulse 0.3 → 0.4

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: 7e3f583aa3f033ea1521592d7fa1e9ef68595c90
4
- data.tar.gz: 25837d1ae234c7a1d3b665c6d9a145304264aecb
3
+ metadata.gz: ded08df41744269d3ff29c0963310cd71c6d9a2f
4
+ data.tar.gz: f78c202e8f5f140586d990db213fe68f0726ae14
5
5
  SHA512:
6
- metadata.gz: 0f594dcb5a9e8d88aab795965d1fe0ec5da794bebd6bbd3405d5240d93ddcc010c33c897ddc06f75601224535d6a8ec78e0eb16147a61053ab87cf990586318a
7
- data.tar.gz: 06676904a50ce89268890b3a952a1f6f997dc3efaa910c1984ce5ba6ca94edee7dddaaa2c2841cdf4a6efe37515e0eaac957463b5b26738d420935ef7c4a1b4b
6
+ metadata.gz: f6d939fd1e7ec77e20e8b9c2cd472ffc574bfd5c17e4abd941d200163abae7cc4b3f2f0684b4690597aa19b994f753ac17a08ec0a0c5412e0d161d2939285bbf
7
+ data.tar.gz: 0abd003544ed00748fbf56f337d929652b357336ba552146534a01d6326400cbf3db9c389430f301e7b7787fc1240ec8e7abcc07f55c929091c376575fe8260c
data/Rakefile CHANGED
@@ -1 +1,10 @@
1
1
  require "bundler/gem_tasks"
2
+ require 'rake/testtask'
3
+
4
+ Rake::TestTask.new do |t|
5
+ t.libs << "test"
6
+ t.test_files = FileList['test/**/**/*_test.rb']
7
+ t.verbose = true
8
+ end
9
+
10
+ task :default => 'test'
data/hulse.gemspec CHANGED
@@ -20,6 +20,7 @@ Gem::Specification.new do |spec|
20
20
 
21
21
  spec.add_development_dependency "bundler", "~> 1.5"
22
22
  spec.add_development_dependency "rake"
23
+ spec.add_development_dependency "minitest"
23
24
  spec.add_dependency "httparty"
24
25
  spec.add_dependency "oj"
25
26
  end
@@ -18,8 +18,10 @@ module Hulse
18
18
 
19
19
  def self.create_from_vote(response)
20
20
  party_totals = []
21
- response['vote_metadata']['vote_totals']['totals_by_party'].each do |p|
22
- party_totals << p.inject({}){|memo,(k,v)| memo[k.to_sym] = v; memo}
21
+ if response['vote_metadata']['vote_totals']['totals_by_party']
22
+ response['vote_metadata']['vote_totals']['totals_by_party'].each do |p|
23
+ party_totals << p.inject({}){|memo,(k,v)| memo[k.to_sym] = v; memo}
24
+ end
23
25
  end
24
26
  members = []
25
27
  mappings = {"__content__" => "name"}
@@ -29,6 +31,11 @@ module Hulse
29
31
  m['legislator']['vote'] = m['vote']
30
32
  members << m['legislator'].inject({}){|memo,(k,v)| memo[k.to_sym] = v; memo}
31
33
  end
34
+ if response['vote_metadata']['vote_question'] == 'Election of the Speaker'
35
+ vote_counts = response['vote_metadata']['vote_totals']['totals_by_candidate'].reject{|k,v| k == 'total_stub'}.inject({}){|memo,(k,v)| memo[k['candidate'].to_sym] = k['candidate_total'].to_i; memo}
36
+ else
37
+ vote_counts = response['vote_metadata']['vote_totals']['totals_by_vote'].reject{|k,v| k == 'total_stub'}.inject({}){|memo,(k,v)| memo[k.to_sym] = v.to_i; memo}
38
+ end
32
39
  self.new(majority: response['vote_metadata']['majority'],
33
40
  congress: response['vote_metadata']['congress'].to_i,
34
41
  session: response['vote_metadata']['session'],
@@ -43,7 +50,7 @@ module Hulse
43
50
  vote_timestamp: DateTime.parse(response['vote_metadata']['action_date'] + ' ' + response['vote_metadata']['action_time']['time_etz']),
44
51
  description: response['vote_metadata']['vote_desc'],
45
52
  party_summary: party_totals,
46
- vote_count: response['vote_metadata']['vote_totals']['totals_by_vote'].reject{|k,v| k == 'total_stub'}.inject({}){|memo,(k,v)| memo[k.to_sym] = v.to_i; memo},
53
+ vote_count: vote_counts,
47
54
  members: members)
48
55
  end
49
56
  end
data/lib/hulse/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Hulse
2
- VERSION = "0.3"
2
+ VERSION = "0.4"
3
3
  end
data/lib/hulse.rb CHANGED
@@ -1,8 +1,8 @@
1
+ require 'httparty'
2
+ require 'oj'
1
3
  require "hulse/version"
2
4
  require "hulse/house_vote"
3
5
  require "hulse/senate_vote"
4
- require 'httparty'
5
- require 'oj'
6
6
 
7
7
  module Hulse
8
8
  class Utils
@@ -15,7 +15,7 @@ module Hulse
15
15
 
16
16
  def self.convert_year_to_congress_and_session(year)
17
17
  congress = congress_for_year year
18
- session = year.odd? ? 1 : 2
18
+ session = year.to_i.odd? ? 1 : 2
19
19
  return [congress, session]
20
20
  end
21
21
 
@@ -0,0 +1,2 @@
1
+ require 'minitest/autorun'
2
+ require 'minitest/pride'
@@ -0,0 +1,31 @@
1
+ require 'test_helper'
2
+ require_relative '../lib/hulse'
3
+
4
+ module Hulse
5
+ class UtilsTest < Minitest::Test
6
+ def test_congress_for_year
7
+ assert_equal 101, Utils.congress_for_year(1990)
8
+ assert_equal 106, Utils.congress_for_year('2000')
9
+ assert_equal 6, Utils.congress_for_year('1800')
10
+ assert_equal 1, Utils.congress_for_year('1789')
11
+
12
+ # TODO: probably not what is expected
13
+ assert_equal -4, Utils.congress_for_year('1780')
14
+ end
15
+
16
+ def test_convert_year_to_congress_and_session
17
+ congress, session = Utils.convert_year_to_congress_and_session(1990)
18
+ assert_equal 101, congress
19
+ assert_equal 2, session
20
+
21
+ congress, session = Utils.convert_year_to_congress_and_session('1789')
22
+ assert_equal 1, congress
23
+ assert_equal 1, session
24
+
25
+ # TODO: probably not what is expected
26
+ congress, session = Utils.convert_year_to_congress_and_session('1780')
27
+ assert_equal -4, congress
28
+ assert_equal 2, session
29
+ end
30
+ end
31
+ end
metadata CHANGED
@@ -1,69 +1,83 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hulse
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.3'
4
+ version: '0.4'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Derek Willis
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-03 00:00:00.000000000 Z
11
+ date: 2015-01-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.5'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.5'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: minitest
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
39
53
  - !ruby/object:Gem::Version
40
54
  version: '0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: httparty
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
- - - '>='
59
+ - - ">="
46
60
  - !ruby/object:Gem::Version
47
61
  version: '0'
48
62
  type: :runtime
49
63
  prerelease: false
50
64
  version_requirements: !ruby/object:Gem::Requirement
51
65
  requirements:
52
- - - '>='
66
+ - - ">="
53
67
  - !ruby/object:Gem::Version
54
68
  version: '0'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: oj
57
71
  requirement: !ruby/object:Gem::Requirement
58
72
  requirements:
59
- - - '>='
73
+ - - ">="
60
74
  - !ruby/object:Gem::Version
61
75
  version: '0'
62
76
  type: :runtime
63
77
  prerelease: false
64
78
  version_requirements: !ruby/object:Gem::Requirement
65
79
  requirements:
66
- - - '>='
80
+ - - ">="
67
81
  - !ruby/object:Gem::Version
68
82
  version: '0'
69
83
  description: Turns House and Senate votes into Ruby objects for your legislative pleasure.
@@ -73,7 +87,7 @@ executables: []
73
87
  extensions: []
74
88
  extra_rdoc_files: []
75
89
  files:
76
- - .gitignore
90
+ - ".gitignore"
77
91
  - Gemfile
78
92
  - LICENSE.txt
79
93
  - README.md
@@ -83,6 +97,8 @@ files:
83
97
  - lib/hulse/house_vote.rb
84
98
  - lib/hulse/senate_vote.rb
85
99
  - lib/hulse/version.rb
100
+ - test/test_helper.rb
101
+ - test/utils_test.rb
86
102
  homepage: ''
87
103
  licenses:
88
104
  - MIT
@@ -93,19 +109,21 @@ require_paths:
93
109
  - lib
94
110
  required_ruby_version: !ruby/object:Gem::Requirement
95
111
  requirements:
96
- - - '>='
112
+ - - ">="
97
113
  - !ruby/object:Gem::Version
98
114
  version: '0'
99
115
  required_rubygems_version: !ruby/object:Gem::Requirement
100
116
  requirements:
101
- - - '>='
117
+ - - ">="
102
118
  - !ruby/object:Gem::Version
103
119
  version: '0'
104
120
  requirements: []
105
121
  rubyforge_project:
106
- rubygems_version: 2.1.9
122
+ rubygems_version: 2.2.2
107
123
  signing_key:
108
124
  specification_version: 4
109
125
  summary: Hulse is a Ruby gem for accessing House and Senate roll call votes from the
110
126
  official sources on house.gov and senate.gov
111
- test_files: []
127
+ test_files:
128
+ - test/test_helper.rb
129
+ - test/utils_test.rb