arca 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3efd4bf79b0304d713b4c0f1865dccdcbb80c737
4
- data.tar.gz: 2beaa25cc62e0db4d126413aa0be9a675030d881
3
+ metadata.gz: cc4f919a7e79ca23f5ea8f1c37412bc40c181289
4
+ data.tar.gz: e6299619e24d39985a7f29f9809f043770cb9a30
5
5
  SHA512:
6
- metadata.gz: b8ff7a7e3fd5aefbbc63bc4a6c3acef480ffb6847d5d7f6d7a44cd7e8e8fd85559db97efa37d89e82f151a8143a834339df03ce527517c8387dcabdcaef06de8
7
- data.tar.gz: fa9cc3afb45446d2f36e4fc13965704510d70778c7a82133627a67b250a880335b73416fa473f7323f7d94c895722a970d10438ea48e4c86bfcdd41b06a48882
6
+ metadata.gz: 071f2a40b8184eea62932bc28b8e8d11988c8c68fcb742f9406c54fa576aca6695f5706db5fdd4215c8deba572a63408de27b21baa599298a644f7afb5bfe9f9
7
+ data.tar.gz: 265d6b69cd5c21a061191b08f035c40663ffe7e2062dd30222423048d5ba580e8ee6409e33bf2e0228a3f994b1019730bedfa6b6a88bedabe52cdcfe6be65f8a
data/arca.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |spec|
2
2
  spec.name = "arca"
3
- spec.version = "2.0.1"
3
+ spec.version = "2.1.0"
4
4
  spec.date = "2015-08-07"
5
5
  spec.summary = "ActiveRecord callback analyzer"
6
6
  spec.description = "Arca is a callback analyzer for ActiveRecord ideally suited for digging yourself out of callback hell"
@@ -113,7 +113,9 @@ module Arca
113
113
  # Public: Boolean representing whether the conditional target is located in
114
114
  # the same file where the callback is defined.
115
115
  def external_conditional_target?
116
- return if conditional_target_symbol.nil?
116
+ return false if conditional_target_symbol.nil?
117
+ return false if conditional_target_symbol.is_a?(Array)
118
+ return false if [:create, :update, :destroy].include?(conditional_target_symbol)
117
119
 
118
120
  callback_file_path != conditional_target_file_path
119
121
  end
data/lib/arca/report.rb CHANGED
@@ -54,7 +54,7 @@ module Arca
54
54
  number_of_unique_conditionals(model.analyzed_callbacks_array)
55
55
  end
56
56
 
57
- def_delegators :model, :lines_between_count, :external_callbacks_count,
57
+ def_delegators :@model, :lines_between_count, :external_callbacks_count,
58
58
  :external_targets_count, :external_conditionals_count
59
59
 
60
60
  # Public: Integer representing the possible number of permutations stemming
@@ -3,6 +3,7 @@ class Ticket < ActiveRecord::Base
3
3
 
4
4
  before_save :set_title, :set_body
5
5
  before_save :upcase_title, :if => :title_is_a_shout?
6
+ after_commit :update_timeline, :on => [:create, :destroy]
6
7
 
7
8
  def set_title
8
9
  self.title ||= "Ticket id #{SecureRandom.hex(2)}"
@@ -19,4 +20,8 @@ class Ticket < ActiveRecord::Base
19
20
  def title_is_a_shout?
20
21
  self.title.split(" ").size == 1
21
22
  end
23
+
24
+ def update_timeline
25
+ puts "Updating timeline"
26
+ end
22
27
  end
@@ -85,8 +85,8 @@ class Arca::CallbackAnalysisTest < Minitest::Test
85
85
 
86
86
  def test_target_line_number
87
87
  assert_equal 9, announce_save.target_line_number
88
- assert_equal 7, set_title.target_line_number
89
- assert_equal 15, upcase_title.target_line_number
88
+ assert_equal 8, set_title.target_line_number
89
+ assert_equal 16, upcase_title.target_line_number
90
90
  end
91
91
 
92
92
  def test_external_target?
@@ -97,8 +97,8 @@ class Arca::CallbackAnalysisTest < Minitest::Test
97
97
 
98
98
  def test_lines_to_target
99
99
  assert_equal 5, announce_save.lines_to_target
100
- assert_equal 2, set_title.lines_to_target
101
- assert_equal 9, upcase_title.lines_to_target
100
+ assert_equal 3, set_title.lines_to_target
101
+ assert_equal 10, upcase_title.lines_to_target
102
102
  end
103
103
 
104
104
  def test_conditional_symbol
@@ -122,12 +122,12 @@ class Arca::CallbackAnalysisTest < Minitest::Test
122
122
  def test_conditional_target_line_number
123
123
  assert_nil announce_save.conditional_target_line_number
124
124
  assert_nil set_title.conditional_target_line_number
125
- assert_equal 19, upcase_title.conditional_target_line_number
125
+ assert_equal 20, upcase_title.conditional_target_line_number
126
126
  end
127
127
 
128
128
  def test_lines_to_conditional_target
129
129
  assert_nil announce_save.lines_to_conditional_target
130
130
  assert_nil set_title.lines_to_conditional_target
131
- assert_equal 13, upcase_title.lines_to_conditional_target
131
+ assert_equal 14, upcase_title.lines_to_conditional_target
132
132
  end
133
133
  end
@@ -5,6 +5,7 @@ class Arca::CollectorTest < Minitest::Test
5
5
  callbacks = Ticket.arca_callback_data
6
6
  assert_equal 1, callbacks[:after_save].size
7
7
  assert_equal 4, callbacks[:before_save].size
8
+ assert_equal 1, callbacks[:after_commit].size
8
9
 
9
10
  callback = callbacks[:after_save][0]
10
11
  assert_equal :after_save, callback[:callback_symbol]
@@ -45,6 +46,14 @@ class Arca::CollectorTest < Minitest::Test
45
46
  assert_equal :upcase_title, callback[:target_symbol]
46
47
  assert_equal :if, callback[:conditional_symbol]
47
48
  assert_equal :title_is_a_shout?, callback[:conditional_target_symbol]
49
+
50
+ callback = callbacks[:after_commit][0]
51
+ assert_equal :after_commit, callback[:callback_symbol]
52
+ assert_match "test/fixtures/ticket.rb", callback[:callback_file_path]
53
+ assert_equal 6, callback[:callback_line_number]
54
+ assert_equal :update_timeline, callback[:target_symbol]
55
+ assert_equal :on, callback[:conditional_symbol]
56
+ assert_equal [:create, :destroy], callback[:conditional_target_symbol]
48
57
  end
49
58
 
50
59
  def test_callback_is_reapplied_with_original_args
@@ -12,7 +12,7 @@ class Arca::ModelTest < Minitest::Test
12
12
  def test_source_location
13
13
  source_location = model.source_location(:set_title)
14
14
  assert_match "test/fixtures/ticket.rb", source_location[:file_path]
15
- assert_equal 7, source_location[:line_number]
15
+ assert_equal 8, source_location[:line_number]
16
16
  end
17
17
 
18
18
  def test_source_location_with_method_symbol_with_no_associated_method
@@ -33,16 +33,16 @@ class Arca::ModelTest < Minitest::Test
33
33
  end
34
34
 
35
35
  def test_analyzed_callbacks_array
36
- assert_equal 5, model.analyzed_callbacks_array.size
36
+ assert_equal 6, model.analyzed_callbacks_array.size
37
37
  assert model.analyzed_callbacks_array[0].is_a?(Arca::CallbackAnalysis)
38
38
  end
39
39
 
40
40
  def test_analyzed_callbacks_count
41
- assert_equal 5, model.analyzed_callbacks_count
41
+ assert_equal 6, model.analyzed_callbacks_count
42
42
  end
43
43
 
44
44
  def test_lines_between_count
45
- assert_equal 5, model.lines_between_count
45
+ assert_equal 6, model.lines_between_count
46
46
  end
47
47
 
48
48
  def test_external_callbacks_count
@@ -14,14 +14,14 @@ class Arca::ReportTest < Minitest::Test
14
14
  end
15
15
 
16
16
  def callbacks_count
17
- assert_equal 4, report.callbacks_count
17
+ assert_equal 5, report.callbacks_count
18
18
  end
19
19
 
20
20
  def test_conditionals_count
21
- assert_equal 1, report.conditionals_count
21
+ assert_equal 2, report.conditionals_count
22
22
  end
23
23
 
24
24
  def test_calculated_permutations
25
- assert_equal 2, report.calculated_permutations
25
+ assert_equal 3, report.calculated_permutations
26
26
  end
27
27
  end
data/test/test_helper.rb CHANGED
@@ -4,6 +4,7 @@ require "minitest/autorun"
4
4
  require "arca"
5
5
 
6
6
  class ActiveRecord::Base
7
+ self.raise_in_transactional_callbacks = true
7
8
  include Arca::Collector
8
9
  end
9
10
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: arca
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonathan Hoyt