ruote-kit 2.1.11 → 2.2.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.txt +6 -1
- data/CREDITS.txt +23 -0
- data/LICENSE.txt +1 -1
- data/README.rdoc +44 -7
- data/Rakefile +78 -45
- data/TODO.txt +8 -0
- data/lib/ruote-kit/helpers/json_helpers.rb +1 -1
- data/lib/ruote-kit/helpers/misc_helpers.rb +1 -1
- data/lib/ruote-kit/helpers/render_helpers.rb +18 -1
- data/lib/ruote-kit/public/_ruote/stylesheets/ruote-fluo-editor.css +1 -1
- data/lib/ruote-kit/resources/expressions.rb +6 -0
- data/lib/ruote-kit/resources/participants.rb +3 -1
- data/lib/ruote-kit/resources/schedules.rb +1 -1
- data/lib/ruote-kit/resources/workitems.rb +4 -0
- data/lib/ruote-kit/version.rb +1 -1
- data/lib/ruote-kit/views/expression.html.haml +2 -2
- data/lib/ruote-kit/views/layout.html.haml +1 -1
- data/lib/ruote-kit/views/participants.html.haml +19 -18
- data/lib/ruote-kit.rb +13 -3
- data/ruote-kit.gemspec +34 -133
- data/spec/resources/errors_spec.rb +20 -8
- data/spec/resources/expressions_spec.rb +211 -45
- data/spec/resources/index_spec.rb +1 -5
- data/spec/resources/participants_spec.rb +26 -9
- data/spec/resources/processes_spec.rb +77 -41
- data/spec/resources/schedules_spec.rb +33 -9
- data/spec/resources/workitems_spec.rb +174 -83
- data/spec/spec_helper.rb +11 -56
- data/spec/support/engine_helper.rb +97 -0
- data/spec/support/rack_helper.rb +21 -0
- data/spec/support/render_helper.rb +16 -0
- data/spec/webapp_helpers_spec.rb +1 -0
- metadata +121 -121
- data/.document +0 -0
- data/.gitignore +0 -10
- data/Gemfile +0 -51
- data/config.ru +0 -60
- data/lib/ruote-kit/spec/ruote_helpers.rb +0 -56
- data/spec/it_has_an_engine.rb +0 -69
- data/spec/spec.opts +0 -1
data/ruote-kit.gemspec
CHANGED
@@ -1,140 +1,41 @@
|
|
1
|
-
#
|
2
|
-
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
4
|
-
# -*- encoding: utf-8 -*-
|
1
|
+
# encoding: utf-8
|
5
2
|
|
6
3
|
Gem::Specification.new do |s|
|
7
|
-
s.name = %q{ruote-kit}
|
8
|
-
s.version = "2.1.11"
|
9
4
|
|
10
|
-
s.
|
11
|
-
s.
|
12
|
-
s.
|
13
|
-
s.
|
14
|
-
s.
|
15
|
-
s.
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
".document",
|
23
|
-
".gitignore",
|
24
|
-
"CHANGELOG.txt",
|
25
|
-
"Gemfile",
|
26
|
-
"LICENSE.txt",
|
27
|
-
"README.rdoc",
|
28
|
-
"Rakefile",
|
29
|
-
"TODO.txt",
|
30
|
-
"config.ru",
|
31
|
-
"lib/ruote-kit.rb",
|
32
|
-
"lib/ruote-kit/application.rb",
|
33
|
-
"lib/ruote-kit/helpers/json_helpers.rb",
|
34
|
-
"lib/ruote-kit/helpers/link_helpers.rb",
|
35
|
-
"lib/ruote-kit/helpers/misc_helpers.rb",
|
36
|
-
"lib/ruote-kit/helpers/pagination_helpers.rb",
|
37
|
-
"lib/ruote-kit/helpers/render_helpers.rb",
|
38
|
-
"lib/ruote-kit/public/_ruote/images/favicon.ico",
|
39
|
-
"lib/ruote-kit/public/_ruote/images/ruote.png",
|
40
|
-
"lib/ruote-kit/public/_ruote/images/ruote_buttons.png",
|
41
|
-
"lib/ruote-kit/public/_ruote/javascripts/jquery-1.4.2.min.js",
|
42
|
-
"lib/ruote-kit/public/_ruote/javascripts/rk.js",
|
43
|
-
"lib/ruote-kit/public/_ruote/javascripts/ruote-fluo-editor.js",
|
44
|
-
"lib/ruote-kit/public/_ruote/javascripts/ruote-fluo.js",
|
45
|
-
"lib/ruote-kit/public/_ruote/stylesheets/reset.css",
|
46
|
-
"lib/ruote-kit/public/_ruote/stylesheets/rk.css",
|
47
|
-
"lib/ruote-kit/public/_ruote/stylesheets/ruote-fluo-editor.css",
|
48
|
-
"lib/ruote-kit/resources/errors.rb",
|
49
|
-
"lib/ruote-kit/resources/expressions.rb",
|
50
|
-
"lib/ruote-kit/resources/participants.rb",
|
51
|
-
"lib/ruote-kit/resources/processes.rb",
|
52
|
-
"lib/ruote-kit/resources/schedules.rb",
|
53
|
-
"lib/ruote-kit/resources/workitems.rb",
|
54
|
-
"lib/ruote-kit/spec/ruote_helpers.rb",
|
55
|
-
"lib/ruote-kit/version.rb",
|
56
|
-
"lib/ruote-kit/views/_pagination.html.haml",
|
57
|
-
"lib/ruote-kit/views/_tree_editor.html.haml",
|
58
|
-
"lib/ruote-kit/views/error.html.haml",
|
59
|
-
"lib/ruote-kit/views/errors.html.haml",
|
60
|
-
"lib/ruote-kit/views/expression.html.haml",
|
61
|
-
"lib/ruote-kit/views/expressions.html.haml",
|
62
|
-
"lib/ruote-kit/views/http_error.html.haml",
|
63
|
-
"lib/ruote-kit/views/index.html.haml",
|
64
|
-
"lib/ruote-kit/views/layout.html.haml",
|
65
|
-
"lib/ruote-kit/views/participants.html.haml",
|
66
|
-
"lib/ruote-kit/views/process.html.haml",
|
67
|
-
"lib/ruote-kit/views/process_launched.html.haml",
|
68
|
-
"lib/ruote-kit/views/processes.html.haml",
|
69
|
-
"lib/ruote-kit/views/processes_new.html.haml",
|
70
|
-
"lib/ruote-kit/views/schedules.html.haml",
|
71
|
-
"lib/ruote-kit/views/workitem.html.haml",
|
72
|
-
"lib/ruote-kit/views/workitems.html.haml",
|
73
|
-
"ruote-kit.gemspec",
|
74
|
-
"spec/it_has_an_engine.rb",
|
75
|
-
"spec/resources/errors_spec.rb",
|
76
|
-
"spec/resources/expressions_spec.rb",
|
77
|
-
"spec/resources/index_spec.rb",
|
78
|
-
"spec/resources/participants_spec.rb",
|
79
|
-
"spec/resources/processes_spec.rb",
|
80
|
-
"spec/resources/schedules_spec.rb",
|
81
|
-
"spec/resources/workitems_spec.rb",
|
82
|
-
"spec/ruote-kit_configure_spec.rb",
|
83
|
-
"spec/spec.opts",
|
84
|
-
"spec/spec_helper.rb",
|
85
|
-
"spec/webapp_helpers_spec.rb"
|
86
|
-
]
|
87
|
-
s.homepage = %q{http://github.com/tosch/ruote-kit}
|
88
|
-
s.rdoc_options = ["--charset=UTF-8"]
|
89
|
-
s.require_paths = ["lib"]
|
90
|
-
s.rubygems_version = %q{1.3.7}
|
91
|
-
s.summary = %q{ruote workflow engine, wrapped in a loving rack embrace}
|
92
|
-
s.test_files = [
|
93
|
-
"spec/webapp_helpers_spec.rb",
|
94
|
-
"spec/resources/participants_spec.rb",
|
95
|
-
"spec/resources/index_spec.rb",
|
96
|
-
"spec/resources/errors_spec.rb",
|
97
|
-
"spec/resources/processes_spec.rb",
|
98
|
-
"spec/resources/workitems_spec.rb",
|
99
|
-
"spec/resources/schedules_spec.rb",
|
100
|
-
"spec/resources/expressions_spec.rb",
|
101
|
-
"spec/it_has_an_engine.rb",
|
102
|
-
"spec/spec_helper.rb",
|
103
|
-
"spec/ruote-kit_configure_spec.rb"
|
104
|
-
]
|
5
|
+
s.name = 'ruote-kit'
|
6
|
+
#s.version = File.read('lib/ruote-kit/version.rb').match(/VERSION = '([^']+)'/)[1]
|
7
|
+
s.version = '2.2.0.3'
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
s.authors = [ 'Kenneth Kalmer', 'Torsten Schoenebaum', 'John Mettraux' ]
|
10
|
+
s.email = [ 'kenneth.kalmer@gmail.com' ]
|
11
|
+
s.homepage = 'http://github.com/tosch/ruote-kit'
|
12
|
+
s.rubyforge_project = 'ruote'
|
13
|
+
s.summary = 'ruote workflow engine, wrapped in a loving rack embrace'
|
14
|
+
s.description = %q{
|
15
|
+
ruote workflow engine, wrapped in a loving rack embrace
|
16
|
+
}
|
105
17
|
|
106
|
-
|
107
|
-
|
108
|
-
|
18
|
+
#s.files = `git ls-files`.split("\n")
|
19
|
+
s.files = Dir[
|
20
|
+
'Rakefile',
|
21
|
+
'lib/**/*.rb', 'spec/**/*.rb', 'test/**/*.rb',
|
22
|
+
'*.gemspec', '*.txt', '*.rdoc', '*.md',
|
23
|
+
'lib/ruote-kit/public/**/*', 'lib/ruote-kit/views/**/*'
|
24
|
+
] - [ 'rails-template.rb' ]
|
109
25
|
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
s.add_dependency(%q<thin>, [">= 0"])
|
125
|
-
s.add_dependency(%q<yajl-ruby>, [">= 0"])
|
126
|
-
s.add_dependency(%q<rufus-json>, [">= 0.2.5"])
|
127
|
-
s.add_dependency(%q<ruote>, ["~> 2.1.11"])
|
128
|
-
end
|
129
|
-
else
|
130
|
-
s.add_dependency(%q<bundler>, [">= 0"])
|
131
|
-
s.add_dependency(%q<sinatra>, [">= 0"])
|
132
|
-
s.add_dependency(%q<sinatra-respond_to>, [">= 0"])
|
133
|
-
s.add_dependency(%q<haml>, [">= 0"])
|
134
|
-
s.add_dependency(%q<thin>, [">= 0"])
|
135
|
-
s.add_dependency(%q<yajl-ruby>, [">= 0"])
|
136
|
-
s.add_dependency(%q<rufus-json>, [">= 0.2.5"])
|
137
|
-
s.add_dependency(%q<ruote>, ["~> 2.1.11"])
|
138
|
-
end
|
26
|
+
s.add_runtime_dependency 'sinatra', '1.0'
|
27
|
+
s.add_runtime_dependency 'sinatra-respond_to', '0.5.0'
|
28
|
+
s.add_runtime_dependency 'haml', '3.0.25'
|
29
|
+
|
30
|
+
s.add_runtime_dependency 'rufus-json', '>= 0.2.5'
|
31
|
+
#s.add_runtime_dependency('ruote', s.version) unless defined?(Bundler)
|
32
|
+
s.add_runtime_dependency('ruote', '>= 2.2.0') unless defined?(Bundler)
|
33
|
+
# see Gemfile
|
34
|
+
|
35
|
+
s.add_development_dependency 'rspec', '2.4.0'
|
36
|
+
s.add_development_dependency 'rack-test', '0.5.7'
|
37
|
+
s.add_development_dependency 'webrat', '0.7.3'
|
38
|
+
|
39
|
+
s.require_path = 'lib'
|
139
40
|
end
|
140
41
|
|
@@ -1,12 +1,18 @@
|
|
1
1
|
|
2
|
-
require 'spec_helper'
|
3
|
-
|
4
|
-
undef :context if defined?(context)
|
2
|
+
require File.join(File.dirname(__FILE__), '..', 'spec_helper.rb')
|
5
3
|
|
6
4
|
|
7
5
|
describe 'without any running processes' do
|
8
6
|
|
9
|
-
|
7
|
+
before(:each) do
|
8
|
+
|
9
|
+
prepare_engine
|
10
|
+
end
|
11
|
+
|
12
|
+
after(:each) do
|
13
|
+
|
14
|
+
shutdown_and_purge_engine
|
15
|
+
end
|
10
16
|
|
11
17
|
describe 'GET /_ruote/errors' do
|
12
18
|
|
@@ -33,10 +39,10 @@ end
|
|
33
39
|
|
34
40
|
describe 'with a running process that has an error' do
|
35
41
|
|
36
|
-
it_has_an_engine_with_no_participants
|
37
|
-
|
38
42
|
before(:each) do
|
39
43
|
|
44
|
+
prepare_engine
|
45
|
+
|
40
46
|
RuoteKit.engine.register_participant :alice, Ruote::StorageParticipant
|
41
47
|
|
42
48
|
@wfid = RuoteKit.engine.launch(
|
@@ -51,6 +57,12 @@ describe 'with a running process that has an error' do
|
|
51
57
|
RuoteKit.engine.wait_for(@wfid)
|
52
58
|
|
53
59
|
@error = RuoteKit.engine.process(@wfid).errors.first
|
60
|
+
@fei = @error.fei
|
61
|
+
end
|
62
|
+
|
63
|
+
after(:each) do
|
64
|
+
|
65
|
+
shutdown_and_purge_engine
|
54
66
|
end
|
55
67
|
|
56
68
|
describe 'GET /_ruote/errors' do
|
@@ -109,7 +121,7 @@ describe 'with a running process that has an error' do
|
|
109
121
|
# the links for the error itself
|
110
122
|
|
111
123
|
json['errors'].first['links'].should == [
|
112
|
-
{ 'href' => "/_ruote/errors
|
124
|
+
{ 'href' => "/_ruote/errors/#{@fei.expid}!#{@fei.subid}!#{@wfid}",
|
113
125
|
'rel' => 'self' },
|
114
126
|
{ 'href' => "/_ruote/errors/#{@wfid}",
|
115
127
|
'rel' => 'http://ruote.rubyforge.org/rels.html#process_errors' },
|
@@ -143,7 +155,7 @@ describe 'with a running process that has an error' do
|
|
143
155
|
json['errors'].first['message'].should == "#<RuntimeError: unknown participant or subprocess 'nemo'>"
|
144
156
|
|
145
157
|
json['errors'].first['links'].should == [
|
146
|
-
{ 'href' => "/_ruote/errors
|
158
|
+
{ 'href' => "/_ruote/errors/#{@fei.expid}!#{@fei.subid}!#{@wfid}",
|
147
159
|
'rel' => 'self' },
|
148
160
|
{ 'href' => "/_ruote/errors/#{@wfid}",
|
149
161
|
'rel' => 'http://ruote.rubyforge.org/rels.html#process_errors' },
|
@@ -1,12 +1,18 @@
|
|
1
1
|
|
2
|
-
require 'spec_helper'
|
3
|
-
|
4
|
-
undef :context if defined?(context)
|
2
|
+
require File.join(File.dirname(__FILE__), '..', 'spec_helper.rb')
|
5
3
|
|
6
4
|
|
7
5
|
describe 'GET /_ruote/expressions' do
|
8
6
|
|
9
|
-
|
7
|
+
before(:each) do
|
8
|
+
|
9
|
+
prepare_engine
|
10
|
+
end
|
11
|
+
|
12
|
+
after(:each) do
|
13
|
+
|
14
|
+
shutdown_and_purge_engine
|
15
|
+
end
|
10
16
|
|
11
17
|
it 'should 404 (HTML)' do
|
12
18
|
|
@@ -18,12 +24,20 @@ end
|
|
18
24
|
|
19
25
|
describe 'GET /_ruote/expressions/wfid' do
|
20
26
|
|
21
|
-
|
27
|
+
before(:each) do
|
28
|
+
|
29
|
+
prepare_engine_with_participants
|
30
|
+
end
|
31
|
+
|
32
|
+
after(:each) do
|
33
|
+
|
34
|
+
shutdown_and_purge_engine
|
35
|
+
end
|
22
36
|
|
23
37
|
describe 'with running processes' do
|
24
38
|
|
25
39
|
before(:each) do
|
26
|
-
@wfid =
|
40
|
+
@wfid = launch_nada_process
|
27
41
|
end
|
28
42
|
|
29
43
|
it 'should render the expressions (HTML)' do
|
@@ -67,39 +81,67 @@ end
|
|
67
81
|
|
68
82
|
describe 'GET /_ruote/expressions/fei' do
|
69
83
|
|
70
|
-
|
84
|
+
before(:each) do
|
85
|
+
|
86
|
+
prepare_engine_with_participants
|
87
|
+
end
|
88
|
+
|
89
|
+
after(:each) do
|
90
|
+
|
91
|
+
shutdown_and_purge_engine
|
92
|
+
end
|
71
93
|
|
72
94
|
describe 'with running processes' do
|
73
95
|
|
74
96
|
before(:each) do
|
75
97
|
|
76
|
-
@wfid =
|
77
|
-
|
78
|
-
@
|
98
|
+
@wfid = launch_nada_process
|
99
|
+
@nada_fexp = RuoteKit.engine.process(@wfid).expressions.last
|
100
|
+
@nada_fei = @nada_fexp.fei
|
79
101
|
end
|
80
102
|
|
81
103
|
it 'should render the expression (HTML)' do
|
82
104
|
|
83
|
-
get "/_ruote/expressions/#{@
|
105
|
+
get "/_ruote/expressions/#{@nada_fei.sid}"
|
84
106
|
|
85
107
|
last_response.should be_ok
|
86
108
|
end
|
87
109
|
|
88
110
|
it 'should render the expression (JSON)' do
|
89
111
|
|
90
|
-
get "/_ruote/expressions/#{@
|
112
|
+
get "/_ruote/expressions/#{@nada_fei.sid}.json"
|
91
113
|
|
92
114
|
last_response.should be_ok
|
93
115
|
|
94
116
|
#puts Rufus::Json.pretty_encode(last_response.json_body)
|
95
117
|
|
96
|
-
last_response.json_body['expression']['links'].size.should
|
118
|
+
last_response.json_body['expression']['links'].size.should == 4
|
97
119
|
|
98
120
|
last_response.json_body['expression'].keys.sort.should == %w[
|
99
121
|
applied_workitem class fei links name original_tree parent
|
100
122
|
timeout_schedule_id tree variables
|
101
123
|
]
|
102
124
|
end
|
125
|
+
|
126
|
+
it 'should include an etag header (HTML)' do
|
127
|
+
|
128
|
+
get "/_ruote/expressions/#{@nada_fei.sid}"
|
129
|
+
|
130
|
+
last_response.headers.should include('ETag')
|
131
|
+
|
132
|
+
last_response.headers['ETag'].should ==
|
133
|
+
"\"#{@nada_fexp.to_h['_rev'].to_s}\""
|
134
|
+
end
|
135
|
+
|
136
|
+
it 'should include an etag header (JSON)' do
|
137
|
+
|
138
|
+
get "/_ruote/expressions/#{@nada_fei.sid}.json"
|
139
|
+
|
140
|
+
last_response.headers.should include('ETag')
|
141
|
+
|
142
|
+
last_response.headers['ETag'].should ==
|
143
|
+
"\"#{@nada_fexp.to_h['_rev'].to_s}\""
|
144
|
+
end
|
103
145
|
end
|
104
146
|
|
105
147
|
describe 'without running processes' do
|
@@ -125,16 +167,20 @@ describe 'GET /_ruote/expressions/fei' do
|
|
125
167
|
|
126
168
|
before(:each) do
|
127
169
|
|
170
|
+
register_participants
|
171
|
+
|
128
172
|
@wfid = RuoteKit.engine.launch(Ruote.define do
|
129
173
|
alpha :timeout => '2y'
|
130
174
|
end)
|
131
175
|
|
132
176
|
RuoteKit.engine.wait_for(:alpha)
|
177
|
+
|
178
|
+
@fei = RuoteKit.engine.process(@wfid).expressions.last.fei
|
133
179
|
end
|
134
180
|
|
135
181
|
it 'should render the expression (HTML)' do
|
136
182
|
|
137
|
-
get "/_ruote/expressions
|
183
|
+
get "/_ruote/expressions/#{@fei.expid}!#{@fei.subid}!#{@wfid}"
|
138
184
|
|
139
185
|
last_response.status.should be(200)
|
140
186
|
|
@@ -144,7 +190,7 @@ describe 'GET /_ruote/expressions/fei' do
|
|
144
190
|
|
145
191
|
it 'should render the expression (JSON)' do
|
146
192
|
|
147
|
-
get "/_ruote/expressions
|
193
|
+
get "/_ruote/expressions/#{@fei.expid}!#{@fei.subid}!#{@wfid}.json"
|
148
194
|
|
149
195
|
last_response.status.should be(200)
|
150
196
|
|
@@ -158,39 +204,43 @@ end
|
|
158
204
|
|
159
205
|
describe 'DELETE /_ruote/expressions/fei' do
|
160
206
|
|
161
|
-
|
207
|
+
before(:each) do
|
208
|
+
|
209
|
+
prepare_engine_with_participants
|
210
|
+
end
|
211
|
+
|
212
|
+
after(:each) do
|
213
|
+
|
214
|
+
shutdown_and_purge_engine
|
215
|
+
end
|
162
216
|
|
163
217
|
describe 'with running processes' do
|
164
218
|
|
165
219
|
before(:each) do
|
166
220
|
|
167
|
-
@wfid =
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
echo 'done'
|
172
|
-
end
|
173
|
-
|
174
|
-
define 'bail_out' do
|
175
|
-
sequence do
|
176
|
-
echo 'bailed'
|
177
|
-
end
|
178
|
-
end
|
221
|
+
@wfid = RuoteKit.engine.launch(Ruote.process_definition do
|
222
|
+
sequence do
|
223
|
+
alfred :on_cancel => 'bail_out'
|
224
|
+
echo 'done'
|
179
225
|
end
|
180
|
-
end
|
181
226
|
|
182
|
-
|
183
|
-
|
227
|
+
define 'bail_out' do
|
228
|
+
echo 'bailed'
|
229
|
+
end
|
230
|
+
end)
|
231
|
+
|
232
|
+
RuoteKit.engine.wait_for(:alfred)
|
233
|
+
|
234
|
+
@fei = engine.process(@wfid).expressions.last.fei
|
184
235
|
end
|
185
236
|
|
186
237
|
it 'should cancel the expressions (HTML)' do
|
187
238
|
|
188
|
-
delete "/_ruote/expressions/#{@
|
239
|
+
delete "/_ruote/expressions/#{@fei.sid}"
|
189
240
|
|
190
241
|
last_response.should be_redirect
|
191
242
|
last_response['Location'].should == "/_ruote/expressions/#{@wfid}"
|
192
243
|
|
193
|
-
#sleep 0.4
|
194
244
|
wait_for(@wfid)
|
195
245
|
|
196
246
|
@tracer.to_s.should == "bailed\ndone"
|
@@ -198,12 +248,11 @@ describe 'DELETE /_ruote/expressions/fei' do
|
|
198
248
|
|
199
249
|
it 'should cancel the expressions (JSON)' do
|
200
250
|
|
201
|
-
delete "/_ruote/expressions/#{@expid}
|
251
|
+
delete "/_ruote/expressions/#{@fei.expid}!#{@fei.subid}!#{@wfid}.json"
|
202
252
|
|
203
253
|
last_response.should be_ok
|
204
254
|
last_response.json_body['status'].should == 'ok'
|
205
255
|
|
206
|
-
#sleep 0.4
|
207
256
|
wait_for(@wfid)
|
208
257
|
|
209
258
|
@tracer.to_s.should == "bailed\ndone"
|
@@ -211,7 +260,7 @@ describe 'DELETE /_ruote/expressions/fei' do
|
|
211
260
|
|
212
261
|
it 'should kill the expression (HTML)' do
|
213
262
|
|
214
|
-
delete "/_ruote/expressions/#{@expid}
|
263
|
+
delete "/_ruote/expressions/#{@fei.expid}!#{@fei.subid}!#{@wfid}?_kill=1"
|
215
264
|
|
216
265
|
last_response.should be_redirect
|
217
266
|
last_response['Location'].should == "/_ruote/expressions/#{@wfid}"
|
@@ -224,7 +273,7 @@ describe 'DELETE /_ruote/expressions/fei' do
|
|
224
273
|
|
225
274
|
it 'should kill the expression (JSON)' do
|
226
275
|
|
227
|
-
delete "/_ruote/expressions/#{@expid}
|
276
|
+
delete "/_ruote/expressions/#{@fei.expid}!#{@fei.subid}!#{@wfid}.json?_kill=1"
|
228
277
|
|
229
278
|
last_response.should be_ok
|
230
279
|
last_response.json_body['status'].should == 'ok'
|
@@ -234,6 +283,62 @@ describe 'DELETE /_ruote/expressions/fei' do
|
|
234
283
|
|
235
284
|
@tracer.to_s.should == 'done'
|
236
285
|
end
|
286
|
+
|
287
|
+
it 'should 412 when the etags do not match (HTML)' do
|
288
|
+
|
289
|
+
delete(
|
290
|
+
"/_ruote/expressions/#{@fei.expid}!#{@fei.subid}!#{@wfid}",
|
291
|
+
nil,
|
292
|
+
{ 'HTTP_IF_MATCH' => '"foo"' }
|
293
|
+
)
|
294
|
+
|
295
|
+
last_response.status.should == 412
|
296
|
+
end
|
297
|
+
|
298
|
+
it 'should 412 when the etags do not match (JSON)' do
|
299
|
+
|
300
|
+
delete(
|
301
|
+
"/_ruote/expressions/#{@fei.expid}!#{@fei.subid}!#{@wfid}.json",
|
302
|
+
nil,
|
303
|
+
{
|
304
|
+
'HTTP_IF_MATCH' => '"foo"',
|
305
|
+
'CONTENT_TYPE' => 'application/json',
|
306
|
+
}
|
307
|
+
)
|
308
|
+
|
309
|
+
last_response.status.should == 412
|
310
|
+
end
|
311
|
+
|
312
|
+
it 'should not 412 when the etags do match (HTML)' do
|
313
|
+
exp = RuoteKit.engine.process(@wfid).expressions.find { |e|
|
314
|
+
e.fei.expid == @fei.expid
|
315
|
+
}
|
316
|
+
|
317
|
+
delete(
|
318
|
+
"/_ruote/expressions/#{@fei.expid}!#{@fei.subid}!#{@wfid}",
|
319
|
+
nil,
|
320
|
+
{ 'HTTP_IF_MATCH' => ('"%s"' % exp.to_h['_rev'] ) }
|
321
|
+
)
|
322
|
+
|
323
|
+
last_response.status.should_not == 412
|
324
|
+
end
|
325
|
+
|
326
|
+
it 'should not 412 when the etags do match (JSON)' do
|
327
|
+
exp = RuoteKit.engine.process(@wfid).expressions.find { |e|
|
328
|
+
e.fei.expid == @fei.expid
|
329
|
+
}
|
330
|
+
|
331
|
+
delete(
|
332
|
+
"/_ruote/expressions/#{@fei.expid}!#{@fei.subid}!#{@wfid}.json",
|
333
|
+
nil,
|
334
|
+
{
|
335
|
+
'HTTP_IF_MATCH' => ('"%s"' % exp.to_h['_rev'] ),
|
336
|
+
'CONTENT_TYPE' => 'application/json',
|
337
|
+
}
|
338
|
+
)
|
339
|
+
|
340
|
+
last_response.status.should_not == 412
|
341
|
+
end
|
237
342
|
end
|
238
343
|
|
239
344
|
describe 'without running processes' do
|
@@ -258,19 +363,26 @@ end
|
|
258
363
|
|
259
364
|
describe 'PUT /_ruote/expressions/fei' do
|
260
365
|
|
261
|
-
it_has_an_engine
|
262
|
-
|
263
366
|
before(:each) do
|
264
367
|
|
265
|
-
|
368
|
+
prepare_engine_with_participants
|
369
|
+
|
370
|
+
@wfid = RuoteKit.engine.launch(
|
371
|
+
|
266
372
|
Ruote.process_definition do
|
267
373
|
alpha
|
268
374
|
end
|
269
|
-
|
375
|
+
)
|
376
|
+
|
377
|
+
RuoteKit.engine.wait_for(:alpha)
|
378
|
+
RuoteKit.engine.wait_for(1)
|
379
|
+
|
380
|
+
@exp = RuoteKit.engine.process(@wfid).expressions.last
|
381
|
+
end
|
382
|
+
|
383
|
+
after(:each) do
|
270
384
|
|
271
|
-
|
272
|
-
e.fei.expid == '0_0'
|
273
|
-
}
|
385
|
+
shutdown_and_purge_engine
|
274
386
|
end
|
275
387
|
|
276
388
|
it 'should re-apply (HTML)' do
|
@@ -421,7 +533,7 @@ describe 'PUT /_ruote/expressions/fei' do
|
|
421
533
|
"/_ruote/expressions/#{@exp.fei.sid}",
|
422
534
|
:fields => "{bogus}")
|
423
535
|
|
424
|
-
last_response.status.should
|
536
|
+
last_response.status.should == 400
|
425
537
|
end
|
426
538
|
|
427
539
|
it 'should 400 when passed bogus JSON (JSON)' do
|
@@ -435,5 +547,59 @@ describe 'PUT /_ruote/expressions/fei' do
|
|
435
547
|
last_response.json_body['http_error']['code'].should == 400
|
436
548
|
last_response.json_body['http_error']['message'].should == 'bad request'
|
437
549
|
end
|
550
|
+
|
551
|
+
it 'should 412 when the etags do not match (HTML)' do
|
552
|
+
|
553
|
+
put(
|
554
|
+
"/_ruote/expressions/#{@exp.fei.sid}",
|
555
|
+
{ :fields => '{}' },
|
556
|
+
{ 'HTTP_IF_MATCH' => '"foo"' }
|
557
|
+
)
|
558
|
+
|
559
|
+
last_response.status.should == 412
|
560
|
+
end
|
561
|
+
|
562
|
+
it 'should 412 when the etags do not match (JSON)' do
|
563
|
+
|
564
|
+
put(
|
565
|
+
"/_ruote/expressions/#{@exp.fei.sid}",
|
566
|
+
Rufus::Json.encode({}),
|
567
|
+
{
|
568
|
+
'CONTENT_TYPE' => 'application/json',
|
569
|
+
'HTTP_IF_MATCH' => '"foo"'
|
570
|
+
}
|
571
|
+
)
|
572
|
+
|
573
|
+
last_response.status.should == 412
|
574
|
+
end
|
575
|
+
|
576
|
+
it 'should not 412 when the etags match (HTML)' do
|
577
|
+
|
578
|
+
rev = @exp.to_h['_rev']
|
579
|
+
|
580
|
+
put(
|
581
|
+
"/_ruote/expressions/#{@exp.fei.sid}",
|
582
|
+
{ :fields => '{}' },
|
583
|
+
{ 'HTTP_IF_MATCH' => ('"%s"' % rev) }
|
584
|
+
)
|
585
|
+
|
586
|
+
last_response.status.should_not == 412
|
587
|
+
end
|
588
|
+
|
589
|
+
it 'should not 412 when the etags match (JSON)' do
|
590
|
+
|
591
|
+
rev = @exp.to_h['_rev']
|
592
|
+
|
593
|
+
put(
|
594
|
+
"/_ruote/expressions/#{@exp.fei.sid}",
|
595
|
+
Rufus::Json.encode({}),
|
596
|
+
{
|
597
|
+
'CONTENT_TYPE' => 'application/json',
|
598
|
+
'HTTP_IF_MATCH' => ('"%s"' % rev )
|
599
|
+
}
|
600
|
+
)
|
601
|
+
|
602
|
+
last_response.status.should_not == 412
|
603
|
+
end
|
438
604
|
end
|
439
605
|
|
@@ -1,11 +1,9 @@
|
|
1
1
|
|
2
|
-
require 'spec_helper'
|
2
|
+
require File.join(File.dirname(__FILE__), '..', 'spec_helper.rb')
|
3
3
|
|
4
4
|
|
5
5
|
describe 'GET /' do
|
6
6
|
|
7
|
-
it_has_an_engine
|
8
|
-
|
9
7
|
it 'should return a welcome message in HTML be default' do
|
10
8
|
|
11
9
|
get '/_ruote'
|
@@ -34,8 +32,6 @@ end
|
|
34
32
|
|
35
33
|
describe 'Generic error handling' do
|
36
34
|
|
37
|
-
it_has_an_engine
|
38
|
-
|
39
35
|
it 'should give our own 404 page (HTML)' do
|
40
36
|
|
41
37
|
get '/kenneth'
|