arca 2.0.1 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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