simple_workflow 1.3.2 → 1.3.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: df30a1c9f24abcc2eed8341f903f43dc726dfa0c
4
- data.tar.gz: 7a67d053ee88dcb7860b3b3bc0046b633610913c
3
+ metadata.gz: e1e29715cba13f98137c9b007e1adfe1a19cebfa
4
+ data.tar.gz: 03c8dd09e5f4de89fdb82d8a5e8e0ef3b5e57c5c
5
5
  SHA512:
6
- metadata.gz: 31b7fde7ad4ae7b569b85b4b625621cb10e7f5878c0d27311c3fb2f79afa78e9b1f21c8c091197be3090e79848e45daa527b02f076d194bf808de51898badd50
7
- data.tar.gz: 1d33d84a1ad300aeca822ca9f821362ed896f0c37505de24e3ea34589f816911b834b936a90bd88257596a4516ae4d702ee6df5d25547383deee2bb9828429d0
6
+ metadata.gz: e0c307cd9aa2798cf1e623546e7713d4b7ac3decc285a9948884ef0b7216ad72f77226e48edb95874e84e2cedeae26f1f1f7ff23b2c74d3e7e2e26e3f67c44c3
7
+ data.tar.gz: 45f5b80db062ec965d57703ea28eb544fecdbd234b083a4bdc2e9071818351421514952a1285fd4d92bf6b24f7bc8c231640d5507a953d066b290ca56205c4a9
data/Gemfile.lock CHANGED
@@ -104,7 +104,7 @@ GEM
104
104
  thor (>= 0.18.1, < 2.0)
105
105
  rainbow (2.2.1)
106
106
  rake (12.0.0)
107
- rubocop (0.47.1)
107
+ rubocop (0.48.1)
108
108
  parser (>= 2.3.3.1, < 3.0)
109
109
  powerpack (~> 0.1)
110
110
  rainbow (>= 1.99.1, < 3.0)
data/README.md CHANGED
@@ -45,7 +45,7 @@ In your tests:
45
45
  ## REQUIREMENTS
46
46
 
47
47
  * Ruby 2.1 or newer. JRuby supported!
48
- * Rails 4.x
48
+ * Rails 4.x or newer.
49
49
 
50
50
  ## INSTALL
51
51
 
@@ -1,4 +1,5 @@
1
- unless $LOAD_PATH.include?(File.dirname(__FILE__)) || $LOAD_PATH.include?(File.expand_path(File.dirname(__FILE__)))
1
+ unless $LOAD_PATH.include?(File.dirname(__FILE__)) ||
2
+ $LOAD_PATH.include?(File.expand_path(File.dirname(__FILE__)))
2
3
  $LOAD_PATH.unshift(File.dirname(__FILE__))
3
4
  end
4
5
 
@@ -11,15 +12,18 @@ require 'simple_workflow/test_helper'
11
12
  require 'simple_workflow/middleware'
12
13
  require 'simple_workflow/railtie'
13
14
 
15
+ # Make workflow test utility methods available in views
14
16
  module ApplicationHelper
15
17
  include SimpleWorkflow::Helper
16
18
  end
17
19
 
20
+ # Make workflow test utility methods available in controllers
18
21
  class ActionController::Base
19
22
  include SimpleWorkflow::Helper
20
23
  include SimpleWorkflow::Controller
21
24
  end
22
25
 
26
+ # Make workflow test utility methods available in ActiveSupport test cases
23
27
  class ActiveSupport::TestCase
24
28
  include SimpleWorkflow::TestHelper
25
29
  end
@@ -1,9 +1,11 @@
1
1
  require 'simple_workflow/detour'
2
2
 
3
+ # Mixin to add controller methods for workflow navigation.
3
4
  module SimpleWorkflow::Controller
4
5
  include SimpleWorkflow::Detour
5
6
 
6
- # Like ActionController::Base#redirect_to, but stores the location we come from, enabling returning here later.
7
+ # Like ActionController::Base#redirect_to, but stores the location we come from, enabling
8
+ # returning here later.
7
9
  def detour_to(options)
8
10
  store_detour(params)
9
11
  redirect_to(options)
@@ -1,3 +1,4 @@
1
+ # Utility methods to manage the breadcrumb history
1
2
  module SimpleWorkflow::Detour
2
3
  def store_detour_in_session(session, options)
3
4
  if session[:detours] && session[:detours].last == options
@@ -6,7 +7,8 @@ module SimpleWorkflow::Detour
6
7
  end
7
8
  session[:detours] ||= []
8
9
  session[:detours] << options
9
- Rails.logger.try(:debug, "Added detour (#{session[:detours].try(:size) || 0}): #{options.inspect}")
10
+ Rails.logger
11
+ .try(:debug, "Added detour (#{session[:detours].try(:size) || 0}): #{options.inspect}")
10
12
  end
11
13
 
12
14
  def pop_detour(session)
@@ -1,11 +1,15 @@
1
1
  require_relative 'detour'
2
+
3
+ # View helper methods augmented with breadcrumb management.
2
4
  module SimpleWorkflow::Helper
3
5
  include SimpleWorkflow::Detour
4
6
 
5
7
  def image_button_to(image_source, title, options, html_options = {})
6
- image_submit_tag image_source, { class: 'image-submit', alt: title, title: title,
7
- id: "#{title}_#{options[:id]}", name: title,
8
- onclick: "form.action='#{url_for(options)}'" }.update(html_options)
8
+ image_submit_tag image_source, {
9
+ class: 'image-submit', alt: title, title: title,
10
+ id: "#{title}_#{options[:id]}", name: title,
11
+ onclick: "form.action='#{url_for(options)}'"
12
+ }.update(html_options)
9
13
  end
10
14
 
11
15
  def detour_to(title, options = nil, html_options = nil, &block)
@@ -36,7 +40,7 @@ module SimpleWorkflow::Helper
36
40
  end
37
41
 
38
42
  def origin_options
39
- params.reject { |k, _v| %i(detour return_from_detour).include? k.to_sym }
43
+ params.reject { |k, _v| %i[detour return_from_detour].include? k.to_sym }
40
44
  end
41
45
 
42
46
  def image_detour_to(image_source, title, url_options, image_options = nil, link_options = nil)
@@ -56,7 +60,8 @@ module SimpleWorkflow::Helper
56
60
  link_to image_tag(image_source, image_options), url_options, link_options
57
61
  end
58
62
 
59
- def image_link_to_remote(image_source, title, link_options, image_options = nil, html_options = {})
63
+ def image_link_to_remote(image_source, title, link_options, image_options = nil,
64
+ html_options = {})
60
65
  if html_options == true
61
66
  html_options = { method: :post }
62
67
  elsif html_options == false
@@ -84,7 +89,7 @@ module SimpleWorkflow::Helper
84
89
  link_options = options
85
90
  end
86
91
 
87
- link_to(title, link_options, html_options) if options
92
+ link_to(title, link_options, html_options) if link_options
88
93
  rescue ActionController::UrlGenerationError => e
89
94
  if session[:detours]
90
95
  logger.error "Exception linking to origin: #{e.class} #{e}"
@@ -1,5 +1,6 @@
1
1
  require 'simple_workflow/detour'
2
2
 
3
+ # Rack middleware to detect and store detours and manage returns from detours.
3
4
  class SimpleWorkflow::Middleware
4
5
  include SimpleWorkflow::Detour
5
6
 
@@ -38,7 +39,8 @@ class SimpleWorkflow::Middleware
38
39
  end
39
40
 
40
41
  def remove_old_detours(env)
41
- return unless session(env).instance_variable_get('@by').is_a?(ActionDispatch::Session::CookieStore)
42
+ return unless session(env).instance_variable_get('@by')
43
+ .is_a?(ActionDispatch::Session::CookieStore)
42
44
  session_size = workflow_size = nil
43
45
  session = session(env)
44
46
  # env[ActionDispatch::Cookies::COOKIES_SERIALIZER]
@@ -49,17 +51,26 @@ class SimpleWorkflow::Middleware
49
51
  session_size = encryptor.encrypt_and_sign(ser_val).size
50
52
  wf_ser_val = serialize_session(cookie_jar, session[:detours])
51
53
  workflow_size = encryptor.encrypt_and_sign(wf_ser_val).size
52
- break unless workflow_size >= 2048 || (session_size >= 3072 && session[:detours] && !session[:detours].empty?)
53
- Rails.logger.warn "Workflow too large (#{workflow_size}/#{session_size}). Dropping oldest detour."
54
+ break unless workflow_size >= 2048 ||
55
+ (session_size >= 3072 && session[:detours] && !session[:detours].empty?)
56
+ Rails.logger.warn(
57
+ "Workflow too large (#{workflow_size}/#{session_size}). Dropping oldest detour."
58
+ )
54
59
  session[:detours].shift
55
60
  reset_workflow(session) if session[:detours].empty?
56
61
  end
57
- Rails.logger.debug "session: #{session_size} bytes, workflow(#{session[:detours].try(:size) || 0}): #{workflow_size} bytes"
62
+ Rails.logger.debug <<-MSG.strip_heredoc
63
+ session: #{session_size} bytes, workflow(#{session[:detours].try(:size) || 0}): #{workflow_size} bytes
64
+ MSG
58
65
  return unless session_size > 4096
59
- Rails.logger.warn "simple_workflow: session exceeds cookie size limit: #{session_size} bytes. Workflow empty! Not My Fault!"
66
+ Rails.logger.warn <<-MSG.strip_heredoc
67
+ simple_workflow: session exceeds cookie size limit: #{session_size} bytes. Workflow empty! Not My Fault!
68
+ MSG
60
69
  Rails.logger.warn "simple_workflow: session: #{session.to_hash}"
61
70
  return unless (old_flashes = session[:flash] && session[:flash]['discard'])
62
- Rails.logger.warn "simple_workflow: found discarded flash entries: #{old_flashes}. Deleting them."
71
+ Rails.logger.warn <<-MSG.strip_heredoc
72
+ simple_workflow: found discarded flash entries: #{old_flashes}. Deleting them.
73
+ MSG
63
74
  session[:flash]['flashes'] = session[:flash]['flashes'].except(*old_flashes)
64
75
  Rails.logger.warn "simple_workflow: session: #{session.to_hash}"
65
76
  end
@@ -1,8 +1,8 @@
1
1
  module SimpleWorkflow
2
+ # Railtie to activate the middleware.
2
3
  class Railtie < Rails::Railtie
3
4
  initializer 'SimpleWorkflow.configure_rails_initialization' do |app|
4
- app.middleware.insert_before ActionDispatch::Flash,
5
- SimpleWorkflow::Middleware
5
+ app.middleware.insert_before ActionDispatch::Flash, SimpleWorkflow::Middleware
6
6
  end
7
7
  end
8
8
  end
@@ -1,3 +1,4 @@
1
+ # Utility methods to ease testing.
1
2
  module SimpleWorkflow::TestHelper
2
3
  def add_stored_detour(location = { controller: :bogus, action: :location })
3
4
  @request.session[:detours] = [location]
@@ -1,3 +1,3 @@
1
1
  module SimpleWorkflow
2
- VERSION = '1.3.2'.freeze
2
+ VERSION = '1.3.3'.freeze
3
3
  end
@@ -35,7 +35,7 @@ class MiddlewareTest < MiniTest::Test
35
35
  assert_equal 200, status
36
36
  assert_equal(env, headers)
37
37
  assert_equal 'app response', response
38
- assert_equal(%w(session_id detours), headers['rack.session'].to_hash.keys)
38
+ assert_equal(%w[session_id detours], headers['rack.session'].to_hash.keys)
39
39
  assert_equal([{ 'controller' => 'test' }], headers['rack.session'].to_hash['detours'])
40
40
  end
41
41
 
@@ -52,7 +52,7 @@ class MiddlewareTest < MiniTest::Test
52
52
 
53
53
  assert_equal 200, status
54
54
  assert_equal 'app response', response
55
- assert_equal(%w(session_id detours), env['rack.session'].to_hash.keys)
55
+ assert_equal(%w[session_id detours], env['rack.session'].to_hash.keys)
56
56
 
57
57
  assert_equal(((57..99).to_a + [:last]).map { |i| { 'controller' => "test_#{i}" } },
58
58
  env['rack.session'].to_hash['detours'])
@@ -69,7 +69,7 @@ class MiddlewareTest < MiniTest::Test
69
69
  assert_equal 200, status
70
70
  assert_equal(env, headers)
71
71
  assert_equal 'app response', response
72
- assert_equal(%w(session_id), headers['rack.session'].to_hash.keys)
72
+ assert_equal(%w[session_id], headers['rack.session'].to_hash.keys)
73
73
  end
74
74
 
75
75
  def test_return_from_detour
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: 1.3.2
4
+ version: 1.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Uwe Kubosch
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-04-03 00:00:00.000000000 Z
11
+ date: 2017-04-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails