draper 0.18.0 → 1.0.0.beta1
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/.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
|