propublica-nonprofits 0.1.0 → 0.2.0

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
  SHA256:
3
- metadata.gz: 6f1548a6ab99d0cc5bc651916c1591c0339b0644531533e507f9a1395fd21aa1
4
- data.tar.gz: f991cc23ad0289a3ff680f7be2bae80930b6e1777ca990917b4302e815674c73
3
+ metadata.gz: 6437649a923bd364755463869cb49f25ae57b91011daaf0cd9db49c409296580
4
+ data.tar.gz: faed90b755e0059d4717041570ced6600a88e3b9901303db6596ec221aa45411
5
5
  SHA512:
6
- metadata.gz: 5fa50cbfdd4a595c2772a97080be6cf71e465e1263e7b902916b142f849e8cd38522c9ce42acce04ac28d20597a1b6196189ec4c8e3f27280b5703dab3954038
7
- data.tar.gz: 6292726cce32f0e3a403c29dd5e7fca49accfa43c45e8d2a5bc2e978fc0774ffd3bc880d75d7580ca24c0e5838f34a75ddf4b638a1e4040b0e9053781a94ae12
6
+ metadata.gz: eb357db6551a934f3f8bf1ef40ddbc9b1577129835d16ca258d2c6925107045af42bc6efa6f0c7b8cbb4146d4a10055efbc77deae5bedb86e544500648f7d03a
7
+ data.tar.gz: 47c904c59ab652d679b34be83483102509fee8a1344cbb0ec5c83d17f2741b7760bfbac47984fc2b830dedbba73e1b86c42146b1a1f340c870c4f085ba153300
data/.gitignore CHANGED
@@ -6,3 +6,5 @@
6
6
  /pkg/
7
7
  /spec/reports/
8
8
  /tmp/
9
+ /*.gem
10
+ .DS_Store
@@ -19,6 +19,8 @@ GEM
19
19
  json (2.1.0)
20
20
  method_source (0.9.0)
21
21
  minitest (5.11.3)
22
+ minitest-line (0.6.5)
23
+ minitest (~> 5.0)
22
24
  multipart-post (2.0.0)
23
25
  pry (0.11.3)
24
26
  coderay (~> 1.1.0)
@@ -38,6 +40,7 @@ PLATFORMS
38
40
  DEPENDENCIES
39
41
  bundler (~> 1.16)
40
42
  minitest (~> 5.0)
43
+ minitest-line
41
44
  propublica-nonprofits!
42
45
  pry
43
46
  rake (~> 10.0)
@@ -45,4 +48,4 @@ DEPENDENCIES
45
48
  webmock
46
49
 
47
50
  BUNDLED WITH
48
- 1.16.2
51
+ 1.16.5
@@ -1,6 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require "bundler/setup"
4
3
  require "propublica/nonprofits"
5
4
 
6
5
  # You can add fixtures and/or initialization code here to make experimenting
@@ -38,28 +38,44 @@ module Propublica
38
38
 
39
39
  def error
40
40
  ensure_full_request!
41
- @error ||= attributes["error"]
41
+ @error ||= attributes["error"] || ""
42
+ end
43
+
44
+ def error?
45
+ !error.empty?
42
46
  end
43
47
 
44
48
  private
45
49
 
46
50
  attr_reader :attributes
51
+ attr_accessor :full_request_made
52
+
53
+ def full_request_made?
54
+ !!full_request_made
55
+ end
47
56
 
48
57
  def ensure_full_request!
49
- return if @full_request == true
58
+ return if full_request_made?
50
59
 
51
- required_keys = ["organization", "filings_with_data", "filings_without_data", "data_source", "api_version", "error"].freeze
52
- @full_request = (attributes.keys & required_keys) == required_keys
53
- return if @full_request == true
60
+ self.full_request_made = (attributes.keys & required_keys) == required_keys
61
+ return if full_request_made?
54
62
 
55
63
  fetch_full_request!
56
64
  end
57
65
 
66
+ def required_keys
67
+ ["organization", "filings_with_data", "filings_without_data", "data_source", "api_version", "error"].freeze
68
+ end
69
+
70
+ def ein
71
+ @attributes.dig("organization", "ein") || self.basic.ein
72
+ end
73
+
58
74
  def fetch_full_request!
59
75
  # Fetch all attributes and merge with what we have now
60
- new_attrs = Propublica::Nonprofits.find_attributes(self.basic.ein)
76
+ new_attrs = Propublica::Nonprofits.find_attributes(ein)
61
77
  attributes.merge!(new_attrs)
62
- @full_request = true
78
+ self.full_request_made = true
63
79
  end
64
80
  end
65
81
  end
@@ -7,11 +7,7 @@ module Propublica
7
7
  fields.each do |field|
8
8
  define_method field do
9
9
  vars = self.instance_variable_get("@attributes")
10
- vars.fetch(field.to_s) do
11
- class_name = self.class.to_s.split("::").last
12
- raise Propublica::Nonprofits::DataNotFetched,
13
- "#{class_name}##{field} not fetched from API. This may be due to an API error or because you tried to access a Basic property on the full results"
14
- end
10
+ vars.fetch(field.to_s) { raise_field_fetch_error(field) }
15
11
  end
16
12
  end
17
13
  end
@@ -27,6 +23,12 @@ module Propublica
27
23
  private
28
24
 
29
25
  attr_reader :attributes
26
+
27
+ def raise_field_fetch_error(field)
28
+ class_name = self.class.to_s.split("::").last
29
+ raise Propublica::Nonprofits::DataNotFetched,
30
+ "#{class_name}##{field} not fetched from API. This may be due to an API error or because you tried to access a Basic property on the full results"
31
+ end
30
32
  end
31
33
  end
32
34
  end
@@ -1,5 +1,5 @@
1
1
  module Propublica
2
2
  module Nonprofits
3
- VERSION = "0.1.0"
3
+ VERSION = "0.2.0"
4
4
  end
5
5
  end
@@ -24,9 +24,10 @@ Gem::Specification.new do |spec|
24
24
  spec.require_paths = ["lib"]
25
25
 
26
26
  spec.add_development_dependency "bundler", "~> 1.16"
27
- spec.add_development_dependency "rake", "~> 10.0"
27
+ spec.add_development_dependency "minitest-line"
28
28
  spec.add_development_dependency "minitest", "~> 5.0"
29
29
  spec.add_development_dependency "pry"
30
+ spec.add_development_dependency "rake", "~> 10.0"
30
31
  spec.add_development_dependency "vcr"
31
32
  spec.add_development_dependency "webmock"
32
33
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: propublica-nonprofits
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ricky Chilcott
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-07-11 00:00:00.000000000 Z
11
+ date: 2018-11-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -25,19 +25,19 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.16'
27
27
  - !ruby/object:Gem::Dependency
28
- name: rake
28
+ name: minitest-line
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '10.0'
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
39
  - !ruby/object:Gem::Version
40
- version: '10.0'
40
+ version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: minitest
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rake
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '10.0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '10.0'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: vcr
71
85
  requirement: !ruby/object:Gem::Requirement