active_record-when_change 0.0.2 → 0.0.3

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: b5ce12661dc8bab7a2a4aae116b02d0988972a05
4
- data.tar.gz: 3c52309cdb0a9fc770292dd56e2487edb9981e0e
3
+ metadata.gz: 8221e6fff490d4b80ce3fb4fb3d66740e584b620
4
+ data.tar.gz: fe02eaadb35ea631179c8490c627d25c1271aa3d
5
5
  SHA512:
6
- metadata.gz: 43c519621680512d0dd992d196a2c9f925907290562a2a13a2d3fa3dd104c70ac73ed43293512ccd83450149c47763a23a1e245057ac73170a4636b61b702058
7
- data.tar.gz: 09b9b554b2474666d601646147d5b047f72abb5a4f7a62645c2d8c690bcc1eaf656f3bb3adbfffe8ddfc2f6e6a1dfa68953b4212bc5dee3c64be9208f01d4ff8
6
+ metadata.gz: fe4905219abcebff8bc4834670581004952ea82f6a50137b0a6a3638b8b0fa4ed3d79a7798ecb124996345a8bc53004ebf5a3425082faa9e19702ec9011ba953
7
+ data.tar.gz: 9619d747a2496343384c6c66c93f3ec3af6204612c996bc94e4b5e18e9a11e14d2ae110f20f7dc9c81bb35fae2c3de8c4d49377bce3dc25fea000d870b590dbc
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
10
10
  spec.email = ["zidmubarock@gmail.com"]
11
11
  spec.summary = %q{Simple DSL to control callback attribute changed in ActiveRecord model}
12
12
  spec.description = %q{Simple DSL to control callback attribute changed in ActiveRecord model}
13
- spec.homepage = "http://barock.github.io/active_record-when_change"
13
+ spec.homepage = "https://github.com/barock19/active_record-when_change"
14
14
  spec.license = "MIT"
15
15
 
16
16
  spec.files = `git ls-files -z`.split("\x0")
@@ -6,11 +6,14 @@ module ActiveRecord
6
6
  VALID_OPTIONS = [:from, :to, :if, :unless]
7
7
  def self.included(base)
8
8
  base.extend ClassMethods
9
+ base.after_initialize do
10
+ @_new_record = self.new_record?
11
+ end
9
12
  end
10
13
 
11
14
  def when_change attr, config={}, method = nil, &block
12
15
  # just return if config is blank or (method or block not given)
13
- return if self.send("id_was".to_sym).nil? || config.blank? || (method == nil && !block_given? )
16
+ return if !@_new_record || config.blank? || (method == nil && !block_given? )
14
17
  config.keys.each{|key| logger.debug("#{key} is not valid options key for ArctiveRecordChanged") unless VALID_OPTIONS.include?(key)}
15
18
 
16
19
  new_attribute = self.send(attr.to_sym)
@@ -39,36 +42,6 @@ module ActiveRecord
39
42
  def when_change
40
43
  end
41
44
  end
42
-
43
- class ChangedAttributes
44
- attr_reader :attr, :old_attr, :current
45
- def initialize attr, old_attr, current
46
- @attr = attr
47
- @old_attr = old_attr
48
- @current = current
49
- end
50
-
51
- def inspect
52
- old != value
53
- end
54
-
55
- def old
56
- old_attr[attr]
57
- end
58
-
59
- def value
60
- current.read_attribute attr
61
- end
62
-
63
- def old_value
64
- old
65
- end
66
-
67
- def new_value
68
- value
69
- end
70
-
71
- end
72
45
  end
73
46
  end
74
47
 
@@ -1,5 +1,5 @@
1
1
  module ActiveRecord
2
2
  module WhenChange
3
- VERSION = "0.0.2"
3
+ VERSION = "0.0.3"
4
4
  end
5
5
  end
@@ -6,7 +6,7 @@ describe "when_change" do
6
6
  Post.new.should respond_to(:when_change)
7
7
  end
8
8
  context "when model defined some when_change event" do
9
- after do
9
+ after(:each) do
10
10
  reset_all_constants
11
11
  end
12
12
 
@@ -18,21 +18,15 @@ describe "when_change" do
18
18
  notify_subsribers
19
19
  end
20
20
  end
21
- after_commit do
22
- when_change :status, from: :draft, to: :publised do
23
- notify_subsribers
24
- end
25
- end
26
21
  def notify_subsribers
27
22
  true
28
23
  end
29
24
  end
30
25
  end
31
26
  let(:post){Post.new(status: :draft)}
32
- it "should not triggered the action" do
33
- post.should respond_to(:notify_subsribers)
34
- mock(post).notify_subsribers.times(0)
35
- post.update_attributes status: :publised
27
+ it_behaves_like "callback not triggered" do
28
+ let(:method){:notify_subsribers}
29
+ let(:attributes){{status: :publised}}
36
30
  end
37
31
  end
38
32
 
@@ -50,10 +44,33 @@ describe "when_change" do
50
44
  end
51
45
  end
52
46
  let(:post){Post.create(status: :draft)}
53
- it "should not triggered the action" do
54
- post.should respond_to(:notify_subsribers)
55
- mock(post).notify_subsribers.times(1)
56
- post.update_attributes status: :publised
47
+ it_behaves_like "callback triggered" do
48
+ let(:method){:notify_subsribers}
49
+ let(:attributes){{status: :publised}}
50
+ end
51
+ end
52
+ context "when if" do
53
+ context "when true" do
54
+ before do
55
+ reset_all_constants
56
+ Post.class_eval do
57
+ after_update do
58
+ when_change :status, if: 'true' do
59
+ notify_subsribers
60
+ end
61
+ end
62
+ def notify_subsribers
63
+ true
64
+ end
65
+ end
66
+ end
67
+ let(:post){Post.create(status: :draft)}
68
+ it_behaves_like "callback triggered" do
69
+ let(:method){:notify_subsribers}
70
+ let(:attributes){{status: :publised}}
71
+ end
72
+ end
73
+ context "when false" do
57
74
  end
58
75
  end
59
76
  end
data/spec/spec_helper.rb CHANGED
@@ -37,4 +37,5 @@ RSpec.configure do |config|
37
37
  # the seed, which is printed after each run.
38
38
  # --seed 1234
39
39
  config.order = 'random'
40
- end
40
+ end
41
+ load File.dirname(__FILE__) + '/support/shared_example.rb'
@@ -0,0 +1,12 @@
1
+ shared_examples "callback triggered" do
2
+ it "should triggered the calback" do
3
+ mock(post, method).times(1)
4
+ post.update_attributes(attributes)
5
+ end
6
+ end
7
+ shared_examples "callback not triggered" do
8
+ it "should triggered the calback" do
9
+ mock(post, method).times(0)
10
+ post.update_attributes(attributes)
11
+ end
12
+ end
metadata CHANGED
@@ -1,125 +1,125 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_record-when_change
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Zidni Mubarock
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-26 00:00:00.000000000 Z
11
+ date: 2014-02-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: 4.0.3
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: 4.0.3
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: '1.5'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '1.5'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: database_cleaner
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ~>
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
47
  version: 1.2.0
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ~>
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: 1.2.0
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: pry
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '>='
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - '>='
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rspec
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - '>='
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - '>='
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: rr
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - '>='
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
89
  version: '0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - '>='
94
+ - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: rake
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - '>='
101
+ - - ">="
102
102
  - !ruby/object:Gem::Version
103
103
  version: '0'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - '>='
108
+ - - ">="
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: sqlite3
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - '>='
115
+ - - ">="
116
116
  - !ruby/object:Gem::Version
117
117
  version: '0'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - '>='
122
+ - - ">="
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
125
  description: Simple DSL to control callback attribute changed in ActiveRecord model
@@ -129,8 +129,8 @@ executables: []
129
129
  extensions: []
130
130
  extra_rdoc_files: []
131
131
  files:
132
- - .gitignore
133
- - .rspec
132
+ - ".gitignore"
133
+ - ".rspec"
134
134
  - Gemfile
135
135
  - LICENSE.txt
136
136
  - README.md
@@ -143,7 +143,8 @@ files:
143
143
  - spec/support/constants_helper.rb
144
144
  - spec/support/post.rb
145
145
  - spec/support/schema.rb
146
- homepage: http://barock.github.io/active_record-when_change
146
+ - spec/support/shared_example.rb
147
+ homepage: https://github.com/barock19/active_record-when_change
147
148
  licenses:
148
149
  - MIT
149
150
  metadata: {}
@@ -153,12 +154,12 @@ require_paths:
153
154
  - lib
154
155
  required_ruby_version: !ruby/object:Gem::Requirement
155
156
  requirements:
156
- - - '>='
157
+ - - ">="
157
158
  - !ruby/object:Gem::Version
158
159
  version: '0'
159
160
  required_rubygems_version: !ruby/object:Gem::Requirement
160
161
  requirements:
161
- - - '>='
162
+ - - ">="
162
163
  - !ruby/object:Gem::Version
163
164
  version: '0'
164
165
  requirements: []
@@ -173,3 +174,4 @@ test_files:
173
174
  - spec/support/constants_helper.rb
174
175
  - spec/support/post.rb
175
176
  - spec/support/schema.rb
177
+ - spec/support/shared_example.rb