datacatalog 0.3.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGES.md +2 -2
- data/LICENSE.md +11 -11
- data/README.md +34 -34
- data/VERSION +1 -1
- data/datacatalog.gemspec +5 -2
- data/lib/base.rb +85 -77
- data/lib/datacatalog.rb +8 -8
- data/lib/main.rb +41 -41
- data/lib/resources/organization.rb +31 -0
- data/sandbox_api.yml.example +2 -2
- data/spec/about_spec.rb +42 -21
- data/spec/api_key_spec.rb +145 -145
- data/spec/base_spec.rb +129 -129
- data/spec/datacatalog_spec.rb +36 -36
- data/spec/organization_spec.rb +124 -0
- data/spec/source_spec.rb +162 -162
- data/spec/spec.opts +3 -4
- data/spec/spec_helper.rb +15 -25
- data/spec/user_spec.rb +279 -278
- metadata +5 -2
data/spec/datacatalog_spec.rb
CHANGED
@@ -1,36 +1,36 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/spec_helper'
|
2
|
-
include DataCatalog
|
3
|
-
|
4
|
-
describe DataCatalog do
|
5
|
-
|
6
|
-
describe "module accessors" do
|
7
|
-
it "should access the API Key" do
|
8
|
-
DataCatalog.api_key = "4159179f32ff8fefd2c6d48b7e675e7736bf1357"
|
9
|
-
DataCatalog.api_key.should == "4159179f32ff8fefd2c6d48b7e675e7736bf1357"
|
10
|
-
end
|
11
|
-
|
12
|
-
it "should access the base URI" do
|
13
|
-
DataCatalog.base_uri = 'http://somehost.com'
|
14
|
-
DataCatalog.base_uri.should == 'http://somehost.com'
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
describe ".with_key" do
|
19
|
-
it "should set the API key within the block" do
|
20
|
-
regular_key = '4159179f32ff8fefd2c6d48b7e675e7736bf1357'
|
21
|
-
DataCatalog.api_key = regular_key
|
22
|
-
temporary_key = '0000123400001234000012340000123400001234'
|
23
|
-
DataCatalog.with_key(temporary_key) do
|
24
|
-
DataCatalog.api_key.should == temporary_key
|
25
|
-
end
|
26
|
-
DataCatalog.api_key.should == regular_key
|
27
|
-
end
|
28
|
-
|
29
|
-
it "should return the last value in the block" do
|
30
|
-
DataCatalog.with_key("0000444400004444") do
|
31
|
-
42
|
32
|
-
end.should == 42
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
end
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
2
|
+
include DataCatalog
|
3
|
+
|
4
|
+
describe DataCatalog do
|
5
|
+
|
6
|
+
describe "module accessors" do
|
7
|
+
it "should access the API Key" do
|
8
|
+
DataCatalog.api_key = "4159179f32ff8fefd2c6d48b7e675e7736bf1357"
|
9
|
+
DataCatalog.api_key.should == "4159179f32ff8fefd2c6d48b7e675e7736bf1357"
|
10
|
+
end
|
11
|
+
|
12
|
+
it "should access the base URI" do
|
13
|
+
DataCatalog.base_uri = 'http://somehost.com'
|
14
|
+
DataCatalog.base_uri.should == 'http://somehost.com'
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
describe ".with_key" do
|
19
|
+
it "should set the API key within the block" do
|
20
|
+
regular_key = '4159179f32ff8fefd2c6d48b7e675e7736bf1357'
|
21
|
+
DataCatalog.api_key = regular_key
|
22
|
+
temporary_key = '0000123400001234000012340000123400001234'
|
23
|
+
DataCatalog.with_key(temporary_key) do
|
24
|
+
DataCatalog.api_key.should == temporary_key
|
25
|
+
end
|
26
|
+
DataCatalog.api_key.should == regular_key
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should return the last value in the block" do
|
30
|
+
DataCatalog.with_key("0000444400004444") do
|
31
|
+
42
|
32
|
+
end.should == 42
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
@@ -0,0 +1,124 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
2
|
+
include DataCatalog
|
3
|
+
|
4
|
+
describe Organization do
|
5
|
+
|
6
|
+
def create_3_organizations
|
7
|
+
@organization_names = ["Federal Communications Commission", "Federal Election Commission", "Department of State"]
|
8
|
+
@organization_names.each do |name|
|
9
|
+
Organization.create(:name => name)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
before do
|
14
|
+
setup_api
|
15
|
+
clean_slate
|
16
|
+
end
|
17
|
+
|
18
|
+
describe ".all" do
|
19
|
+
|
20
|
+
before do
|
21
|
+
create_3_organizations
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should return an enumeration of Organizations" do
|
25
|
+
@organizations = Organization.all
|
26
|
+
@organizations.each do |o|
|
27
|
+
o.should be_an_instance_of(Organization)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should return an enumeration with organization name set" do
|
32
|
+
@organizations = Organization.all
|
33
|
+
@organizations.map(&:name).sort.should == @organization_names.sort
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should return the matching organizations when options are passed in" do
|
37
|
+
@organizations = Organization.all(:name => "Federal Communications Commission")
|
38
|
+
@organizations.map(&:name).should == ["Federal Communications Commission"]
|
39
|
+
end
|
40
|
+
|
41
|
+
end # describe ".all"
|
42
|
+
|
43
|
+
describe ".first" do
|
44
|
+
|
45
|
+
before do
|
46
|
+
create_3_organizations
|
47
|
+
end
|
48
|
+
|
49
|
+
it "should return the matching organization when options are passed in" do
|
50
|
+
@organization = Organization.first(:name => "Federal Communications Commission")
|
51
|
+
@organization.name.should == "Federal Communications Commission"
|
52
|
+
end
|
53
|
+
|
54
|
+
end # describe ".first"
|
55
|
+
|
56
|
+
describe ".get" do
|
57
|
+
|
58
|
+
before do
|
59
|
+
@organization = Organization.create(:name => "Federal Election Commission")
|
60
|
+
end
|
61
|
+
|
62
|
+
it "should return an organization" do
|
63
|
+
organization = Organization.get(@organization.id)
|
64
|
+
organization.should be_an_instance_of(Organization)
|
65
|
+
organization.name.should == "Federal Election Commission"
|
66
|
+
end
|
67
|
+
|
68
|
+
it "should raise NotFound if no source exists" do
|
69
|
+
executing do
|
70
|
+
Organization.get(mangle(@organization.id))
|
71
|
+
end.should raise_error(NotFound)
|
72
|
+
end
|
73
|
+
|
74
|
+
end # describe ".get"
|
75
|
+
|
76
|
+
describe ".create" do
|
77
|
+
|
78
|
+
it "should create a new organization when valid params are passed in" do
|
79
|
+
@organization = Organization.create(:name => "Federal Communications Commission")
|
80
|
+
@organization.should be_an_instance_of(Organization)
|
81
|
+
@organization.name.should == "Federal Communications Commission"
|
82
|
+
end
|
83
|
+
|
84
|
+
it "should raise BadRequest when a bad URL is passed in" do
|
85
|
+
executing do
|
86
|
+
Organization.create(:name => "Bad Org", :url => "htt:p//jlkj!3")
|
87
|
+
end.should raise_error(BadRequest)
|
88
|
+
end
|
89
|
+
|
90
|
+
end # describe ".create"
|
91
|
+
|
92
|
+
describe ".update" do
|
93
|
+
|
94
|
+
before do
|
95
|
+
@organization = Organization.create(:name => "Federal Election Commission")
|
96
|
+
end
|
97
|
+
|
98
|
+
it "should update an existing organization from valid params" do
|
99
|
+
organization = Organization.update(@organization.id, { :url => "http://fec.gov/" })
|
100
|
+
organization.should be_an_instance_of(Organization)
|
101
|
+
organization.url.should == "http://fec.gov/"
|
102
|
+
end
|
103
|
+
|
104
|
+
end # describe ".update"
|
105
|
+
|
106
|
+
describe ".destroy" do
|
107
|
+
|
108
|
+
before do
|
109
|
+
@organization = Organization.create(:name => "Federal Election Commission")
|
110
|
+
end
|
111
|
+
|
112
|
+
it "should destroy an existing organization" do
|
113
|
+
Organization.destroy(@organization.id).should be_true
|
114
|
+
end
|
115
|
+
|
116
|
+
it "should raise NotFound when attempting to destroy non-existing organization" do
|
117
|
+
executing do
|
118
|
+
Organization.destroy(mangle(@organization.id))
|
119
|
+
end.should raise_error(NotFound)
|
120
|
+
end
|
121
|
+
|
122
|
+
end # describe ".destroy"
|
123
|
+
|
124
|
+
end
|
data/spec/source_spec.rb
CHANGED
@@ -1,162 +1,162 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/spec_helper'
|
2
|
-
include DataCatalog
|
3
|
-
|
4
|
-
module SourceHelpers
|
5
|
-
def create_source(params={})
|
6
|
-
valid_params = {
|
7
|
-
:title => "Some FCC Data",
|
8
|
-
:url => "http://fcc.gov/somedata.csv"
|
9
|
-
}
|
10
|
-
Source.create(valid_params.merge(params))
|
11
|
-
end
|
12
|
-
|
13
|
-
def create_3_sources
|
14
|
-
%w(FCC NASA DOE).each do |name|
|
15
|
-
Source.create({
|
16
|
-
:title => "#{name} Data",
|
17
|
-
:url => "http://#{name.downcase}.gov/data.xml"
|
18
|
-
})
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
describe Source do
|
24
|
-
include SourceHelpers
|
25
|
-
|
26
|
-
before do
|
27
|
-
setup_api
|
28
|
-
clean_slate
|
29
|
-
end
|
30
|
-
|
31
|
-
describe ".all" do
|
32
|
-
before do
|
33
|
-
create_3_sources
|
34
|
-
@sources = Source.all
|
35
|
-
end
|
36
|
-
|
37
|
-
it "should return an enumeration of sources" do
|
38
|
-
@sources.each do |source|
|
39
|
-
source.should be_an_instance_of(Source)
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
it "should return correct titles" do
|
44
|
-
expected = ["FCC Data", "NASA Data", "DOE Data"]
|
45
|
-
@sources.map(&:title).sort.should == expected.sort
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
describe ".all with conditions" do
|
50
|
-
before do
|
51
|
-
create_3_sources
|
52
|
-
@sources = Source.all(:title => "NASA Data")
|
53
|
-
end
|
54
|
-
|
55
|
-
it "should return an enumeration of sources" do
|
56
|
-
@sources.each do |source|
|
57
|
-
source.should be_an_instance_of(Source)
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
it "should return correct titles" do
|
62
|
-
expected = ["NASA Data"]
|
63
|
-
@sources.map(&:title).sort.should == expected.sort
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
67
|
-
describe ".create" do
|
68
|
-
it "should create a new source from basic params" do
|
69
|
-
source = create_source
|
70
|
-
source.should be_an_instance_of(Source)
|
71
|
-
source.url.should == "http://fcc.gov/somedata.csv"
|
72
|
-
end
|
73
|
-
|
74
|
-
it "should create a new source from custom params" do
|
75
|
-
source = create_source({ :custom => {
|
76
|
-
"0" => {
|
77
|
-
:label => "License",
|
78
|
-
:description => "License",
|
79
|
-
:type => "string",
|
80
|
-
:value => "Public Domain"
|
81
|
-
}
|
82
|
-
}})
|
83
|
-
source.should be_an_instance_of(Source)
|
84
|
-
source.url.should == "http://fcc.gov/somedata.csv"
|
85
|
-
source.custom.should == {
|
86
|
-
"0" => {
|
87
|
-
"label" => "License",
|
88
|
-
"description" => "License",
|
89
|
-
"type" => "string",
|
90
|
-
"value" => "Public Domain"
|
91
|
-
}
|
92
|
-
}
|
93
|
-
end
|
94
|
-
end
|
95
|
-
|
96
|
-
describe ".first" do
|
97
|
-
before do
|
98
|
-
create_3_sources
|
99
|
-
end
|
100
|
-
|
101
|
-
it "should return a source" do
|
102
|
-
source = Source.first(:title => "NASA Data")
|
103
|
-
source.should be_an_instance_of(Source)
|
104
|
-
source.title.should == "NASA Data"
|
105
|
-
end
|
106
|
-
|
107
|
-
it "should return nil if nothing found" do
|
108
|
-
source = Source.first(:title => "UFO Data")
|
109
|
-
source.should be_nil
|
110
|
-
end
|
111
|
-
end
|
112
|
-
|
113
|
-
describe ".get" do
|
114
|
-
before do
|
115
|
-
@source = create_source
|
116
|
-
end
|
117
|
-
|
118
|
-
it "should return a source" do
|
119
|
-
source = Source.get(@source.id)
|
120
|
-
source.should be_an_instance_of(Source)
|
121
|
-
source.title.should == "Some FCC Data"
|
122
|
-
end
|
123
|
-
|
124
|
-
it "should raise NotFound if no source exists" do
|
125
|
-
executing do
|
126
|
-
Source.get(mangle(@source.id))
|
127
|
-
end.should raise_error(NotFound)
|
128
|
-
end
|
129
|
-
end
|
130
|
-
|
131
|
-
describe ".update" do
|
132
|
-
before do
|
133
|
-
@source = create_source
|
134
|
-
end
|
135
|
-
|
136
|
-
it "should update an existing source from valid params" do
|
137
|
-
source = Source.update(@source.id, {
|
138
|
-
:url => "http://fec.gov/newdata.csv"
|
139
|
-
})
|
140
|
-
source.should be_an_instance_of(Source)
|
141
|
-
source.url.should == "http://fec.gov/newdata.csv"
|
142
|
-
end
|
143
|
-
end
|
144
|
-
|
145
|
-
describe ".destroy" do
|
146
|
-
before do
|
147
|
-
@source = create_source
|
148
|
-
end
|
149
|
-
|
150
|
-
it "should destroy an existing source" do
|
151
|
-
result = Source.destroy(@source.id)
|
152
|
-
result.should be_true
|
153
|
-
end
|
154
|
-
|
155
|
-
it "should raise NotFound when attempting to destroy non-existing source" do
|
156
|
-
executing do
|
157
|
-
Source.destroy(mangle(@source.id))
|
158
|
-
end.should raise_error(NotFound)
|
159
|
-
end
|
160
|
-
end
|
161
|
-
|
162
|
-
end
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
2
|
+
include DataCatalog
|
3
|
+
|
4
|
+
module SourceHelpers
|
5
|
+
def create_source(params={})
|
6
|
+
valid_params = {
|
7
|
+
:title => "Some FCC Data",
|
8
|
+
:url => "http://fcc.gov/somedata.csv"
|
9
|
+
}
|
10
|
+
Source.create(valid_params.merge(params))
|
11
|
+
end
|
12
|
+
|
13
|
+
def create_3_sources
|
14
|
+
%w(FCC NASA DOE).each do |name|
|
15
|
+
Source.create({
|
16
|
+
:title => "#{name} Data",
|
17
|
+
:url => "http://#{name.downcase}.gov/data.xml"
|
18
|
+
})
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe Source do
|
24
|
+
include SourceHelpers
|
25
|
+
|
26
|
+
before do
|
27
|
+
setup_api
|
28
|
+
clean_slate
|
29
|
+
end
|
30
|
+
|
31
|
+
describe ".all" do
|
32
|
+
before do
|
33
|
+
create_3_sources
|
34
|
+
@sources = Source.all
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should return an enumeration of sources" do
|
38
|
+
@sources.each do |source|
|
39
|
+
source.should be_an_instance_of(Source)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
it "should return correct titles" do
|
44
|
+
expected = ["FCC Data", "NASA Data", "DOE Data"]
|
45
|
+
@sources.map(&:title).sort.should == expected.sort
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
describe ".all with conditions" do
|
50
|
+
before do
|
51
|
+
create_3_sources
|
52
|
+
@sources = Source.all(:title => "NASA Data")
|
53
|
+
end
|
54
|
+
|
55
|
+
it "should return an enumeration of sources" do
|
56
|
+
@sources.each do |source|
|
57
|
+
source.should be_an_instance_of(Source)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
it "should return correct titles" do
|
62
|
+
expected = ["NASA Data"]
|
63
|
+
@sources.map(&:title).sort.should == expected.sort
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
describe ".create" do
|
68
|
+
it "should create a new source from basic params" do
|
69
|
+
source = create_source
|
70
|
+
source.should be_an_instance_of(Source)
|
71
|
+
source.url.should == "http://fcc.gov/somedata.csv"
|
72
|
+
end
|
73
|
+
|
74
|
+
it "should create a new source from custom params" do
|
75
|
+
source = create_source({ :custom => {
|
76
|
+
"0" => {
|
77
|
+
:label => "License",
|
78
|
+
:description => "License",
|
79
|
+
:type => "string",
|
80
|
+
:value => "Public Domain"
|
81
|
+
}
|
82
|
+
}})
|
83
|
+
source.should be_an_instance_of(Source)
|
84
|
+
source.url.should == "http://fcc.gov/somedata.csv"
|
85
|
+
source.custom.should == {
|
86
|
+
"0" => {
|
87
|
+
"label" => "License",
|
88
|
+
"description" => "License",
|
89
|
+
"type" => "string",
|
90
|
+
"value" => "Public Domain"
|
91
|
+
}
|
92
|
+
}
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
describe ".first" do
|
97
|
+
before do
|
98
|
+
create_3_sources
|
99
|
+
end
|
100
|
+
|
101
|
+
it "should return a source" do
|
102
|
+
source = Source.first(:title => "NASA Data")
|
103
|
+
source.should be_an_instance_of(Source)
|
104
|
+
source.title.should == "NASA Data"
|
105
|
+
end
|
106
|
+
|
107
|
+
it "should return nil if nothing found" do
|
108
|
+
source = Source.first(:title => "UFO Data")
|
109
|
+
source.should be_nil
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
describe ".get" do
|
114
|
+
before do
|
115
|
+
@source = create_source
|
116
|
+
end
|
117
|
+
|
118
|
+
it "should return a source" do
|
119
|
+
source = Source.get(@source.id)
|
120
|
+
source.should be_an_instance_of(Source)
|
121
|
+
source.title.should == "Some FCC Data"
|
122
|
+
end
|
123
|
+
|
124
|
+
it "should raise NotFound if no source exists" do
|
125
|
+
executing do
|
126
|
+
Source.get(mangle(@source.id))
|
127
|
+
end.should raise_error(NotFound)
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
describe ".update" do
|
132
|
+
before do
|
133
|
+
@source = create_source
|
134
|
+
end
|
135
|
+
|
136
|
+
it "should update an existing source from valid params" do
|
137
|
+
source = Source.update(@source.id, {
|
138
|
+
:url => "http://fec.gov/newdata.csv"
|
139
|
+
})
|
140
|
+
source.should be_an_instance_of(Source)
|
141
|
+
source.url.should == "http://fec.gov/newdata.csv"
|
142
|
+
end
|
143
|
+
end
|
144
|
+
|
145
|
+
describe ".destroy" do
|
146
|
+
before do
|
147
|
+
@source = create_source
|
148
|
+
end
|
149
|
+
|
150
|
+
it "should destroy an existing source" do
|
151
|
+
result = Source.destroy(@source.id)
|
152
|
+
result.should be_true
|
153
|
+
end
|
154
|
+
|
155
|
+
it "should raise NotFound when attempting to destroy non-existing source" do
|
156
|
+
executing do
|
157
|
+
Source.destroy(mangle(@source.id))
|
158
|
+
end.should raise_error(NotFound)
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
end
|