appsignal 2.1.0.beta.1 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (74) hide show
  1. checksums.yaml +4 -4
  2. data/.rspec +2 -1
  3. data/CHANGELOG.md +5 -0
  4. data/README.md +14 -15
  5. data/appsignal.gemspec +1 -1
  6. data/lib/appsignal.rb +1 -1
  7. data/lib/appsignal/auth_check.rb +5 -2
  8. data/lib/appsignal/cli/demo.rb +1 -1
  9. data/lib/appsignal/cli/diagnose.rb +1 -1
  10. data/lib/appsignal/cli/install.rb +1 -1
  11. data/lib/appsignal/transaction.rb +2 -1
  12. data/lib/appsignal/version.rb +1 -1
  13. data/spec/lib/appsignal/auth_check_spec.rb +9 -10
  14. data/spec/lib/appsignal/capistrano2_spec.rb +6 -6
  15. data/spec/lib/appsignal/capistrano3_spec.rb +6 -6
  16. data/spec/lib/appsignal/cli/demo_spec.rb +1 -1
  17. data/spec/lib/appsignal/cli/diagnose_spec.rb +1 -1
  18. data/spec/lib/appsignal/cli/helpers_spec.rb +2 -2
  19. data/spec/lib/appsignal/cli/install_spec.rb +2 -2
  20. data/spec/lib/appsignal/cli_spec.rb +2 -2
  21. data/spec/lib/appsignal/config_spec.rb +24 -24
  22. data/spec/lib/appsignal/demo_spec.rb +4 -2
  23. data/spec/lib/appsignal/event_formatter/action_view/render_formatter_spec.rb +11 -7
  24. data/spec/lib/appsignal/event_formatter/active_record/instantiation_formatter_spec.rb +2 -2
  25. data/spec/lib/appsignal/event_formatter/active_record/sql_formatter_spec.rb +2 -2
  26. data/spec/lib/appsignal/event_formatter/elastic_search/search_formatter_spec.rb +1 -1
  27. data/spec/lib/appsignal/event_formatter/faraday/request_formatter_spec.rb +2 -2
  28. data/spec/lib/appsignal/event_formatter/moped/query_formatter_spec.rb +9 -9
  29. data/spec/lib/appsignal/event_formatter_spec.rb +17 -17
  30. data/spec/lib/appsignal/extension_spec.rb +7 -7
  31. data/spec/lib/appsignal/garbage_collection_profiler_spec.rb +0 -3
  32. data/spec/lib/appsignal/hooks/active_support_notifications_spec.rb +11 -3
  33. data/spec/lib/appsignal/hooks/celluloid_spec.rb +12 -4
  34. data/spec/lib/appsignal/hooks/data_mapper_spec.rb +12 -4
  35. data/spec/lib/appsignal/hooks/delayed_job_spec.rb +21 -13
  36. data/spec/lib/appsignal/hooks/mongo_ruby_driver_spec.rb +14 -6
  37. data/spec/lib/appsignal/hooks/net_http_spec.rb +11 -3
  38. data/spec/lib/appsignal/hooks/passenger_spec.rb +14 -6
  39. data/spec/lib/appsignal/hooks/puma_spec.rb +18 -10
  40. data/spec/lib/appsignal/hooks/rake_spec.rb +2 -2
  41. data/spec/lib/appsignal/hooks/redis_spec.rb +40 -30
  42. data/spec/lib/appsignal/hooks/sequel_spec.rb +11 -3
  43. data/spec/lib/appsignal/hooks/shoryuken_spec.rb +15 -7
  44. data/spec/lib/appsignal/hooks/sidekiq_spec.rb +17 -9
  45. data/spec/lib/appsignal/hooks/unicorn_spec.rb +16 -8
  46. data/spec/lib/appsignal/hooks/webmachine_spec.rb +14 -4
  47. data/spec/lib/appsignal/hooks_spec.rb +28 -28
  48. data/spec/lib/appsignal/integrations/data_mapper_spec.rb +1 -1
  49. data/spec/lib/appsignal/integrations/grape_spec.rb +3 -3
  50. data/spec/lib/appsignal/integrations/mongo_ruby_driver_spec.rb +14 -16
  51. data/spec/lib/appsignal/integrations/object_spec.rb +10 -10
  52. data/spec/lib/appsignal/integrations/padrino_spec.rb +14 -18
  53. data/spec/lib/appsignal/integrations/railtie_spec.rb +35 -19
  54. data/spec/lib/appsignal/integrations/resque_active_job_spec.rb +2 -2
  55. data/spec/lib/appsignal/integrations/resque_spec.rb +8 -8
  56. data/spec/lib/appsignal/integrations/sinatra_spec.rb +2 -2
  57. data/spec/lib/appsignal/integrations/webmachine_spec.rb +1 -1
  58. data/spec/lib/appsignal/js_exception_transaction_spec.rb +1 -1
  59. data/spec/lib/appsignal/minutely_spec.rb +3 -3
  60. data/spec/lib/appsignal/rack/generic_instrumentation_spec.rb +12 -12
  61. data/spec/lib/appsignal/rack/js_exception_catcher_spec.rb +2 -2
  62. data/spec/lib/appsignal/rack/rails_instrumentation_spec.rb +19 -15
  63. data/spec/lib/appsignal/rack/sinatra_instrumentation_spec.rb +21 -21
  64. data/spec/lib/appsignal/rack/streaming_listener_spec.rb +5 -5
  65. data/spec/lib/appsignal/system_spec.rb +5 -5
  66. data/spec/lib/appsignal/transaction_spec.rb +176 -155
  67. data/spec/lib/appsignal/transmitter_spec.rb +29 -23
  68. data/spec/lib/appsignal/utils/params_sanitizer_spec.rb +49 -35
  69. data/spec/lib/appsignal/utils_spec.rb +15 -8
  70. data/spec/lib/appsignal_spec.rb +134 -150
  71. data/spec/spec_helper.rb +5 -2
  72. metadata +6 -10
  73. data/spec/lib/tmp/config/appsignal.yml +0 -2
  74. data/spec/support/delegate_matcher.rb +0 -38
@@ -11,12 +11,12 @@ describe Appsignal::Transmitter do
11
11
  describe "#uri" do
12
12
  subject { instance.uri.to_s }
13
13
 
14
- it { should include "https://push.appsignal.com/1/action?" }
15
- it { should include "api_key=abc" }
16
- it { should include "hostname=app1.local" }
17
- it { should include "name=TestApp" }
18
- it { should include "environment=production" }
19
- it { should include "gem_version=#{Appsignal::VERSION}" }
14
+ it { is_expected.to include "https://push.appsignal.com/1/action?" }
15
+ it { is_expected.to include "api_key=abc" }
16
+ it { is_expected.to include "hostname=app1.local" }
17
+ it { is_expected.to include "name=TestApp" }
18
+ it { is_expected.to include "environment=production" }
19
+ it { is_expected.to include "gem_version=#{Appsignal::VERSION}" }
20
20
  end
21
21
 
22
22
  describe "#transmit" do
@@ -38,7 +38,7 @@ describe Appsignal::Transmitter do
38
38
  end
39
39
  subject { instance.transmit(:the => :payload) }
40
40
 
41
- it { should eq "200" }
41
+ it { is_expected.to eq "200" }
42
42
 
43
43
  context "with ca_file_path config option set" do
44
44
  context "when not existing file" do
@@ -86,12 +86,17 @@ describe Appsignal::Transmitter do
86
86
  describe "#http_post" do
87
87
  subject { instance.send(:http_post, "the" => "payload") }
88
88
 
89
- its(:body) { should eq Appsignal::Utils::Gzip.compress("{\"the\":\"payload\"}") }
90
- its(:path) { should eq instance.uri.request_uri }
89
+ it "gzips the body" do
90
+ expect(subject.body).to eq Appsignal::Utils::Gzip.compress("{\"the\":\"payload\"}")
91
+ end
92
+
93
+ it "sets the path" do
94
+ expect(subject.path).to eq instance.uri.request_uri
95
+ end
91
96
 
92
- it "should have the correct headers" do
93
- subject["Content-Type"].should eq "application/json; charset=UTF-8"
94
- subject["Content-Encoding"].should eq "gzip"
97
+ it "sets the correct headers" do
98
+ expect(subject["Content-Type"]).to eq "application/json; charset=UTF-8"
99
+ expect(subject["Content-Encoding"]).to eq "gzip"
95
100
  end
96
101
  end
97
102
 
@@ -101,27 +106,28 @@ describe Appsignal::Transmitter do
101
106
  context "with a http uri" do
102
107
  let(:config) { project_fixture_config("test") }
103
108
 
104
- it { should be_instance_of(Net::HTTP) }
105
- its(:proxy?) { should be_false }
106
- its(:use_ssl?) { should be_false }
109
+ it { expect(subject).to be_instance_of(Net::HTTP) }
110
+ it { expect(subject.proxy?).to be_falsy }
111
+ it { expect(subject.use_ssl?).to be_falsy }
107
112
  end
108
113
 
109
114
  context "with a https uri" do
110
115
  let(:config) { project_fixture_config("production") }
111
116
 
112
- it { should be_instance_of(Net::HTTP) }
113
- its(:proxy?) { should be_false }
114
- its(:use_ssl?) { should be_true }
115
- its(:verify_mode) { should eq OpenSSL::SSL::VERIFY_PEER }
116
- its(:ca_file) { should eq config[:ca_file_path] }
117
+ it { expect(subject).to be_instance_of(Net::HTTP) }
118
+ it { expect(subject.proxy?).to be_falsy }
119
+ it { expect(subject.use_ssl?).to be_truthy }
120
+ it { expect(subject.verify_mode).to eq OpenSSL::SSL::VERIFY_PEER }
121
+ it { expect(subject.ca_file).to eq config[:ca_file_path] }
117
122
  end
118
123
 
119
124
  context "with a proxy" do
120
125
  let(:config) { project_fixture_config("production", :http_proxy => "http://localhost:8080") }
121
126
 
122
- its(:proxy?) { should be_true }
123
- its(:proxy_address) { should eq "localhost" }
124
- its(:proxy_port) { should eq 8080 }
127
+ it { expect(subject).to be_instance_of(Net::HTTP) }
128
+ it { expect(subject.proxy?).to be_truthy }
129
+ it { expect(subject.proxy_address).to eq "localhost" }
130
+ it { expect(subject.proxy_port).to eq 8080 }
125
131
  end
126
132
  end
127
133
  end
@@ -29,45 +29,51 @@ describe Appsignal::Utils::ParamsSanitizer do
29
29
  let(:sanitized_params) { described_class.sanitize(params) }
30
30
  subject { sanitized_params }
31
31
 
32
- it { should be_instance_of Hash }
33
- its([:text]) { should eq("string") }
34
- its(["string"]) { should eq("string key value") }
35
- its([:file]) { should be_instance_of String }
36
- its([:file]) { should include "::UploadedFile" }
37
- its([:float]) { should eq(0.0) }
38
- its([:bool_true]) { should be(true) }
39
- its([:bool_false]) { should be(false) }
40
- its([:nil]) { should be_nil }
41
- its([:int]) { should eq(1) }
32
+ it { is_expected.to be_instance_of Hash }
33
+ it { expect(subject[:text]).to eq("string") }
34
+ it { expect(subject["string"]).to eq("string key value") }
35
+ it do
36
+ expect(subject[:file]).to be_instance_of String
37
+ expect(subject[:file]).to include "::UploadedFile"
38
+ end
39
+ it { expect(subject[:float]).to eq(0.0) }
40
+ it { expect(subject[:bool_true]).to be(true) }
41
+ it { expect(subject[:bool_false]).to be(false) }
42
+ it { expect(subject[:nil]).to be_nil }
43
+ it { expect(subject[:int]).to eq(1) }
42
44
 
43
45
  it "does not change the original params" do
44
46
  subject
45
- params[:file].should eq(file)
46
- params[:hash][:nested_array][2].should eq(file)
47
+ expect(params[:file]).to eq(file)
48
+ expect(params[:hash][:nested_array][2]).to eq(file)
47
49
  end
48
50
 
49
51
  describe ":hash" do
50
52
  subject { sanitized_params[:hash] }
51
53
 
52
- it { should be_instance_of Hash }
53
- its([:nested_text]) { should eq("string") }
54
+ it { is_expected.to be_instance_of Hash }
55
+ it { expect(subject[:nested_text]).to eq("string") }
54
56
 
55
57
  describe ":nested_array" do
56
58
  subject { sanitized_params[:hash][:nested_array] }
57
59
 
58
- it { should be_instance_of Array }
59
- its([0]) { should eq("something") }
60
- its([1]) { should eq("else") }
61
- its([2]) { should be_instance_of String }
62
- its([2]) { should include "::UploadedFile" }
60
+ it { is_expected.to be_instance_of Array }
61
+ it { expect(subject[0]).to eq("something") }
62
+ it { expect(subject[1]).to eq("else") }
63
+ it do
64
+ expect(subject[2]).to be_instance_of String
65
+ expect(subject[2]).to include "::UploadedFile"
66
+ end
63
67
 
64
68
  describe ":nested_hash" do
65
69
  subject { sanitized_params[:hash][:nested_array][3] }
66
70
 
67
- it { should be_instance_of Hash }
68
- its([:key]) { should eq("value") }
69
- its([:file]) { should be_instance_of String }
70
- its([:file]) { should include "::UploadedFile" }
71
+ it { is_expected.to be_instance_of Hash }
72
+ it { expect(subject[:key]).to eq("value") }
73
+ it do
74
+ expect(subject[:file]).to be_instance_of String
75
+ expect(subject[:file]).to include "::UploadedFile"
76
+ end
71
77
  end
72
78
  end
73
79
  end
@@ -78,22 +84,26 @@ describe Appsignal::Utils::ParamsSanitizer do
78
84
  end
79
85
  subject { sanitized_params }
80
86
 
81
- its([:text]) { should eq(described_class::FILTERED) }
82
- its([:hash]) { should eq(described_class::FILTERED) }
83
- its([:file]) { should be_instance_of String }
84
- its([:file]) { should include "::UploadedFile" }
85
- its([:float]) { should eq(0.0) }
86
- its([:bool_true]) { should be(true) }
87
- its([:bool_false]) { should be(false) }
88
- its([:nil]) { should be_nil }
89
- its([:int]) { should eq(1) }
87
+ it { expect(subject[:text]).to eq(described_class::FILTERED) }
88
+ it { expect(subject[:hash]).to eq(described_class::FILTERED) }
89
+ it do
90
+ expect(subject[:file]).to be_instance_of String
91
+ expect(subject[:file]).to include "::UploadedFile"
92
+ end
93
+ it { expect(subject[:float]).to eq(0.0) }
94
+ it { expect(subject[:bool_true]).to be(true) }
95
+ it { expect(subject[:bool_false]).to be(false) }
96
+ it { expect(subject[:nil]).to be_nil }
97
+ it { expect(subject[:int]).to eq(1) }
90
98
 
91
99
  context "with strings as key filter values" do
92
100
  let(:sanitized_params) do
93
101
  described_class.sanitize(params, :filter_parameters => %w(string))
94
102
  end
95
103
 
96
- its(["string"]) { should eq("[FILTERED]") }
104
+ it "sanitizes values" do
105
+ expect(subject["string"]).to eq("[FILTERED]")
106
+ end
97
107
  end
98
108
 
99
109
  describe ":hash" do
@@ -102,7 +112,9 @@ describe Appsignal::Utils::ParamsSanitizer do
102
112
  end
103
113
  subject { sanitized_params[:hash] }
104
114
 
105
- its([:nested_text]) { should eq("[FILTERED]") }
115
+ it "sanitizes values in nested hashes" do
116
+ expect(subject[:nested_text]).to eq("[FILTERED]")
117
+ end
106
118
 
107
119
  describe ":nested_array" do
108
120
  describe ":nested_hash" do
@@ -111,7 +123,9 @@ describe Appsignal::Utils::ParamsSanitizer do
111
123
  end
112
124
  subject { sanitized_params[:hash][:nested_array][3] }
113
125
 
114
- its([:key]) { should eq("[FILTERED]") }
126
+ it "sanitizes values in deeply nested hashes and arrays" do
127
+ expect(subject[:key]).to eq("[FILTERED]")
128
+ end
115
129
  end
116
130
  end
117
131
  end
@@ -18,10 +18,15 @@ describe Appsignal::Utils do
18
18
  }
19
19
  end
20
20
 
21
- it { should eq Appsignal::Utils.data_generate(body) }
22
- it { should_not eq Appsignal::Utils.data_generate({}) }
23
- it { should_not eq "a string" }
24
- its(:to_s) { should eq %({"":"test","1":true,"bar":null,"baz":{"arr":[1,2],"foo":"bʊr"},"float":1.0,"foo":[1,2,"three",{"foo":"bar"}],"int":1,"the":"payload"}) }
21
+ it { is_expected.to eq Appsignal::Utils.data_generate(body) }
22
+ it { is_expected.to_not eq Appsignal::Utils.data_generate({}) }
23
+ it { is_expected.to_not eq "a string" }
24
+
25
+ describe "#to_s" do
26
+ it do
27
+ expect(subject.to_s).to eq %({"":"test","1":true,"bar":null,"baz":{"arr":[1,2],"foo":"bʊr"},"float":1.0,"foo":[1,2,"three",{"foo":"bar"}],"int":1,"the":"payload"})
28
+ end
29
+ end
25
30
  end
26
31
 
27
32
  context "with a valid array body" do
@@ -29,7 +34,7 @@ describe Appsignal::Utils do
29
34
  [1, "string", 10, { "foo" => "bʊr" }]
30
35
  end
31
36
 
32
- its(:to_s) { should eq %([1,\"string\",10,{\"foo\":\"bʊr\"}]) }
37
+ it { expect(subject.to_s).to eq %([1,\"string\",10,{\"foo\":\"bʊr\"}]) }
33
38
  end
34
39
 
35
40
  context "with a body that contains strings with invalid utf-8 content" do
@@ -47,7 +52,9 @@ describe Appsignal::Utils do
47
52
  }
48
53
  end
49
54
 
50
- its(:to_s) { should eq %({"field_four":{"one":"aa�"},"field_one":"aa","field_three":["one","aa�"],"field_two":"aa�"}) }
55
+ describe "#to_s" do
56
+ it { expect(subject.to_s).to eq %({"field_four":{"one":"aa�"},"field_one":"aa","field_three":["one","aa�"],"field_two":"aa�"}) }
57
+ end
51
58
  end
52
59
 
53
60
  context "with an invalid body" do
@@ -76,7 +83,7 @@ describe Appsignal::Utils do
76
83
  }
77
84
  end
78
85
 
79
- it { should eq %({"the":"payload","1":true,"":"test","foo":[1,2,"three"],"bar":null,"baz":{"foo":"bar"}}) }
86
+ it { is_expected.to eq %({"the":"payload","1":true,"":"test","foo":[1,2,"three"],"bar":null,"baz":{"foo":"bar"}}) }
80
87
  end
81
88
 
82
89
  context "with a body that contains strings with invalid utf-8 content" do
@@ -94,7 +101,7 @@ describe Appsignal::Utils do
94
101
  }
95
102
  end
96
103
 
97
- it { should eq %({"field_one":"aa","field_two":"aa�","field_three":["one","aa�"],"field_four":{"one":"aa�"}}) }
104
+ it { is_expected.to eq %({"field_one":"aa","field_two":"aa�","field_three":["one","aa�"],"field_four":{"one":"aa�"}}) }
98
105
  end
99
106
  end
100
107
  end
@@ -1,5 +1,3 @@
1
- require "./spec/support/mocks/mock_extension"
2
-
3
1
  describe Appsignal do
4
2
  before do
5
3
  # Make sure we have a clean state because we want to test
@@ -13,37 +11,37 @@ describe Appsignal do
13
11
  describe ".config=" do
14
12
  it "should set the config" do
15
13
  config = project_fixture_config
16
- Appsignal.logger.should_not_receive(:level=)
14
+ expect(Appsignal.logger).to_not receive(:level=)
17
15
 
18
16
  Appsignal.config = config
19
- Appsignal.config.should eq config
17
+ expect(Appsignal.config).to eq config
20
18
  end
21
19
  end
22
20
 
23
21
  describe ".extensions" do
24
22
  it "should keep a list of extensions" do
25
- Appsignal.extensions.should be_empty
23
+ expect(Appsignal.extensions).to be_empty
26
24
  Appsignal.extensions << Appsignal::MockExtension
27
- Appsignal.extensions.should have(1).item
25
+ expect(Appsignal.extensions.size).to eq(1)
28
26
  end
29
27
  end
30
28
 
31
29
  describe ".start" do
32
30
  context "with no config set beforehand" do
33
31
  it "should do nothing when config is not set and there is no valid config in the env" do
34
- Appsignal.logger.should_receive(:error).with(
32
+ expect(Appsignal.logger).to receive(:error).with(
35
33
  "Push api key not set after loading config"
36
34
  ).once
37
- Appsignal.logger.should_receive(:error).with(
35
+ expect(Appsignal.logger).to receive(:error).with(
38
36
  "Not starting, no valid config for this environment"
39
37
  ).once
40
- Appsignal::Extension.should_not_receive(:start)
38
+ expect(Appsignal::Extension).to_not receive(:start)
41
39
  Appsignal.start
42
40
  end
43
41
 
44
42
  it "should create a config from the env" do
45
43
  ENV["APPSIGNAL_PUSH_API_KEY"] = "something"
46
- Appsignal::Extension.should_receive(:start)
44
+ expect(Appsignal::Extension).to receive(:start)
47
45
  expect(Appsignal.logger).not_to receive(:error)
48
46
  silence { Appsignal.start }
49
47
  expect(Appsignal.config[:push_api_key]).to eq("something")
@@ -55,33 +53,24 @@ describe Appsignal do
55
53
 
56
54
  it "should initialize logging" do
57
55
  Appsignal.start
58
- Appsignal.logger.level.should eq Logger::INFO
56
+ expect(Appsignal.logger.level).to eq Logger::INFO
59
57
  end
60
58
 
61
59
  it "should start native" do
62
- Appsignal::Extension.should_receive(:start)
60
+ expect(Appsignal::Extension).to receive(:start)
63
61
  Appsignal.start
64
62
  end
65
63
 
66
64
  it "should initialize formatters" do
67
- Appsignal::EventFormatter.should_receive(:initialize_formatters)
65
+ expect(Appsignal::EventFormatter).to receive(:initialize_formatters)
68
66
  Appsignal.start
69
67
  end
70
68
 
71
- context "when not active for this environment" do
72
- before { Appsignal.config = project_fixture_config("staging") }
73
-
74
- it "should do nothing" do
75
- Appsignal.start
76
- Appsignal.agent.should be_nil
77
- end
78
- end
79
-
80
69
  context "with an extension" do
81
70
  before { Appsignal.extensions << Appsignal::MockExtension }
82
71
 
83
72
  it "should call the extension's initializer" do
84
- Appsignal::MockExtension.should_receive(:initializer)
73
+ expect(Appsignal::MockExtension).to receive(:initializer)
85
74
  Appsignal.start
86
75
  end
87
76
  end
@@ -137,7 +126,7 @@ describe Appsignal do
137
126
  end
138
127
 
139
128
  it "should start minutely" do
140
- Appsignal::Minutely.should_receive(:start)
129
+ expect(Appsignal::Minutely).to receive(:start)
141
130
  Appsignal.start
142
131
  end
143
132
  end
@@ -148,7 +137,7 @@ describe Appsignal do
148
137
  end
149
138
 
150
139
  it "should not start minutely" do
151
- Appsignal::Minutely.should_not_receive(:start)
140
+ expect(Appsignal::Minutely).to_not receive(:start)
152
141
  Appsignal.start
153
142
  end
154
143
  end
@@ -159,7 +148,7 @@ describe Appsignal do
159
148
 
160
149
  it "should change the log level" do
161
150
  Appsignal.start
162
- Appsignal.logger.level.should eq Logger::DEBUG
151
+ expect(Appsignal.logger.level).to eq Logger::DEBUG
163
152
  end
164
153
  end
165
154
  end
@@ -167,7 +156,7 @@ describe Appsignal do
167
156
  describe ".forked" do
168
157
  context "when not active" do
169
158
  it "should should do nothing" do
170
- Appsignal::Extension.should_not_receive(:start)
159
+ expect(Appsignal::Extension).to_not receive(:start)
171
160
 
172
161
  Appsignal.forked
173
162
  end
@@ -179,8 +168,8 @@ describe Appsignal do
179
168
  end
180
169
 
181
170
  it "should resubscribe and start the extension" do
182
- Appsignal.should_receive(:start_logger)
183
- Appsignal::Extension.should_receive(:start)
171
+ expect(Appsignal).to receive(:start_logger)
172
+ expect(Appsignal::Extension).to receive(:start)
184
173
 
185
174
  Appsignal.forked
186
175
  end
@@ -189,18 +178,18 @@ describe Appsignal do
189
178
 
190
179
  describe ".stop" do
191
180
  it "should call stop on the extension" do
192
- Appsignal.logger.should_receive(:debug).with("Stopping appsignal")
193
- Appsignal::Extension.should_receive(:stop)
181
+ expect(Appsignal.logger).to receive(:debug).with("Stopping appsignal")
182
+ expect(Appsignal::Extension).to receive(:stop)
194
183
  Appsignal.stop
195
- Appsignal.active?.should be_false
184
+ expect(Appsignal.active?).to be_falsy
196
185
  end
197
186
 
198
187
  context "with context specified" do
199
188
  it "should log the context" do
200
- Appsignal.logger.should_receive(:debug).with("Stopping appsignal (something)")
201
- Appsignal::Extension.should_receive(:stop)
189
+ expect(Appsignal.logger).to receive(:debug).with("Stopping appsignal (something)")
190
+ expect(Appsignal::Extension).to receive(:stop)
202
191
  Appsignal.stop("something")
203
- Appsignal.active?.should be_false
192
+ expect(Appsignal.active?).to be_falsy
204
193
  end
205
194
  end
206
195
  end
@@ -213,7 +202,7 @@ describe Appsignal do
213
202
  Appsignal.config = nil
214
203
  end
215
204
 
216
- it { should be_false }
205
+ it { is_expected.to be_falsy }
217
206
  end
218
207
 
219
208
  context "with inactive config" do
@@ -221,7 +210,7 @@ describe Appsignal do
221
210
  Appsignal.config = project_fixture_config("nonsense")
222
211
  end
223
212
 
224
- it { should be_false }
213
+ it { is_expected.to be_falsy }
225
214
  end
226
215
 
227
216
  context "with active config" do
@@ -229,89 +218,88 @@ describe Appsignal do
229
218
  Appsignal.config = project_fixture_config
230
219
  end
231
220
 
232
- it { should be_true }
221
+ it { is_expected.to be_truthy }
233
222
  end
234
223
  end
235
224
 
236
225
  describe ".add_exception" do
237
226
  it "should alias this method" do
238
- Appsignal.should respond_to(:add_exception)
227
+ expect(Appsignal).to respond_to(:add_exception)
239
228
  end
240
229
  end
241
230
 
242
231
  describe ".get_server_state" do
243
232
  it "should call server state on the extension" do
244
- Appsignal::Extension.should_receive(:get_server_state).with("key")
233
+ expect(Appsignal::Extension).to receive(:get_server_state).with("key")
245
234
 
246
235
  Appsignal.get_server_state("key")
247
236
  end
248
237
 
249
238
  it "should get nil by default" do
250
- Appsignal.get_server_state("key").should be_nil
239
+ expect(Appsignal.get_server_state("key")).to be_nil
251
240
  end
252
241
  end
253
242
 
254
243
  context "not active" do
255
244
  describe ".monitor_transaction" do
256
245
  it "should do nothing but still yield the block" do
257
- Appsignal::Transaction.should_not_receive(:create)
258
- Appsignal.should_not_receive(:instrument)
246
+ expect(Appsignal::Transaction).to_not receive(:create)
247
+ expect(Appsignal).to_not receive(:instrument)
259
248
  object = double
260
- object.should_receive(:some_method).and_return(1)
249
+ expect(object).to receive(:some_method).and_return(1)
261
250
 
262
- lambda do
263
- Appsignal.monitor_transaction("perform_job.nothing") do
251
+ expect do
252
+ expect(Appsignal.monitor_transaction("perform_job.nothing") do
264
253
  object.some_method
265
- end.should eq 1
266
- end.should_not raise_error
254
+ end).to eq 1
255
+ end.to_not raise_error
267
256
  end
268
257
  end
269
258
 
270
259
  describe ".listen_for_error" do
271
260
  it "should do nothing" do
272
261
  error = RuntimeError.new("specific error")
273
- lambda do
262
+ expect do
274
263
  Appsignal.listen_for_error do
275
264
  raise error
276
265
  end
277
- end.should raise_error(error)
266
+ end.to raise_error(error)
278
267
  end
279
268
  end
280
269
 
281
270
  describe ".send_error" do
282
271
  it "should do nothing" do
283
- lambda do
272
+ expect do
284
273
  Appsignal.send_error(RuntimeError.new)
285
- end.should_not raise_error
274
+ end.to_not raise_error
286
275
  end
287
276
  end
288
277
 
289
278
  describe ".set_error" do
290
279
  it "should do nothing" do
291
- lambda do
280
+ expect do
292
281
  Appsignal.set_error(RuntimeError.new)
293
- end.should_not raise_error
282
+ end.to_not raise_error
294
283
  end
295
284
  end
296
285
 
297
286
  describe ".tag_request" do
298
287
  it "should do nothing" do
299
- lambda do
288
+ expect do
300
289
  Appsignal.tag_request(:tag => "tag")
301
- end.should_not raise_error
290
+ end.to_not raise_error
302
291
  end
303
292
  end
304
293
 
305
294
  describe ".instrument" do
306
295
  it "should not instrument, but still call the block" do
307
296
  stub = double
308
- stub.should_receive(:method_call).and_return("return value")
297
+ expect(stub).to receive(:method_call).and_return("return value")
309
298
 
310
- lambda do
311
- Appsignal.instrument "name" do
312
- stub.method_call
313
- end.should eq "return value"
314
- end.should_not raise_error
299
+ return_value = Appsignal.instrument "name" do
300
+ stub.method_call
301
+ end
302
+ expect(return_value).to eq "return value"
315
303
  end
316
304
  end
317
305
  end
@@ -325,39 +313,39 @@ describe Appsignal do
325
313
  describe ".monitor_transaction" do
326
314
  context "with a successful call" do
327
315
  it "should instrument and complete for a background job" do
328
- Appsignal.should_receive(:instrument).with(
316
+ expect(Appsignal).to receive(:instrument).with(
329
317
  "perform_job.something"
330
318
  ).and_yield
331
- Appsignal::Transaction.should_receive(:complete_current!)
319
+ expect(Appsignal::Transaction).to receive(:complete_current!)
332
320
  object = double
333
- object.should_receive(:some_method).and_return(1)
321
+ expect(object).to receive(:some_method).and_return(1)
334
322
 
335
- Appsignal.monitor_transaction(
323
+ expect(Appsignal.monitor_transaction(
336
324
  "perform_job.something",
337
325
  background_env_with_data
338
326
  ) do
339
327
  current = Appsignal::Transaction.current
340
- current.namespace.should eq Appsignal::Transaction::BACKGROUND_JOB
341
- current.request.should be_a(Appsignal::Transaction::GenericRequest)
328
+ expect(current.namespace).to eq Appsignal::Transaction::BACKGROUND_JOB
329
+ expect(current.request).to be_a(Appsignal::Transaction::GenericRequest)
342
330
  object.some_method
343
- end.should eq 1
331
+ end).to eq 1
344
332
  end
345
333
 
346
334
  it "should instrument and complete for a http request" do
347
- Appsignal.should_receive(:instrument).with(
335
+ expect(Appsignal).to receive(:instrument).with(
348
336
  "process_action.something"
349
337
  ).and_yield
350
- Appsignal::Transaction.should_receive(:complete_current!)
338
+ expect(Appsignal::Transaction).to receive(:complete_current!)
351
339
  object = double
352
- object.should_receive(:some_method)
340
+ expect(object).to receive(:some_method)
353
341
 
354
342
  Appsignal.monitor_transaction(
355
343
  "process_action.something",
356
344
  http_request_env_with_data
357
345
  ) do
358
346
  current = Appsignal::Transaction.current
359
- current.namespace.should eq Appsignal::Transaction::HTTP_REQUEST
360
- current.request.should be_a(::Rack::Request)
347
+ expect(current.namespace).to eq Appsignal::Transaction::HTTP_REQUEST
348
+ expect(current.request).to be_a(::Rack::Request)
361
349
  object.some_method
362
350
  end
363
351
  end
@@ -367,14 +355,14 @@ describe Appsignal do
367
355
  let(:error) { VerySpecificError.new }
368
356
 
369
357
  it "should add the error to the current transaction and complete" do
370
- Appsignal::Transaction.any_instance.should_receive(:set_error).with(error)
371
- Appsignal::Transaction.should_receive(:complete_current!)
358
+ expect_any_instance_of(Appsignal::Transaction).to receive(:set_error).with(error)
359
+ expect(Appsignal::Transaction).to receive(:complete_current!)
372
360
 
373
- lambda do
361
+ expect do
374
362
  Appsignal.monitor_transaction("perform_job.something") do
375
363
  raise error
376
364
  end
377
- end.should raise_error(error)
365
+ end.to raise_error(error)
378
366
  end
379
367
  end
380
368
  end
@@ -382,11 +370,11 @@ describe Appsignal do
382
370
  describe ".monitor_single_transaction" do
383
371
  context "with a successful call" do
384
372
  it "should call monitor_transaction and stop" do
385
- Appsignal.should_receive(:monitor_transaction).with(
373
+ expect(Appsignal).to receive(:monitor_transaction).with(
386
374
  "perform_job.something",
387
375
  :key => :value
388
376
  ).and_yield
389
- Appsignal.should_receive(:stop)
377
+ expect(Appsignal).to receive(:stop)
390
378
 
391
379
  Appsignal.monitor_single_transaction("perform_job.something", :key => :value) do
392
380
  # nothing
@@ -398,28 +386,28 @@ describe Appsignal do
398
386
  let(:error) { VerySpecificError.new }
399
387
 
400
388
  it "should call monitor_transaction and stop and then raise the error" do
401
- Appsignal.should_receive(:monitor_transaction).with(
389
+ expect(Appsignal).to receive(:monitor_transaction).with(
402
390
  "perform_job.something",
403
391
  :key => :value
404
392
  ).and_yield
405
- Appsignal.should_receive(:stop)
393
+ expect(Appsignal).to receive(:stop)
406
394
 
407
- lambda do
395
+ expect do
408
396
  Appsignal.monitor_single_transaction("perform_job.something", :key => :value) do
409
397
  raise error
410
398
  end
411
- end.should raise_error(error)
399
+ end.to raise_error(error)
412
400
  end
413
401
  end
414
402
  end
415
403
 
416
404
  describe ".tag_request" do
417
- before { Appsignal::Transaction.stub(:current => transaction) }
405
+ before { allow(Appsignal::Transaction).to receive(:current).and_return(transaction) }
418
406
 
419
407
  context "with transaction" do
420
408
  let(:transaction) { double }
421
409
  it "should call set_tags on transaction" do
422
- transaction.should_receive(:set_tags).with("a" => "b")
410
+ expect(transaction).to receive(:set_tags).with("a" => "b")
423
411
  end
424
412
 
425
413
  after { Appsignal.tag_request("a" => "b") }
@@ -429,118 +417,118 @@ describe Appsignal do
429
417
  let(:transaction) { nil }
430
418
 
431
419
  it "should call set_tags on transaction" do
432
- Appsignal.tag_request.should be_false
420
+ expect(Appsignal.tag_request).to be_falsy
433
421
  end
434
422
  end
435
423
 
436
424
  it "should also listen to tag_job" do
437
- Appsignal.should respond_to(:tag_job)
425
+ expect(Appsignal).to respond_to(:tag_job)
438
426
  end
439
427
  end
440
428
 
441
429
  describe "custom stats" do
442
430
  describe ".set_gauge" do
443
431
  it "should call set_gauge on the extension with a string key and float" do
444
- Appsignal::Extension.should_receive(:set_gauge).with("key", 0.1)
432
+ expect(Appsignal::Extension).to receive(:set_gauge).with("key", 0.1)
445
433
  Appsignal.set_gauge("key", 0.1)
446
434
  end
447
435
 
448
436
  it "should call set_gauge on the extension with a symbol key and int" do
449
- Appsignal::Extension.should_receive(:set_gauge).with("key", 1.0)
437
+ expect(Appsignal::Extension).to receive(:set_gauge).with("key", 1.0)
450
438
  Appsignal.set_gauge(:key, 1)
451
439
  end
452
440
 
453
441
  it "should not raise an exception when out of range" do
454
- Appsignal::Extension.should_receive(:set_gauge).with("key", 10).and_raise(RangeError)
455
- Appsignal.logger.should_receive(:warn).with("Gauge value 10 for key 'key' is too big")
456
- lambda do
442
+ expect(Appsignal::Extension).to receive(:set_gauge).with("key", 10).and_raise(RangeError)
443
+ expect(Appsignal.logger).to receive(:warn).with("Gauge value 10 for key 'key' is too big")
444
+ expect do
457
445
  Appsignal.set_gauge("key", 10)
458
- end.should_not raise_error
446
+ end.to_not raise_error
459
447
  end
460
448
  end
461
449
 
462
450
  describe ".set_host_gauge" do
463
451
  it "should call set_host_gauge on the extension with a string key and float" do
464
- Appsignal::Extension.should_receive(:set_host_gauge).with("key", 0.1)
452
+ expect(Appsignal::Extension).to receive(:set_host_gauge).with("key", 0.1)
465
453
  Appsignal.set_host_gauge("key", 0.1)
466
454
  end
467
455
 
468
456
  it "should call set_host_gauge on the extension with a symbol key and int" do
469
- Appsignal::Extension.should_receive(:set_host_gauge).with("key", 1.0)
457
+ expect(Appsignal::Extension).to receive(:set_host_gauge).with("key", 1.0)
470
458
  Appsignal.set_host_gauge(:key, 1)
471
459
  end
472
460
 
473
461
  it "should not raise an exception when out of range" do
474
- Appsignal::Extension.should_receive(:set_host_gauge).with("key", 10).and_raise(RangeError)
475
- Appsignal.logger.should_receive(:warn).with("Host gauge value 10 for key 'key' is too big")
476
- lambda do
462
+ expect(Appsignal::Extension).to receive(:set_host_gauge).with("key", 10).and_raise(RangeError)
463
+ expect(Appsignal.logger).to receive(:warn).with("Host gauge value 10 for key 'key' is too big")
464
+ expect do
477
465
  Appsignal.set_host_gauge("key", 10)
478
- end.should_not raise_error
466
+ end.to_not raise_error
479
467
  end
480
468
  end
481
469
 
482
470
  describe ".set_process_gauge" do
483
471
  it "should call set_process_gauge on the extension with a string key and float" do
484
- Appsignal::Extension.should_receive(:set_process_gauge).with("key", 0.1)
472
+ expect(Appsignal::Extension).to receive(:set_process_gauge).with("key", 0.1)
485
473
  Appsignal.set_process_gauge("key", 0.1)
486
474
  end
487
475
 
488
476
  it "should call set_process_gauge on the extension with a symbol key and int" do
489
- Appsignal::Extension.should_receive(:set_process_gauge).with("key", 1.0)
477
+ expect(Appsignal::Extension).to receive(:set_process_gauge).with("key", 1.0)
490
478
  Appsignal.set_process_gauge(:key, 1)
491
479
  end
492
480
 
493
481
  it "should not raise an exception when out of range" do
494
- Appsignal::Extension.should_receive(:set_process_gauge).with("key", 10).and_raise(RangeError)
495
- Appsignal.logger.should_receive(:warn).with("Process gauge value 10 for key 'key' is too big")
496
- lambda do
482
+ expect(Appsignal::Extension).to receive(:set_process_gauge).with("key", 10).and_raise(RangeError)
483
+ expect(Appsignal.logger).to receive(:warn).with("Process gauge value 10 for key 'key' is too big")
484
+ expect do
497
485
  Appsignal.set_process_gauge("key", 10)
498
- end.should_not raise_error
486
+ end.to_not raise_error
499
487
  end
500
488
  end
501
489
 
502
490
  describe ".increment_counter" do
503
491
  it "should call increment_counter on the extension with a string key" do
504
- Appsignal::Extension.should_receive(:increment_counter).with("key", 1)
492
+ expect(Appsignal::Extension).to receive(:increment_counter).with("key", 1)
505
493
  Appsignal.increment_counter("key")
506
494
  end
507
495
 
508
496
  it "should call increment_counter on the extension with a symbol key" do
509
- Appsignal::Extension.should_receive(:increment_counter).with("key", 1)
497
+ expect(Appsignal::Extension).to receive(:increment_counter).with("key", 1)
510
498
  Appsignal.increment_counter(:key)
511
499
  end
512
500
 
513
501
  it "should call increment_counter on the extension with a count" do
514
- Appsignal::Extension.should_receive(:increment_counter).with("key", 5)
502
+ expect(Appsignal::Extension).to receive(:increment_counter).with("key", 5)
515
503
  Appsignal.increment_counter("key", 5)
516
504
  end
517
505
 
518
506
  it "should not raise an exception when out of range" do
519
- Appsignal::Extension.should_receive(:increment_counter).with("key", 10).and_raise(RangeError)
520
- Appsignal.logger.should_receive(:warn).with("Counter value 10 for key 'key' is too big")
521
- lambda do
507
+ expect(Appsignal::Extension).to receive(:increment_counter).with("key", 10).and_raise(RangeError)
508
+ expect(Appsignal.logger).to receive(:warn).with("Counter value 10 for key 'key' is too big")
509
+ expect do
522
510
  Appsignal.increment_counter("key", 10)
523
- end.should_not raise_error
511
+ end.to_not raise_error
524
512
  end
525
513
  end
526
514
 
527
515
  describe ".add_distribution_value" do
528
516
  it "should call add_distribution_value on the extension with a string key and float" do
529
- Appsignal::Extension.should_receive(:add_distribution_value).with("key", 0.1)
517
+ expect(Appsignal::Extension).to receive(:add_distribution_value).with("key", 0.1)
530
518
  Appsignal.add_distribution_value("key", 0.1)
531
519
  end
532
520
 
533
521
  it "should call add_distribution_value on the extension with a symbol key and int" do
534
- Appsignal::Extension.should_receive(:add_distribution_value).with("key", 1.0)
522
+ expect(Appsignal::Extension).to receive(:add_distribution_value).with("key", 1.0)
535
523
  Appsignal.add_distribution_value(:key, 1)
536
524
  end
537
525
 
538
526
  it "should not raise an exception when out of range" do
539
- Appsignal::Extension.should_receive(:add_distribution_value).with("key", 10).and_raise(RangeError)
540
- Appsignal.logger.should_receive(:warn).with("Distribution value 10 for key 'key' is too big")
541
- lambda do
527
+ expect(Appsignal::Extension).to receive(:add_distribution_value).with("key", 10).and_raise(RangeError)
528
+ expect(Appsignal.logger).to receive(:warn).with("Distribution value 10 for key 'key' is too big")
529
+ expect do
542
530
  Appsignal.add_distribution_value("key", 10)
543
- end.should_not raise_error
531
+ end.to_not raise_error
544
532
  end
545
533
  end
546
534
  end
@@ -548,7 +536,7 @@ describe Appsignal do
548
536
  describe ".logger" do
549
537
  subject { Appsignal.logger }
550
538
 
551
- it { should be_a Logger }
539
+ it { is_expected.to be_a Logger }
552
540
  end
553
541
 
554
542
  describe ".start_logger" do
@@ -581,7 +569,7 @@ describe Appsignal do
581
569
  end
582
570
 
583
571
  it "logs to file" do
584
- expect(File.exist?(log_file)).to be_true
572
+ expect(File.exist?(log_file)).to be_truthy
585
573
  expect(log_file_contents).to include "[ERROR] Log to file"
586
574
  expect(output).to be_empty
587
575
  end
@@ -603,7 +591,7 @@ describe Appsignal do
603
591
  end
604
592
 
605
593
  it "logs to stdout" do
606
- expect(File.writable?(log_file)).to be_false
594
+ expect(File.writable?(log_file)).to be_falsy
607
595
  expect(output).to include "[ERROR] appsignal: Log to not writable log file"
608
596
  end
609
597
 
@@ -634,7 +622,7 @@ describe Appsignal do
634
622
  end
635
623
 
636
624
  it "logs to stdout" do
637
- expect(File.writable?(log_path)).to be_false
625
+ expect(File.writable?(log_path)).to be_falsy
638
626
  expect(output).to include "[ERROR] appsignal: Log to not writable log path"
639
627
  end
640
628
 
@@ -722,9 +710,9 @@ describe Appsignal do
722
710
  describe ".config" do
723
711
  subject { Appsignal.config }
724
712
 
725
- it { should be_a Appsignal::Config }
713
+ it { is_expected.to be_a Appsignal::Config }
726
714
  it "should return configuration" do
727
- subject[:endpoint].should eq "https://push.appsignal.com"
715
+ expect(subject[:endpoint]).to eq "https://push.appsignal.com"
728
716
  end
729
717
  end
730
718
 
@@ -733,7 +721,7 @@ describe Appsignal do
733
721
  let(:error) { VerySpecificError.new }
734
722
 
735
723
  it "should send the error to AppSignal" do
736
- Appsignal::Transaction.should_receive(:new).and_call_original
724
+ expect(Appsignal::Transaction).to receive(:new).and_call_original
737
725
  end
738
726
 
739
727
  context "with tags" do
@@ -745,9 +733,9 @@ describe Appsignal do
745
733
  Appsignal::Transaction::HTTP_REQUEST,
746
734
  Appsignal::Transaction::GenericRequest.new({})
747
735
  )
748
- Appsignal::Transaction.stub(:new => transaction)
749
- transaction.should_receive(:set_tags).with(tags)
750
- transaction.should_receive(:complete)
736
+ allow(Appsignal::Transaction).to receive(:new).and_return(transaction)
737
+ expect(transaction).to receive(:set_tags).with(tags)
738
+ expect(transaction).to receive(:complete)
751
739
  end
752
740
  end
753
741
 
@@ -770,35 +758,35 @@ describe Appsignal do
770
758
 
771
759
  describe ".listen_for_error" do
772
760
  it "should call send_error and re-raise" do
773
- Appsignal.should_receive(:send_error).with(kind_of(Exception))
774
- lambda do
761
+ expect(Appsignal).to receive(:send_error).with(kind_of(Exception))
762
+ expect do
775
763
  Appsignal.listen_for_error do
776
764
  raise "I am an exception"
777
765
  end
778
- end.should raise_error(RuntimeError, "I am an exception")
766
+ end.to raise_error(RuntimeError, "I am an exception")
779
767
  end
780
768
  end
781
769
 
782
770
  describe ".set_error" do
783
- before { Appsignal::Transaction.stub(:current => transaction) }
771
+ before { allow(Appsignal::Transaction).to receive(:current).and_return(transaction) }
784
772
  let(:error) { RuntimeError.new("I am an exception") }
785
773
 
786
774
  it "should add the error to the current transaction" do
787
- transaction.should_receive(:set_error).with(error)
775
+ expect(transaction).to receive(:set_error).with(error)
788
776
 
789
777
  Appsignal.set_error(error)
790
778
  end
791
779
 
792
780
  it "should do nothing if there is no current transaction" do
793
- Appsignal::Transaction.stub(:current => nil)
781
+ allow(Appsignal::Transaction).to receive(:current).and_return(nil)
794
782
 
795
- transaction.should_not_receive(:set_error)
783
+ expect(transaction).to_not receive(:set_error)
796
784
 
797
785
  Appsignal.set_error(error)
798
786
  end
799
787
 
800
788
  it "should do nothing if the error is nil" do
801
- transaction.should_not_receive(:set_error)
789
+ expect(transaction).to_not receive(:set_error)
802
790
 
803
791
  Appsignal.set_error(nil)
804
792
  end
@@ -840,11 +828,11 @@ describe Appsignal do
840
828
 
841
829
  describe ".without_instrumentation" do
842
830
  let(:transaction) { double }
843
- before { Appsignal::Transaction.stub(:current => transaction) }
831
+ before { allow(Appsignal::Transaction).to receive(:current).and_return(transaction) }
844
832
 
845
833
  it "should pause and unpause the transaction around the block" do
846
- transaction.should_receive(:pause!)
847
- transaction.should_receive(:resume!)
834
+ expect(transaction).to receive(:pause!)
835
+ expect(transaction).to receive(:resume!)
848
836
  end
849
837
 
850
838
  context "without transaction" do
@@ -867,9 +855,7 @@ describe Appsignal do
867
855
  let(:err_stream) { std_stream }
868
856
  let(:stderr) { err_stream.read }
869
857
  before do
870
- Appsignal.stub(
871
- :config => { :ignore_errors => ["StandardError"] }
872
- )
858
+ allow(Appsignal).to receive(:config).and_return(:ignore_errors => ["StandardError"])
873
859
  end
874
860
 
875
861
  subject do
@@ -879,7 +865,7 @@ describe Appsignal do
879
865
  end
880
866
 
881
867
  it "should return true if it's in the ignored list" do
882
- should be_true
868
+ is_expected.to be_truthy
883
869
  end
884
870
 
885
871
  it "outputs deprecated warning" do
@@ -891,7 +877,7 @@ describe Appsignal do
891
877
  let(:error) { Object.new }
892
878
 
893
879
  it "should return false" do
894
- should be_false
880
+ is_expected.to be_falsy
895
881
  end
896
882
  end
897
883
  end
@@ -901,9 +887,7 @@ describe Appsignal do
901
887
  let(:err_stream) { std_stream }
902
888
  let(:stderr) { err_stream.read }
903
889
  before do
904
- Appsignal.stub(
905
- :config => { :ignore_actions => "TestController#isup" }
906
- )
890
+ allow(Appsignal).to receive(:config).and_return(:ignore_actions => "TestController#isup")
907
891
  end
908
892
 
909
893
  subject do
@@ -913,7 +897,7 @@ describe Appsignal do
913
897
  end
914
898
 
915
899
  it "should return true if it's in the ignored list" do
916
- should be_true
900
+ is_expected.to be_truthy
917
901
  end
918
902
 
919
903
  it "outputs deprecated warning" do
@@ -925,7 +909,7 @@ describe Appsignal do
925
909
  let(:action) { "TestController#other_action" }
926
910
 
927
911
  it "should return false" do
928
- should be_false
912
+ is_expected.to be_falsy
929
913
  end
930
914
  end
931
915
  end