triggerable 0.1.16 → 0.1.17
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 +4 -4
- data/lib/triggerable.rb +13 -0
- data/lib/triggerable/engine.rb +1 -0
- data/lib/triggerable/version.rb +1 -1
- data/spec/integration/actions_spec.rb +22 -0
- data/spec/integration/automations_spec.rb +25 -0
- data/spec/integration/short_syntax_spec.rb +22 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5651abe1358e3baff71006b801a34a74ffd7d4b7
|
4
|
+
data.tar.gz: 4f90f9159253400b28a5f91d7688bf7c93847102
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d4e7b3c021870dc485a0e74f6d5e12deec8eb6f539b67a19b75168db0934afbdd4e447c57530c14fff5589bbd735dfd5574fe5220bd7507649b5ffec2292815e
|
7
|
+
data.tar.gz: 638911d10688242663d886676b024f685445c303898fe86fc0a2691cb937552fab616a50eec08256ba8adb447f9c54f61dc2884da136210836b0841778dddcfa
|
data/lib/triggerable.rb
CHANGED
@@ -30,6 +30,18 @@ require "triggerable/actions/lambda_action"
|
|
30
30
|
module Triggerable
|
31
31
|
extend ActiveSupport::Concern
|
32
32
|
|
33
|
+
def self.enable!
|
34
|
+
@disabled = false
|
35
|
+
end
|
36
|
+
|
37
|
+
def self.disable!
|
38
|
+
@disabled = true
|
39
|
+
end
|
40
|
+
|
41
|
+
def self.enabled?
|
42
|
+
!@disabled
|
43
|
+
end
|
44
|
+
|
33
45
|
included do
|
34
46
|
CALLBACKS = [
|
35
47
|
:before_create,
|
@@ -51,6 +63,7 @@ module Triggerable
|
|
51
63
|
private
|
52
64
|
|
53
65
|
def run_triggers callback
|
66
|
+
return unless Triggerable.enabled?
|
54
67
|
Engine.triggers_for(self, callback).each { |t| t.execute!(self) }
|
55
68
|
true
|
56
69
|
end
|
data/lib/triggerable/engine.rb
CHANGED
data/lib/triggerable/version.rb
CHANGED
@@ -38,4 +38,26 @@ describe 'Actions' do
|
|
38
38
|
expect(TestTask.all[-2].kind).to eq('follow up')
|
39
39
|
expect(TestTask.all.last.kind).to eq('follow up')
|
40
40
|
end
|
41
|
+
|
42
|
+
describe 'when Triggerable is disabled' do
|
43
|
+
before do
|
44
|
+
TestTask.trigger on: :after_create,
|
45
|
+
if: { status: 'solved' },
|
46
|
+
do: :create_follow_up
|
47
|
+
end
|
48
|
+
|
49
|
+
after { Triggerable.enable! }
|
50
|
+
|
51
|
+
it 'it does not run actions' do
|
52
|
+
expect {
|
53
|
+
TestTask.create status: 'solved'
|
54
|
+
}.to change(TestTask, :count).by(2)
|
55
|
+
|
56
|
+
Triggerable.disable!
|
57
|
+
|
58
|
+
expect {
|
59
|
+
TestTask.create status: 'solved'
|
60
|
+
}.to change(TestTask, :count).by(1)
|
61
|
+
end
|
62
|
+
end
|
41
63
|
end
|
@@ -264,4 +264,29 @@ describe 'Automations' do
|
|
264
264
|
expect(ScopedTestTask.unscoped.count).to eq(2)
|
265
265
|
expect(ScopedTestTask.unscoped.last.kind).to eq('follow up')
|
266
266
|
end
|
267
|
+
|
268
|
+
context 'when Triggerable is disabled' do
|
269
|
+
before do
|
270
|
+
TestTask.automation if: {and: [{updated_at: {after: 24.hours}}, {status: {is: :solved}}, {kind: {is: :service}}]} do
|
271
|
+
TestTask.create kind: 'follow up'
|
272
|
+
end
|
273
|
+
end
|
274
|
+
|
275
|
+
after { Triggerable.enable! }
|
276
|
+
|
277
|
+
it 'does not run automations' do
|
278
|
+
Triggerable.disable!
|
279
|
+
|
280
|
+
expect {
|
281
|
+
constantize_time_now Time.utc 2012, 9, 1, 12, 00
|
282
|
+
|
283
|
+
task = TestTask.create
|
284
|
+
task.update_attributes status: 'solved', kind: 'service'
|
285
|
+
|
286
|
+
constantize_time_now Time.utc 2012, 9, 2, 12, 00
|
287
|
+
Triggerable::Engine.run_automations(1.hour)
|
288
|
+
|
289
|
+
}.to change(TestTask, :count).by(1)
|
290
|
+
end
|
291
|
+
end
|
267
292
|
end
|
@@ -89,4 +89,26 @@ describe 'Short syntax' do
|
|
89
89
|
task.update_attributes status: 'solved'
|
90
90
|
expect(task.status).to eq('confirmed')
|
91
91
|
end
|
92
|
+
|
93
|
+
context 'when Triggerable is disabled' do
|
94
|
+
before do
|
95
|
+
TestTask.trigger on: :after_create, if: {status: ['solved']} do
|
96
|
+
TestTask.create kind: 'follow up'
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
after { Triggerable.enable! }
|
101
|
+
|
102
|
+
it 'does not run actions' do
|
103
|
+
expect {
|
104
|
+
TestTask.create status: 'solved'
|
105
|
+
}.to change(TestTask, :count).by(2)
|
106
|
+
|
107
|
+
Triggerable.disable!
|
108
|
+
|
109
|
+
expect {
|
110
|
+
TestTask.create status: 'solved'
|
111
|
+
}.to change(TestTask, :count).by(1)
|
112
|
+
end
|
113
|
+
end
|
92
114
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: triggerable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.17
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- DmitryTsepelev
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-05-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -175,7 +175,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
175
175
|
version: '0'
|
176
176
|
requirements: []
|
177
177
|
rubyforge_project:
|
178
|
-
rubygems_version: 2.6.
|
178
|
+
rubygems_version: 2.6.11
|
179
179
|
signing_key:
|
180
180
|
specification_version: 4
|
181
181
|
summary: Triggerable is a powerful engine for adding a conditional behaviour for ActiveRecord
|