datacatalog 0.4.18 → 0.4.19

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/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- datacatalog (0.4.18)
4
+ datacatalog (0.4.19)
5
5
  activesupport (~> 3.0.0)
6
6
  httparty (~> 0.6.1)
7
7
  mash (~> 0.1.1)
data/Rakefile CHANGED
@@ -4,7 +4,7 @@ begin
4
4
  require 'jeweler'
5
5
  Jeweler::Tasks.new do |gem|
6
6
  gem.name = "datacatalog"
7
- gem.version = '0.4.18'
7
+ gem.version = '0.4.19'
8
8
  gem.summary = %Q{Client for the National Data Catalog API}
9
9
  gem.description = %Q{A Ruby client library for the National Data Catalog API}
10
10
  gem.email = "luigi@sunlightfoundation.com"
data/datacatalog.gemspec CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{datacatalog}
8
- s.version = "0.4.18"
8
+ s.version = "0.4.19"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Luigi Montanez", "David James"]
@@ -33,6 +33,8 @@ Gem::Specification.new do |s|
33
33
  "lib/resources/about.rb",
34
34
  "lib/resources/api_key.rb",
35
35
  "lib/resources/broken_link.rb",
36
+ "lib/resources/categorization.rb",
37
+ "lib/resources/category.rb",
36
38
  "lib/resources/comment.rb",
37
39
  "lib/resources/document.rb",
38
40
  "lib/resources/download.rb",
@@ -50,6 +52,8 @@ Gem::Specification.new do |s|
50
52
  "spec/api_key_spec.rb",
51
53
  "spec/base_spec.rb",
52
54
  "spec/broken_link_spec.rb",
55
+ "spec/categorization_spec.rb",
56
+ "spec/category_spec.rb",
53
57
  "spec/comment_spec.rb",
54
58
  "spec/datacatalog_spec.rb",
55
59
  "spec/document_spec.rb",
@@ -81,6 +85,8 @@ Gem::Specification.new do |s|
81
85
  "spec/api_key_spec.rb",
82
86
  "spec/base_spec.rb",
83
87
  "spec/broken_link_spec.rb",
88
+ "spec/categorization_spec.rb",
89
+ "spec/category_spec.rb",
84
90
  "spec/comment_spec.rb",
85
91
  "spec/datacatalog_spec.rb",
86
92
  "spec/document_spec.rb",
@@ -0,0 +1,33 @@
1
+ module DataCatalog
2
+
3
+ class Categorization < Base
4
+
5
+ def self.all(conditions={})
6
+ cursor(uri, query_hash(conditions))
7
+ end
8
+
9
+ def self.create(params={})
10
+ one(http_post(uri, :body => params))
11
+ end
12
+
13
+ def self.destroy(id)
14
+ one(http_delete(uri(id)))
15
+ end
16
+
17
+ def self.get(id)
18
+ one(http_get(uri(id)))
19
+ end
20
+
21
+ def self.update(id, params={})
22
+ one(http_put(uri(id), :body => params))
23
+ end
24
+
25
+ # == Helpers
26
+
27
+ def self.uri(id=nil)
28
+ "/categorizations/#{id}"
29
+ end
30
+
31
+ end
32
+
33
+ end
@@ -0,0 +1,33 @@
1
+ module DataCatalog
2
+
3
+ class Category < Base
4
+
5
+ def self.all(conditions={})
6
+ cursor(uri, query_hash(conditions))
7
+ end
8
+
9
+ def self.create(params={})
10
+ one(http_post(uri, :body => params))
11
+ end
12
+
13
+ def self.destroy(id)
14
+ one(http_delete(uri(id)))
15
+ end
16
+
17
+ def self.get(id)
18
+ one(http_get(uri(id)))
19
+ end
20
+
21
+ def self.update(id, params={})
22
+ one(http_put(uri(id), :body => params))
23
+ end
24
+
25
+ # == Helpers
26
+
27
+ def self.uri(id=nil)
28
+ "/categories/#{id}"
29
+ end
30
+
31
+ end
32
+
33
+ end
@@ -6,22 +6,22 @@ module DataCatalog
6
6
  cursor(uri, query_hash(conditions))
7
7
  end
8
8
 
9
- def self.get(id)
10
- one(http_get(uri(id)))
11
- end
12
-
13
9
  def self.create(params={})
14
10
  one(http_post(uri, :body => params))
15
11
  end
16
12
 
17
- def self.update(id, params={})
18
- one(http_put(uri(id), :body => params))
19
- end
20
-
21
13
  def self.destroy(id)
22
14
  one(http_delete(uri(id)))
23
15
  end
24
16
 
17
+ def self.get(id)
18
+ one(http_get(uri(id)))
19
+ end
20
+
21
+ def self.update(id, params={})
22
+ one(http_put(uri(id), :body => params))
23
+ end
24
+
25
25
  # == Helpers
26
26
 
27
27
  def self.uri(id=nil)
@@ -6,22 +6,22 @@ module DataCatalog
6
6
  cursor(uri, query_hash(conditions))
7
7
  end
8
8
 
9
- def self.get(id)
10
- one(http_get(uri(id)))
11
- end
12
-
13
9
  def self.create(params={})
14
10
  one(http_post(uri, :body => params))
15
11
  end
16
12
 
17
- def self.update(id, params={})
18
- one(http_put(uri(id), :body => params))
19
- end
20
-
21
13
  def self.destroy(id)
22
14
  one(http_delete(uri(id)))
23
15
  end
24
16
 
17
+ def self.get(id)
18
+ one(http_get(uri(id)))
19
+ end
20
+
21
+ def self.update(id, params={})
22
+ one(http_put(uri(id), :body => params))
23
+ end
24
+
25
25
  # == Helpers
26
26
 
27
27
  def self.uri(id=nil)
@@ -6,22 +6,22 @@ module DataCatalog
6
6
  cursor(uri, query_hash(conditions))
7
7
  end
8
8
 
9
- def self.get(id)
10
- one(http_get(uri(id)))
11
- end
12
-
13
9
  def self.create(params={})
14
10
  one(http_post(uri, :body => params))
15
11
  end
16
12
 
17
- def self.update(id, params={})
18
- one(http_put(uri(id), :body => params))
19
- end
20
-
21
13
  def self.destroy(id)
22
14
  one(http_delete(uri(id)))
23
15
  end
24
16
 
17
+ def self.get(id)
18
+ one(http_get(uri(id)))
19
+ end
20
+
21
+ def self.update(id, params={})
22
+ one(http_put(uri(id), :body => params))
23
+ end
24
+
25
25
  # == Helpers
26
26
 
27
27
  def self.uri(id=nil)
@@ -0,0 +1,129 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+ include DataCatalog
3
+
4
+ describe Categorization do
5
+
6
+ before do
7
+ setup_api
8
+ clean_slate
9
+ @user = User.create(
10
+ :name => "Ted Smith",
11
+ :email => "ted@email.com"
12
+ )
13
+ @sources = [
14
+ Source.create(
15
+ :title => "Some Bat Data",
16
+ :url => "http://bats.doi.gov/bat_data.csv",
17
+ :source_type => "dataset"
18
+ ),
19
+ Source.create(
20
+ :title => "Bat Flying Simulation",
21
+ :url => "http://bats.doi.gov/bat-sim",
22
+ :source_type => "interactive"
23
+ ),
24
+ ]
25
+ @category = Category.create(:name => "Bat Policy")
26
+ @categorizations = [
27
+ Categorization.create({
28
+ :source_id => @sources[0].id,
29
+ :category_id => @category.id
30
+ }),
31
+ Categorization.create({
32
+ :source_id => @sources[1].id,
33
+ :category_id => @category.id
34
+ })
35
+ ]
36
+ end
37
+
38
+ describe ".all" do
39
+ it "should return an enumeration of 2 categorizations" do
40
+ categorizations = Categorization.all
41
+ categorizations.length.should == 2
42
+ categorizations.each do |o|
43
+ o.should be_an_instance_of(Categorization)
44
+ end
45
+ end
46
+ end
47
+
48
+ describe ".create" do
49
+ # (successful create is exercised in before block)
50
+
51
+ it "a basic user should be unauthorized" do
52
+ executing do
53
+ DataCatalog.with_key(@user.primary_api_key) do
54
+ Categorization.create(
55
+ :source_id => @sources[0].id,
56
+ :category_id => @category.id
57
+ )
58
+ end
59
+ end.should raise_error(Unauthorized)
60
+ end
61
+
62
+ it "should fail with invalid params" do
63
+ executing do
64
+ Categorization.create(:cave => "The Batcave")
65
+ end.should raise_error(BadRequest)
66
+ end
67
+
68
+ it "should fail when missing params" do
69
+ executing do
70
+ Categorization.create()
71
+ end.should raise_error(BadRequest)
72
+ end
73
+ end
74
+
75
+ describe ".destroy" do
76
+ it "should destroy an existing categorization as an admin" do
77
+ Categorization.destroy(@categorizations[0].id).should be_true
78
+ end
79
+
80
+ it "should not destroy an existing categorization as a basic user" do
81
+ DataCatalog.with_key(@user.primary_api_key) do
82
+ executing do
83
+ Categorization.destroy(@categorizations[0].id)
84
+ end.should raise_error(Unauthorized)
85
+ end
86
+ end
87
+
88
+ it "should raise NotFound when attempting to destroy non-existing categorization" do
89
+ executing do
90
+ Categorization.destroy(mangle(@categorizations[0].id))
91
+ end.should raise_error(NotFound)
92
+ end
93
+ end
94
+
95
+ describe ".get" do
96
+ it "should return an categorization as a basic user" do
97
+ categorization = DataCatalog.with_key(@user.primary_api_key) do
98
+ Categorization.get(@categorizations[0].id)
99
+ end
100
+ categorization.should be_an_instance_of(Categorization)
101
+ categorization.id.should == @categorizations[0].id
102
+ end
103
+
104
+ it "should raise NotFound if no categorization exists" do
105
+ executing do
106
+ Categorization.get(mangle(@categorizations[0].id))
107
+ end.should raise_error(NotFound)
108
+ end
109
+ end
110
+
111
+ describe ".update" do
112
+ it "a basic user should be unauthorized" do
113
+ executing do
114
+ DataCatalog.with_key(@user.primary_api_key) do
115
+ Categorization.update(@categorizations[0].id, :name => "International Bat Registry")
116
+ end
117
+ end.should raise_error(Unauthorized)
118
+ end
119
+
120
+ it "should update an existing categorization with valid params" do
121
+ @categorizations[0].category_id.should == @category.id
122
+ new_category = Category.create(:name => "Wombat Policy")
123
+ Categorization.update(@categorizations[0].id, :category_id => new_category.id)
124
+ categorization = Categorization.get(@categorizations[0].id)
125
+ categorization.category_id == new_category.id
126
+ end
127
+ end
128
+
129
+ end
@@ -0,0 +1,106 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+ include DataCatalog
3
+
4
+ describe Category do
5
+
6
+ before do
7
+ setup_api
8
+ clean_slate
9
+ @user = User.create(
10
+ :name => "Ted Smith",
11
+ :email => "ted@email.com"
12
+ )
13
+ @categories = [
14
+ Category.create(:name => "Bat Policy"),
15
+ Category.create(:name => "Bear Policy"),
16
+ ]
17
+ end
18
+
19
+ describe ".all" do
20
+ it "should return an enumeration of 2 categories" do
21
+ categories = Category.all
22
+ categories.length.should == 2
23
+ categories.each do |o|
24
+ o.should be_an_instance_of(Category)
25
+ end
26
+ end
27
+ end
28
+
29
+ describe ".create" do
30
+ # (successful create is exercised in before block)
31
+
32
+ it "a basic user should be unauthorized" do
33
+ executing do
34
+ DataCatalog.with_key(@user.primary_api_key) do
35
+ Category.create(:name => "Wombat Policy")
36
+ end
37
+ end.should raise_error(Unauthorized)
38
+ end
39
+
40
+ it "should fail with invalid params" do
41
+ executing do
42
+ Category.create(:cave => "The Batcave")
43
+ end.should raise_error(BadRequest)
44
+ end
45
+
46
+ it "should fail when missing params" do
47
+ executing do
48
+ Category.create()
49
+ end.should raise_error(BadRequest)
50
+ end
51
+ end
52
+
53
+ describe ".destroy" do
54
+ it "should destroy an existing category as an admin" do
55
+ Category.destroy(@categories[0].id).should be_true
56
+ end
57
+
58
+ it "should not destroy an existing category as a basic user" do
59
+ DataCatalog.with_key(@user.primary_api_key) do
60
+ executing do
61
+ Category.destroy(@categories[0].id)
62
+ end.should raise_error(Unauthorized)
63
+ end
64
+ end
65
+
66
+ it "should raise NotFound when attempting to destroy non-existing category" do
67
+ executing do
68
+ Category.destroy(mangle(@categories[0].id))
69
+ end.should raise_error(NotFound)
70
+ end
71
+ end
72
+
73
+ describe ".get" do
74
+ it "should return an category as a basic user" do
75
+ category = DataCatalog.with_key(@user.primary_api_key) do
76
+ Category.get(@categories[0].id)
77
+ end
78
+ category.should be_an_instance_of(Category)
79
+ category.id.should == @categories[0].id
80
+ end
81
+
82
+ it "should raise NotFound if no category exists" do
83
+ executing do
84
+ Category.get(mangle(@categories[0].id))
85
+ end.should raise_error(NotFound)
86
+ end
87
+ end
88
+
89
+ describe ".update" do
90
+ it "a basic user should be unauthorized" do
91
+ executing do
92
+ DataCatalog.with_key(@user.primary_api_key) do
93
+ Category.update(@categories[0].id, :name => "International Bat Policy")
94
+ end
95
+ end.should raise_error(Unauthorized)
96
+ end
97
+
98
+ it "should update an existing category with valid params" do
99
+ @categories[0].name.should == "Bat Policy"
100
+ Category.update(@categories[0].id, :name => "International Bat Policy")
101
+ category = Category.get(@categories[0].id)
102
+ category.name.should == "International Bat Policy"
103
+ end
104
+ end
105
+
106
+ end
data/spec/spec_helper.rb CHANGED
@@ -9,6 +9,8 @@ alias :executing :lambda
9
9
 
10
10
  KLASSES = [
11
11
  DataCatalog::BrokenLink,
12
+ DataCatalog::Category,
13
+ DataCatalog::Categorization,
12
14
  DataCatalog::Comment,
13
15
  DataCatalog::Document,
14
16
  DataCatalog::Download,
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: datacatalog
3
3
  version: !ruby/object:Gem::Version
4
- hash: 43
4
+ hash: 41
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 4
9
- - 18
10
- version: 0.4.18
9
+ - 19
10
+ version: 0.4.19
11
11
  platform: ruby
12
12
  authors:
13
13
  - Luigi Montanez
@@ -173,6 +173,8 @@ files:
173
173
  - lib/resources/about.rb
174
174
  - lib/resources/api_key.rb
175
175
  - lib/resources/broken_link.rb
176
+ - lib/resources/categorization.rb
177
+ - lib/resources/category.rb
176
178
  - lib/resources/comment.rb
177
179
  - lib/resources/document.rb
178
180
  - lib/resources/download.rb
@@ -190,6 +192,8 @@ files:
190
192
  - spec/api_key_spec.rb
191
193
  - spec/base_spec.rb
192
194
  - spec/broken_link_spec.rb
195
+ - spec/categorization_spec.rb
196
+ - spec/category_spec.rb
193
197
  - spec/comment_spec.rb
194
198
  - spec/datacatalog_spec.rb
195
199
  - spec/document_spec.rb
@@ -249,6 +253,8 @@ test_files:
249
253
  - spec/api_key_spec.rb
250
254
  - spec/base_spec.rb
251
255
  - spec/broken_link_spec.rb
256
+ - spec/categorization_spec.rb
257
+ - spec/category_spec.rb
252
258
  - spec/comment_spec.rb
253
259
  - spec/datacatalog_spec.rb
254
260
  - spec/document_spec.rb