arca 2.1.3 → 2.2.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: 1becb49c860d2d307b0a29e91a2d93e0bfe86845
4
- data.tar.gz: b230fe2a8c7d72fc0d84767de6546d67ea707426
3
+ metadata.gz: b0591095b4b348fcbd76cf72ef3cea8aeecb8016
4
+ data.tar.gz: bd32d70f3788e5238761d3368b6944b923860c54
5
5
  SHA512:
6
- metadata.gz: fc86642a2abba3e45f437b4607ab54e775a009ea35611202907a3af1d7da8a59fc0fadc110467a5c66ce080f6133e9e409071c50c34254d1fa4d2611392f3777
7
- data.tar.gz: bd855300d7bc35f2d5029ec4749cf72572f626a675402f4af92d759b81bb5821cf8b3fca86b1675fa59cb3cfd6afc8d38e52a192a68031a11096867e160094b2
6
+ metadata.gz: 9ea28b0b452751d96980314871b79df23b5ea261e9defbc9e3f331690d1c5ca4f4fee7b8c6c65461298faab770034c1c58e752b89cd9f5aa833b032b784a5c5b
7
+ data.tar.gz: 5477fd14ed651d2681b8167db4ef3ee5ea60ae7246f73cb9e9e36c025df1f2747678d1db410b47113d8f78985bde696cf25b2cfee7e4b69bd90e92f35f001250
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |spec|
2
2
  spec.name = "arca"
3
- spec.version = "2.1.3"
3
+ spec.version = "2.2.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"
@@ -80,7 +80,7 @@ module Arca
80
80
  # Public: Boolean representing whether the callback target is located in the
81
81
  # same file where the callback is defined.
82
82
  def external_target?
83
- return false if target_symbol == :block
83
+ return false if target_symbol == :inline
84
84
  target_file_path != callback_file_path
85
85
  end
86
86
 
@@ -33,9 +33,21 @@ module Arca
33
33
  # Duplicate args before modifying.
34
34
  args_copy = args.dup
35
35
 
36
- # Add target_symbol :block to args_copy if a block was given.
36
+ # Add target_symbol :inline to args_copy if a block, Proc, or Class
37
+ # was given.
37
38
  if block
38
- args_copy.unshift(:block)
39
+ args_copy.unshift(:inline)
40
+ elsif args_copy.first.kind_of?(Proc)
41
+ args_copy.shift
42
+ args_copy.unshift(:inline)
43
+ elsif !args_copy.first.kind_of?(Symbol)
44
+ class_or_instance = args_copy.shift
45
+
46
+ if class_or_instance.class == Class
47
+ args_copy.unshift(class_or_instance.name.to_sym)
48
+ else
49
+ args_copy.unshift(class_or_instance.class.name.to_sym)
50
+ end
39
51
  end
40
52
 
41
53
  # Get the options hash from the end of the args Array if it exists.
@@ -78,7 +90,6 @@ module Arca
78
90
  :conditional_symbol => conditional_symbol,
79
91
  :conditional_target_symbol => conditional_target_symbol
80
92
  }
81
-
82
93
  end
83
94
 
84
95
  # Bind the callback method to self and call it with args.
@@ -1,8 +1,19 @@
1
+ class SomeCallbackClass
2
+ def after_destroy(record)
3
+ puts "after_destroy announcement callback"
4
+ end
5
+ end
6
+
1
7
  module Announcements
2
8
  def self.included(base)
3
9
  base.class_eval do
4
- before_save { puts "pre-save announcement callback" }
10
+ before_save { puts "before_save announcement callback" }
5
11
  after_save :announce_save
12
+
13
+ around_save lambda { puts "around_save announcement callback" }
14
+ before_destroy -> { puts "before_destroy announcement callback" }
15
+
16
+ after_destroy SomeCallbackClass.new
6
17
  end
7
18
  end
8
19
 
@@ -75,7 +75,7 @@ class Arca::CallbackAnalysisTest < Minitest::Test
75
75
  end
76
76
 
77
77
  def test_target_line_number
78
- assert_equal 9, announce_save.target_line_number
78
+ assert_equal 20, announce_save.target_line_number
79
79
  assert_equal 8, set_title.target_line_number
80
80
  assert_equal 16, upcase_title.target_line_number
81
81
  end
@@ -87,7 +87,7 @@ class Arca::CallbackAnalysisTest < Minitest::Test
87
87
  end
88
88
 
89
89
  def test_lines_to_target
90
- assert_equal 5, announce_save.lines_to_target
90
+ assert_equal 16, announce_save.lines_to_target
91
91
  assert_equal 3, set_title.lines_to_target
92
92
  assert_equal 10, upcase_title.lines_to_target
93
93
  end
@@ -6,11 +6,15 @@ class Arca::CollectorTest < Minitest::Test
6
6
  assert_equal 1, callbacks[:after_save].size
7
7
  assert_equal 4, callbacks[:before_save].size
8
8
  assert_equal 1, callbacks[:after_commit].size
9
+ assert_equal 1, callbacks[:around_save].size
10
+ assert_equal 1, callbacks[:before_destroy].size
11
+ assert_equal 1, callbacks[:after_destroy].size
12
+
9
13
 
10
14
  callback = callbacks[:after_save][0]
11
15
  assert_equal :after_save, callback[:callback_symbol]
12
16
  assert_match "test/fixtures/announcements.rb", callback[:callback_file_path]
13
- assert_equal 5, callback[:callback_line_number]
17
+ assert_equal 11, callback[:callback_line_number]
14
18
  assert_equal :announce_save, callback[:target_symbol]
15
19
  assert_nil callback[:conditional_symbol]
16
20
  assert_nil callback[:conditional_target_symbol]
@@ -18,8 +22,8 @@ class Arca::CollectorTest < Minitest::Test
18
22
  callback = callbacks[:before_save][0]
19
23
  assert_equal :before_save, callback[:callback_symbol]
20
24
  assert_match "test/fixtures/announcements.rb", callback[:callback_file_path]
21
- assert_equal 4, callback[:callback_line_number]
22
- assert_equal :block, callback[:target_symbol]
25
+ assert_equal 10, callback[:callback_line_number]
26
+ assert_equal :inline, callback[:target_symbol]
23
27
  assert_nil callback[:conditional_symbol]
24
28
  assert_nil callback[:conditional_target_symbol]
25
29
 
@@ -54,6 +58,30 @@ class Arca::CollectorTest < Minitest::Test
54
58
  assert_equal :update_timeline, callback[:target_symbol]
55
59
  assert_equal :on, callback[:conditional_symbol]
56
60
  assert_equal [:create, :destroy], callback[:conditional_target_symbol]
61
+
62
+ callback = callbacks[:around_save][0]
63
+ assert_equal :around_save, callback[:callback_symbol]
64
+ assert_match "test/fixtures/announcements.rb", callback[:callback_file_path]
65
+ assert_equal 13, callback[:callback_line_number]
66
+ assert_equal :inline, callback[:target_symbol]
67
+ assert_nil callback[:conditional_symbol]
68
+ assert_nil callback[:conditional_target_symbol]
69
+
70
+ callback = callbacks[:before_destroy][0]
71
+ assert_equal :before_destroy, callback[:callback_symbol]
72
+ assert_match "test/fixtures/announcements.rb", callback[:callback_file_path]
73
+ assert_equal 14, callback[:callback_line_number]
74
+ assert_equal :inline, callback[:target_symbol]
75
+ assert_nil callback[:conditional_symbol]
76
+ assert_nil callback[:conditional_target_symbol]
77
+
78
+ callback = callbacks[:after_destroy][0]
79
+ assert_equal :after_destroy, callback[:callback_symbol]
80
+ assert_match "test/fixtures/announcements.rb", callback[:callback_file_path]
81
+ assert_equal 16, callback[:callback_line_number]
82
+ assert_equal :SomeCallbackClass, callback[:target_symbol]
83
+ assert_nil callback[:conditional_symbol]
84
+ assert_nil callback[:conditional_target_symbol]
57
85
  end
58
86
 
59
87
  def test_callback_is_reapplied_with_original_args
@@ -33,24 +33,24 @@ class Arca::ModelTest < Minitest::Test
33
33
  end
34
34
 
35
35
  def test_analyzed_callbacks_array
36
- assert_equal 6, model.analyzed_callbacks_array.size
36
+ assert_equal 9, 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 6, model.analyzed_callbacks_count
41
+ assert_equal 9, model.analyzed_callbacks_count
42
42
  end
43
43
 
44
44
  def test_lines_between_count
45
- assert_equal 6, model.lines_between_count
45
+ assert_equal 16, model.lines_between_count
46
46
  end
47
47
 
48
48
  def test_external_callbacks_count
49
- assert_equal 2, model.external_callbacks_count
49
+ assert_equal 5, model.external_callbacks_count
50
50
  end
51
51
 
52
52
  def test_external_targets_count
53
- assert_equal 0, model.external_targets_count
53
+ assert_equal 1, model.external_targets_count
54
54
  end
55
55
 
56
56
  def test_external_conditionals_count
@@ -22,6 +22,6 @@ class Arca::ReportTest < Minitest::Test
22
22
  end
23
23
 
24
24
  def test_calculated_permutations
25
- assert_equal 3, report.calculated_permutations
25
+ assert_equal 6, report.calculated_permutations
26
26
  end
27
27
  end
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.1.3
4
+ version: 2.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonathan Hoyt