bullet 5.6.0 → 5.6.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +4 -0
  3. data/Guardfile +2 -2
  4. data/Rakefile +16 -16
  5. data/bullet.gemspec +11 -11
  6. data/lib/bullet.rb +3 -3
  7. data/lib/bullet/detector/association.rb +2 -2
  8. data/lib/bullet/detector/counter_cache.rb +3 -3
  9. data/lib/bullet/detector/n_plus_one_query.rb +5 -5
  10. data/lib/bullet/detector/unused_eager_loading.rb +2 -2
  11. data/lib/bullet/ext/string.rb +1 -1
  12. data/lib/bullet/notification/base.rb +6 -6
  13. data/lib/bullet/notification/counter_cache.rb +1 -1
  14. data/lib/bullet/rack.rb +4 -4
  15. data/lib/bullet/stack_trace_filter.rb +2 -2
  16. data/lib/bullet/version.rb +2 -2
  17. data/lib/generators/bullet/install_generator.rb +5 -5
  18. data/perf/benchmark.rb +3 -3
  19. data/spec/bullet/detector/association_spec.rb +4 -4
  20. data/spec/bullet/detector/counter_cache_spec.rb +11 -11
  21. data/spec/bullet/detector/n_plus_one_query_spec.rb +33 -33
  22. data/spec/bullet/detector/unused_eager_loading_spec.rb +19 -19
  23. data/spec/bullet/ext/object_spec.rb +7 -7
  24. data/spec/bullet/ext/string_spec.rb +5 -5
  25. data/spec/bullet/notification/base_spec.rb +32 -32
  26. data/spec/bullet/notification/counter_cache_spec.rb +2 -2
  27. data/spec/bullet/notification/n_plus_one_query_spec.rb +2 -2
  28. data/spec/bullet/notification/unused_eager_loading_spec.rb +2 -2
  29. data/spec/bullet/notification_collector_spec.rb +10 -10
  30. data/spec/bullet/rack_spec.rb +46 -46
  31. data/spec/bullet/registry/association_spec.rb +10 -10
  32. data/spec/bullet/registry/base_spec.rb +20 -20
  33. data/spec/bullet/registry/object_spec.rb +4 -4
  34. data/spec/integration/active_record/association_spec.rb +101 -101
  35. data/spec/integration/counter_cache_spec.rb +12 -12
  36. data/spec/integration/mongoid/association_spec.rb +33 -33
  37. data/spec/models/comment.rb +1 -1
  38. data/spec/models/document.rb +2 -2
  39. data/spec/models/mongoid/address.rb +1 -1
  40. data/spec/models/mongoid/category.rb +2 -2
  41. data/spec/models/mongoid/comment.rb +1 -1
  42. data/spec/models/mongoid/company.rb +1 -1
  43. data/spec/models/mongoid/entry.rb +1 -1
  44. data/spec/models/mongoid/post.rb +3 -3
  45. data/spec/models/newspaper.rb +1 -1
  46. data/spec/spec_helper.rb +12 -12
  47. data/spec/support/mongo_seed.rb +6 -6
  48. data/spec/support/rack_double.rb +2 -2
  49. data/spec/support/sqlite_seed.rb +6 -6
  50. data/tasks/bullet_tasks.rake +2 -2
  51. metadata +2 -2
@@ -8,44 +8,44 @@ module Bullet
8
8
  @post2 = Post.last
9
9
  end
10
10
 
11
- context ".add_counter_cache" do
12
- it "should create notification if conditions met" do
11
+ context '.add_counter_cache' do
12
+ it 'should create notification if conditions met' do
13
13
  expect(CounterCache).to receive(:conditions_met?).with(@post1, [:comments]).and_return(true)
14
- expect(CounterCache).to receive(:create_notification).with("Post", [:comments])
14
+ expect(CounterCache).to receive(:create_notification).with('Post', [:comments])
15
15
  CounterCache.add_counter_cache(@post1, [:comments])
16
16
  end
17
17
 
18
- it "should not create notification if conditions not met" do
18
+ it 'should not create notification if conditions not met' do
19
19
  expect(CounterCache).to receive(:conditions_met?).with(@post1, [:comments]).and_return(false)
20
20
  expect(CounterCache).to receive(:create_notification).never
21
21
  CounterCache.add_counter_cache(@post1, [:comments])
22
22
  end
23
23
  end
24
24
 
25
- context ".add_possible_objects" do
26
- it "should add possible objects" do
25
+ context '.add_possible_objects' do
26
+ it 'should add possible objects' do
27
27
  CounterCache.add_possible_objects([@post1, @post2])
28
28
  expect(CounterCache.possible_objects).to be_include(@post1.bullet_key)
29
29
  expect(CounterCache.possible_objects).to be_include(@post2.bullet_key)
30
30
  end
31
31
 
32
- it "should add impossible object" do
32
+ it 'should add impossible object' do
33
33
  CounterCache.add_impossible_object(@post1)
34
34
  expect(CounterCache.impossible_objects).to be_include(@post1.bullet_key)
35
35
  end
36
36
  end
37
37
 
38
- context ".conditions_met?" do
39
- it "should be true when object is possible, not impossible" do
38
+ context '.conditions_met?' do
39
+ it 'should be true when object is possible, not impossible' do
40
40
  CounterCache.add_possible_objects(@post1)
41
41
  expect(CounterCache.conditions_met?(@post1, :associations)).to eq true
42
42
  end
43
43
 
44
- it "should be false when object is not possible" do
44
+ it 'should be false when object is not possible' do
45
45
  expect(CounterCache.conditions_met?(@post1, :associations)).to eq false
46
46
  end
47
47
 
48
- it "should be true when object is possible, and impossible" do
48
+ it 'should be true when object is possible, and impossible' do
49
49
  CounterCache.add_possible_objects(@post1)
50
50
  CounterCache.add_impossible_object(@post1)
51
51
  expect(CounterCache.conditions_met?(@post1, :associations)).to eq false
@@ -8,62 +8,62 @@ module Bullet
8
8
  @post2 = Post.last
9
9
  end
10
10
 
11
- context ".call_association" do
12
- it "should add call_object_associations" do
11
+ context '.call_association' do
12
+ it 'should add call_object_associations' do
13
13
  expect(NPlusOneQuery).to receive(:add_call_object_associations).with(@post, :associations)
14
14
  NPlusOneQuery.call_association(@post, :associations)
15
15
  end
16
16
  end
17
17
 
18
- context ".possible?" do
19
- it "should be true if possible_objects contain" do
18
+ context '.possible?' do
19
+ it 'should be true if possible_objects contain' do
20
20
  NPlusOneQuery.add_possible_objects(@post)
21
21
  expect(NPlusOneQuery.possible?(@post)).to eq true
22
22
  end
23
23
  end
24
24
 
25
- context ".impossible?" do
26
- it "should be true if impossible_objects contain" do
25
+ context '.impossible?' do
26
+ it 'should be true if impossible_objects contain' do
27
27
  NPlusOneQuery.add_impossible_object(@post)
28
28
  expect(NPlusOneQuery.impossible?(@post)).to eq true
29
29
  end
30
30
  end
31
31
 
32
- context ".association?" do
33
- it "should be true if object, associations pair is already existed" do
32
+ context '.association?' do
33
+ it 'should be true if object, associations pair is already existed' do
34
34
  NPlusOneQuery.add_object_associations(@post, :association)
35
35
  expect(NPlusOneQuery.association?(@post, :association)).to eq true
36
36
  end
37
37
 
38
- it "should be false if object, association pair is not existed" do
38
+ it 'should be false if object, association pair is not existed' do
39
39
  NPlusOneQuery.add_object_associations(@post, :association1)
40
40
  expect(NPlusOneQuery.association?(@post, :associatio2)).to eq false
41
41
  end
42
42
  end
43
43
 
44
- context ".conditions_met?" do
45
- it "should be true if object is possible, not impossible and object, associations pair is not already existed" do
44
+ context '.conditions_met?' do
45
+ it 'should be true if object is possible, not impossible and object, associations pair is not already existed' do
46
46
  allow(NPlusOneQuery).to receive(:possible?).with(@post).and_return(true)
47
47
  allow(NPlusOneQuery).to receive(:impossible?).with(@post).and_return(false)
48
48
  allow(NPlusOneQuery).to receive(:association?).with(@post, :associations).and_return(false)
49
49
  expect(NPlusOneQuery.conditions_met?(@post, :associations)).to eq true
50
50
  end
51
51
 
52
- it "should be false if object is not possible, not impossible and object, associations pair is not already existed" do
52
+ it 'should be false if object is not possible, not impossible and object, associations pair is not already existed' do
53
53
  allow(NPlusOneQuery).to receive(:possible?).with(@post).and_return(false)
54
54
  allow(NPlusOneQuery).to receive(:impossible?).with(@post).and_return(false)
55
55
  allow(NPlusOneQuery).to receive(:association?).with(@post, :associations).and_return(false)
56
56
  expect(NPlusOneQuery.conditions_met?(@post, :associations)).to eq false
57
57
  end
58
58
 
59
- it "should be false if object is possible, but impossible and object, associations pair is not already existed" do
59
+ it 'should be false if object is possible, but impossible and object, associations pair is not already existed' do
60
60
  allow(NPlusOneQuery).to receive(:possible?).with(@post).and_return(true)
61
61
  allow(NPlusOneQuery).to receive(:impossible?).with(@post).and_return(true)
62
62
  allow(NPlusOneQuery).to receive(:association?).with(@post, :associations).and_return(false)
63
63
  expect(NPlusOneQuery.conditions_met?(@post, :associations)).to eq false
64
64
  end
65
65
 
66
- it "should be false if object is possible, not impossible and object, associations pair is already existed" do
66
+ it 'should be false if object is possible, not impossible and object, associations pair is already existed' do
67
67
  allow(NPlusOneQuery).to receive(:possible?).with(@post).and_return(true)
68
68
  allow(NPlusOneQuery).to receive(:impossible?).with(@post).and_return(false)
69
69
  allow(NPlusOneQuery).to receive(:association?).with(@post, :associations).and_return(true)
@@ -71,26 +71,26 @@ module Bullet
71
71
  end
72
72
  end
73
73
 
74
- context ".call_association" do
75
- it "should create notification if conditions met" do
74
+ context '.call_association' do
75
+ it 'should create notification if conditions met' do
76
76
  expect(NPlusOneQuery).to receive(:conditions_met?).with(@post, :association).and_return(true)
77
- expect(NPlusOneQuery).to receive(:caller_in_project).and_return(["caller"])
78
- expect(NPlusOneQuery).to receive(:create_notification).with(["caller"], "Post", :association)
77
+ expect(NPlusOneQuery).to receive(:caller_in_project).and_return(['caller'])
78
+ expect(NPlusOneQuery).to receive(:create_notification).with(['caller'], 'Post', :association)
79
79
  NPlusOneQuery.call_association(@post, :association)
80
80
  end
81
81
 
82
- it "should not create notification if conditions not met" do
82
+ it 'should not create notification if conditions not met' do
83
83
  expect(NPlusOneQuery).to receive(:conditions_met?).with(@post, :association).and_return(false)
84
84
  expect(NPlusOneQuery).not_to receive(:caller_in_project!)
85
- expect(NPlusOneQuery).not_to receive(:create_notification).with("Post", :association)
85
+ expect(NPlusOneQuery).not_to receive(:create_notification).with('Post', :association)
86
86
  NPlusOneQuery.call_association(@post, :association)
87
87
  end
88
88
 
89
- context "stacktrace_excludes" do
89
+ context 'stacktrace_excludes' do
90
90
  before { Bullet.stacktrace_excludes = [ /def/ ] }
91
91
  after { Bullet.stacktrace_excludes = nil }
92
92
 
93
- it "should not create notification when stacktrace contains paths that are in the exclude list" do
93
+ it 'should not create notification when stacktrace contains paths that are in the exclude list' do
94
94
  in_project = OpenStruct.new(:absolute_path => File.join(Dir.pwd, 'abc', 'abc.rb'))
95
95
  included_path = OpenStruct.new(:absolute_path => '/ghi/ghi.rb')
96
96
  excluded_path = OpenStruct.new(:absolute_path => '/def/def.rb')
@@ -102,48 +102,48 @@ module Bullet
102
102
  end
103
103
  end
104
104
 
105
- context ".caller_in_project" do
106
- it "should include only paths that are in the project" do
105
+ context '.caller_in_project' do
106
+ it 'should include only paths that are in the project' do
107
107
  in_project = OpenStruct.new(:absolute_path => File.join(Dir.pwd, 'abc', 'abc.rb'))
108
108
  not_in_project = OpenStruct.new(:absolute_path => '/def/def.rb')
109
109
 
110
110
  expect(NPlusOneQuery).to receive(:caller_locations).and_return([in_project, not_in_project])
111
111
  expect(NPlusOneQuery).to receive(:conditions_met?).with(@post, :association).and_return(true)
112
- expect(NPlusOneQuery).to receive(:create_notification).with([in_project], "Post", :association)
112
+ expect(NPlusOneQuery).to receive(:create_notification).with([in_project], 'Post', :association)
113
113
  NPlusOneQuery.call_association(@post, :association)
114
114
  end
115
115
 
116
- context "stacktrace_includes" do
116
+ context 'stacktrace_includes' do
117
117
  before { Bullet.stacktrace_includes = [ 'def', /xyz/ ] }
118
118
  after { Bullet.stacktrace_includes = nil }
119
119
 
120
- it "should include paths that are in the stacktrace_include list" do
120
+ it 'should include paths that are in the stacktrace_include list' do
121
121
  in_project = OpenStruct.new(:absolute_path => File.join(Dir.pwd, 'abc', 'abc.rb'))
122
122
  included_gems = [OpenStruct.new(:absolute_path => '/def/def.rb'), OpenStruct.new(:absolute_path => 'xyz/xyz.rb')]
123
123
  excluded_gem = OpenStruct.new(:absolute_path => '/ghi/ghi.rb')
124
124
 
125
125
  expect(NPlusOneQuery).to receive(:caller_locations).and_return([in_project, *included_gems, excluded_gem])
126
126
  expect(NPlusOneQuery).to receive(:conditions_met?).with(@post, :association).and_return(true)
127
- expect(NPlusOneQuery).to receive(:create_notification).with([in_project, *included_gems], "Post", :association)
127
+ expect(NPlusOneQuery).to receive(:create_notification).with([in_project, *included_gems], 'Post', :association)
128
128
  NPlusOneQuery.call_association(@post, :association)
129
129
  end
130
130
  end
131
131
  end
132
132
 
133
- context ".add_possible_objects" do
134
- it "should add possible objects" do
133
+ context '.add_possible_objects' do
134
+ it 'should add possible objects' do
135
135
  NPlusOneQuery.add_possible_objects([@post, @post2])
136
136
  expect(NPlusOneQuery.possible_objects).to be_include(@post.bullet_key)
137
137
  expect(NPlusOneQuery.possible_objects).to be_include(@post2.bullet_key)
138
138
  end
139
139
 
140
- it "should not raise error if object is nil" do
140
+ it 'should not raise error if object is nil' do
141
141
  expect { NPlusOneQuery.add_possible_objects(nil) }.not_to raise_error
142
142
  end
143
143
  end
144
144
 
145
- context ".add_impossible_object" do
146
- it "should add impossible object" do
145
+ context '.add_impossible_object' do
146
+ it 'should add impossible object' do
147
147
  NPlusOneQuery.add_impossible_object(@post)
148
148
  expect(NPlusOneQuery.impossible_objects).to be_include(@post.bullet_key)
149
149
  end
@@ -9,68 +9,68 @@ module Bullet
9
9
  @post3 = Post.last
10
10
  end
11
11
 
12
- context ".call_associations" do
13
- it "should get empty array if eager_loadings" do
12
+ context '.call_associations' do
13
+ it 'should get empty array if eager_loadings' do
14
14
  expect(UnusedEagerLoading.send(:call_associations, @post.bullet_key, Set.new([:association]))).to be_empty
15
15
  end
16
16
 
17
- it "should get call associations if object and association are both in eager_loadings and call_object_associations" do
17
+ it 'should get call associations if object and association are both in eager_loadings and call_object_associations' do
18
18
  UnusedEagerLoading.add_eager_loadings([@post], :association)
19
19
  UnusedEagerLoading.add_call_object_associations(@post, :association)
20
20
  expect(UnusedEagerLoading.send(:call_associations, @post.bullet_key, Set.new([:association]))).to eq([:association])
21
21
  end
22
22
 
23
- it "should not get call associations if not exist in call_object_associations" do
23
+ it 'should not get call associations if not exist in call_object_associations' do
24
24
  UnusedEagerLoading.add_eager_loadings([@post], :association)
25
25
  expect(UnusedEagerLoading.send(:call_associations, @post.bullet_key, Set.new([:association]))).to be_empty
26
26
  end
27
27
  end
28
28
 
29
- context ".diff_object_associations" do
30
- it "should return associations not exist in call_association" do
29
+ context '.diff_object_associations' do
30
+ it 'should return associations not exist in call_association' do
31
31
  expect(UnusedEagerLoading.send(:diff_object_associations, @post.bullet_key, Set.new([:association]))).to eq([:association])
32
32
  end
33
33
 
34
- it "should return empty if associations exist in call_association" do
34
+ it 'should return empty if associations exist in call_association' do
35
35
  UnusedEagerLoading.add_eager_loadings([@post], :association)
36
36
  UnusedEagerLoading.add_call_object_associations(@post, :association)
37
37
  expect(UnusedEagerLoading.send(:diff_object_associations, @post.bullet_key, Set.new([:association]))).to be_empty
38
38
  end
39
39
  end
40
40
 
41
- context ".check_unused_preload_associations" do
42
- let(:paths) { ["/dir1", "/dir1/subdir"] }
43
- it "should create notification if object_association_diff is not empty" do
41
+ context '.check_unused_preload_associations' do
42
+ let(:paths) { ['/dir1', '/dir1/subdir'] }
43
+ it 'should create notification if object_association_diff is not empty' do
44
44
  UnusedEagerLoading.add_object_associations(@post, :association)
45
45
  allow(UnusedEagerLoading).to receive(:caller_in_project).and_return(paths)
46
- expect(UnusedEagerLoading).to receive(:create_notification).with(paths, "Post", [:association])
46
+ expect(UnusedEagerLoading).to receive(:create_notification).with(paths, 'Post', [:association])
47
47
  UnusedEagerLoading.check_unused_preload_associations
48
48
  end
49
49
 
50
- it "should not create notification if object_association_diff is empty" do
50
+ it 'should not create notification if object_association_diff is empty' do
51
51
  UnusedEagerLoading.add_object_associations(@post, :association)
52
52
  UnusedEagerLoading.add_eager_loadings([@post], :association)
53
53
  UnusedEagerLoading.add_call_object_associations(@post, :association)
54
54
  expect(UnusedEagerLoading.send(:diff_object_associations, @post.bullet_key, Set.new([:association]))).to be_empty
55
- expect(UnusedEagerLoading).not_to receive(:create_notification).with("Post", [:association])
55
+ expect(UnusedEagerLoading).not_to receive(:create_notification).with('Post', [:association])
56
56
  UnusedEagerLoading.check_unused_preload_associations
57
57
  end
58
58
  end
59
59
 
60
- context ".add_eager_loadings" do
61
- it "should add objects, associations pair when eager_loadings are empty" do
60
+ context '.add_eager_loadings' do
61
+ it 'should add objects, associations pair when eager_loadings are empty' do
62
62
  UnusedEagerLoading.add_eager_loadings([@post, @post2], :associations)
63
63
  expect(UnusedEagerLoading.send(:eager_loadings)).to be_include([@post.bullet_key, @post2.bullet_key], :associations)
64
64
  end
65
65
 
66
- it "should add objects, associations pair for existing eager_loadings" do
66
+ it 'should add objects, associations pair for existing eager_loadings' do
67
67
  UnusedEagerLoading.add_eager_loadings([@post, @post2], :association1)
68
68
  UnusedEagerLoading.add_eager_loadings([@post, @post2], :association2)
69
69
  expect(UnusedEagerLoading.send(:eager_loadings)).to be_include([@post.bullet_key, @post2.bullet_key], :association1)
70
70
  expect(UnusedEagerLoading.send(:eager_loadings)).to be_include([@post.bullet_key, @post2.bullet_key], :association2)
71
71
  end
72
72
 
73
- it "should merge objects, associations pair for existing eager_loadings" do
73
+ it 'should merge objects, associations pair for existing eager_loadings' do
74
74
  UnusedEagerLoading.add_eager_loadings([@post], :association1)
75
75
  UnusedEagerLoading.add_eager_loadings([@post, @post2], :association2)
76
76
  expect(UnusedEagerLoading.send(:eager_loadings)).to be_include([@post.bullet_key], :association1)
@@ -78,7 +78,7 @@ module Bullet
78
78
  expect(UnusedEagerLoading.send(:eager_loadings)).to be_include([@post2.bullet_key], :association2)
79
79
  end
80
80
 
81
- it "should vmerge objects recursively, associations pair for existing eager_loadings" do
81
+ it 'should vmerge objects recursively, associations pair for existing eager_loadings' do
82
82
  UnusedEagerLoading.add_eager_loadings([@post, @post2], :association1)
83
83
  UnusedEagerLoading.add_eager_loadings([@post, @post3], :association1)
84
84
  UnusedEagerLoading.add_eager_loadings([@post, @post3], :association2)
@@ -89,7 +89,7 @@ module Bullet
89
89
  expect(UnusedEagerLoading.send(:eager_loadings)).to be_include([@post3.bullet_key], :association2)
90
90
  end
91
91
 
92
- it "should delete objects, associations pair for existing eager_loadings" do
92
+ it 'should delete objects, associations pair for existing eager_loadings' do
93
93
  UnusedEagerLoading.add_eager_loadings([@post, @post2], :association1)
94
94
  UnusedEagerLoading.add_eager_loadings([@post], :association2)
95
95
  expect(UnusedEagerLoading.send(:eager_loadings)).to be_include([@post.bullet_key], :association1)
@@ -1,34 +1,34 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Object do
4
- context "bullet_key" do
5
- it "should return class and id composition" do
4
+ context 'bullet_key' do
5
+ it 'should return class and id composition' do
6
6
  post = Post.first
7
7
  expect(post.bullet_key).to eq("Post:#{post.id}")
8
8
  end
9
9
 
10
10
  if mongoid?
11
- it "should return class with namesapce and id composition" do
11
+ it 'should return class with namesapce and id composition' do
12
12
  post = Mongoid::Post.first
13
13
  expect(post.bullet_key).to eq("Mongoid::Post:#{post.id}")
14
14
  end
15
15
  end
16
16
  end
17
17
 
18
- context "primary_key_value" do
19
- it "should return id" do
18
+ context 'primary_key_value' do
19
+ it 'should return id' do
20
20
  post = Post.first
21
21
  expect(post.primary_key_value).to eq(post.id)
22
22
  end
23
23
 
24
- it "should return primary key value" do
24
+ it 'should return primary key value' do
25
25
  post = Post.first
26
26
  Post.primary_key = 'name'
27
27
  expect(post.primary_key_value).to eq(post.name)
28
28
  Post.primary_key = 'id'
29
29
  end
30
30
 
31
- it "should return value for multiple primary keys" do
31
+ it 'should return value for multiple primary keys' do
32
32
  post = Post.first
33
33
  allow(Post).to receive(:primary_keys).and_return([:category_id, :writer_id])
34
34
  expect(post.primary_key_value).to eq("#{post.category_id},#{post.writer_id}")
@@ -1,13 +1,13 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe String do
4
- context "bullet_class_name" do
5
- it "should only return class name" do
6
- expect("Post:1".bullet_class_name).to eq("Post")
4
+ context 'bullet_class_name' do
5
+ it 'should only return class name' do
6
+ expect('Post:1'.bullet_class_name).to eq('Post')
7
7
  end
8
8
 
9
- it "should return class name with namespace" do
10
- expect("Mongoid::Post:1234567890".bullet_class_name).to eq("Mongoid::Post")
9
+ it 'should return class name with namespace' do
10
+ expect('Mongoid::Post:1234567890'.bullet_class_name).to eq('Mongoid::Post')
11
11
  end
12
12
  end
13
13
  end
@@ -5,41 +5,41 @@ module Bullet
5
5
  describe Base do
6
6
  subject { Base.new(Post, [:comments, :votes]) }
7
7
 
8
- context "#title" do
9
- it "should raise NoMethodError" do
8
+ context '#title' do
9
+ it 'should raise NoMethodError' do
10
10
  expect { subject.title }.to raise_error(NoMethodError)
11
11
  end
12
12
  end
13
13
 
14
- context "#body" do
15
- it "should raise NoMethodError" do
14
+ context '#body' do
15
+ it 'should raise NoMethodError' do
16
16
  expect { subject.body }.to raise_error(NoMethodError)
17
17
  end
18
18
  end
19
19
 
20
- context "#whoami" do
21
- it "should display user name" do
20
+ context '#whoami' do
21
+ it 'should display user name' do
22
22
  user = `whoami`.chomp
23
23
  expect(subject.whoami).to eq("user: #{user}")
24
24
  end
25
25
 
26
- it "should leverage ENV parameter" do
27
- temp_env_variable("USER", "bogus") do
28
- expect(subject.whoami).to eq("user: bogus")
26
+ it 'should leverage ENV parameter' do
27
+ temp_env_variable('USER', 'bogus') do
28
+ expect(subject.whoami).to eq('user: bogus')
29
29
  end
30
30
  end
31
31
 
32
- it "should return blank if no user available" do
33
- temp_env_variable("USER", "") do
34
- expect(subject).to receive(:`).with("whoami").and_return("")
35
- expect(subject.whoami).to eq("")
32
+ it 'should return blank if no user available' do
33
+ temp_env_variable('USER', '') do
34
+ expect(subject).to receive(:`).with('whoami').and_return('')
35
+ expect(subject.whoami).to eq('')
36
36
  end
37
37
  end
38
38
 
39
- it "should return blank if whoami is not available" do
40
- temp_env_variable("USER", "") do
41
- expect(subject).to receive(:`).with("whoami").and_raise(Errno::ENOENT)
42
- expect(subject.whoami).to eq("")
39
+ it 'should return blank if whoami is not available' do
40
+ temp_env_variable('USER', '') do
41
+ expect(subject).to receive(:`).with('whoami').and_raise(Errno::ENOENT)
42
+ expect(subject.whoami).to eq('')
43
43
  end
44
44
  end
45
45
 
@@ -53,26 +53,26 @@ module Bullet
53
53
 
54
54
  end
55
55
 
56
- context "#body_with_caller" do
57
- it "should return body" do
58
- allow(subject).to receive(:body).and_return("body")
59
- allow(subject).to receive(:call_stack_messages).and_return("call_stack_messages")
56
+ context '#body_with_caller' do
57
+ it 'should return body' do
58
+ allow(subject).to receive(:body).and_return('body')
59
+ allow(subject).to receive(:call_stack_messages).and_return('call_stack_messages')
60
60
  expect(subject.body_with_caller).to eq("body\ncall_stack_messages\n")
61
61
  end
62
62
  end
63
63
 
64
- context "#notification_data" do
65
- it "should return notification data" do
66
- allow(subject).to receive(:whoami).and_return("whoami")
67
- allow(subject).to receive(:url).and_return("url")
68
- allow(subject).to receive(:title).and_return("title")
69
- allow(subject).to receive(:body_with_caller).and_return("body_with_caller")
70
- expect(subject.notification_data).to eq(:user => "whoami", :url => "url", :title => "title", :body => "body_with_caller")
64
+ context '#notification_data' do
65
+ it 'should return notification data' do
66
+ allow(subject).to receive(:whoami).and_return('whoami')
67
+ allow(subject).to receive(:url).and_return('url')
68
+ allow(subject).to receive(:title).and_return('title')
69
+ allow(subject).to receive(:body_with_caller).and_return('body_with_caller')
70
+ expect(subject.notification_data).to eq(:user => 'whoami', :url => 'url', :title => 'title', :body => 'body_with_caller')
71
71
  end
72
72
  end
73
73
 
74
- context "#notify_inline" do
75
- it "should send full_notice to notifier" do
74
+ context '#notify_inline' do
75
+ it 'should send full_notice to notifier' do
76
76
  notifier = double
77
77
  allow(subject).to receive(:notifier).and_return(notifier)
78
78
  allow(subject).to receive(:notification_data).and_return(:foo => :bar)
@@ -81,8 +81,8 @@ module Bullet
81
81
  end
82
82
  end
83
83
 
84
- context "#notify_out_of_channel" do
85
- it "should send full_out_of_channel to notifier" do
84
+ context '#notify_out_of_channel' do
85
+ it 'should send full_out_of_channel to notifier' do
86
86
  notifier = double
87
87
  allow(subject).to receive(:notifier).and_return(notifier)
88
88
  allow(subject).to receive(:notification_data).and_return(:foo => :bar)