context_exposer 0.1.0 → 0.3.0

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.
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: