simple_workflow 2.0.0 → 2.2.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
  SHA256:
3
- metadata.gz: 4993c8e2332ed3f15e61401f237d0a6ae5ece68f6ec01a7e3ca76768dcecef99
4
- data.tar.gz: 4f47b26cc397e2aa98dbb144543e2f014c8d4eb9332ce9479309fc513d01123e
3
+ metadata.gz: e889d098f3df6a6fb2b8616fe94dd78df26fcb39eefdbef76058f63243ea7009
4
+ data.tar.gz: aca8036b62d9b076aeb7134957141c61bb31da1bf6e748c95f183dc6006cafb4
5
5
  SHA512:
6
- metadata.gz: 2e29e8b81b08ba503a1e9476f8a38f7fb39c79d7c58c62e82865d310e89790c04a07a0d7e633995c5d8066d6eeb379c2fdfcaebf52615be3d9d525c81b06cbf1
7
- data.tar.gz: a0f9d242235367349ef8da0af26b438c319c48e4ca8629ecee419d61af5d7f100ac8df92c01b8bef98fa6ddfd44a320b0cc0cd3f6db39fd66f4f64035df7e6ad
6
+ metadata.gz: 7de279f421829e2aba3a9401ddf26925f9dad573f531753a562d7abd552bf0b2f65a487f8906d1335e5a40dadd6f45a3b72137be06a7378fa2f9bec9d8e1f0e5
7
+ data.tar.gz: 3801dd96ab9190e4c2f008dc3c75e03a2f90b02459ffbb4517c1de8a92dee6505eebbe216a88434cb530d363114ae3042f6efe0c0f635fc1b5828b15750e65dd
data/Gemfile.lock CHANGED
@@ -1,179 +1,198 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- simple_workflow (2.0.0)
5
- rails (>= 4.2, < 6.1)
4
+ simple_workflow (2.2.0)
5
+ rails (>= 6.2, < 8)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
- actioncable (6.0.2.1)
11
- actionpack (= 6.0.2.1)
10
+ actioncable (7.0.2.2)
11
+ actionpack (= 7.0.2.2)
12
+ activesupport (= 7.0.2.2)
12
13
  nio4r (~> 2.0)
13
14
  websocket-driver (>= 0.6.1)
14
- actionmailbox (6.0.2.1)
15
- actionpack (= 6.0.2.1)
16
- activejob (= 6.0.2.1)
17
- activerecord (= 6.0.2.1)
18
- activestorage (= 6.0.2.1)
19
- activesupport (= 6.0.2.1)
15
+ actionmailbox (7.0.2.2)
16
+ actionpack (= 7.0.2.2)
17
+ activejob (= 7.0.2.2)
18
+ activerecord (= 7.0.2.2)
19
+ activestorage (= 7.0.2.2)
20
+ activesupport (= 7.0.2.2)
20
21
  mail (>= 2.7.1)
21
- actionmailer (6.0.2.1)
22
- actionpack (= 6.0.2.1)
23
- actionview (= 6.0.2.1)
24
- activejob (= 6.0.2.1)
22
+ net-imap
23
+ net-pop
24
+ net-smtp
25
+ actionmailer (7.0.2.2)
26
+ actionpack (= 7.0.2.2)
27
+ actionview (= 7.0.2.2)
28
+ activejob (= 7.0.2.2)
29
+ activesupport (= 7.0.2.2)
25
30
  mail (~> 2.5, >= 2.5.4)
31
+ net-imap
32
+ net-pop
33
+ net-smtp
26
34
  rails-dom-testing (~> 2.0)
27
- actionpack (6.0.2.1)
28
- actionview (= 6.0.2.1)
29
- activesupport (= 6.0.2.1)
30
- rack (~> 2.0, >= 2.0.8)
35
+ actionpack (7.0.2.2)
36
+ actionview (= 7.0.2.2)
37
+ activesupport (= 7.0.2.2)
38
+ rack (~> 2.0, >= 2.2.0)
31
39
  rack-test (>= 0.6.3)
32
40
  rails-dom-testing (~> 2.0)
33
41
  rails-html-sanitizer (~> 1.0, >= 1.2.0)
34
- actiontext (6.0.2.1)
35
- actionpack (= 6.0.2.1)
36
- activerecord (= 6.0.2.1)
37
- activestorage (= 6.0.2.1)
38
- activesupport (= 6.0.2.1)
42
+ actiontext (7.0.2.2)
43
+ actionpack (= 7.0.2.2)
44
+ activerecord (= 7.0.2.2)
45
+ activestorage (= 7.0.2.2)
46
+ activesupport (= 7.0.2.2)
47
+ globalid (>= 0.6.0)
39
48
  nokogiri (>= 1.8.5)
40
- actionview (6.0.2.1)
41
- activesupport (= 6.0.2.1)
49
+ actionview (7.0.2.2)
50
+ activesupport (= 7.0.2.2)
42
51
  builder (~> 3.1)
43
52
  erubi (~> 1.4)
44
53
  rails-dom-testing (~> 2.0)
45
54
  rails-html-sanitizer (~> 1.1, >= 1.2.0)
46
- activejob (6.0.2.1)
47
- activesupport (= 6.0.2.1)
55
+ activejob (7.0.2.2)
56
+ activesupport (= 7.0.2.2)
48
57
  globalid (>= 0.3.6)
49
- activemodel (6.0.2.1)
50
- activesupport (= 6.0.2.1)
51
- activerecord (6.0.2.1)
52
- activemodel (= 6.0.2.1)
53
- activesupport (= 6.0.2.1)
54
- activestorage (6.0.2.1)
55
- actionpack (= 6.0.2.1)
56
- activejob (= 6.0.2.1)
57
- activerecord (= 6.0.2.1)
58
- marcel (~> 0.3.1)
59
- activesupport (6.0.2.1)
58
+ activemodel (7.0.2.2)
59
+ activesupport (= 7.0.2.2)
60
+ activerecord (7.0.2.2)
61
+ activemodel (= 7.0.2.2)
62
+ activesupport (= 7.0.2.2)
63
+ activestorage (7.0.2.2)
64
+ actionpack (= 7.0.2.2)
65
+ activejob (= 7.0.2.2)
66
+ activerecord (= 7.0.2.2)
67
+ activesupport (= 7.0.2.2)
68
+ marcel (~> 1.0)
69
+ mini_mime (>= 1.1.0)
70
+ activesupport (7.0.2.2)
60
71
  concurrent-ruby (~> 1.0, >= 1.0.2)
61
- i18n (>= 0.7, < 2)
62
- minitest (~> 5.1)
63
- tzinfo (~> 1.1)
64
- zeitwerk (~> 2.2)
65
- ansi (1.5.0)
66
- ast (2.4.0)
72
+ i18n (>= 1.6, < 2)
73
+ minitest (>= 5.1)
74
+ tzinfo (~> 2.0)
75
+ ast (2.4.2)
67
76
  builder (3.2.4)
68
- concurrent-ruby (1.1.5)
69
- crass (1.0.5)
70
- docile (1.3.2)
71
- erubi (1.9.0)
72
- globalid (0.4.2)
73
- activesupport (>= 4.2.0)
74
- i18n (1.7.0)
77
+ concurrent-ruby (1.1.9)
78
+ crass (1.0.6)
79
+ digest (3.1.0)
80
+ docile (1.4.0)
81
+ erubi (1.10.0)
82
+ globalid (1.0.0)
83
+ activesupport (>= 5.0)
84
+ i18n (1.10.0)
75
85
  concurrent-ruby (~> 1.0)
76
- jaro_winkler (1.5.4)
77
- json (2.3.0)
78
- loofah (2.4.0)
86
+ io-wait (0.2.1)
87
+ loofah (2.14.0)
79
88
  crass (~> 1.0.2)
80
89
  nokogiri (>= 1.5.9)
81
90
  mail (2.7.1)
82
91
  mini_mime (>= 0.1.1)
83
- marcel (0.3.3)
84
- mimemagic (~> 0.3.2)
85
- method_source (0.9.2)
86
- mimemagic (0.3.3)
87
- mini_mime (1.0.2)
88
- mini_portile2 (2.4.0)
89
- minitest (5.13.0)
90
- minitest-reporters (1.4.2)
91
- ansi
92
- builder
93
- minitest (>= 5.0)
94
- ruby-progressbar
95
- nio4r (2.5.2)
96
- nokogiri (1.10.7)
97
- mini_portile2 (~> 2.4.0)
98
- parallel (1.19.1)
99
- parser (2.7.0.1)
100
- ast (~> 2.4.0)
101
- rack (2.0.8)
92
+ marcel (1.0.2)
93
+ method_source (1.0.0)
94
+ mini_mime (1.1.2)
95
+ minitest (5.15.0)
96
+ net-imap (0.2.3)
97
+ digest
98
+ net-protocol
99
+ strscan
100
+ net-pop (0.1.1)
101
+ digest
102
+ net-protocol
103
+ timeout
104
+ net-protocol (0.1.2)
105
+ io-wait
106
+ timeout
107
+ net-smtp (0.3.1)
108
+ digest
109
+ net-protocol
110
+ timeout
111
+ nio4r (2.5.8)
112
+ nokogiri (1.13.3-x86_64-darwin)
113
+ racc (~> 1.4)
114
+ parallel (1.21.0)
115
+ parser (3.1.1.0)
116
+ ast (~> 2.4.1)
117
+ racc (1.6.0)
118
+ rack (2.2.3)
102
119
  rack-test (1.1.0)
103
120
  rack (>= 1.0, < 3)
104
- rails (6.0.2.1)
105
- actioncable (= 6.0.2.1)
106
- actionmailbox (= 6.0.2.1)
107
- actionmailer (= 6.0.2.1)
108
- actionpack (= 6.0.2.1)
109
- actiontext (= 6.0.2.1)
110
- actionview (= 6.0.2.1)
111
- activejob (= 6.0.2.1)
112
- activemodel (= 6.0.2.1)
113
- activerecord (= 6.0.2.1)
114
- activestorage (= 6.0.2.1)
115
- activesupport (= 6.0.2.1)
116
- bundler (>= 1.3.0)
117
- railties (= 6.0.2.1)
118
- sprockets-rails (>= 2.0.0)
121
+ rails (7.0.2.2)
122
+ actioncable (= 7.0.2.2)
123
+ actionmailbox (= 7.0.2.2)
124
+ actionmailer (= 7.0.2.2)
125
+ actionpack (= 7.0.2.2)
126
+ actiontext (= 7.0.2.2)
127
+ actionview (= 7.0.2.2)
128
+ activejob (= 7.0.2.2)
129
+ activemodel (= 7.0.2.2)
130
+ activerecord (= 7.0.2.2)
131
+ activestorage (= 7.0.2.2)
132
+ activesupport (= 7.0.2.2)
133
+ bundler (>= 1.15.0)
134
+ railties (= 7.0.2.2)
119
135
  rails-dom-testing (2.0.3)
120
136
  activesupport (>= 4.2.0)
121
137
  nokogiri (>= 1.6)
122
- rails-html-sanitizer (1.3.0)
138
+ rails-html-sanitizer (1.4.2)
123
139
  loofah (~> 2.3)
124
- railties (6.0.2.1)
125
- actionpack (= 6.0.2.1)
126
- activesupport (= 6.0.2.1)
140
+ railties (7.0.2.2)
141
+ actionpack (= 7.0.2.2)
142
+ activesupport (= 7.0.2.2)
127
143
  method_source
128
- rake (>= 0.8.7)
129
- thor (>= 0.20.3, < 2.0)
130
- rainbow (3.0.0)
131
- rake (13.0.1)
132
- rubocop (0.78.0)
133
- jaro_winkler (~> 1.5.1)
144
+ rake (>= 12.2)
145
+ thor (~> 1.0)
146
+ zeitwerk (~> 2.5)
147
+ rainbow (3.1.1)
148
+ rake (13.0.6)
149
+ regexp_parser (2.2.1)
150
+ rexml (3.2.5)
151
+ rubocop (1.25.1)
134
152
  parallel (~> 1.10)
135
- parser (>= 2.6)
153
+ parser (>= 3.1.0.0)
136
154
  rainbow (>= 2.2.2, < 4.0)
155
+ regexp_parser (>= 1.8, < 3.0)
156
+ rexml
157
+ rubocop-ast (>= 1.15.1, < 2.0)
137
158
  ruby-progressbar (~> 1.7)
138
- unicode-display_width (>= 1.4.0, < 1.7)
139
- rubocop-performance (1.5.2)
140
- rubocop (>= 0.71.0)
141
- rubocop-rails (2.4.1)
159
+ unicode-display_width (>= 1.4.0, < 3.0)
160
+ rubocop-ast (1.16.0)
161
+ parser (>= 3.1.1.0)
162
+ rubocop-performance (1.13.2)
163
+ rubocop (>= 1.7.0, < 2.0)
164
+ rubocop-ast (>= 0.4.0)
165
+ rubocop-rails (2.13.2)
166
+ activesupport (>= 4.2.0)
142
167
  rack (>= 1.1)
143
- rubocop (>= 0.72.0)
144
- ruby-progressbar (1.10.1)
145
- simplecov (0.17.1)
168
+ rubocop (>= 1.7.0, < 2.0)
169
+ ruby-progressbar (1.11.0)
170
+ simplecov (0.21.2)
146
171
  docile (~> 1.1)
147
- json (>= 1.8, < 3)
148
- simplecov-html (~> 0.10.0)
149
- simplecov-html (0.10.2)
150
- sprockets (4.0.0)
172
+ simplecov-html (~> 0.11)
173
+ simplecov_json_formatter (~> 0.1)
174
+ simplecov-html (0.12.3)
175
+ simplecov_json_formatter (0.1.4)
176
+ strscan (3.0.1)
177
+ thor (1.2.1)
178
+ timeout (0.2.0)
179
+ tzinfo (2.0.4)
151
180
  concurrent-ruby (~> 1.0)
152
- rack (> 1, < 3)
153
- sprockets-rails (3.2.1)
154
- actionpack (>= 4.0)
155
- activesupport (>= 4.0)
156
- sprockets (>= 3.0.0)
157
- thor (1.0.1)
158
- thread_safe (0.3.6)
159
- tzinfo (1.2.6)
160
- thread_safe (~> 0.1)
161
- unicode-display_width (1.6.0)
162
- websocket-driver (0.7.1)
181
+ unicode-display_width (2.1.0)
182
+ websocket-driver (0.7.5)
163
183
  websocket-extensions (>= 0.1.0)
164
- websocket-extensions (0.1.4)
165
- zeitwerk (2.2.2)
184
+ websocket-extensions (0.1.5)
185
+ zeitwerk (2.5.4)
166
186
 
167
187
  PLATFORMS
168
188
  ruby
169
189
 
170
190
  DEPENDENCIES
171
- minitest-reporters (~> 1.0)
172
- rubocop (~> 0.49)
191
+ rubocop (~> 1.0)
173
192
  rubocop-performance (~> 1.5)
174
193
  rubocop-rails (~> 2.4)
175
194
  simple_workflow!
176
195
  simplecov (~> 0.9)
177
196
 
178
197
  BUNDLED WITH
179
- 1.17.3
198
+ 2.3.5
data/Rakefile CHANGED
@@ -3,7 +3,7 @@
3
3
  require 'rake'
4
4
  require 'rake/clean'
5
5
  require 'rake/testtask'
6
- require File.dirname(__FILE__) + '/lib/simple_workflow/version'
6
+ require "#{File.dirname(__FILE__)}/lib/simple_workflow/version"
7
7
 
8
8
  GEM_FILE = "simple_workflow-#{SimpleWorkflow::VERSION}.gem"
9
9
  GEM_SPEC_FILE = 'simple_workflow.gemspec'
@@ -31,6 +31,7 @@ module SimpleWorkflow::Controller
31
31
 
32
32
  def back(response_status_and_flash)
33
33
  return false if session[:detours].nil?
34
+
34
35
  detour = pop_detour(session)
35
36
  post = detour.delete(:request_method) == :post
36
37
  if post
@@ -58,6 +59,7 @@ module SimpleWorkflow::Controller
58
59
  end
59
60
 
60
61
  return unless (other_flashes = response_status_and_flash.delete(:flash))
62
+
61
63
  flash.update(other_flashes)
62
64
  end
63
65
  private :save_flash
@@ -71,6 +73,6 @@ module SimpleWorkflow::Controller
71
73
  </form>
72
74
  </body>
73
75
  </html>
74
- HTML
76
+ HTML
75
77
  end
76
78
  end
@@ -21,8 +21,9 @@ module SimpleWorkflow::Detour
21
21
  def pop_detour(session, origin_options = nil)
22
22
  detours = session[:detours]
23
23
  return nil unless detours
24
+
24
25
  detour = detours.delete(origin_options) || detours.pop
25
- Rails.logger.debug "popped detour: #{detour.inspect} #{session[:detours].size} more"
26
+ Rails.logger.debug { "popped detour: #{detour.inspect} #{session[:detours].size} more" }
26
27
  reset_workflow(session) if detours.empty?
27
28
  detour
28
29
  end
@@ -44,7 +44,7 @@ module SimpleWorkflow::Helper
44
44
  end
45
45
  origin.update(origin_options) if origin.keys == [:anchor]
46
46
  url = url_for(options)
47
- url + (url =~ /\?/ ? '&' : '?') + origin.to_h.to_param('detour')
47
+ url + (/\?/.match?(url) ? '&' : '?') + origin.to_h.to_param('detour')
48
48
  end
49
49
 
50
50
  def origin_options
@@ -58,9 +58,10 @@ module SimpleWorkflow::Helper
58
58
  end
59
59
 
60
60
  def image_link_to(image_source, title, url_options, image_options = nil, link_options = nil)
61
- if link_options == true
61
+ case link_options
62
+ when true
62
63
  link_options = { method: :post }
63
- elsif link_options == false
64
+ when false
64
65
  link_options = nil
65
66
  end
66
67
  image_options ||= { class: 'image-submit' }
@@ -70,9 +71,10 @@ module SimpleWorkflow::Helper
70
71
 
71
72
  def image_link_to_remote(image_source, title, link_options, image_options = nil,
72
73
  html_options = {})
73
- if html_options == true
74
+ case html_options
75
+ when true
74
76
  html_options = { method: :post }
75
- elsif html_options == false
77
+ when false
76
78
  html_options = {}
77
79
  end
78
80
  image_options ||= { class: 'image-submit' }
@@ -42,7 +42,8 @@ class SimpleWorkflow::Middleware
42
42
  end
43
43
 
44
44
  def remove_old_detours(env)
45
- return unless session(env).instance_variable_get('@by').is_a?(ActionDispatch::Session::CookieStore)
45
+ return unless session(env).instance_variable_get(:@by).is_a?(ActionDispatch::Session::CookieStore)
46
+
46
47
  session_size = workflow_size = nil
47
48
  session = session(env)
48
49
  cookie_jar = cookie_jar(env)
@@ -53,7 +54,8 @@ class SimpleWorkflow::Middleware
53
54
  wf_ser_val = serialize_session(cookie_jar, session[:detours])
54
55
  workflow_size = encryptor.encrypt_and_sign(wf_ser_val).size
55
56
  break unless workflow_size >= 2048 ||
56
- (session_size >= 3072 && session[:detours] && !session[:detours].empty?)
57
+ (session_size >= 3072 && session[:detours] && !session[:detours].empty?)
58
+
57
59
  Rails.logger.warn("Workflow too large (#{workflow_size}/#{session_size}). Dropping oldest detour.")
58
60
  session[:detours].shift
59
61
  reset_workflow(session) if session[:detours].empty?
@@ -62,6 +64,7 @@ class SimpleWorkflow::Middleware
62
64
  session: #{session_size} bytes, workflow(#{session[:detours].try(:size) || 0}): #{workflow_size} bytes
63
65
  MSG
64
66
  return unless session_size > 4096
67
+
65
68
  Rails.logger.warn <<-MSG.strip_heredoc
66
69
  simple_workflow: session exceeds cookie size limit: #{session_size} bytes. Workflow empty! Not My Fault!
67
70
  MSG
@@ -71,6 +74,7 @@ class SimpleWorkflow::Middleware
71
74
 
72
75
  def remove_discarded_flashes(session)
73
76
  return unless (old_flashes = session[:flash] && session[:flash]['discard'])
77
+
74
78
  Rails.logger.warn <<-MSG.strip_heredoc
75
79
  simple_workflow: found discarded flash entries: #{old_flashes}. Deleting them.
76
80
  MSG
@@ -90,8 +94,10 @@ class SimpleWorkflow::Middleware
90
94
 
91
95
  def encryptor(env)
92
96
  return @simple_workflow_encryptor if @simple_workflow_encryptor
97
+
93
98
  @simple_workflow_encryptor = cookie_jar(env).instance_variable_get(:@encryptor)
94
99
  return @simple_workflow_encryptor if @simple_workflow_encryptor
100
+
95
101
  Rails.logger.warn 'simple_workflow: Could not get encryptor from the cookie jar'
96
102
  secret_key_base = Rails.application.config.secret_key_base || Rails.application.config.secret_token ||
97
103
  SecureRandom.hex(64)
@@ -105,6 +111,7 @@ class SimpleWorkflow::Middleware
105
111
  def store_detour_from_params(env)
106
112
  store_detour_in_session(session(env), params(env)[:detour]) if params(env)[:detour]
107
113
  return unless params(env)[:return_from_detour] && session(env)[:detours]
114
+
108
115
  params_hash = params(env).to_h.reject { |k, _v| %i[detour return_from_detour].include? k.to_sym }
109
116
  pop_detour(session(env), params_hash)
110
117
  end
@@ -7,14 +7,14 @@ module SimpleWorkflow
7
7
  app.middleware.insert_before ActionDispatch::Flash, SimpleWorkflow::Middleware
8
8
 
9
9
  # Make workflow test utility methods available in views
10
- ActionView::Base.send :include, SimpleWorkflow::Helper
10
+ ActionView::Base.include SimpleWorkflow::Helper
11
11
 
12
12
  # Make workflow test utility methods available in controllers
13
- ActionController::Base.send :include, SimpleWorkflow::Helper
14
- ActionController::Base.send :include, SimpleWorkflow::Controller
13
+ ActionController::Base.include SimpleWorkflow::Helper
14
+ ActionController::Base.include SimpleWorkflow::Controller
15
15
 
16
16
  # Make workflow test utility methods available in ActiveSupport test cases
17
- ActiveSupport::TestCase.send :include, SimpleWorkflow::TestHelper
17
+ ActiveSupport::TestCase.include SimpleWorkflow::TestHelper
18
18
  end
19
19
  end
20
20
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SimpleWorkflow
4
- VERSION = '2.0.0'
4
+ VERSION = '2.2.0'
5
5
  end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rake'
4
+ require './lib/simple_workflow/version'
5
+ require 'date'
6
+
7
+ Gem::Specification.new do |s|
8
+ s.name = 'simple_workflow'
9
+ s.version = SimpleWorkflow::VERSION
10
+ s.authors = ['Uwe Kubosch']
11
+ s.email = 'uwe@kubosch.no'
12
+ s.summary = 'Add simple breadcrumbs "detour" workflow to Ruby On Rails.'
13
+ s.homepage = 'https://github.com/donv/simple_workflow'
14
+ s.description = 'Expands Ruby on Rails to allow simple breadcrumb detour workflows.'
15
+ s.required_ruby_version = '>= 2.5', '<4'
16
+ s.licenses = %w[MIT]
17
+ s.files = FileList['[A-Z]*', 'lib/**/*', 'test/**/*'].to_a
18
+
19
+ s.add_runtime_dependency('rails', '>=6.2', '<8')
20
+
21
+ s.add_development_dependency('rubocop', '~>1.0')
22
+ s.add_development_dependency('rubocop-performance', '~>1.5')
23
+ s.add_development_dependency('rubocop-rails', '~>2.4')
24
+ s.add_development_dependency('simplecov', '~>0.9')
25
+ s.metadata['rubygems_mfa_required'] = 'true'
26
+ end
@@ -18,7 +18,7 @@ class ControllerTest < MiniTest::Test
18
18
  @session = {}
19
19
  @bad_route = false
20
20
  # TODO(uwe): Remove when we stop testing Rails 4.1
21
- Rails.app_class = TestApp if Rails.version !~ /^4\.1\./
21
+ Rails.app_class = TestApp unless /^4\.1\./.match?(Rails.version)
22
22
  # ODOT
23
23
  end
24
24
 
data/test/helper_test.rb CHANGED
@@ -9,19 +9,26 @@ class HelperTest < MiniTest::Test
9
9
 
10
10
  def test_with_detour
11
11
  assert_equal '?detour%5Baction%5D=myaction&detour%5Bcontroller%5D=mycontroller&detour%5Bid%5D=42' \
12
- '&detour%5Bquery%5D%5Bnested%5D=criterium',
13
- with_detour('')
12
+ '&detour%5Bquery%5D%5Bnested%5D=criterium',
13
+ with_detour('')
14
14
  end
15
15
 
16
16
  def test_with_detour_with_origin
17
17
  assert_equal '?detour%5Baction%5D=index&detour%5Bcontroller%5D=dashboard',
18
- with_detour('', controller: :dashboard, action: :index)
18
+ with_detour('', controller: :dashboard, action: :index)
19
19
  end
20
20
 
21
21
  def test_with_detour_with_only_anchor_as_origin
22
22
  assert_equal '?detour%5Baction%5D=myaction&detour%5Banchor%5D=tab_2' \
23
- '&detour%5Bcontroller%5D=mycontroller&detour%5Bid%5D=42&detour%5Bquery%5D%5Bnested%5D=criterium',
24
- with_detour('', anchor: :tab_2)
23
+ '&detour%5Bcontroller%5D=mycontroller&detour%5Bid%5D=42' \
24
+ '&detour%5Bquery%5D%5Bnested%5D=criterium',
25
+ with_detour('', anchor: :tab_2)
26
+ end
27
+
28
+ module SimpleWorkflow::Controller
29
+ def self.binary_params_for?(_action)
30
+ false
31
+ end
25
32
  end
26
33
 
27
34
  def test_with_detour_with_string_origin
@@ -32,8 +39,8 @@ class HelperTest < MiniTest::Test
32
39
  end
33
40
 
34
41
  assert_equal '?detour%5Baction%5D=index&detour%5Banchor%5D=tab_2' \
35
- '&detour%5Bcontroller%5D=simple_workflow%2F&detour%5Bhullo%5D=1',
36
- with_detour('', '/dashboard/index?hullo=1#tab_2')
42
+ '&detour%5Bcontroller%5D=simple_workflow%2F&detour%5Bhullo%5D=1',
43
+ with_detour('', '/dashboard/index?hullo=1#tab_2')
37
44
  ensure
38
45
  Rails.application = nil
39
46
  end
@@ -42,10 +49,10 @@ class HelperTest < MiniTest::Test
42
49
  assert_equal [
43
50
  'Link Text',
44
51
  'Link target?detour%5Baction%5D=myaction&detour%5Bcontroller%5D=mycontroller&detour%5Bid%5D=42' \
45
- '&detour%5Bquery%5D%5Bnested%5D=criterium',
52
+ '&detour%5Bquery%5D%5Bnested%5D=criterium',
46
53
  { id: 'link_tag_id', title: 'Link title' },
47
54
  ],
48
- detour_to('Link Text', 'Link target', id: 'link_tag_id', title: 'Link title')
55
+ detour_to('Link Text', 'Link target', id: 'link_tag_id', title: 'Link title')
49
56
  end
50
57
 
51
58
  def test_image_button_to
@@ -56,26 +63,27 @@ class HelperTest < MiniTest::Test
56
63
  onclick: "form.action='{:id=>\"image_tag_id\"}'"
57
64
  }
58
65
  ],
59
- image_button_to('my_image.png', 'Link Title', { id: 'image_tag_id' }, title: 'Image title')
66
+ image_button_to('my_image.png', 'Link Title', { id: 'image_tag_id' },
67
+ title: 'Image title')
60
68
  end
61
69
 
62
70
  def test_image_link_to
63
71
  assert_equal [
64
72
  ['my_image.png', { title: 'Link Title', alt: 'Link Title' }], { id: 'image_tag_id' }, nil
65
73
  ],
66
- image_link_to('my_image.png', 'Link Title', { id: 'image_tag_id' }, title: 'Image title')
74
+ image_link_to('my_image.png', 'Link Title', { id: 'image_tag_id' }, title: 'Image title')
67
75
  end
68
76
 
69
77
  def test_back_or_link_to
70
78
  assert_equal ['Link title', { controller: :mycontroller, action: :my_action }, nil],
71
- back_or_link_to('Link title', controller: :mycontroller, action: :my_action)
79
+ back_or_link_to('Link title', controller: :mycontroller, action: :my_action)
72
80
  end
73
81
 
74
82
  def test_back_or_link_to_with_routing_error
75
83
  @session = { detours: [{ controller: :does_not_exist }] }
76
84
  @routing_error = ActionController::UrlGenerationError
77
85
  assert_equal ['Link title', { controller: :mycontroller, action: :my_action }, nil],
78
- back_or_link_to('Link title', controller: :mycontroller, action: :my_action)
86
+ back_or_link_to('Link title', controller: :mycontroller, action: :my_action)
79
87
  end
80
88
 
81
89
  private
@@ -87,7 +95,7 @@ class HelperTest < MiniTest::Test
87
95
  def params
88
96
  ActionController::Parameters.new(
89
97
  controller: 'mycontroller', action: 'myaction', id: 42, query: { nested: 'criterium' }
90
- )
98
+ )
91
99
  end
92
100
 
93
101
  def session
@@ -102,7 +110,7 @@ class HelperTest < MiniTest::Test
102
110
  if defined?(@routing_error) && @routing_error
103
111
  e = @routing_error
104
112
  @routing_error = nil
105
- raise e
113
+ raise e, 'Error'
106
114
  end
107
115
  options
108
116
  end
@@ -45,11 +45,13 @@ class MiddlewareTest < MiniTest::Test
45
45
  _, env, = @stack.call env_for('/?detour[controller]=test_first')
46
46
  (50..99).each do |i|
47
47
  next_env = env_for("/?detour[controller]=test_#{i}",
48
- 'rack.session' => env['rack.session'], 'rack.session.options' => env['rack.session.options'])
48
+ 'rack.session' => env['rack.session'],
49
+ 'rack.session.options' => env['rack.session.options'])
49
50
  _, env, = @stack.call next_env
50
51
  end
51
52
  last_env = env_for('/?detour[controller]=test_last',
52
- 'rack.session' => env['rack.session'], 'rack.session.options' => env['rack.session.options'])
53
+ 'rack.session' => env['rack.session'],
54
+ 'rack.session.options' => env['rack.session.options'])
53
55
  status, env, response = @stack.call last_env
54
56
 
55
57
  assert_equal 200, status
@@ -57,7 +59,7 @@ class MiddlewareTest < MiniTest::Test
57
59
  assert_equal(%w[session_id detours], env['rack.session'].to_hash.keys)
58
60
 
59
61
  assert_equal(((57..99).to_a + [:last]).map { |i| { 'controller' => "test_#{i}" } },
60
- env['rack.session'].to_hash['detours'])
62
+ env['rack.session'].to_hash['detours'])
61
63
  end
62
64
 
63
65
  def test_huge_detour_over_4k
@@ -77,8 +79,8 @@ class MiddlewareTest < MiniTest::Test
77
79
  def test_return_from_detour
78
80
  _, headers1, = @stack.call env_for('/?detour[controller]=test_first')
79
81
  env = env_for('/?return_from_detour=true',
80
- 'rack.session' => headers1['rack.session'],
81
- 'rack.session.options' => headers1['rack.session.options'])
82
+ 'rack.session' => headers1['rack.session'],
83
+ 'rack.session.options' => headers1['rack.session.options'])
82
84
  status, headers, response = @stack.call env
83
85
 
84
86
  assert_equal 200, status
@@ -99,7 +101,7 @@ class MiddlewareTest < MiniTest::Test
99
101
  ActionDispatch::Cookies::GENERATOR_KEY => ActiveSupport::KeyGenerator.new('secret'),
100
102
  ActionDispatch::Cookies::SECRET_KEY_BASE => 'secret',
101
103
  }
102
- if Rails.version =~ /^5\.2\./
104
+ if /^5\.2\./.match?(Rails.version)
103
105
  default_opts[ActionDispatch::Cookies::COOKIES_ROTATIONS] = Struct.new(:encrypted).new([])
104
106
  end
105
107
  Rack::MockRequest.env_for(url, default_opts.update(opts))
data/test/test_helper.rb CHANGED
@@ -8,9 +8,13 @@ SimpleCov.start do
8
8
  minimum_coverage 76
9
9
  end
10
10
  require 'minitest/autorun'
11
- require 'minitest/reporters'
12
- MiniTest::Reporters.use!
13
11
  require 'rails'
14
12
  require 'simple_workflow'
15
13
 
16
14
  FileUtils.mkdir_p File.expand_path '../log', __dir__
15
+
16
+ module SimpleWorkflow::Controller
17
+ def self.action_encoding_template(_action)
18
+ false
19
+ end
20
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple_workflow
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Uwe Kubosch
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-01-02 00:00:00.000000000 Z
11
+ date: 2022-03-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -16,22 +16,22 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '4.2'
19
+ version: '6.2'
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: '6.1'
22
+ version: '8'
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - ">="
28
28
  - !ruby/object:Gem::Version
29
- version: '4.2'
29
+ version: '6.2'
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: '6.1'
32
+ version: '8'
33
33
  - !ruby/object:Gem::Dependency
34
- name: minitest-reporters
34
+ name: rubocop
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - "~>"
@@ -44,20 +44,6 @@ dependencies:
44
44
  - - "~>"
45
45
  - !ruby/object:Gem::Version
46
46
  version: '1.0'
47
- - !ruby/object:Gem::Dependency
48
- name: rubocop
49
- requirement: !ruby/object:Gem::Requirement
50
- requirements:
51
- - - "~>"
52
- - !ruby/object:Gem::Version
53
- version: '0.49'
54
- type: :development
55
- prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- requirements:
58
- - - "~>"
59
- - !ruby/object:Gem::Version
60
- version: '0.49'
61
47
  - !ruby/object:Gem::Dependency
62
48
  name: rubocop-performance
63
49
  requirement: !ruby/object:Gem::Requirement
@@ -119,6 +105,7 @@ files:
119
105
  - lib/simple_workflow/railtie.rb
120
106
  - lib/simple_workflow/test_helper.rb
121
107
  - lib/simple_workflow/version.rb
108
+ - simple_workflow.gemspec
122
109
  - test/controller_test.rb
123
110
  - test/helper_test.rb
124
111
  - test/middleware_test.rb
@@ -127,24 +114,28 @@ files:
127
114
  homepage: https://github.com/donv/simple_workflow
128
115
  licenses:
129
116
  - MIT
130
- metadata: {}
131
- post_install_message:
117
+ metadata:
118
+ rubygems_mfa_required: 'true'
119
+ post_install_message:
132
120
  rdoc_options: []
133
121
  require_paths:
134
122
  - lib
135
123
  required_ruby_version: !ruby/object:Gem::Requirement
136
124
  requirements:
137
- - - "~>"
125
+ - - ">="
138
126
  - !ruby/object:Gem::Version
139
127
  version: '2.5'
128
+ - - "<"
129
+ - !ruby/object:Gem::Version
130
+ version: '4'
140
131
  required_rubygems_version: !ruby/object:Gem::Requirement
141
132
  requirements:
142
133
  - - ">="
143
134
  - !ruby/object:Gem::Version
144
135
  version: '0'
145
136
  requirements: []
146
- rubygems_version: 3.0.3
147
- signing_key:
137
+ rubygems_version: 3.3.7
138
+ signing_key:
148
139
  specification_version: 4
149
140
  summary: Add simple breadcrumbs "detour" workflow to Ruby On Rails.
150
141
  test_files: []