-
-
Notifications
You must be signed in to change notification settings - Fork 909
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
routes test with a id is not worked. #602
Comments
rspec: 3.1.7 |
shoulda: 2.7 |
@zw963 It looks like you have a typo: |
Yes, I have a typo, when I write issues. in my own code, I have wrote like this: it { should route(:get, '/api/v1/promotions').to('promotion/commons#index') }
it { should route(:get, '/api/v1/promotions/new').to('promotion/commons#new') }
it { should route(:get, '/api/v1/promotions/1').to('promotion/commons#show', id: 1) } first and second is worked, but, third is not worked. it { should route(:get, '/api/v1/promotions/1').to(controller: 'promotion/commons', action: :show, id: 1) } it worked OK. Should you tell me how to write with the first way? no way ? I think it should be easy to support like |
a found a comments in source code: # route(:get, '/posts/1').to('posts#show', id: 1) seem like shoulda support this form, But I use a nest controller, it not worked~ here is all backtrace in spec: 1) Promotion::CommonsController should route GET /api/v1/promotions/1 to/from {:id=>1, :controller=>"promotion/commons", :action=>"show"}
Failure/Error: it { should route(:get, '/api/v1/promotions/1').to('promotion/commons#show', id: 1) }
The recognized options <{"action"=>"show", "controller"=>"promotion/commons", "id"=>"1"}> did not match <{"id"=>1, "controller"=>"promotion/commons", "action"=>"show"}>, difference:.
--- expected
+++ actual
@@ -1 +1 @@
-{"id"=>1, "controller"=>"promotion/commons", "action"=>"show"}
+{"action"=>"show", "controller"=>"promotion/commons", "id"=>"1"}
# ./test/controllers/promotion/commons_controller_test.rb:18:in `block (2 levels) in <top (required)>'
# /home/zw963/.rvm/gems/ruby-2.1.3@neil-rails-app/gems/activesupport-4.1.0/lib/active_support/dependencies.rb:241:in `load'
# /home/zw963/.rvm/gems/ruby-2.1.3@neil-rails-app/gems/activesupport-4.1.0/lib/active_support/dependencies.rb:241:in `block in load'
# /home/zw963/.rvm/gems/ruby-2.1.3@neil-rails-app/gems/activesupport-4.1.0/lib/active_support/dependencies.rb:232:in `load_dependency'
# /home/zw963/.rvm/gems/ruby-2.1.3@neil-rails-app/gems/activesupport-4.1.0/lib/active_support/dependencies.rb:241:in `load'
# -e:1:in `<main> |
@zw963 Thanks for the update. So it looks like the difference is that you're passing an integer in for |
Another problem, When I run spec, found Gemfile missing some gem, e.g. jquery-rails, sass-rails, etc.. Should I add a new issue for this ? |
Did you run |
What I did is just run in `block in retrying': Command 'bundle install --local' failed: (RuntimeError)
Resolving dependencies...
Could not find gem 'jquery-rails (>= 0) ruby' in the gems available on this machine. add I add following missing gem to Gemfile, it can worked now. gem 'jquery-rails'
gem 'coffee-rails'
gem 'sass-rails'
gem 'uglifier' |
@mcmire , Cool, I does not run appraisal install. it solved! |
Haha, yeah, appraisal is kind of a funny name. |
Cool~ hope to fixed soon. |
@mcmire , Hi, I add more spec for reproduce my case, hope it could help. |
Fixed in abb087e. |
pkgsrc change: allow build on Ruby 2.2. # 2.8.0 ### Deprecations * `ensure_length_of` has been renamed to `validate_length_of`. `ensure_length_of` is deprecated and will be removed in 3.0.0. * `set_the_flash` has been renamed to `set_flash`. `set_the_flash` is deprecated and will be removed in 3.0.0. * `set_session(:foo)` is deprecated in favor of `set_session[:foo]`. `set_session(:foo)` will be invalid syntax in 3.0.0. * Using `should set_session[:key].to(nil)` to assert that that a value has not been set is deprecated. Please use `should_not set_session[:key]` instead. In 3.0.0, `should set_session[:key].to(nil)` will only pass if the value is truly nil. ### Bug fixes * Fix `delegate_method` so that it works again with shoulda-context. ([#591]) * Fix `validate_uniqueness_of` when used with `scoped_to` so that when one of the scope attributes is a polymorphic `*_type` attribute and the model has another validation on the same attribute, the matcher does not fail with an error. ([#592]) * Fix `has_many` used with `through` so that when the association does not exist, and the matcher fails, it does not raise an error when producing the failure message. ([#588]) * Fix `have_and_belong_to_many` used with `join_table` so that it does not fail when `foreign_key` and/or `association_foreign_key` was specified on the association as a symbol instead of a string. ([#584]) * Fix `allow_value` when an i18n translation key is passed to `with_message` and the `:against` option is used to specify an alternate attribute. A bug here also happened to affect `validate_confirmation_of` when an i18n translation key is passed to `with_message`. ([#593]) * Fix `class_name` qualifier for association matchers so that if the model being referenced is namespaced, the matcher will correctly resolve the class before checking it against the association's `class_name`. ([#537]) * Fix `validate_inclusion_of` used with `with_message` so that it fails if given a message that does not match the message on the validation. ([#598]) * Fix `route` matcher so that when controller and action are specified in hash notation (e.g. `posts#show`), route parameters such as `id` do not need to be specified as a string but may be specified as a number as well. ([#602]) * Fix `allow_value`, `validate_numericality_of` and `validate_inclusion_of` so that they handle RangeErrors emitted from ActiveRecord 4.2. These exceptions arise whenever we attempt to set an attribute using a value that lies outside the range of the column (assuming the column is an integer). RangeError is now treated specially, failing the test instead of bubbling up as an error. ([#634], [#637], [#642]) ### Features * Add ability to test `:primary_key` option on associations. ([#597]) * Add `allow_blank` qualifier to `validate_uniqueness_of` to complement the `allow_blank` option. ([#543]) * Change `set_session` so that #[] and #to qualifiers are optional, similar to `set_flash`. That is, you can now say `should set_session` to assert that any flash value has been set, or `should set_session.to('value')` to assert that any value in the session is 'value'. * Change `set_session` so that its #to qualifier supports regexps, similar to `set_flash`. * Add `with_prefix` qualifier to `delegate_method` to correspond to the `prefix` option for Rails's `delegate` macro. ([#622]) * Add support for Rails 4.2, especially fixing `serialize` matcher to remove warning about `serialized_attributes` being deprecated. ([#627]) * Update `dependent` qualifier on association matchers to support `:destroy`, `:delete`, `:nullify`, `:restrict`, `:restrict_with_exception`, and `:restrict_with_error`. You can also pass `true` or `false` to assert that the association has (or has not) been declared with *any* dependent option. ([#631]) ### Improvements * Tweak `allow_value` failure message so that it reads a bit nicer when listing existing errors. [#591]: thoughtbot/shoulda-matchers#591 [#592]: thoughtbot/shoulda-matchers#592 [#588]: thoughtbot/shoulda-matchers#588 [#584]: thoughtbot/shoulda-matchers#584 [#593]: thoughtbot/shoulda-matchers#593 [#597]: thoughtbot/shoulda-matchers#597 [#537]: thoughtbot/shoulda-matchers#537 [#598]: thoughtbot/shoulda-matchers#598 [#602]: thoughtbot/shoulda-matchers#602 [#543]: thoughtbot/shoulda-matchers#543 [#622]: thoughtbot/shoulda-matchers#622 [#627]: thoughtbot/shoulda-matchers#627 [#631]: thoughtbot/shoulda-matchers#631 [#634]: thoughtbot/shoulda-matchers#634 [#637]: thoughtbot/shoulda-matchers#637 [#642]: thoughtbot/shoulda-matchers#642 # 2.7.0 ### Deprecations * `ensure_inclusion_of` has been renamed to `validate_inclusion_of`. `ensure_inclusion_of` is deprecated and will be removed in 3.0.0. * `ensure_exclusion_of` has been renamed to `validate_exclusion_of`. `ensure_exclusion_of` is deprecated and will be removed in 3.0.0. ### Bug fixes * Fix `delegate_method` so that it does not raise an error if the method that returns the delegate object is private. * Warn when `ensure_inclusion_of` is chained with `.in_array([false, true])` as well as with `.in_array([true, false])`. * Fix `set_session` so that the `to` qualifier if given nil checks that the session variable in question was set to nil (previously this actually did nothing). * Fix `filter_param` so that it works when `config.filter_parameters` contains regexes. * Fix `delegate_method` so that it can be required independent of Active Support. * Fix `validate_uniqueness_of`. When used against an unpersisted record whose model contained a non-nullable column other than the one being validated, the matcher would break. Even if the test set that column to a value beforehand, the record had to be persisted in order for the matcher to work. Now this is no longer the case and the record can remain unpersisted. * Fix `validate_absence_of`: it required that a string be passed as the attribute name rather than a symbol (which is the usual and documented usage). ### Improvements * `have_and_belongs_to_many` now checks to make sure that the join table contains the correct columns for the left- and right-hand side of the association. * Reword failure message for `delegate_method` so that it's a little more helpful. ### Features * Add new matcher `define_enum_for` to test usage of the `enum` macro introduced in Rails 4.1.
spec is following:
test failed with:
spec no :id args is worked.
The text was updated successfully, but these errors were encountered: