Fix #permit so #on works and is properly tested
Why:
* When using #permit with the #on qualifier to assert that #permit was
called on a subset of the params hash (selected using #require), the
matcher would fail. The matcher didn't properly detect that #permit
was called on the slice -- it thought it was called on the parent
params object.
* It turns out this was a bug in Doublespeak. When #require is called,
we take the subset of the params, which is also an
ActionController::Parameters object like params, and we stub #permit
on it at runtime. Unfortunately the Double object created here was
never activated, so when #permit was called, this Double wasn't the
one run. Instead, the Double on #permit within the
ActionController::Parameters class (which is stubbed at the beginning)
was the one that was run, and it's this object that recorded the call
on #permit incorrectly.
* This bug slipped through because it turns out when #on was added it
wasn't tested very well.
To satisfy the above:
* Modify Doublespeak so that when it is in activated mode, whenever
new doubles are created, activate them immediately.
* Fix all of the tests for #permit around operating on a slice of the
params hash so that they use the #on qualifier.
2015-09-28 22:48:14 +00:00
|
|
|
require 'shoulda/matchers/doublespeak'
|
2015-03-01 03:28:56 +00:00
|
|
|
|
|
|
|
PROJECT_ROOT = File.expand_path('../..', __FILE__)
|
|
|
|
$LOAD_PATH << File.join(PROJECT_ROOT, 'lib')
|
|
|
|
|
|
|
|
RSpec.configure do |config|
|
|
|
|
config.order = :random
|
|
|
|
|
|
|
|
config.expect_with :rspec do |c|
|
|
|
|
c.syntax = :expect
|
|
|
|
end
|
|
|
|
|
2015-09-30 00:41:58 +00:00
|
|
|
if config.files_to_run.one?
|
|
|
|
config.default_formatter = 'doc'
|
|
|
|
end
|
|
|
|
|
2015-03-01 03:28:56 +00:00
|
|
|
config.mock_with :rspec
|
|
|
|
end
|