context_exposer 0.1.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +13 -1
  3. data/README.md +186 -16
  4. data/lib/context_exposer.rb +15 -0
  5. data/lib/context_exposer/base_controller.rb +67 -47
  6. data/lib/context_exposer/cached_resource_controller.rb +10 -0
  7. data/lib/context_exposer/integrations.rb +8 -0
  8. data/lib/context_exposer/integrations/base.rb +15 -0
  9. data/lib/context_exposer/integrations/key_filter.rb +30 -0
  10. data/lib/context_exposer/integrations/with_decent_exposure.rb +19 -0
  11. data/lib/context_exposer/integrations/with_decorates_before.rb +31 -0
  12. data/lib/context_exposer/integrations/with_instance_vars.rb +19 -0
  13. data/lib/context_exposer/macros.rb +17 -0
  14. data/lib/context_exposer/patch/decorates_before_rendering.rb +179 -0
  15. data/lib/context_exposer/rails_config.rb +3 -0
  16. data/lib/context_exposer/resource_controller.rb +30 -8
  17. data/lib/context_exposer/version.rb +1 -1
  18. data/lib/context_exposer/view_context.rb +1 -1
  19. data/spec/app/items_spec.rb +36 -0
  20. data/spec/app/posts_spec.rb +29 -1
  21. data/spec/context_exposer/expose_resource_spec.rb +51 -38
  22. data/spec/context_exposer/expose_spec.rb +11 -10
  23. data/spec/dummy/app/controllers/items_controller.rb +12 -0
  24. data/spec/dummy/app/controllers/posts_controller.rb +3 -4
  25. data/spec/dummy/app/views/items/index.html.erb +2 -0
  26. data/spec/dummy/app/views/items/show.html.erb +2 -0
  27. data/spec/dummy/app/views/posts/index.html.erb +2 -1
  28. data/spec/dummy/app/views/posts/show.html.erb +2 -1
  29. data/spec/dummy/config/initializers/context_exposer.rb +1 -0
  30. data/spec/dummy/config/routes.rb +1 -57
  31. data/spec/dummy/log/test.log +483 -0
  32. data/spec/dummy_spec_helper.rb +82 -0
  33. data/spec/spec_helper.rb +13 -1
  34. data/spec/support/decorators/base_decorator.rb +22 -0
  35. data/spec/support/decorators/item_decorator.rb +11 -0
  36. data/spec/support/decorators/post_decorator.rb +5 -0
  37. data/spec/support/models/base.rb +18 -0
  38. data/spec/support/models/base/clazz_methods.rb +29 -0
  39. data/spec/support/models/item.rb +9 -0
  40. data/spec/support/models/post.rb +5 -0
  41. metadata +38 -2
@@ -0,0 +1,82 @@
1
+ require 'rubygems'
2
+ require 'spork'
3
+
4
+ #uncomment the following line to use spork with the debugger
5
+ #require 'spork/ext/ruby-debug'
6
+
7
+ Spork.prefork do
8
+ # Loading more in this block will cause your tests to run faster. However,
9
+ # if you change any configuration or code from libraries loaded here, you'll
10
+ # need to restart spork for it take effect.
11
+
12
+ ENV["RAILS_ENV"] ||= 'test'
13
+ require 'rails'
14
+ require 'spork'
15
+
16
+ require "rspec"
17
+
18
+ require 'decent_exposure'
19
+ require 'decorates_before_rendering'
20
+
21
+ # require 'factory_girl'
22
+
23
+ # Configure Rails Envinronment
24
+ ENV["RAILS_ENV"] = "test"
25
+
26
+ # Load support files
27
+ Dir["#{File.dirname(__FILE__)}/support/models/**/*.rb"].each { |f| require f }
28
+ Dir["#{File.dirname(__FILE__)}/support/models/*.rb"].each { |f| require f }
29
+ Dir["#{File.dirname(__FILE__)}/support/decorators/*.rb"].each { |f| require f }
30
+
31
+ require File.expand_path("../dummy/config/environment.rb", __FILE__)
32
+
33
+ require "rails/test_help"
34
+ require "rspec/rails"
35
+
36
+ ActionMailer::Base.delivery_method = :test
37
+ ActionMailer::Base.perform_deliveries = true
38
+ ActionMailer::Base.default_url_options[:host] = "test.com"
39
+
40
+ Rails.backtrace_cleaner.remove_silencers!
41
+
42
+ # Configure capybara for integration testing
43
+ require "capybara/rails"
44
+ Capybara.default_driver = :rack_test
45
+
46
+ include Rails.application.routes.url_helpers
47
+
48
+ # Load support files
49
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
50
+
51
+ RSpec.configure do |config|
52
+ # Remove this line if you don't want RSpec's should and should_not
53
+ # methods or matchers
54
+ require 'rspec/expectations'
55
+ config.include RSpec::Matchers
56
+
57
+ config.include RSpec::Rails::RequestExampleGroup, type: :feature
58
+
59
+ # config.include FactoryGirl::Syntax::Methods
60
+
61
+ # == Mock Framework
62
+ config.mock_with :rspec
63
+
64
+ # config.include Mongoid::Matchers
65
+
66
+ # Clean up the database
67
+
68
+ # require 'database_cleaner'
69
+ # config.before(:suite) do
70
+ # DatabaseCleaner[:mongoid].strategy = :truncation
71
+ # end
72
+
73
+ # config.before(:each) do
74
+ # DatabaseCleaner.clean
75
+ # end
76
+ end
77
+ end
78
+
79
+ Spork.each_run do
80
+ # This code will be run each time you run your specs.
81
+ # FactoryGirl.reload
82
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,7 +1,19 @@
1
1
  require 'rubygems'
2
2
  require 'bundler/setup'
3
3
 
4
- require 'context_exposure'
4
+ require "rspec"
5
+
6
+ require 'decent_exposure'
7
+ require 'decorates_before_rendering'
8
+
9
+ require 'context_exposer'
10
+
11
+ require 'action_controller'
12
+
13
+ # Load support files
14
+ Dir["#{File.dirname(__FILE__)}/support/models/**/*.rb"].each { |f| require f }
15
+ Dir["#{File.dirname(__FILE__)}/support/models/*.rb"].each { |f| require f }
16
+ Dir["#{File.dirname(__FILE__)}/support/decorators/*.rb"].each { |f| require f }
5
17
 
6
18
  RSpec.configure do |config|
7
19
  # some (optional) config here
@@ -0,0 +1,22 @@
1
+ class BaseDecorator
2
+ attr_reader :obj
3
+
4
+ def initialize obj = nil
5
+ @obj = nil
6
+ end
7
+
8
+ def self.decorate obj
9
+ self.new obj
10
+ end
11
+
12
+ def decorate obj
13
+ @obj = obj
14
+ self
15
+ end
16
+
17
+ def == other
18
+ other == obj || other == self
19
+ end
20
+
21
+ delegate :name, :to_s, to: :obj
22
+ end
@@ -0,0 +1,11 @@
1
+ class ItemDecorator < BaseDecorator
2
+ def nice_name
3
+ "A very nice #{name}"
4
+ end
5
+ end
6
+
7
+ class ItemCustomDecorator < ItemDecorator
8
+ def custom
9
+ "#{name} was customized :)"
10
+ end
11
+ end
@@ -0,0 +1,5 @@
1
+ class PostDecorator < BaseDecorator
2
+ def zip_code
3
+ '1234'
4
+ end
5
+ end
@@ -0,0 +1,18 @@
1
+ class Base
2
+ include ClazzMethods
3
+
4
+ attr_accessor :name
5
+
6
+ def initialize name
7
+ @name = name
8
+ self.class.send :add, self
9
+ end
10
+
11
+ def to_s
12
+ name
13
+ end
14
+
15
+ def model_name
16
+ self.class.to_s
17
+ end
18
+ end
@@ -0,0 +1,29 @@
1
+ class Base
2
+ module ClazzMethods
3
+ extend ActiveSupport::Concern
4
+
5
+ module ClassMethods
6
+ def model_name
7
+ self.to_s
8
+ end
9
+
10
+ def find id
11
+ list.first
12
+ end
13
+
14
+ def all
15
+ list
16
+ end
17
+
18
+ protected
19
+
20
+ def add obj
21
+ list << obj
22
+ end
23
+
24
+ def list
25
+ @list ||= []
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,9 @@
1
+ class Item < Base
2
+ def initialize name
3
+ super
4
+ end
5
+
6
+ def decorator contrl
7
+ "#{model_name}CustomDecorator"
8
+ end
9
+ end
@@ -0,0 +1,5 @@
1
+ class Post < Base
2
+ def initialize name
3
+ super
4
+ end
5
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: context_exposer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kristian Mandrup
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-03-16 00:00:00.000000000 Z
11
+ date: 2013-03-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -55,9 +55,20 @@ files:
55
55
  - context_exposer.gemspec
56
56
  - lib/context_exposer.rb
57
57
  - lib/context_exposer/base_controller.rb
58
+ - lib/context_exposer/cached_resource_controller.rb
59
+ - lib/context_exposer/integrations.rb
60
+ - lib/context_exposer/integrations/base.rb
61
+ - lib/context_exposer/integrations/key_filter.rb
62
+ - lib/context_exposer/integrations/with_decent_exposure.rb
63
+ - lib/context_exposer/integrations/with_decorates_before.rb
64
+ - lib/context_exposer/integrations/with_instance_vars.rb
65
+ - lib/context_exposer/macros.rb
66
+ - lib/context_exposer/patch/decorates_before_rendering.rb
67
+ - lib/context_exposer/rails_config.rb
58
68
  - lib/context_exposer/resource_controller.rb
59
69
  - lib/context_exposer/version.rb
60
70
  - lib/context_exposer/view_context.rb
71
+ - spec/app/items_spec.rb
61
72
  - spec/app/posts_spec.rb
62
73
  - spec/context_exposer/expose_resource_spec.rb
63
74
  - spec/context_exposer/expose_spec.rb
@@ -66,10 +77,13 @@ files:
66
77
  - spec/dummy/app/assets/javascripts/application.js
67
78
  - spec/dummy/app/assets/stylesheets/application.css
68
79
  - spec/dummy/app/controllers/application_controller.rb
80
+ - spec/dummy/app/controllers/items_controller.rb
69
81
  - spec/dummy/app/controllers/posts_controller.rb
70
82
  - spec/dummy/app/helpers/application_helper.rb
71
83
  - spec/dummy/app/mailers/.gitkeep
72
84
  - spec/dummy/app/models/.gitkeep
85
+ - spec/dummy/app/views/items/index.html.erb
86
+ - spec/dummy/app/views/items/show.html.erb
73
87
  - spec/dummy/app/views/layouts/application.html.erb
74
88
  - spec/dummy/app/views/posts/index.html.erb
75
89
  - spec/dummy/app/views/posts/show.html.erb
@@ -81,6 +95,7 @@ files:
81
95
  - spec/dummy/config/environments/production.rb
82
96
  - spec/dummy/config/environments/test.rb
83
97
  - spec/dummy/config/initializers/backtrace_silencers.rb
98
+ - spec/dummy/config/initializers/context_exposer.rb
84
99
  - spec/dummy/config/initializers/inflections.rb
85
100
  - spec/dummy/config/initializers/mime_types.rb
86
101
  - spec/dummy/config/initializers/secret_token.rb
@@ -96,7 +111,15 @@ files:
96
111
  - spec/dummy/public/500.html
97
112
  - spec/dummy/public/favicon.ico
98
113
  - spec/dummy/script/rails
114
+ - spec/dummy_spec_helper.rb
99
115
  - spec/spec_helper.rb
116
+ - spec/support/decorators/base_decorator.rb
117
+ - spec/support/decorators/item_decorator.rb
118
+ - spec/support/decorators/post_decorator.rb
119
+ - spec/support/models/base.rb
120
+ - spec/support/models/base/clazz_methods.rb
121
+ - spec/support/models/item.rb
122
+ - spec/support/models/post.rb
100
123
  homepage: https://github.com/kristianmandrup/context_exposer
101
124
  licenses:
102
125
  - MIT
@@ -123,6 +146,7 @@ specification_version: 4
123
146
  summary: The Context object becomes the single communication point between View and
124
147
  Controller
125
148
  test_files:
149
+ - spec/app/items_spec.rb
126
150
  - spec/app/posts_spec.rb
127
151
  - spec/context_exposer/expose_resource_spec.rb
128
152
  - spec/context_exposer/expose_spec.rb
@@ -131,10 +155,13 @@ test_files:
131
155
  - spec/dummy/app/assets/javascripts/application.js
132
156
  - spec/dummy/app/assets/stylesheets/application.css
133
157
  - spec/dummy/app/controllers/application_controller.rb
158
+ - spec/dummy/app/controllers/items_controller.rb
134
159
  - spec/dummy/app/controllers/posts_controller.rb
135
160
  - spec/dummy/app/helpers/application_helper.rb
136
161
  - spec/dummy/app/mailers/.gitkeep
137
162
  - spec/dummy/app/models/.gitkeep
163
+ - spec/dummy/app/views/items/index.html.erb
164
+ - spec/dummy/app/views/items/show.html.erb
138
165
  - spec/dummy/app/views/layouts/application.html.erb
139
166
  - spec/dummy/app/views/posts/index.html.erb
140
167
  - spec/dummy/app/views/posts/show.html.erb
@@ -146,6 +173,7 @@ test_files:
146
173
  - spec/dummy/config/environments/production.rb
147
174
  - spec/dummy/config/environments/test.rb
148
175
  - spec/dummy/config/initializers/backtrace_silencers.rb
176
+ - spec/dummy/config/initializers/context_exposer.rb
149
177
  - spec/dummy/config/initializers/inflections.rb
150
178
  - spec/dummy/config/initializers/mime_types.rb
151
179
  - spec/dummy/config/initializers/secret_token.rb
@@ -161,5 +189,13 @@ test_files:
161
189
  - spec/dummy/public/500.html
162
190
  - spec/dummy/public/favicon.ico
163
191
  - spec/dummy/script/rails
192
+ - spec/dummy_spec_helper.rb
164
193
  - spec/spec_helper.rb
194
+ - spec/support/decorators/base_decorator.rb
195
+ - spec/support/decorators/item_decorator.rb
196
+ - spec/support/decorators/post_decorator.rb
197
+ - spec/support/models/base.rb
198
+ - spec/support/models/base/clazz_methods.rb
199
+ - spec/support/models/item.rb
200
+ - spec/support/models/post.rb
165
201
  has_rdoc: