rspeckled 2.0.1 → 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/lib/rspeckled/helpers/factories.rb +8 -2
- data/lib/rspeckled/helpers/filepaths.rb +30 -22
- data/lib/rspeckled/helpers/null_objects.rb +8 -2
- data/lib/rspeckled/helpers/patterns.rb +75 -41
- data/lib/rspeckled/helpers/responses.rb +8 -2
- data/lib/rspeckled/patches.rb +8 -6
- data/lib/rspeckled/plugins/configuration/capybara_screenshot.rb +5 -4
- data/lib/rspeckled/plugins/configuration/carrier_wave.rb +1 -1
- data/lib/rspeckled/plugins/configuration/devise.rb +4 -4
- data/lib/rspeckled/plugins/configuration/dox.rb +4 -4
- data/lib/rspeckled/plugins/configuration/email_spec.rb +3 -3
- data/lib/rspeckled/plugins/configuration/factory_bot.rb +2 -2
- data/lib/rspeckled/plugins/configuration/shoulda.rb +2 -2
- data/lib/rspeckled/plugins/configuration/vcr.rb +6 -4
- data/lib/rspeckled/plugins/configuration/warden.rb +3 -2
- data/lib/rspeckled/plugins/extensions/awesome_print.rb +20 -7
- data/lib/rspeckled/plugins/extensions/capybara.rb +16 -6
- data/lib/rspeckled/plugins/extensions/faraday/middleware/curl_logger.rb +10 -3
- data/lib/rspeckled/plugins/extensions/faraday.rb +2 -1
- data/lib/rspeckled/plugins/extensions/omniauth/mock_authentications/ebay.rb +1 -1
- data/lib/rspeckled/plugins/extensions/omniauth/mock_authentications/facebook.rb +1 -1
- data/lib/rspeckled/plugins/extensions/omniauth/mock_authentications/twitter.rb +1 -1
- data/lib/rspeckled/plugins/extensions/omniauth.rb +6 -3
- data/lib/rspeckled/plugins/extensions/ruby/deferred_garbage_collection.rb +3 -1
- data/lib/rspeckled/plugins/extensions/selenium/drivers/chrome.rb +6 -6
- data/lib/rspeckled/plugins/extensions/selenium/drivers/firefox.rb +14 -3
- data/lib/rspeckled/plugins/extensions/strong_parameters.rb +2 -1
- data/lib/rspeckled/plugins/extensions/vcr/matchers/uri_without_trailing_id.rb +3 -1
- data/lib/rspeckled/plugins/extensions/vcr.rb +8 -4
- data/lib/rspeckled/plugins/hooks/action_mailer.rb +2 -2
- data/lib/rspeckled/plugins/hooks/authentication.rb +87 -61
- data/lib/rspeckled/plugins/hooks/bullet.rb +3 -1
- data/lib/rspeckled/plugins/hooks/capybara.rb +2 -2
- data/lib/rspeckled/plugins/hooks/carrier_wave.rb +2 -2
- data/lib/rspeckled/plugins/hooks/database_cleaner.rb +2 -2
- data/lib/rspeckled/plugins/hooks/devise.rb +1 -1
- data/lib/rspeckled/plugins/hooks/dox.rb +1 -1
- data/lib/rspeckled/plugins/hooks/elasticsearch.rb +13 -9
- data/lib/rspeckled/plugins/hooks/factory_bot.rb +1 -1
- data/lib/rspeckled/plugins/hooks/foreign_keys.rb +21 -13
- data/lib/rspeckled/plugins/hooks/garbage_collection.rb +1 -1
- data/lib/rspeckled/plugins/hooks/rails.rb +5 -3
- data/lib/rspeckled/plugins/hooks/redis.rb +3 -3
- data/lib/rspeckled/plugins/hooks/referehencible.rb +2 -2
- data/lib/rspeckled/plugins/hooks/request.rb +1 -1
- data/lib/rspeckled/plugins/hooks/rspec_mocks.rb +8 -4
- data/lib/rspeckled/plugins/hooks/selenium_webdriver.rb +2 -2
- data/lib/rspeckled/plugins/hooks/sidekiq.rb +14 -12
- data/lib/rspeckled/plugins/hooks/singletons.rb +2 -2
- data/lib/rspeckled/plugins/hooks/stripe.rb +5 -3
- data/lib/rspeckled/plugins/hooks/timecop.rb +3 -3
- data/lib/rspeckled/plugins/hooks/vcr.rb +2 -2
- data/lib/rspeckled/plugins/hooks/warden.rb +3 -3
- data/lib/rspeckled/plugins/hooks/webmock.rb +3 -3
- data/lib/rspeckled/plugins.rb +22 -19
- data/lib/rspeckled/reporting/example.rb +10 -8
- data/lib/rspeckled/reporting/outputs/csv.rb +2 -0
- data/lib/rspeckled/reporting/outputs/text.rb +17 -15
- data/lib/rspeckled/reporting/runner.rb +26 -24
- data/lib/rspeckled/spec_helpers/active_record_connection_setup.rb +13 -9
- data/lib/rspeckled/spec_helpers/rails_engine.rb +2 -2
- data/lib/rspeckled/spec_helpers/rspeckled.rb +17 -1
- data/lib/rspeckled/support.rb +26 -24
- data/lib/rspeckled/tasks/documentation.rake +28 -8
- data/lib/rspeckled/version.rb +3 -1
- data.tar.gz.sig +0 -0
- metadata +29 -28
- metadata.gz.sig +0 -0
@@ -11,11 +11,17 @@ class Firefox
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def driver(app)
|
14
|
-
::Capybara::Selenium::Driver.new(app,
|
14
|
+
::Capybara::Selenium::Driver.new(app,
|
15
|
+
browser: :firefox,
|
16
|
+
profile: profile,
|
17
|
+
options: options)
|
15
18
|
end
|
16
19
|
|
17
20
|
def headless(app)
|
18
|
-
::Capybara::Selenium::Driver.new(app,
|
21
|
+
::Capybara::Selenium::Driver.new(app,
|
22
|
+
browser: :firefox,
|
23
|
+
profile: profile,
|
24
|
+
options: headless_options)
|
19
25
|
end
|
20
26
|
|
21
27
|
private
|
@@ -30,7 +36,12 @@ class Firefox
|
|
30
36
|
::Selenium::WebDriver::Firefox::Profile.new.tap do |profile|
|
31
37
|
profile['browser.download.dir'] = downloads_directory
|
32
38
|
profile['browser.download.folderList'] = 2
|
33
|
-
profile['browser.helperApps.neverAsk.saveToDisk'] =
|
39
|
+
profile['browser.helperApps.neverAsk.saveToDisk'] = %w{
|
40
|
+
images/jpeg
|
41
|
+
application/pdf
|
42
|
+
application/octet-stream
|
43
|
+
}
|
44
|
+
.join(', ')
|
34
45
|
profile['pdfjs.disabled'] = true
|
35
46
|
end
|
36
47
|
end
|
@@ -3,7 +3,8 @@
|
|
3
3
|
always_permitted_parameters = %w{id}
|
4
4
|
|
5
5
|
if ::ActionController::Parameters.respond_to?(:always_permitted_parameters)
|
6
|
-
::ActionController::Parameters
|
6
|
+
::ActionController::Parameters
|
7
|
+
.always_permitted_parameters += always_permitted_parameters
|
7
8
|
else
|
8
9
|
always_permitted_parameters.each do |always_permitted_parameter|
|
9
10
|
::ActionController::Parameters::NEVER_UNPERMITTED_PARAMS << always_permitted_parameter
|
@@ -16,7 +16,9 @@ class UriWithoutTrailingId
|
|
16
16
|
|
17
17
|
if request_uri.match?(trailing_id_matcher)
|
18
18
|
request_uri_without_id = request_uri.sub(trailing_id_matcher, '')
|
19
|
-
vcr_cassette_request_uri_without_id = vcr_cassette_request_uri.sub(
|
19
|
+
vcr_cassette_request_uri_without_id = vcr_cassette_request_uri.sub(
|
20
|
+
trailing_id_matcher, ''
|
21
|
+
)
|
20
22
|
|
21
23
|
request_uri.match(trailing_id_matcher) &&
|
22
24
|
vcr_cassette_request_uri.match(trailing_id_matcher) &&
|
@@ -3,11 +3,15 @@
|
|
3
3
|
require 'rspeckled/plugins/extensions/vcr/matchers/uri_without_trailing_id'
|
4
4
|
|
5
5
|
::VCR.configure do |config|
|
6
|
-
config.register_request_matcher :uri_without_trailing_guid do |request,
|
7
|
-
::Rspeckled::Vcr::Matchers::UriWithoutTrailingId
|
6
|
+
config.register_request_matcher :uri_without_trailing_guid do |request, vcr_request|
|
7
|
+
::Rspeckled::Vcr::Matchers::UriWithoutTrailingId
|
8
|
+
.new(%r(/[a-f0-9\-]{32,36}/?\z))
|
9
|
+
.call(request, vcr_request)
|
8
10
|
end
|
9
11
|
|
10
|
-
config.register_request_matcher :uri_without_trailing_id do |request,
|
11
|
-
::Rspeckled::Vcr::Matchers::UriWithoutTrailingId
|
12
|
+
config.register_request_matcher :uri_without_trailing_id do |request, vcr_request|
|
13
|
+
::Rspeckled::Vcr::Matchers::UriWithoutTrailingId
|
14
|
+
.new(%r{/\d+/?\z})
|
15
|
+
.call(request, vcr_request)
|
12
16
|
end
|
13
17
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
RSpec.configure do |config|
|
4
|
-
config.before(:each, :
|
3
|
+
::RSpec.configure do |config|
|
4
|
+
config.before(:each, email: true) do
|
5
5
|
config.rspeckled_logger.debug("Before Each - Start - #{__FILE__}")
|
6
6
|
|
7
7
|
if ::ActionMailer::Base.delivery_method == :cache
|
@@ -1,29 +1,30 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
3
|
+
# rubocop:disable Metrics/BlockNesting
|
4
|
+
::RSpec.configure do |config| # rubocop:disable Metrics/BlockLength
|
5
|
+
config.around(:each, authentication: ->(v) { !v.nil? }) do |example| # rubocop:disable Metrics/BlockLength
|
5
6
|
config.rspeckled_logger.debug("Around Each - Start - #{__FILE__}")
|
6
7
|
|
7
|
-
options
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
options[:class]
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
class_name_underscored
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
defaults
|
8
|
+
options = if example.metadata[:authentication].is_a?(::Hash)
|
9
|
+
example.metadata[:authentication]
|
10
|
+
else
|
11
|
+
{
|
12
|
+
token: {
|
13
|
+
roles: example.metadata[:authentication],
|
14
|
+
},
|
15
|
+
}
|
16
|
+
end
|
17
|
+
|
18
|
+
options[:class] ||= described_class
|
19
|
+
.name[/\A([^:]+)::/, 1]
|
20
|
+
.concat('::User')
|
21
|
+
.constantize
|
22
|
+
|
23
|
+
class_name_underscored = options[:class]
|
24
|
+
.name[/(?:.*::)?(\w+)\z/, 1]
|
25
|
+
.gsub(/([a-z])([A-Z])/, '\1_\2')
|
26
|
+
.downcase
|
27
|
+
defaults = {
|
27
28
|
:type => :json_web_token,
|
28
29
|
:authentication_method => :"authenticate_#{class_name_underscored}!",
|
29
30
|
:class_instance_overrides => {},
|
@@ -32,56 +33,80 @@ RSpec.configure do |config|
|
|
32
33
|
:strategy => :factory,
|
33
34
|
:successful? => true,
|
34
35
|
:token => {
|
35
|
-
:
|
36
|
+
roles: 'standard',
|
36
37
|
},
|
37
38
|
}
|
38
39
|
|
39
|
-
options
|
40
|
-
instance
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
40
|
+
options = defaults.deep_merge(options)
|
41
|
+
instance = case options[:strategy]
|
42
|
+
when :factory
|
43
|
+
::FactoryBot.create(
|
44
|
+
class_name_underscored.to_sym,
|
45
|
+
*options[:class_instance_traits],
|
46
|
+
options[:class_instance_overrides],
|
47
|
+
)
|
48
|
+
when :instance
|
49
|
+
options[:class].new(options[:class_instance_overrides])
|
50
|
+
end
|
51
|
+
authentication_result = options[:successful?] ? instance : nil
|
47
52
|
|
48
53
|
case options[:type]
|
49
54
|
when :standard
|
50
|
-
authentication_controller_class
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
55
|
+
authentication_controller_class = if example.metadata[:type] == :controller
|
56
|
+
described_class
|
57
|
+
else
|
58
|
+
ApplicationController
|
59
|
+
end
|
60
|
+
authentication_controller_instance = authentication_controller_class.new
|
61
|
+
authentication_method = if authentication_controller_instance
|
62
|
+
.respond_to?(
|
63
|
+
options[:authentication_method],
|
64
|
+
true,
|
65
|
+
)
|
66
|
+
|
67
|
+
options[:authentication_method]
|
68
|
+
elsif authentication_controller_instance
|
69
|
+
.respond_to?(:authenticate, true)
|
70
|
+
|
71
|
+
:authenticate
|
72
|
+
end
|
73
|
+
|
74
|
+
authentication_controller_class.__send__(:define_method, authentication_method) do
|
75
|
+
options[:successful?]
|
76
|
+
end
|
77
|
+
|
78
|
+
authentication_controller_class.__send__(:define_method, options[:method]) do
|
79
|
+
authentication_result
|
80
|
+
end
|
81
|
+
|
60
82
|
authentication_controller_class.__send__(:helper_method, options[:method])
|
61
|
-
example.example_group_instance.class.let(options[:method])
|
83
|
+
example.example_group_instance.class.let(options[:method]) { authentication_result }
|
62
84
|
|
63
85
|
example.run
|
64
86
|
|
65
87
|
authentication_controller_class.__send__(:remove_method, options[:method])
|
66
88
|
when :json_web_token
|
67
|
-
@token_data =
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
89
|
+
@token_data =
|
90
|
+
[
|
91
|
+
{
|
92
|
+
'aid' => options[:token][:audience_id] ||
|
93
|
+
instance['account_id'] ||
|
94
|
+
instance['id'],
|
95
|
+
'aud' => options[:token][:audience] || instance.class.name,
|
96
|
+
'exp' => options[:token][:expired_at] || 1.day.from_now.utc.to_i,
|
97
|
+
'iat' => options[:token][:issued_at] || ::Time.now.utc.to_i,
|
98
|
+
'iss' => options[:token][:issuer] || 'rspeckled',
|
99
|
+
'jti' => options[:token][:token_id] || ::SecureRandom.uuid,
|
100
|
+
'nbf' => options[:token][:not_before] || 1.day.ago.utc.to_i,
|
101
|
+
'rol' => options[:token][:roles] || 'standard',
|
102
|
+
'sid' => options[:token][:subject_id],
|
103
|
+
'sub' => options[:token][:subject],
|
104
|
+
},
|
105
|
+
{
|
106
|
+
'typ' => 'JWT',
|
107
|
+
'cty' => 'application/json-web-token',
|
108
|
+
},
|
109
|
+
]
|
85
110
|
|
86
111
|
example.example_group_instance.class.let(options[:method]) { authentication_result }
|
87
112
|
|
@@ -93,7 +118,7 @@ RSpec.configure do |config|
|
|
93
118
|
config.rspeckled_logger.debug("Around Each - End - #{__FILE__}")
|
94
119
|
end
|
95
120
|
|
96
|
-
config.before(:each, :
|
121
|
+
config.before(:each, authentication: ->(v) { !v.nil? }) do |_example|
|
97
122
|
config.rspeckled_logger.debug("Before Each - Start - #{__FILE__}")
|
98
123
|
|
99
124
|
request.env['X_JSON_WEB_TOKEN'] = @token_data
|
@@ -101,3 +126,4 @@ RSpec.configure do |config|
|
|
101
126
|
config.rspeckled_logger.debug("Before Each - End - #{__FILE__}")
|
102
127
|
end
|
103
128
|
end
|
129
|
+
# rubocop:enable Metrics/BlockNesting
|
@@ -1,6 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
3
|
+
# rubocop:disable Metrics/BlockNesting
|
4
|
+
::RSpec.configure do |config|
|
4
5
|
config.before(:each) do
|
5
6
|
config.rspeckled_logger.debug("Before Each - Start - #{__FILE__}")
|
6
7
|
|
@@ -20,3 +21,4 @@ RSpec.configure do |config|
|
|
20
21
|
config.rspeckled_logger.debug("After Each - End - #{__FILE__}")
|
21
22
|
end
|
22
23
|
end
|
24
|
+
# rubocop:enable Metrics/BlockNesting
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
RSpec.configure do |config|
|
4
|
-
config.before(:each, :
|
4
|
+
config.before(:each, js: true) do
|
5
5
|
config.rspeckled_logger.debug("Before Each - Start - #{__FILE__}")
|
6
6
|
|
7
7
|
page.driver.reset!
|
@@ -10,7 +10,7 @@ RSpec.configure do |config|
|
|
10
10
|
end
|
11
11
|
|
12
12
|
# Focus The Browser on Activation
|
13
|
-
config.around(:each, :
|
13
|
+
config.around(:each, js: true, autofocus: true) do |example|
|
14
14
|
config.rspeckled_logger.debug("Around Each - Start - #{__FILE__}")
|
15
15
|
|
16
16
|
browser_name = example.metadata[:driver].to_s.capitalize
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
RSpec.configure do |config|
|
4
|
-
config.around(:each, :
|
3
|
+
::RSpec.configure do |config|
|
4
|
+
config.around(:each, file_attachment: true) do |example|
|
5
5
|
config.rspeckled_logger.debug("Around Each - Start - #{__FILE__}")
|
6
6
|
|
7
7
|
previous_carrierwave_processing_mode = subject.class.enable_processing
|
@@ -4,7 +4,7 @@ RSpec.configure do |config|
|
|
4
4
|
config.before(:suite) do
|
5
5
|
config.rspeckled_logger.debug("Before Suite - Start - #{__FILE__}")
|
6
6
|
|
7
|
-
::DatabaseCleaner.clean_with(:truncation, :
|
7
|
+
::DatabaseCleaner.clean_with(:truncation, except: %w{ar_internal_metadata})
|
8
8
|
|
9
9
|
config.rspeckled_logger.debug("Before Suite - End - #{__FILE__}")
|
10
10
|
end
|
@@ -13,7 +13,7 @@ RSpec.configure do |config|
|
|
13
13
|
config.rspeckled_logger.debug("Around Each - Start - #{__FILE__}")
|
14
14
|
|
15
15
|
::DatabaseCleaner.strategy = if example.metadata[:js]
|
16
|
-
[:truncation, :
|
16
|
+
[:truncation, { except: %w{ar_internal_metadata} }]
|
17
17
|
else
|
18
18
|
:transaction
|
19
19
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
RSpec.configure do |config|
|
4
|
-
config.before(:each, :
|
4
|
+
config.before(:each, type: :controller) do |_example|
|
5
5
|
config.rspeckled_logger.debug("Before Each - Start - #{__FILE__}")
|
6
6
|
|
7
7
|
@request.env['devise.mapping'] = ::Devise.mappings[:user]
|
@@ -1,15 +1,17 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
RSpec.configure do |config|
|
4
|
-
config.before(:all, :
|
3
|
+
::RSpec.configure do |config|
|
4
|
+
config.before(:all, elasticsearch: ->(v) { !v.nil? }) do
|
5
5
|
config.rspeckled_logger.debug("Before All - Start - #{__FILE__}")
|
6
6
|
|
7
|
-
|
7
|
+
unless ::Elasticsearch::Extensions::Test::Cluster.running?
|
8
|
+
::Elasticsearch::Extensions::Test::Cluster.start(port: 9200)
|
9
|
+
end
|
8
10
|
|
9
11
|
config.rspeckled_logger.debug("Before All - End - #{__FILE__}")
|
10
12
|
end
|
11
13
|
|
12
|
-
config.around(:each, :
|
14
|
+
config.around(:each, elasticsearch: ->(v) { !v.nil? }) do |example|
|
13
15
|
config.rspeckled_logger.debug("Around Each - Start - #{__FILE__}")
|
14
16
|
|
15
17
|
model = case example.metadata[:elasticsearch]
|
@@ -17,20 +19,22 @@ RSpec.configure do |config|
|
|
17
19
|
example.metadata[:elasticsearch].constantize
|
18
20
|
end
|
19
21
|
|
20
|
-
model.__elasticsearch__.client.indices.delete :
|
21
|
-
model.__elasticsearch__.create_index! :
|
22
|
+
model.__elasticsearch__.client.indices.delete index: '_all'
|
23
|
+
model.__elasticsearch__.create_index! index: model.index_name
|
22
24
|
|
23
25
|
example.run
|
24
26
|
|
25
|
-
model.__elasticsearch__.client.indices.delete :
|
27
|
+
model.__elasticsearch__.client.indices.delete index: '_all'
|
26
28
|
|
27
29
|
config.rspeckled_logger.debug("Around Each - End - #{__FILE__}")
|
28
30
|
end
|
29
31
|
|
30
|
-
config.after(:all, :
|
32
|
+
config.after(:all, elasticsearch: ->(v) { !v.nil? }) do
|
31
33
|
config.rspeckled_logger.debug("After All - Start - #{__FILE__}")
|
32
34
|
|
33
|
-
|
35
|
+
if ::Elasticsearch::Extensions::Test::Cluster.running?
|
36
|
+
::Elasticsearch::Extensions::Test::Cluster.stop(port: 9200)
|
37
|
+
end
|
34
38
|
|
35
39
|
config.rspeckled_logger.debug("After All - End - #{__FILE__}")
|
36
40
|
end
|
@@ -1,22 +1,23 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
3
|
+
# rubocop:disable Metrics/BlockNesting
|
4
|
+
::RSpec.configure do |config| # rubocop:disable Metrics/BlockLength
|
5
|
+
config.around(:each, disable_foreign_keys: ->(v) { !v.nil? }) do |example| # rubocop:disable Metrics/BlockLength
|
5
6
|
config.rspeckled_logger.debug("Around Each - Start - #{__FILE__}")
|
6
7
|
|
7
8
|
options = example.metadata[:disable_foreign_keys]
|
8
9
|
options = case options
|
9
10
|
when ::Array
|
10
|
-
{ :
|
11
|
+
{ tables: options.map(&:to_s) }
|
11
12
|
when ::String, ::Symbol
|
12
|
-
{ :
|
13
|
+
{ tables: [options.to_s] }
|
13
14
|
when ::FalseClass
|
14
|
-
{ :
|
15
|
+
{ tables: [] }
|
15
16
|
when ::TrueClass
|
16
|
-
{ :
|
17
|
+
{ tables: :all }
|
17
18
|
end
|
18
19
|
|
19
|
-
|
20
|
+
foreign_key_disable_sql = <<~HEREDOC
|
20
21
|
SELECT
|
21
22
|
'ALTER TABLE "' || "pg_namespace"."nspname" || '"."' || "pg_class"."relname" || '" DISABLE TRIGGER "' || "pg_trigger"."tgname" || '";' AS "statement"
|
22
23
|
FROM
|
@@ -38,22 +39,28 @@ RSpec.configure do |config|
|
|
38
39
|
HEREDOC
|
39
40
|
|
40
41
|
unless options[:tables] == :all
|
41
|
-
|
42
|
+
foreign_key_disable_sql += " AND\n "
|
42
43
|
|
43
44
|
table_constraint_sql = options[:tables]
|
44
45
|
.map { |table_name| "'#{table_name}'" }
|
45
46
|
.join(', ')
|
46
47
|
|
47
|
-
|
48
|
+
foreign_key_disable_sql += %Q{ "pg_class"."relname" IN (#{table_constraint_sql})}
|
48
49
|
end
|
49
50
|
|
50
|
-
|
51
|
+
foreign_key_disable = ::ActiveRecord::Base
|
52
|
+
.connection
|
53
|
+
.select_values(foreign_key_disable_sql)
|
54
|
+
.join(' ')
|
51
55
|
|
52
56
|
::ActiveRecord::Base.transaction do
|
53
|
-
if
|
54
|
-
puts '
|
57
|
+
if foreign_key_disable.blank?
|
58
|
+
puts(<<~HEREDOC).tr("\n", ' ')
|
59
|
+
You asked to disable foreign keys but there were no foreign keys found
|
60
|
+
to disable
|
61
|
+
HEREDOC
|
55
62
|
else
|
56
|
-
::ActiveRecord::Base.connection.execute(
|
63
|
+
::ActiveRecord::Base.connection.execute(foreign_key_disable)
|
57
64
|
end
|
58
65
|
|
59
66
|
example.run
|
@@ -62,3 +69,4 @@ RSpec.configure do |config|
|
|
62
69
|
config.rspeckled_logger.debug("Around Each - End - #{__FILE__}")
|
63
70
|
end
|
64
71
|
end
|
72
|
+
# rubocop:enable Metrics/BlockNesting
|
@@ -1,10 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
3
|
+
# rubocop:disable Layout/LineLength
|
4
|
+
::RSpec.configure do |config| # rubocop:disable Metrics/BlockLength
|
5
|
+
config.around(:each, debug: true) do |example| # rubocop:disable Metrics/BlockLength
|
5
6
|
config.rspeckled_logger.debug("Around Each - Start - #{__FILE__}")
|
6
7
|
|
7
|
-
debug_rails_logger = ::ActiveSupport::TaggedLogging.new(ActiveSupport::Logger.new($stdout))
|
8
|
+
debug_rails_logger = ::ActiveSupport::TaggedLogging.new(::ActiveSupport::Logger.new($stdout))
|
8
9
|
debug_rails_logger.level = :debug
|
9
10
|
|
10
11
|
current_rails_configuration_logger = ::Rails.configuration.logger
|
@@ -48,3 +49,4 @@ RSpec.configure do |config|
|
|
48
49
|
config.rspeckled_logger.debug("Around Each - End - #{__FILE__}") if defined?(config)
|
49
50
|
end
|
50
51
|
end
|
52
|
+
# rubocop:enable Layout/LineLength
|
@@ -1,17 +1,17 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
RSpec.configure do |config|
|
4
|
-
config.before(:each, :
|
4
|
+
config.before(:each, cache: ->(v) { !v.nil? }) do |example|
|
5
5
|
config.rspeckled_logger.debug("Before Each - Start - #{__FILE__}")
|
6
6
|
|
7
7
|
cache_metadata = example.metadata[:cache]
|
8
8
|
|
9
9
|
# rubocop:disable Metrics/BlockNesting
|
10
10
|
if cache_metadata[:reset]
|
11
|
-
client = ::Redis.new(:
|
11
|
+
client = ::Redis.new(host: '127.0.0.1', port: 6379, db: 2)
|
12
12
|
reset_patterns = Array(cache_metadata[:reset])
|
13
13
|
|
14
|
-
client.
|
14
|
+
client.each_key do |key|
|
15
15
|
next unless reset_patterns.any? { |regex| key.match?(regex) }
|
16
16
|
|
17
17
|
client.del(key)
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
RSpec.configure do |config|
|
4
|
-
config.before(:each, :
|
3
|
+
::RSpec.configure do |config|
|
4
|
+
config.before(:each, mock_refs: ->(v) { !v.nil? }) do |example|
|
5
5
|
config.rspeckled_logger.debug("Before Each - Start - #{__FILE__}")
|
6
6
|
|
7
7
|
reference = if example.metadata[:mock_refs].is_a? ::TrueClass
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
RSpec.configure do |config|
|
4
|
-
config.before(:each, :
|
4
|
+
config.before(:each, type: :controller) do
|
5
5
|
config.rspeckled_logger.debug("Before Each - Start - #{__FILE__}")
|
6
6
|
|
7
7
|
request.headers['accept'] = 'application/json'
|
@@ -1,11 +1,15 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
RSpec.configure do |config|
|
4
|
-
config.around(:each, :
|
3
|
+
::RSpec.configure do |config|
|
4
|
+
config.around(:each, verify: false) do |example|
|
5
5
|
config.rspeckled_logger.debug("Around Each - Start - #{__FILE__}")
|
6
6
|
|
7
|
-
verify_partial = ::RSpec::Mocks
|
8
|
-
|
7
|
+
verify_partial = ::RSpec::Mocks
|
8
|
+
.configuration
|
9
|
+
.instance_variable_get(:@verify_partial_doubles)
|
10
|
+
verify_constant = ::RSpec::Mocks
|
11
|
+
.configuration
|
12
|
+
.instance_variable_get(:@verify_doubled_constant_names)
|
9
13
|
|
10
14
|
::RSpec::Mocks.configuration.verify_partial_doubles = example.metadata[:verify]
|
11
15
|
::RSpec::Mocks.configuration.verify_doubled_constant_names = example.metadata[:verify]
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
RSpec.configure do |config|
|
4
|
-
config.around(:each, :
|
3
|
+
::RSpec.configure do |config|
|
4
|
+
config.around(:each, js: true, debug: true) do |example|
|
5
5
|
config.rspeckled_logger.debug("Around Each - Start - #{__FILE__}")
|
6
6
|
|
7
7
|
::Selenium::WebDriver.logger.level = :debug
|