orange 0.0.3 → 0.0.4
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/lib/orange/application.rb +1 -1
- data/lib/orange/carton.rb +55 -27
- data/lib/orange/cartons/site_carton.rb +4 -1
- data/lib/orange/core.rb +10 -2
- data/lib/orange/magick.rb +11 -0
- data/lib/orange/middleware/access_control.rb +16 -7
- data/lib/orange/middleware/base.rb +40 -1
- data/lib/orange/middleware/flex_router.rb +59 -0
- data/lib/orange/middleware/route_context.rb +2 -2
- data/lib/orange/middleware/route_site.rb +1 -1
- data/lib/orange/middleware/show_exceptions.rb +3 -1
- data/lib/orange/middleware/site_load.rb +14 -1
- data/lib/orange/middleware/static.rb +0 -2
- data/lib/orange/middleware/template.rb +3 -1
- data/lib/orange/resources/admin_resource.rb +25 -0
- data/lib/orange/resources/mapper.rb +3 -0
- data/lib/orange/resources/model_resource.rb +15 -9
- data/lib/orange/resources/page_parts.rb +0 -7
- data/lib/orange/resources/parser.rb +5 -4
- data/lib/orange/resources/singleton_model_resource.rb +7 -0
- data/lib/orange/resources/sitemap_resource.rb +96 -0
- data/lib/orange/stack.rb +5 -5
- data/spec/{application_spec.rb → orange/application_spec.rb} +0 -0
- data/spec/orange/carton_spec.rb +136 -0
- data/spec/{core_spec.rb → orange/core_spec.rb} +10 -0
- data/spec/{magick_spec.rb → orange/magick_spec.rb} +11 -0
- data/spec/orange/middleware/access_control_spec.rb +3 -0
- data/spec/orange/middleware/base_spec.rb +37 -0
- data/spec/orange/middleware/database_spec.rb +3 -0
- data/spec/orange/middleware/globals_spec.rb +3 -0
- data/spec/orange/middleware/recapture_spec.rb +3 -0
- data/spec/orange/middleware/rerouter_spec.rb +3 -0
- data/spec/orange/middleware/restful_router_spec.rb +3 -0
- data/spec/orange/middleware/route_context_spec.rb +3 -0
- data/spec/orange/middleware/route_site_spec.rb +3 -0
- data/spec/orange/middleware/show_exceptions_spec.rb +3 -0
- data/spec/orange/middleware/site_load_spec.rb +26 -0
- data/spec/orange/middleware/static_file_spec.rb +3 -0
- data/spec/orange/middleware/static_spec.rb +3 -0
- data/spec/orange/middleware/template_spec.rb +3 -0
- data/spec/{mock → orange/mock}/mock_app.rb +0 -0
- data/spec/orange/mock/mock_carton.rb +43 -0
- data/spec/{mock → orange/mock}/mock_core.rb +0 -0
- data/spec/{mock → orange/mock}/mock_middleware.rb +8 -0
- data/spec/{mock → orange/mock}/mock_mixins.rb +0 -0
- data/spec/{mock → orange/mock}/mock_model_resource.rb +4 -0
- data/spec/{mock → orange/mock}/mock_pulp.rb +0 -0
- data/spec/{mock → orange/mock}/mock_resource.rb +0 -0
- data/spec/{mock → orange/mock}/mock_router.rb +0 -0
- data/spec/{orange_spec.rb → orange/orange_spec.rb} +0 -0
- data/spec/{packet_spec.rb → orange/packet_spec.rb} +0 -0
- data/spec/{resource_spec.rb → orange/resource_spec.rb} +0 -0
- data/spec/orange/resources/admin_resource_spec.rb +16 -0
- data/spec/{resources → orange/resources}/mapper_spec.rb +0 -0
- data/spec/{resources → orange/resources}/model_resource_spec.rb +104 -0
- data/spec/{resources → orange/resources}/parser_spec.rb +0 -0
- data/spec/{resources → orange/resources}/routable_resource_spec.rb +0 -0
- data/spec/orange/resources/singleton_model_resource_spec.rb +4 -0
- data/spec/{resources/flex_router_spec.rb → orange/resources/sitemap_resource_spec.rb} +1 -1
- data/spec/orange/spec_helper.rb +51 -0
- data/spec/{stack_spec.rb → orange/stack_spec.rb} +0 -0
- metadata +45 -40
- data/lib/orange/resources/flex_router.rb +0 -13
- data/spec/carton_spec.rb +0 -5
- data/spec/middleware/access_control_spec.rb +0 -0
- data/spec/middleware/base_spec.rb +0 -0
- data/spec/middleware/database_spec.rb +0 -0
- data/spec/middleware/globals_spec.rb +0 -0
- data/spec/middleware/recapture_spec.rb +0 -0
- data/spec/middleware/rerouter_spec.rb +0 -0
- data/spec/middleware/restful_router_spec.rb +0 -0
- data/spec/middleware/route_context_spec.rb +0 -0
- data/spec/middleware/route_site_spec.rb +0 -0
- data/spec/middleware/show_exceptions_spec.rb +0 -0
- data/spec/middleware/site_load_spec.rb +0 -0
- data/spec/middleware/static_file_spec.rb +0 -0
- data/spec/middleware/static_spec.rb +0 -0
- data/spec/middleware/template_spec.rb +0 -0
- data/spec/mock/mock_carton.rb +0 -15
- data/spec/spec_helper.rb +0 -20
@@ -228,4 +228,14 @@ describe Orange::Core do
|
|
228
228
|
c[:mock].should be_an_kind_of(Orange::Resource)
|
229
229
|
c[:mock].mock_method.should eql 'MockResource#mock_method'
|
230
230
|
end
|
231
|
+
|
232
|
+
it "should have option to silently ignore resource calls" do
|
233
|
+
c= Orange::Core.new
|
234
|
+
lambda {
|
235
|
+
c[:mock].test
|
236
|
+
}.should raise_error
|
237
|
+
lambda {
|
238
|
+
c[:mock, true].test
|
239
|
+
}.should_not raise_error
|
240
|
+
end
|
231
241
|
end
|
@@ -21,6 +21,17 @@ describe Orange::DefaultHash do
|
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
|
+
describe Orange::Ignore do
|
25
|
+
it "should silently accept method" do
|
26
|
+
o = Orange::Ignore.new
|
27
|
+
lambda {
|
28
|
+
o.banana
|
29
|
+
o.args
|
30
|
+
o.foo.bar('banana').baz
|
31
|
+
}.should_not raise_error
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
24
35
|
describe "Orange::Options" do
|
25
36
|
it "should give a hash on hash" do
|
26
37
|
Orange::Options.new.hash.should be_an_instance_of(Hash)
|
@@ -0,0 +1,37 @@
|
|
1
|
+
describe Orange::Middleware::Base do
|
2
|
+
it "should call init after initializing" do
|
3
|
+
lambda{
|
4
|
+
mid = MockOrangeDeathMiddleware.new(nil, nil, :foo => 'bar')
|
5
|
+
}.should raise_error(RuntimeError, "middleware_init with foo=bar")
|
6
|
+
end
|
7
|
+
|
8
|
+
it "should create a packet and call packet call" do
|
9
|
+
mid = MockOrangeBasedMiddlewareTwo.new(nil, nil)
|
10
|
+
mid.should_receive(:packet_call).with(an_instance_of(Orange::Packet))
|
11
|
+
mid.call({})
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should pass the packet on by default for packet_call" do
|
15
|
+
mid = MockOrangeBasedMiddlewareTwo.new(nil, nil)
|
16
|
+
mid.should_receive(:pass).with(an_instance_of(Orange::Packet))
|
17
|
+
mid.packet_call(empty_packet)
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should call the downstream app on pass" do
|
21
|
+
app = mock("downstream")
|
22
|
+
app2 = mock("downstream_orange")
|
23
|
+
my_hash = {:foo => :bar}
|
24
|
+
app.should_receive(:call).with(my_hash)
|
25
|
+
app2.should_receive(:packet_call).with(an_instance_of(Orange::Packet))
|
26
|
+
mid = MockOrangeBasedMiddlewareTwo.new(app, nil)
|
27
|
+
mid2 = MockOrangeBasedMiddlewareTwo.new(app2, nil)
|
28
|
+
mid.call(my_hash)
|
29
|
+
mid2.call(my_hash)
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should give access to the orange core on calling orange" do
|
33
|
+
c = Orange::Core.new
|
34
|
+
mid = MockOrangeBasedMiddlewareTwo.new(nil, c)
|
35
|
+
mid.orange.should equal c
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
describe Orange::Middleware::SiteLoad do
|
2
|
+
it "should load Orange::SiteResource when used in stack" do
|
3
|
+
c = Orange::Core.new
|
4
|
+
c.should_receive(:load).with(an_instance_of(Orange::SiteResource), an_instance_of(Symbol))
|
5
|
+
app = Orange::Middleware::SiteLoad.new(nil, c)
|
6
|
+
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should load the site object into the packet, if available" do
|
10
|
+
Orange::Site.should_receive(:first).with(an_instance_of(Hash)).and_return('foo')
|
11
|
+
app = Orange::Middleware::SiteLoad.new(return_env_app, Orange::Core.new)
|
12
|
+
ret = app.call({})
|
13
|
+
ret['orange.env'].should have_key('site')
|
14
|
+
ret['orange.env']['site'].should == 'foo'
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should create a new site object, if one doesn't exist" do
|
18
|
+
Orange::Site.should_receive(:first).with(an_instance_of(Hash)).and_return(false)
|
19
|
+
m = mock("site")
|
20
|
+
Orange::Site.should_receive(:new).with(an_instance_of(Hash)).and_return(m)
|
21
|
+
m.should_receive(:save).and_return(true)
|
22
|
+
app = Orange::Middleware::SiteLoad.new(return_env_app, Orange::Core.new)
|
23
|
+
ret = app.call({})
|
24
|
+
ret['orange.env'].should have_key('site')
|
25
|
+
end
|
26
|
+
end
|
File without changes
|
@@ -0,0 +1,43 @@
|
|
1
|
+
class MockCarton < Orange::Carton
|
2
|
+
def self.scaffold_properties
|
3
|
+
@scaffold_properties
|
4
|
+
end
|
5
|
+
id
|
6
|
+
admin do
|
7
|
+
text :admin
|
8
|
+
end
|
9
|
+
orange do
|
10
|
+
text :orange
|
11
|
+
end
|
12
|
+
front do
|
13
|
+
text :front
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
class MockCartonTwo < Orange::Carton
|
18
|
+
id
|
19
|
+
def self.get(id)
|
20
|
+
'mock_get'
|
21
|
+
end
|
22
|
+
def self.all
|
23
|
+
'mock_all'
|
24
|
+
end
|
25
|
+
def save
|
26
|
+
raise 'mock_save'
|
27
|
+
end
|
28
|
+
def destroy!
|
29
|
+
raise 'mock_destroy'
|
30
|
+
end
|
31
|
+
def update(*args)
|
32
|
+
raise 'mock_update'
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
class MockCartonBlank < Orange::Carton
|
37
|
+
def self.levels
|
38
|
+
@levels
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
class MockCartonBlankTwo < Orange::Carton
|
43
|
+
end
|
File without changes
|
@@ -10,4 +10,12 @@ class MockMiddleware
|
|
10
10
|
def call(env)
|
11
11
|
raise "I'm in ur #{env[:test]}"
|
12
12
|
end
|
13
|
+
end
|
14
|
+
|
15
|
+
class MockOrangeBasedMiddlewareTwo < Orange::Middleware::Base; end
|
16
|
+
class MockOrangeDeathMiddleware < Orange::Middleware::Base
|
17
|
+
def init(*args)
|
18
|
+
opts = args.extract_options!
|
19
|
+
raise "middleware_init with foo=#{opts[:foo]}"
|
20
|
+
end
|
13
21
|
end
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
|
3
|
+
describe Orange::AdminResource do
|
4
|
+
before(:all) do
|
5
|
+
end
|
6
|
+
it "should have a function for returning list of links" do
|
7
|
+
a = Orange::AdminResource.new
|
8
|
+
a.set_orange(Orange::Core.new, :admin)
|
9
|
+
a.links(empty_packet)
|
10
|
+
end
|
11
|
+
it "should be have an add_link function" do
|
12
|
+
a = Orange::AdminResource.new
|
13
|
+
a.set_orange(Orange::Core.new, :admin)
|
14
|
+
a.add_link('Content', {})
|
15
|
+
end
|
16
|
+
end
|
File without changes
|
@@ -138,5 +138,109 @@ describe Orange::ModelResource do
|
|
138
138
|
a.find_extras(Orange::Packet.new(Orange::Core.new, {}), :show).should == {}
|
139
139
|
end
|
140
140
|
|
141
|
+
it "should have the view_list method in packet" do
|
142
|
+
c = Orange::Core.new
|
143
|
+
c.load(MockModelResourceOne.new, :mocked)
|
144
|
+
p = Orange::Packet.new(c, {})
|
145
|
+
lambda {
|
146
|
+
p.view_index(:mocked)
|
147
|
+
}.should raise_error(RuntimeError, "I see you're using index")
|
148
|
+
lambda {
|
149
|
+
p.view_show(:mocked)
|
150
|
+
}.should raise_error(RuntimeError, "I see you're using show")
|
151
|
+
lambda {
|
152
|
+
p.view_other(:mocked)
|
153
|
+
}.should raise_error(RuntimeError, "I see you're using other")
|
154
|
+
end
|
155
|
+
|
156
|
+
it "should call carton's save on POST new and reroute" do
|
157
|
+
a= MockModelResourceTwo.new
|
158
|
+
m= mock("carton", :null_object => true)
|
159
|
+
m.should_receive(:save)
|
160
|
+
a.stub!(:model_class).and_return(m)
|
161
|
+
p2 = mock("packet", :null_object => true)
|
162
|
+
p2.should_receive(:reroute)
|
163
|
+
p2.stub!(:request).and_return(mock_post)
|
164
|
+
lambda{
|
165
|
+
a.new(Orange::Packet.new(Orange::Core.new, {}))
|
166
|
+
}.should raise_error(Orange::Reroute, 'Unhandled reroute')
|
167
|
+
a.new(p2)
|
168
|
+
end
|
169
|
+
|
170
|
+
it "should call carton's destroy! on DELETE delete and reroute" do
|
171
|
+
a= MockModelResourceTwo.new
|
172
|
+
m= mock("carton", :null_object => true)
|
173
|
+
m.should_receive(:destroy!)
|
174
|
+
a.stub!(:model_class).and_return(m)
|
175
|
+
p2 = mock("packet", :null_object => true)
|
176
|
+
p2.should_receive(:reroute)
|
177
|
+
p2.stub!(:request).and_return(mock_delete)
|
178
|
+
lambda{
|
179
|
+
a.delete(Orange::Packet.new(Orange::Core.new, {}))
|
180
|
+
}.should raise_error(Orange::Reroute, 'Unhandled reroute')
|
181
|
+
a.delete(p2)
|
182
|
+
end
|
183
|
+
|
184
|
+
it "should call carton's update on POST save and reroute" do
|
185
|
+
a= MockModelResourceTwo.new
|
186
|
+
m= mock("carton", :null_object => true)
|
187
|
+
m.should_receive(:update)
|
188
|
+
a.stub!(:model_class).and_return(m)
|
189
|
+
p2 = mock("packet", :null_object => true)
|
190
|
+
p2.should_receive(:reroute)
|
191
|
+
p2.stub!(:request).and_return(mock_post)
|
192
|
+
lambda{
|
193
|
+
a.delete(Orange::Packet.new(Orange::Core.new, {}))
|
194
|
+
}.should raise_error(Orange::Reroute, 'Unhandled reroute')
|
195
|
+
a.save(p2)
|
196
|
+
end
|
197
|
+
|
198
|
+
it "should call do_view with mode = :show for show" do
|
199
|
+
a= MockModelResource.new
|
200
|
+
a.should_receive(:do_view).with(an_instance_of(Orange::Packet), :show)
|
201
|
+
a.should_receive(:do_view).with(an_instance_of(Orange::Packet), :show, {})
|
202
|
+
a.show(empty_packet)
|
203
|
+
a.show(empty_packet, {})
|
204
|
+
end
|
205
|
+
it "should call do_view with mode = :edit for edit" do
|
206
|
+
a= MockModelResource.new
|
207
|
+
a.should_receive(:do_view).with(an_instance_of(Orange::Packet), :edit)
|
208
|
+
a.should_receive(:do_view).with(an_instance_of(Orange::Packet), :edit, {})
|
209
|
+
a.edit(empty_packet)
|
210
|
+
a.edit(empty_packet, {})
|
211
|
+
end
|
212
|
+
it "should call do_view with mode = :create for create" do
|
213
|
+
a= MockModelResource.new
|
214
|
+
a.should_receive(:do_view).with(an_instance_of(Orange::Packet), :create)
|
215
|
+
a.should_receive(:do_view).with(an_instance_of(Orange::Packet), :create, {})
|
216
|
+
a.create(empty_packet)
|
217
|
+
a.create(empty_packet, {})
|
218
|
+
end
|
219
|
+
|
220
|
+
it "should call do_view with mode = :table_row for table_row" do
|
221
|
+
a= MockModelResource.new
|
222
|
+
a.should_receive(:do_view).with(an_instance_of(Orange::Packet), :table_row)
|
223
|
+
a.should_receive(:do_view).with(an_instance_of(Orange::Packet), :table_row, {})
|
224
|
+
a.table_row(empty_packet)
|
225
|
+
a.table_row(empty_packet, {})
|
226
|
+
end
|
227
|
+
|
228
|
+
it "should call do_list_view with mode = :list for list" do
|
229
|
+
a= MockModelResource.new
|
230
|
+
a.should_receive(:do_list_view).with(an_instance_of(Orange::Packet), :list)
|
231
|
+
a.should_receive(:do_list_view).with(an_instance_of(Orange::Packet), :list, {})
|
232
|
+
a.list(empty_packet)
|
233
|
+
a.list(empty_packet, {})
|
234
|
+
end
|
235
|
+
|
236
|
+
|
237
|
+
it "should call do_list_view with mode = :list for index" do
|
238
|
+
a= MockModelResource.new
|
239
|
+
a.should_receive(:do_list_view).with(an_instance_of(Orange::Packet), :list)
|
240
|
+
a.should_receive(:do_list_view).with(an_instance_of(Orange::Packet), :list, {})
|
241
|
+
a.index(empty_packet)
|
242
|
+
a.index(empty_packet, {})
|
243
|
+
end
|
244
|
+
|
141
245
|
|
142
246
|
end
|
File without changes
|
File without changes
|
@@ -0,0 +1,51 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', '..', 'lib'))
|
2
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
3
|
+
|
4
|
+
require 'rubygems'
|
5
|
+
require 'orange'
|
6
|
+
|
7
|
+
require 'mock/mock_app'
|
8
|
+
require 'mock/mock_pulp'
|
9
|
+
require 'mock/mock_core'
|
10
|
+
require 'mock/mock_carton'
|
11
|
+
require 'mock/mock_model_resource'
|
12
|
+
require 'mock/mock_mixins'
|
13
|
+
require 'mock/mock_router'
|
14
|
+
require 'mock/mock_resource'
|
15
|
+
require 'mock/mock_middleware'
|
16
|
+
require 'rack/test'
|
17
|
+
|
18
|
+
|
19
|
+
Spec::Runner.configure do |config|
|
20
|
+
config.include(Rack::Test::Methods)
|
21
|
+
end
|
22
|
+
|
23
|
+
def mock_post
|
24
|
+
p= mock("request", :null_object => true)
|
25
|
+
p.stub!(:post?).and_return(true)
|
26
|
+
p.stub!(:params).and_return({})
|
27
|
+
p
|
28
|
+
end
|
29
|
+
|
30
|
+
def mock_delete
|
31
|
+
p= mock("request", :null_object => true)
|
32
|
+
p.stub!(:delete?).and_return(true)
|
33
|
+
p.stub!(:params).and_return({})
|
34
|
+
p
|
35
|
+
end
|
36
|
+
|
37
|
+
def empty_packet(c = Orange::Core.new)
|
38
|
+
Orange::Packet.new(c, {})
|
39
|
+
end
|
40
|
+
|
41
|
+
def packet_finish_app
|
42
|
+
lambda { |env|
|
43
|
+
Orange::Packet.new(env).finish
|
44
|
+
}
|
45
|
+
end
|
46
|
+
|
47
|
+
def return_env_app
|
48
|
+
lambda { |env|
|
49
|
+
env
|
50
|
+
}
|
51
|
+
end
|