draper 0.18.0 → 1.0.0.beta1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +3 -0
- data/.travis.yml +5 -0
- data/CHANGELOG.markdown +8 -0
- data/Gemfile +4 -0
- data/Rakefile +50 -31
- data/Readme.markdown +42 -48
- data/draper.gemspec +2 -1
- data/lib/draper.rb +42 -7
- data/lib/draper/collection_decorator.rb +88 -0
- data/lib/draper/decoratable.rb +44 -0
- data/lib/draper/decorated_association.rb +55 -0
- data/lib/draper/decorator.rb +208 -0
- data/lib/draper/finders.rb +44 -0
- data/lib/draper/helper_proxy.rb +16 -0
- data/lib/draper/railtie.rb +17 -21
- data/lib/draper/security.rb +48 -0
- data/lib/draper/tasks/tu.rake +5 -0
- data/lib/draper/test/minitest_integration.rb +1 -1
- data/lib/draper/test/test_unit_integration.rb +9 -0
- data/lib/draper/version.rb +1 -1
- data/lib/draper/view_context.rb +6 -13
- data/lib/draper/view_helpers.rb +36 -0
- data/lib/generators/decorator/decorator_generator.rb +1 -1
- data/lib/generators/decorator/templates/decorator.rb +0 -1
- data/spec/draper/collection_decorator_spec.rb +240 -0
- data/spec/draper/decoratable_spec.rb +164 -0
- data/spec/draper/decorated_association_spec.rb +130 -0
- data/spec/draper/decorator_spec.rb +497 -0
- data/spec/draper/finders_spec.rb +156 -0
- data/spec/draper/helper_proxy_spec.rb +12 -0
- data/spec/draper/security_spec.rb +158 -0
- data/spec/draper/view_helpers_spec.rb +41 -0
- data/spec/dummy/.rspec +2 -0
- data/spec/dummy/README.rdoc +261 -0
- data/spec/dummy/Rakefile +7 -0
- data/spec/dummy/app/controllers/application_controller.rb +4 -0
- data/spec/dummy/app/controllers/localized_urls.rb +5 -0
- data/spec/dummy/app/controllers/posts_controller.rb +17 -0
- data/spec/dummy/app/decorators/post_decorator.rb +25 -0
- data/spec/dummy/app/helpers/application_helper.rb +2 -0
- data/spec/dummy/app/mailers/application_mailer.rb +3 -0
- data/spec/dummy/app/mailers/post_mailer.rb +9 -0
- data/spec/dummy/app/models/post.rb +3 -0
- data/spec/dummy/app/views/layouts/application.html.erb +11 -0
- data/spec/dummy/app/views/post_mailer/decorated_email.html.erb +1 -0
- data/spec/dummy/app/views/posts/_post.html.erb +19 -0
- data/spec/dummy/app/views/posts/show.html.erb +1 -0
- data/spec/dummy/config.ru +4 -0
- data/spec/dummy/config/application.rb +64 -0
- data/spec/dummy/config/boot.rb +10 -0
- data/spec/dummy/config/database.yml +25 -0
- data/spec/dummy/config/environment.rb +5 -0
- data/spec/dummy/config/environments/development.rb +34 -0
- data/spec/dummy/config/environments/production.rb +55 -0
- data/spec/dummy/config/environments/test.rb +32 -0
- data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy/config/initializers/inflections.rb +15 -0
- data/spec/dummy/config/initializers/mime_types.rb +5 -0
- data/spec/dummy/config/initializers/secret_token.rb +7 -0
- data/spec/dummy/config/initializers/session_store.rb +8 -0
- data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/spec/dummy/config/locales/en.yml +5 -0
- data/spec/dummy/config/routes.rb +7 -0
- data/spec/dummy/db/migrate/20121019115657_create_posts.rb +8 -0
- data/spec/dummy/db/schema.rb +21 -0
- data/spec/dummy/db/seeds.rb +2 -0
- data/spec/dummy/lib/tasks/spec.rake +5 -0
- data/spec/dummy/public/404.html +26 -0
- data/spec/dummy/public/422.html +26 -0
- data/spec/dummy/public/500.html +25 -0
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/dummy/script/rails +6 -0
- data/spec/dummy/spec/decorators/post_decorator_spec.rb +23 -0
- data/spec/dummy/spec/mailers/post_mailer_spec.rb +29 -0
- data/spec/dummy/spec/spec_helper.rb +9 -0
- data/spec/generators/decorator/decorator_generator_spec.rb +3 -4
- data/spec/integration/integration_spec.rb +33 -0
- data/{performance → spec/performance}/active_record.rb +0 -0
- data/{performance/bechmark.rb → spec/performance/benchmark.rb} +0 -0
- data/{performance → spec/performance}/decorators.rb +2 -4
- data/{performance → spec/performance}/models.rb +0 -0
- data/spec/spec_helper.rb +20 -41
- data/spec/support/action_controller.rb +12 -0
- data/spec/support/active_model.rb +7 -0
- data/spec/support/{samples/active_record.rb → active_record.rb} +5 -0
- data/spec/support/{samples → decorators}/decorator_with_application_helper.rb +1 -1
- data/spec/support/decorators/namespaced_product_decorator.rb +5 -0
- data/spec/support/decorators/non_active_model_product_decorator.rb +2 -0
- data/spec/support/decorators/product_decorator.rb +19 -0
- data/spec/support/{samples → decorators}/products_decorator.rb +1 -1
- data/spec/support/decorators/some_thing_decorator.rb +2 -0
- data/spec/support/{samples → decorators}/specific_product_decorator.rb +0 -2
- data/spec/support/{samples → decorators}/widget_decorator.rb +0 -0
- data/spec/support/dummy_app.rb +84 -0
- data/spec/support/matchers/have_text.rb +50 -0
- data/spec/support/{samples → models}/namespaced_product.rb +1 -3
- data/spec/support/{samples → models}/non_active_model_product.rb +1 -0
- data/spec/support/{samples → models}/product.rb +13 -2
- data/spec/support/models/some_thing.rb +5 -0
- data/spec/support/models/uninferrable_decorator_model.rb +3 -0
- data/spec/support/{samples → models}/widget.rb +0 -0
- metadata +185 -68
- data/lib/draper/active_model_support.rb +0 -27
- data/lib/draper/base.rb +0 -312
- data/lib/draper/decorated_enumerable_proxy.rb +0 -90
- data/lib/draper/model_support.rb +0 -25
- data/lib/draper/rspec_integration.rb +0 -2
- data/lib/draper/system.rb +0 -18
- data/spec/draper/base_spec.rb +0 -873
- data/spec/draper/decorated_enumerable_proxy_spec.rb +0 -45
- data/spec/draper/model_support_spec.rb +0 -48
- data/spec/support/samples/decorator.rb +0 -5
- data/spec/support/samples/decorator_with_allows.rb +0 -3
- data/spec/support/samples/decorator_with_denies.rb +0 -3
- data/spec/support/samples/decorator_with_denies_all.rb +0 -3
- data/spec/support/samples/decorator_with_multiple_allows.rb +0 -4
- data/spec/support/samples/decorator_with_special_methods.rb +0 -13
- data/spec/support/samples/enumerable_proxy.rb +0 -3
- data/spec/support/samples/namespaced_product_decorator.rb +0 -7
- data/spec/support/samples/product_decorator.rb +0 -7
- data/spec/support/samples/sequel_product.rb +0 -13
- data/spec/support/samples/some_thing.rb +0 -2
- data/spec/support/samples/some_thing_decorator.rb +0 -3
@@ -1,45 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Draper::DecoratedEnumerableProxy do
|
4
|
-
before(:each){ ApplicationController.new.view_context }
|
5
|
-
subject{ ProductsDecorator.new(source, ProductDecorator) }
|
6
|
-
let(:source){ Product.new }
|
7
|
-
let(:non_active_model_source){ NonActiveModelProduct.new }
|
8
|
-
|
9
|
-
context(".helpers") do
|
10
|
-
it "have a valid view_context" do
|
11
|
-
subject.helpers.should be
|
12
|
-
end
|
13
|
-
|
14
|
-
it "is aliased to .h" do
|
15
|
-
subject.h.should == subject.helpers
|
16
|
-
end
|
17
|
-
|
18
|
-
it "build a new view context" do
|
19
|
-
Thread.current[:current_view_context] = nil
|
20
|
-
subject.helpers.should be
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
context(".decorates") do
|
25
|
-
it "sets the model for the decorated" do
|
26
|
-
EnumerableProxy.new([source], ProductDecorator).first.model.should == source
|
27
|
-
end
|
28
|
-
|
29
|
-
it "decorates an empty array with the class" do
|
30
|
-
EnumerableProxy.decorates([], class: ProductDecorator).should be
|
31
|
-
end
|
32
|
-
|
33
|
-
it "discerns collection items decorator by the name of the decorator" do
|
34
|
-
ProductsDecorator.decorates([]).should be
|
35
|
-
end
|
36
|
-
|
37
|
-
it "methods in decorated empty array should work" do
|
38
|
-
ProductsDecorator.decorates([]).some_method.should == "some method works"
|
39
|
-
end
|
40
|
-
|
41
|
-
it "raises when decorates an empty array without the klass" do
|
42
|
-
lambda{EnumerableProxy.decorates([])}.should raise_error
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
@@ -1,48 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Draper::ModelSupport do
|
4
|
-
subject { Product.new }
|
5
|
-
|
6
|
-
describe '#decorator' do
|
7
|
-
its(:decorator) { should be_kind_of(ProductDecorator) }
|
8
|
-
its(:decorator) { should be(subject.decorator) }
|
9
|
-
|
10
|
-
it 'have abillity to pass block' do
|
11
|
-
a = Product.new.decorator { |d| d.awesome_title }
|
12
|
-
a.should eql "Awesome Title"
|
13
|
-
end
|
14
|
-
|
15
|
-
it 'is aliased to .decorate' do
|
16
|
-
subject.decorator.model.should == subject.decorate.model
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
describe Draper::ModelSupport::ClassMethods do
|
21
|
-
shared_examples_for "a call to Draper::ModelSupport::ClassMethods#decorate" do
|
22
|
-
subject { klass.limit }
|
23
|
-
|
24
|
-
its(:decorate) { should be_kind_of(Draper::DecoratedEnumerableProxy) }
|
25
|
-
|
26
|
-
it "decorate the collection" do
|
27
|
-
subject.decorate.size.should == 1
|
28
|
-
subject.decorate.to_ary[0].model.should be_a(klass)
|
29
|
-
end
|
30
|
-
|
31
|
-
it "return a new instance each time it is called" do
|
32
|
-
subject.decorate.should_not == subject.decorate
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
describe '#decorate - decorate collections of AR objects' do
|
37
|
-
let(:klass) { Product }
|
38
|
-
|
39
|
-
it_should_behave_like "a call to Draper::ModelSupport::ClassMethods#decorate"
|
40
|
-
end
|
41
|
-
|
42
|
-
describe '#decorate - decorate collections of namespaced AR objects' do
|
43
|
-
let(:klass) { Namespace::Product }
|
44
|
-
|
45
|
-
it_should_behave_like "a call to Draper::ModelSupport::ClassMethods#decorate"
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|