exposure 0.1.0 → 0.1.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/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.1.1
@@ -11,6 +11,12 @@ module Exposure
11
11
  self.const_get(:Builders)[name] = options[:with]
12
12
  end
13
13
 
14
+ def build_default_builders!
15
+ nesting = @_exposed_resource_options[:nested] || []
16
+ nesting = nesting.clone
17
+ build_default_builder(self.resources_name, nesting)
18
+ end
19
+
14
20
  def build_default_builder(member, nesting)
15
21
  if nesting.any?
16
22
  builders = self::const_set(:DefaultBuilders, {
@@ -22,6 +22,31 @@ module Exposure
22
22
  self.const_get(:Finders)[name] = options[:with]
23
23
  end
24
24
 
25
+ def build_default_finders!
26
+ if nesting = @_exposed_resource_options[:nested]
27
+ self.build_nested_default_finders!(nesting)
28
+ return
29
+ end
30
+
31
+ self.parent_model = self.resource_name.camelize.constantize
32
+ build_default_finders(self.resource_name, [])
33
+ self.member_nesting = [ [self.resource_name.to_sym] ]
34
+ self.collection_nesting = [ [self.resources_name.to_sym] ]
35
+ end
36
+
37
+ def build_nested_default_finders!(nesting)
38
+ nesting = nesting.clone
39
+ self.parent_model = nesting.first.to_s.singularize.camelize.constantize
40
+
41
+ build_default_finders(self.resources_name, nesting)
42
+
43
+ nesting.collect! {|sym| [sym.to_s.singularize.to_sym, sym]}
44
+
45
+
46
+ self.member_nesting = nesting + [ [self.resource_name.to_sym, self.resources_name.to_sym] ]
47
+ self.collection_nesting = nesting + [ [self.resources_name.to_sym, self.resources_name.to_sym] ]
48
+ end
49
+
25
50
  def build_default_finders(member, nesting) #:nodoc:
26
51
  finders = self::const_set(:DefaultFinders, {
27
52
  self.resource_name.intern => Proc.new { [:find, params[:id] ] },
@@ -21,37 +21,6 @@ module Exposure
21
21
  self.resource_name = @_exposed_resource_name.to_s.singularize
22
22
  self.resources_name = @_exposed_resource_name.to_s
23
23
  end
24
-
25
- def build_default_finders!
26
- if nesting = @_exposed_resource_options[:nested]
27
- self.build_nested_default_finders!(nesting)
28
- return
29
- end
30
-
31
- self.parent_model = self.resource_name.camelize.constantize
32
- build_default_finders(self.resource_name, [])
33
- self.member_nesting = [ [self.resource_name.to_sym] ]
34
- self.collection_nesting = [ [self.resources_name.to_sym] ]
35
- end
36
-
37
- def build_default_builders!
38
- nesting = @_exposed_resource_options[:nested] || []
39
- nesting = nesting.clone
40
- nesting.shift
41
- build_default_builder(self.resources_name, nesting)
42
- end
43
-
44
- def build_nested_default_finders!(nesting)
45
- nesting = nesting.clone
46
- self.parent_model = nesting.shift.to_s.singularize.camelize.constantize
47
-
48
- build_default_finders(self.resources_name, nesting)
49
-
50
- nesting = nesting.collect! {|sym| [sym.to_s.singularize.to_sym, sym]}
51
-
52
- self.member_nesting = nesting + [ [self.resource_name.to_sym] ]
53
- self.collection_nesting = nesting + [ [self.resources_name.to_sym] ]
54
- end
55
24
  end
56
25
  end
57
26
  end
@@ -216,7 +216,7 @@ module Exposure
216
216
  @resource = instance_variable_set("@#{resource_name}", call_finder_chain(parent_model, self.class.member_nesting, false))
217
217
  end
218
218
 
219
- def find_records
219
+ def find_records
220
220
  @resources = instance_variable_set("@#{resources_name}", call_finder_chain(parent_model, self.class.collection_nesting, false))
221
221
  end
222
222
 
@@ -40,14 +40,14 @@ describe "builders", :type => :controller do
40
40
  should assign_to(:pirate).with(@pirate)
41
41
  end
42
42
 
43
- it "finds with a method name as symbol" do
43
+ it "builds with a method name as symbol" do
44
44
  PiratesController.build :pirate, :with => :build_pirate
45
45
  post(:create, {:pirate => {}})
46
46
 
47
47
  should assign_to(:pirate).with(@pirate)
48
48
  end
49
49
 
50
- it "finds with a block" do
50
+ it "builds with a block" do
51
51
  PiratesController.build :pirate do
52
52
  Pirate.new(params[:pirate])
53
53
  end
@@ -16,24 +16,29 @@ describe "nested builders", :type => :controller do
16
16
  setup.call
17
17
  controller_name :ships
18
18
  Object.remove_class(ShipsController)
19
-
19
+
20
20
  before(:each) do
21
21
  setup.call
22
22
  @controller = ShipsController.new
23
23
  @request = ActionController::TestRequest.new
24
24
  @response = ActionController::TestResponse.new
25
25
 
26
- @pirate = Factory.create(:pirate_with_ships)
27
- Pirate.stub(:find => @pirate)
26
+ @pirate = Factory.create(:pirate)
27
+ @ship = Factory.build(:ship)
28
+ Pirate.stub!(:find).and_return(@pirate)
29
+ @pirate.ships.stub!(:build).and_return(@ship)
30
+
31
+
32
+ params = {:pirate_id => @pirate.id, :ship => Factory.attributes_for(:ship)}
28
33
 
29
- get(:new, {:pirate_id => 1, :ship => nil})
34
+ get(:new, params)
30
35
  end
31
36
 
32
37
  after(:each) do
33
38
  Object.remove_class(ShipsController)
34
39
  end
35
40
 
36
- it { should assign_to(:ship) }
37
- it { should assign_to(:resource) }
41
+ it { should assign_to(:ship).with(@ship) }
42
+ it { should assign_to(:resource).with(@ship) }
38
43
 
39
44
  end
@@ -4,5 +4,5 @@ Factory.define :pirate do |p|
4
4
  end
5
5
 
6
6
  Factory.define :pirate_with_ships, :parent => :pirate do |p|
7
- p.ships {|ships| [ships.association(:ship)]}
7
+ p.ships {|ships| [ships.association(:ship), ships.association(:dinghy)] }
8
8
  end
@@ -1,3 +1,7 @@
1
1
  Factory.define :ship do |s|
2
2
  s.name 'Black Pearl'
3
+ end
4
+
5
+ Factory.define :dinghy, :class => 'ship' do |s|
6
+ s.name 'A shabby little thing'
3
7
  end
@@ -24,16 +24,16 @@ describe "nested finders", :type => :controller do
24
24
  @response = ActionController::TestResponse.new
25
25
 
26
26
  @pirate = Factory.create(:pirate_with_ships)
27
- Pirate.stub(:find => @pirate)
27
+ @ships = @pirate.ships
28
28
 
29
- get(:index, {:pirate_id => 1})
29
+ get(:index, {:pirate_id => @pirate.id})
30
30
  end
31
31
 
32
32
  after(:each) do
33
33
  Object.remove_class(ShipsController)
34
34
  end
35
35
 
36
- it { should assign_to(:ships) }
37
- it { should assign_to(:resources) }
36
+ it { should assign_to(:ships).with(@ships)}
37
+ it { should assign_to(:resources).with(@ships) }
38
38
 
39
39
  end
@@ -1,6 +1,6 @@
1
1
  require File.dirname(__FILE__) + '/spec_helper'
2
2
 
3
- describe "a REST patterned resource of 'pirates'", :type => :controller do
3
+ describe "a REST patterned resource", :type => :controller do
4
4
  setup = lambda {
5
5
  class PiratesController < ActionController::Base
6
6
  expose_many(:pirates)
@@ -28,7 +28,7 @@ describe "a REST patterned resource of 'pirates'", :type => :controller do
28
28
  end
29
29
 
30
30
  describe 'configuration' do
31
- it "has a resource name of 'post'" do
31
+ it "has a resource name of 'pirate'" do
32
32
  @controller.send(:resource_name).should == 'pirate'
33
33
  end
34
34
 
@@ -41,11 +41,13 @@ describe "a REST patterned resource of 'pirates'", :type => :controller do
41
41
 
42
42
  describe 'index' do
43
43
  before do
44
+ @pirates = [Factory.stub(:pirate)]
45
+ Pirate.should_receive(:find).with(:all).and_return(@pirates)
44
46
  get :index
45
47
  end
46
48
 
47
- it { should assign_to(:pirates) }
48
- it { should assign_to(:resources) }
49
+ it { should assign_to(:pirates).with(@pirates) }
50
+ it { should assign_to(:resources).with(@pirates) }
49
51
  it { should respond_with(:success) }
50
52
  it { should render_template(:index) }
51
53
  it { should_not set_the_flash }
@@ -58,8 +60,8 @@ describe "a REST patterned resource of 'pirates'", :type => :controller do
58
60
  get :show, {:id => 1}
59
61
  end
60
62
 
61
- it { should assign_to(:pirate) }
62
- it { should assign_to(:resource) }
63
+ it { should assign_to(:pirate).with(@pirate) }
64
+ it { should assign_to(:resource).with(@pirate) }
63
65
  it { should respond_with(:success) }
64
66
  it { should render_template(:show) }
65
67
  it { should_not set_the_flash }
@@ -82,11 +84,13 @@ describe "a REST patterned resource of 'pirates'", :type => :controller do
82
84
 
83
85
  describe 'new' do
84
86
  before(:each) do
87
+ @pirate = Factory.stub(:pirate)
88
+ Pirate.should_receive(:new).and_return(@pirate)
85
89
  get :new
86
90
  end
87
91
 
88
- it { should assign_to(:pirate) }
89
- it { should assign_to(:resource) }
92
+ it { should assign_to(:pirate).with(@pirate) }
93
+ it { should assign_to(:resource).with(@pirate) }
90
94
  it { should respond_with(:success) }
91
95
  it { should render_template(:new) }
92
96
  it { should_not set_the_flash }
@@ -99,14 +103,14 @@ describe "a REST patterned resource of 'pirates'", :type => :controller do
99
103
  params = {
100
104
  :pirate => {}
101
105
  }
102
- post_before_saving = Factory.build(:pirate)
103
- Pirate.should_receive(:new).with(params[:pirate]).and_return(post_before_saving)
104
- post_before_saving.should_receive(:save).and_return(true)
106
+ @pirate = Factory.build(:pirate)
107
+ Pirate.should_receive(:new).with(params[:pirate]).and_return(@pirate)
108
+ @pirate.should_receive(:save).and_return(true)
105
109
  post(:create, params)
106
110
  end
107
111
 
108
- it { should assign_to(:pirate) }
109
- it { should assign_to(:resource) }
112
+ it { should assign_to(:pirate).with(@pirate) }
113
+ it { should assign_to(:resource).with(@pirate) }
110
114
  it { should respond_with(:redirect).to(:index) }
111
115
  it { should set_the_flash.to('Pirate successfully created') }
112
116
  end
@@ -116,14 +120,14 @@ describe "a REST patterned resource of 'pirates'", :type => :controller do
116
120
  params = {
117
121
  :pirate => {}
118
122
  }
119
- post_before_saving = Factory.build(:pirate)
120
- Pirate.should_receive(:new).with(params[:pirate]).and_return(post_before_saving)
121
- post_before_saving.should_receive(:save).and_return(false)
123
+ @pirate = Factory.build(:pirate)
124
+ Pirate.should_receive(:new).with(params[:pirate]).and_return(@pirate)
125
+ @pirate.should_receive(:save).and_return(false)
122
126
  post(:create, params)
123
127
  end
124
128
 
125
- it { should assign_to(:pirate) }
126
- it { should assign_to(:resource) }
129
+ it { should assign_to(:pirate).with(@pirate) }
130
+ it { should assign_to(:resource).with(@pirate) }
127
131
  it { should respond_with(:success) }
128
132
  it { should render_template(:new) }
129
133
  it { should_not set_the_flash }
@@ -133,12 +137,13 @@ describe "a REST patterned resource of 'pirates'", :type => :controller do
133
137
  describe 'edit' do
134
138
  describe 'with found resource' do
135
139
  before(:each) do
136
- Pirate.should_receive(:find).with('1').and_return(Factory.stub(:pirate))
140
+ @pirate = Factory.stub(:pirate)
141
+ Pirate.should_receive(:find).with('1').and_return(@pirate)
137
142
  get :edit, {:id => 1}
138
143
  end
139
144
 
140
- it { should assign_to(:pirate) }
141
- it { should assign_to(:resource) }
145
+ it { should assign_to(:pirate).with(@pirate) }
146
+ it { should assign_to(:resource).with(@pirate) }
142
147
  it { should respond_with(:success) }
143
148
  it { should render_template(:edit) }
144
149
  it { should_not set_the_flash }
@@ -166,14 +171,14 @@ describe "a REST patterned resource of 'pirates'", :type => :controller do
166
171
  :id => 1,
167
172
  :pirate => {}
168
173
  }
169
- post_before_saving = Factory.build(:pirate)
170
- Pirate.should_receive(:find).with("1").and_return(post_before_saving)
171
- post_before_saving.should_receive(:update_attributes).with(params[:pirate]).and_return(true)
174
+ @pirate = Factory.build(:pirate)
175
+ Pirate.should_receive(:find).with("1").and_return(@pirate)
176
+ @pirate.should_receive(:update_attributes).with(params[:pirate]).and_return(true)
172
177
  put(:update, params)
173
178
  end
174
179
 
175
- it { should assign_to(:pirate) }
176
- it { should assign_to(:resource) }
180
+ it { should assign_to(:pirate).with(@pirate) }
181
+ it { should assign_to(:resource).with(@pirate) }
177
182
  it { should respond_with(:redirect).to(:show) }
178
183
  it { should set_the_flash.to('Pirate successfully updated') }
179
184
 
@@ -185,14 +190,14 @@ describe "a REST patterned resource of 'pirates'", :type => :controller do
185
190
  :id => 1,
186
191
  :pirate => {}
187
192
  }
188
- post_before_saving = Factory.build(:pirate)
189
- Pirate.should_receive(:find).with("1").and_return(post_before_saving)
190
- post_before_saving.should_receive(:update_attributes).with(params[:pirate]).and_return(false)
193
+ @pirate = Factory.build(:pirate)
194
+ Pirate.should_receive(:find).with("1").and_return(@pirate)
195
+ @pirate.should_receive(:update_attributes).with(params[:pirate]).and_return(false)
191
196
  put(:update, params)
192
197
  end
193
198
 
194
- it { should assign_to(:pirate) }
195
- it { should assign_to(:resource) }
199
+ it { should assign_to(:pirate).with(@pirate) }
200
+ it { should assign_to(:resource).with(@pirate) }
196
201
  it { should respond_with(:success) }
197
202
  it { should render_template(:edit) }
198
203
  it { should_not set_the_flash }
@@ -204,9 +209,9 @@ describe "a REST patterned resource of 'pirates'", :type => :controller do
204
209
  params = {
205
210
  :id => 1,
206
211
  }
207
- post_before_saving = Factory.build(:pirate)
208
- Pirate.should_receive(:find).with("1").and_return(post_before_saving)
209
- post_before_saving.should_receive(:destroy)
212
+ @pirate = Factory.build(:pirate)
213
+ Pirate.should_receive(:find).with("1").and_return(@pirate)
214
+ @pirate.should_receive(:destroy).and_return(true)
210
215
  delete(:destroy, params)
211
216
  end
212
217
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: exposure
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Trek Glowacki
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-11-10 00:00:00 -05:00
12
+ date: 2009-11-11 00:00:00 -05:00
13
13
  default_executable:
14
14
  dependencies: []
15
15