Comments (11)
Julien,
Interesting, I don't have an easy answer for you. I'll try some experiments and see if anyone comes up with a suggestion/solution in the meantime.
from draper.
Hello,
I finally decided to hide my initialization code in spec_helper.rb
.
# Used to initialize decorator specs. Called from a 'before' block.
def initialize_controller_view_context_for_draper
c = ApplicationController.new
c.request = ActionDispatch::TestRequest.new
c.set_current_view_context
end
Then I use in each spec that renders a view in the before
hook:
describe UserDecorator do
before { initialize_controller_view_context_for_draper }
end
This is now manageable but still not very satisfying.
I will keep watching this thread.
Thank you very much.
Julien
from draper.
Hello,
I faced with the same problem when tried to spec url_for.
@jperville: thank you for your solution. I have modified it a little and placed to spec_helper.rb:
module Draper::ViewContextFilter
alias :original_set_current_view_context :set_current_view_context
def set_current_view_context
controller = ApplicationController.new
controller.request = ActionDispatch::TestRequest.new
controller.original_set_current_view_context
end
end
Then it is possible to use Draper's standard call:
before { ApplicationController.new.set_current_view_context }
from draper.
Hi I am using @jperville workaround.
Will this be fixed or does exists a better way?
from draper.
Using the workaround makes url helpers work within the decorator, but you can't reference the helpers within the spec!
from draper.
Working on this...
from draper.
@tooky To reference the helpers within the spec, do e.g.
describe SomeDecorator, "#foo" do
include Rails.application.routes.url_helpers
it { blah.should == root_path }
end
from draper.
@henrik thanks! I think I must have had this in and removed it for some reason when adding the workaround!
from draper.
So! This issue is fixed. Actually. Here's the solution:
- If you have
before { ApplicationController.new.set_current_view_context }
in your spec, delete it. Older versions of Draper generated this line, but no longer. - Update your copy of Draper. 58e9893 introduced stubbing out the request properly. It's in both 0.12.1 and 0.13.0.
This fixed it on my test application, so I'm closing. If it doesn't on yours, well........ that's bad. We can re-open and figure it out.
from draper.
Thank you so much for fixing the issue.
Julien
from draper.
No problem. @cheald did all the work. ;)
from draper.
Related Issues (20)
- Create unique context for each item in a collection?
- Draper is incompatible with Ruby 3 HOT 5
- Draper changes the behaviour of url_for when using STI models
- Sending problematic method names (open, format) to decorated rails objects sends to Kernel (conflicts with ransack)
- undefined method `auto_link' for spec with type :decorator
- Generators don't work. HOT 3
- Draper::UninferrableDecoratorError (Could not infer a decorator for Document.) HOT 3
- CI: A test MAY fail with NameError: uninitialized constant ActionMailer::Base
- Release new version HOT 7
- Breaks respond_with in Rails API apps HOT 2
- ArgumentError using helpers with Ruby 3 HOT 4
- Mongo error -> Uninitialized constant ActiveRecord Did you mean? ActiveModel HOT 1
- Usage with `Turbo::Broadcastable` HOT 1
- undefined method `attributes' for nil:NilClass
- Automatically use decorated associations in delegate methods HOT 1
- Unexpected behavior when `frozen?` method is defined in model HOT 1
- Scaffold generator: Invalid path when using --model-name=Record
- Draper still actively maintained? HOT 10
- Rails - STI bug for ActiveRecord_Relation, works fine for a single record
- issue with using draper outside of controller/view context within a rake task or (active)job
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from draper.