faceted 1.0.8 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -3,13 +3,15 @@ source "http://rubygems.org"
3
3
  # Example:
4
4
  gem "activesupport", ">= 2.3.5"
5
5
  gem "activemodel"
6
+ gem "rails"
6
7
 
7
8
  # Add dependencies to develop your gem here.
8
9
  # Include everything needed to run rake, tests, features, etc.
9
- group :development do
10
+ group :development, :test do
10
11
  gem "shoulda", ">= 0"
11
12
  gem "rdoc", "~> 3.12"
12
13
  gem "rspec"
14
+ gem "rspec-rails"
13
15
  gem "bundler"
14
16
  gem "jeweler", "~> 1.8.4"
15
17
  gem "simplecov"
data/Gemfile.lock CHANGED
@@ -1,23 +1,76 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
+ actionmailer (3.2.8)
5
+ actionpack (= 3.2.8)
6
+ mail (~> 2.4.4)
7
+ actionpack (3.2.8)
8
+ activemodel (= 3.2.8)
9
+ activesupport (= 3.2.8)
10
+ builder (~> 3.0.0)
11
+ erubis (~> 2.7.0)
12
+ journey (~> 1.0.4)
13
+ rack (~> 1.4.0)
14
+ rack-cache (~> 1.2)
15
+ rack-test (~> 0.6.1)
16
+ sprockets (~> 2.1.3)
4
17
  activemodel (3.2.8)
5
18
  activesupport (= 3.2.8)
6
19
  builder (~> 3.0.0)
20
+ activerecord (3.2.8)
21
+ activemodel (= 3.2.8)
22
+ activesupport (= 3.2.8)
23
+ arel (~> 3.0.2)
24
+ tzinfo (~> 0.3.29)
25
+ activeresource (3.2.8)
26
+ activemodel (= 3.2.8)
27
+ activesupport (= 3.2.8)
7
28
  activesupport (3.2.8)
8
29
  i18n (~> 0.6)
9
30
  multi_json (~> 1.0)
31
+ arel (3.0.2)
10
32
  builder (3.0.3)
11
33
  diff-lcs (1.1.3)
34
+ erubis (2.7.0)
12
35
  git (1.2.5)
36
+ hike (1.2.1)
13
37
  i18n (0.6.1)
14
38
  jeweler (1.8.4)
15
39
  bundler (~> 1.0)
16
40
  git (>= 1.2.5)
17
41
  rake
18
42
  rdoc
43
+ journey (1.0.4)
19
44
  json (1.7.5)
45
+ mail (2.4.4)
46
+ i18n (>= 0.4.0)
47
+ mime-types (~> 1.16)
48
+ treetop (~> 1.4.8)
49
+ mime-types (1.19)
20
50
  multi_json (1.3.6)
51
+ polyglot (0.3.3)
52
+ rack (1.4.1)
53
+ rack-cache (1.2)
54
+ rack (>= 0.4)
55
+ rack-ssl (1.3.2)
56
+ rack
57
+ rack-test (0.6.2)
58
+ rack (>= 1.0)
59
+ rails (3.2.8)
60
+ actionmailer (= 3.2.8)
61
+ actionpack (= 3.2.8)
62
+ activerecord (= 3.2.8)
63
+ activeresource (= 3.2.8)
64
+ activesupport (= 3.2.8)
65
+ bundler (~> 1.0)
66
+ railties (= 3.2.8)
67
+ railties (3.2.8)
68
+ actionpack (= 3.2.8)
69
+ activesupport (= 3.2.8)
70
+ rack-ssl (~> 1.3.2)
71
+ rake (>= 0.8.7)
72
+ rdoc (~> 3.4)
73
+ thor (>= 0.14.6, < 2.0)
21
74
  rake (0.9.2.2)
22
75
  rdoc (3.12)
23
76
  json (~> 1.4)
@@ -29,6 +82,11 @@ GEM
29
82
  rspec-expectations (2.11.2)
30
83
  diff-lcs (~> 1.1.3)
31
84
  rspec-mocks (2.11.2)
85
+ rspec-rails (2.11.4)
86
+ actionpack (>= 3.0)
87
+ activesupport (>= 3.0)
88
+ railties (>= 3.0)
89
+ rspec (~> 2.11.0)
32
90
  shoulda (3.1.1)
33
91
  shoulda-context (~> 1.0)
34
92
  shoulda-matchers (~> 1.2)
@@ -39,6 +97,16 @@ GEM
39
97
  multi_json (~> 1.0)
40
98
  simplecov-html (~> 0.5.3)
41
99
  simplecov-html (0.5.3)
100
+ sprockets (2.1.3)
101
+ hike (~> 1.2)
102
+ rack (~> 1.0)
103
+ tilt (~> 1.1, != 1.3.0)
104
+ thor (0.16.0)
105
+ tilt (1.3.3)
106
+ treetop (1.4.12)
107
+ polyglot
108
+ polyglot (>= 0.3.1)
109
+ tzinfo (0.3.35)
42
110
 
43
111
  PLATFORMS
44
112
  ruby
@@ -48,7 +116,9 @@ DEPENDENCIES
48
116
  activesupport (>= 2.3.5)
49
117
  bundler
50
118
  jeweler (~> 1.8.4)
119
+ rails
51
120
  rdoc (~> 3.12)
52
121
  rspec
122
+ rspec-rails
53
123
  shoulda
54
124
  simplecov
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.8
1
+ 1.1.0
data/faceted.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "faceted"
8
- s.version = "1.0.8"
8
+ s.version = "1.1.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Corey Ehmke", "Max Thom Stahl"]
12
- s.date = "2012-12-06"
12
+ s.date = "2012-12-07"
13
13
  s.description = "Faceted provides set of tools, patterns, and modules for use in API implementations."
14
14
  s.email = "corey@trunkclub.com"
15
15
  s.extra_rdoc_files = [
@@ -33,6 +33,7 @@ Gem::Specification.new do |s|
33
33
  "lib/faceted/model.rb",
34
34
  "lib/faceted/presenter.rb",
35
35
  "spec/collector_spec.rb",
36
+ "spec/controller_spec.rb",
36
37
  "spec/presenter_spec.rb",
37
38
  "spec/spec_helper.rb"
38
39
  ]
@@ -48,18 +49,22 @@ Gem::Specification.new do |s|
48
49
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
49
50
  s.add_runtime_dependency(%q<activesupport>, [">= 2.3.5"])
50
51
  s.add_runtime_dependency(%q<activemodel>, [">= 0"])
52
+ s.add_runtime_dependency(%q<rails>, [">= 0"])
51
53
  s.add_development_dependency(%q<shoulda>, [">= 0"])
52
54
  s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
53
55
  s.add_development_dependency(%q<rspec>, [">= 0"])
56
+ s.add_development_dependency(%q<rspec-rails>, [">= 0"])
54
57
  s.add_development_dependency(%q<bundler>, [">= 0"])
55
58
  s.add_development_dependency(%q<jeweler>, ["~> 1.8.4"])
56
59
  s.add_development_dependency(%q<simplecov>, [">= 0"])
57
60
  else
58
61
  s.add_dependency(%q<activesupport>, [">= 2.3.5"])
59
62
  s.add_dependency(%q<activemodel>, [">= 0"])
63
+ s.add_dependency(%q<rails>, [">= 0"])
60
64
  s.add_dependency(%q<shoulda>, [">= 0"])
61
65
  s.add_dependency(%q<rdoc>, ["~> 3.12"])
62
66
  s.add_dependency(%q<rspec>, [">= 0"])
67
+ s.add_dependency(%q<rspec-rails>, [">= 0"])
63
68
  s.add_dependency(%q<bundler>, [">= 0"])
64
69
  s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
65
70
  s.add_dependency(%q<simplecov>, [">= 0"])
@@ -67,9 +72,11 @@ Gem::Specification.new do |s|
67
72
  else
68
73
  s.add_dependency(%q<activesupport>, [">= 2.3.5"])
69
74
  s.add_dependency(%q<activemodel>, [">= 0"])
75
+ s.add_dependency(%q<rails>, [">= 0"])
70
76
  s.add_dependency(%q<shoulda>, [">= 0"])
71
77
  s.add_dependency(%q<rdoc>, ["~> 3.12"])
72
78
  s.add_dependency(%q<rspec>, [">= 0"])
79
+ s.add_dependency(%q<rspec-rails>, [">= 0"])
73
80
  s.add_dependency(%q<bundler>, [">= 0"])
74
81
  s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
75
82
  s.add_dependency(%q<simplecov>, [">= 0"])
@@ -4,12 +4,12 @@ module Faceted
4
4
 
5
5
  # For rendering a response with a single object, e.g.
6
6
  # render_response(@address)
7
- def render_response(obj)
7
+ def render_response(obj, code=nil)
8
8
  render :json => {
9
9
  success: obj.success,
10
10
  response: obj.to_hash,
11
11
  errors: obj.errors
12
- }
12
+ }, :status => code || obj.success ? 200 : 400
13
13
  end
14
14
 
15
15
  # For rendering a response with a multiple objects, e.g.
@@ -18,7 +18,7 @@ module Faceted
18
18
  render :json => {
19
19
  success: true,
20
20
  response: {"#{key}".to_sym => array},
21
- errors: nil
21
+ errors: nil
22
22
  }
23
23
  end
24
24
 
@@ -28,8 +28,8 @@ module Faceted
28
28
  render :json => {
29
29
  success: false,
30
30
  response: nil,
31
- errors: "Record not found: #{exception.message}"
32
- }, :status => 404
31
+ errors: "#{exception.message}"
32
+ }, :status => 400
33
33
  end
34
34
 
35
35
  # In your base API controller:
@@ -0,0 +1,57 @@
1
+ require 'spec_helper'
2
+
3
+ class Birthplace # Mock AR model
4
+ attr_accessor :id, :city, :state
5
+ def initialize(params={}); params.each{|k,v| self.send("#{k}=",v) if self.respond_to?(k)}; end
6
+ def attributes; {:id => self.id, :city => self.city, :state => self.state}; end
7
+ def reload; self; end
8
+ end
9
+
10
+ module MyApi
11
+
12
+ class MyApi::Application < Rails::Application
13
+ end
14
+
15
+ class Birthplace
16
+ include Faceted::Presenter
17
+ presents :birthplace
18
+ field :city
19
+ field :state
20
+ end
21
+
22
+ class BirthplacesController < ActionController::Base
23
+ include Faceted::Controller
24
+ include Rails.application.routes.url_helpers
25
+ def show
26
+ @birthplace = MyApi::Birthplace.first
27
+ render_response @birthplace
28
+ end
29
+
30
+ end
31
+
32
+ end
33
+
34
+ describe MyApi::BirthplacesController, :type => :controller do
35
+
36
+ before do
37
+ MyApi::Birthplace.stub(:first) { MyApi::Birthplace.new }
38
+ MyApi::Application.routes.draw do
39
+ namespace :my_api do
40
+ resources :birthplaces
41
+ end
42
+ end
43
+ end
44
+
45
+ it 'renders with a 200 when the operation is successful' do
46
+ MyApi::Birthplace.any_instance.stub(:success) { true }
47
+ get :show, :id => 1
48
+ response.code.should == "200"
49
+ end
50
+
51
+ it 'renders with a 400 when the operation is unsuccessful' do
52
+ MyApi::Birthplace.any_instance.stub(:success) { false }
53
+ get :show, :id => 1
54
+ response.code.should == "400"
55
+ end
56
+
57
+ end
data/spec/spec_helper.rb CHANGED
@@ -3,3 +3,6 @@ require 'active_model'
3
3
  require 'active_support'
4
4
  require 'bundler/setup'
5
5
  require 'faceted'
6
+ require 'rails/all'
7
+ require 'rspec'
8
+ require 'rspec/rails'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: faceted
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.8
4
+ version: 1.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-12-06 00:00:00.000000000 Z
13
+ date: 2012-12-07 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activesupport
@@ -44,6 +44,22 @@ dependencies:
44
44
  - - ! '>='
45
45
  - !ruby/object:Gem::Version
46
46
  version: '0'
47
+ - !ruby/object:Gem::Dependency
48
+ name: rails
49
+ requirement: !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :runtime
56
+ prerelease: false
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ! '>='
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
47
63
  - !ruby/object:Gem::Dependency
48
64
  name: shoulda
49
65
  requirement: !ruby/object:Gem::Requirement
@@ -92,6 +108,22 @@ dependencies:
92
108
  - - ! '>='
93
109
  - !ruby/object:Gem::Version
94
110
  version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: rspec-rails
113
+ requirement: !ruby/object:Gem::Requirement
114
+ none: false
115
+ requirements:
116
+ - - ! '>='
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ type: :development
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ none: false
123
+ requirements:
124
+ - - ! '>='
125
+ - !ruby/object:Gem::Version
126
+ version: '0'
95
127
  - !ruby/object:Gem::Dependency
96
128
  name: bundler
97
129
  requirement: !ruby/object:Gem::Requirement
@@ -164,6 +196,7 @@ files:
164
196
  - lib/faceted/model.rb
165
197
  - lib/faceted/presenter.rb
166
198
  - spec/collector_spec.rb
199
+ - spec/controller_spec.rb
167
200
  - spec/presenter_spec.rb
168
201
  - spec/spec_helper.rb
169
202
  homepage: http://github.com/trunkclub/faceted
@@ -181,7 +214,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
181
214
  version: '0'
182
215
  segments:
183
216
  - 0
184
- hash: -1963421351288044790
217
+ hash: -4341699658491499181
185
218
  required_rubygems_version: !ruby/object:Gem::Requirement
186
219
  none: false
187
220
  requirements: