pageflow-support 17.1.0 → 17.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: fae97a40f99f97bb513360d66bfbedf7690ad711fbe8f581458c024a13e48a67
4
- data.tar.gz: 282ce32027ab5526b097d9c9db77e93b96af878aa7f1db8a5d8761b3c98b9b61
3
+ metadata.gz: f1991e99e5e1c0667011d233f05503e5b772428bd431d908e1a9a949a4e12486
4
+ data.tar.gz: 4ed91c8684d1f5282a0699e0add758cf2559cc9d8b914cdce16863bf05383760
5
5
  SHA512:
6
- metadata.gz: dc7ff0c1d01152030e4930fb7f6269d153d7f1994c63616e10abaf8e471b83cc419b9a48e0413ac2ed69ecd0ae9838b80a57711b087bc9f1657dbcc9fd81a96b
7
- data.tar.gz: 007be4ed862864dda806f09a340c476c8a61db3d2a4746ae61c820fff8220bfd4be0657c80d00058fc783f65a4b832e1ddd38b0ecd36ce4ccd6866277dbef28f
6
+ metadata.gz: da5e455cac7b986e6d382d1a4dd64ff3e7451b29f856733a53ba66ccf0b4fc036bd9b1f0e8bcbc296dec605a70d2973d9c25e1fa2b9769bf96f31a7aa55e66b3
7
+ data.tar.gz: 835d7bcef5a870f4c252fc3b4efff5da7363ec2431f3de3677602a76e5994874e144218e8b9596986126a7905a81e9b5a2413a8d75b866148eb14284c91a632a
@@ -4,8 +4,14 @@ module Pageflow
4
4
  class EditConfigurationView < Domino
5
5
  selector 'sidebar .edit_configuration_view'
6
6
 
7
- def destroy_button
8
- node.find('.destroy')
7
+ def actions_button
8
+ node.find('.drop_down_button')
9
+ end
10
+
11
+ def select_action(label)
12
+ actions_button.click
13
+ Capybara.current_session.find('#editor_menu_container .drop_down_button_item',
14
+ text: label).click
9
15
  end
10
16
 
11
17
  def back_button
@@ -18,6 +18,17 @@ module Pageflow
18
18
  end
19
19
 
20
20
  require(File.join(ENV.fetch('RAILS_ROOT', nil), 'config', 'environment'))
21
+
22
+ load_routes
23
+ end
24
+
25
+ # Routes are only loaded on demand unless eager loading is
26
+ # enabled. Active Admin defines its controllers while routes are
27
+ # drawn, and specs reference those constants as they are loaded.
28
+ def load_routes
29
+ return unless Rails.application.respond_to?(:reload_routes_unless_loaded)
30
+
31
+ Rails.application.reload_routes_unless_loaded
21
32
  end
22
33
 
23
34
  def directory
@@ -30,7 +41,7 @@ module Pageflow
30
41
  end
31
42
 
32
43
  def rails_new_options
33
- result = '--skip-test-unit --skip-bundle --database=mysql'
44
+ result = '--skip-test-unit --skip-bundle --database=mysql --skip-active-storage'
34
45
  result << ' --skip-javascript'
35
46
  result
36
47
  end
@@ -55,8 +55,12 @@ rake 'shakapacker:install' if ENV['PAGEFLOW_INSTALL_SHAKAPACKER'] == 'true'
55
55
 
56
56
  generate 'pageflow:install', '--force'
57
57
 
58
- if ENV['PAGEFLOW_PLUGIN_ENGINE'].present?
59
- generate "#{ENV['PAGEFLOW_PLUGIN_ENGINE']}:install", '--force'
58
+ # Invoking a generator that does not exist aborts the template, and not
59
+ # every plugin engine comes with an install generator.
60
+ plugin_engine = ENV['PAGEFLOW_PLUGIN_ENGINE'].presence
61
+
62
+ if plugin_engine && Rails::Generators.find_by_namespace('install', plugin_engine)
63
+ generate "#{plugin_engine}:install", '--force'
60
64
  end
61
65
 
62
66
  # Devise needs default_url_options for generating mails.
@@ -86,6 +90,10 @@ copy_file('test_theme_preview.png',
86
90
  copy_file('test_theme_preview.png',
87
91
  'app/assets/images/pageflow/themes/test_theme/preview_thumbnail.png')
88
92
 
93
+ # Add fallback favicon used by browsers to prevent console log warnings
94
+
95
+ copy_file('favicon.ico', 'public/favicon.ico', force: true)
96
+
89
97
  # Normally theme stylesheets are added to the precompile list
90
98
  # automatically. Since the test_theme is not yet registered when the
91
99
  # environment is loaded, we need to add its stylesheet manually.
@@ -96,13 +104,21 @@ RUBY
96
104
 
97
105
  # Create database tables for fake hosted files and revision components.
98
106
 
99
- copy_file('create_test_uploadable_file.rb',
100
- 'db/migrate/00000000000000_create_test_uploadable_file.rb')
101
- copy_file('create_test_multi_attachment_file.rb',
102
- 'db/migrate/00000000000001_create_test_multi_attachment_file.rb')
103
- copy_file('create_test_revision_components.rb',
104
- 'db/migrate/00000000000002_create_test_revision_components.rb')
105
- copy_file('add_custom_fields.rb',
106
- 'db/migrate/99990000000000_add_custom_fields.rb')
107
+ migration_paths = Dir[File.join('db', 'migrate', '*.rb')]
108
+ latest_migration = migration_paths.map { |path| File.basename(path).split('_').first.to_i }.max
109
+
110
+ timestamp = (latest_migration || Time.now.utc.strftime('%Y%m%d%H%M%S').to_i) + 1
111
+ [
112
+ 'create_test_uploadable_file.rb',
113
+ 'create_test_multi_attachment_file.rb',
114
+ 'create_test_generated_file.rb',
115
+ 'create_test_revision_components.rb',
116
+ 'add_custom_fields.rb'
117
+ ].each_with_index do |migration, index|
118
+ copy_file(
119
+ migration,
120
+ format('db/migrate/%<timestamp>014d_%<name>s', timestamp: timestamp + index, name: migration)
121
+ )
122
+ end
107
123
 
108
124
  rake 'db:migrate'
@@ -0,0 +1,18 @@
1
+ class CreateTestGeneratedFile < ActiveRecord::Migration[4.2]
2
+ def change
3
+ create_table :test_generated_files do |t|
4
+ t.belongs_to(:entry, index: true)
5
+ t.belongs_to(:uploader, index: true)
6
+
7
+ t.integer(:parent_file_id)
8
+ t.string(:parent_file_model_type)
9
+
10
+ t.string(:state)
11
+ t.string(:rights)
12
+
13
+ t.string(:url)
14
+
15
+ t.timestamps
16
+ end
17
+ end
18
+ end
@@ -32,7 +32,20 @@ module Pageflow
32
32
  #
33
33
  # @param mode [:published|:preview] Whether to render the
34
34
  # published revision or the draft.
35
- def get_with_entry_env(action, entry:, mode: :published, params: {})
35
+ #
36
+ # @param embed [Boolean] Whether the entry is being rendered as an
37
+ # embed.
38
+ #
39
+ # @param ui_locale [Symbol] Locale of the signed in user, i.e. the
40
+ # locale to render user interface displayed on top of the entry
41
+ # in. Not read from `I18n.locale` since entry type controllers
42
+ # are free to change it while rendering.
43
+ def get_with_entry_env(action,
44
+ entry:,
45
+ mode: :published,
46
+ embed: false,
47
+ ui_locale: I18n.default_locale,
48
+ params: {})
36
49
  revision =
37
50
  if mode == :published
38
51
  entry.published_revision
@@ -43,7 +56,9 @@ module Pageflow
43
56
  published_entry = PublishedEntry.new(entry, revision)
44
57
  EntriesControllerEnvHelper.add_entry_info_to_env(request.env,
45
58
  entry: published_entry,
46
- mode:)
59
+ mode:,
60
+ embed:,
61
+ ui_locale:)
47
62
  get(action, params: {**params})
48
63
  end
49
64
  end
@@ -4,6 +4,7 @@ RSpec.shared_context 'fake translations' do
4
4
  @fake_i18n_backend = I18n::Backend::Simple.new
5
5
 
6
6
  I18n.backend = @fake_i18n_backend
7
+ @fake_i18n_backend.send(:init_translations)
7
8
  example.run
8
9
  I18n.backend = i18n_backend_backup
9
10
  end
@@ -0,0 +1,36 @@
1
+ # Taken from https://github.com/alphagov/forms-admin/commit/5ea98767d765a396ed06cf2cba8f9afb1b10fc0e#diff-c36c07a0c7f499b1b95634f9dce1a10ebf4d10a9dee872f39f746a9efa555ddbR1-R34
2
+ # Monkey patch for a specific intermittent Selenium error.
3
+ #
4
+ # Intermittently, Selenium/Chromedriver raises `Selenium::WebDriver::Error::UnknownError`
5
+ # with the message "Node with given id does not belong to the document".
6
+
7
+ # Capybara's automatic waiting/retrying mechanism doesn't catch it,
8
+ # leading to failure.
9
+ #
10
+ # We intercept the initialization of `UnknownError`. If the message matches this specific
11
+ # case, we raise a `StaleElementReferenceError` instead. This uses Capybara's
12
+ # retry logic which makes doesn't fail the test
13
+ #
14
+ # This can be removed once the following issue is resolved:
15
+ # https://github.com/teamcapybara/capybara/issues/2800
16
+ #
17
+ # taken from the following issue:
18
+ # https://github.com/teamcapybara/capybara/issues/2800#issuecomment-3049956982
19
+
20
+ module Selenium
21
+ module WebDriver
22
+ module Error
23
+ class UnknownError
24
+ alias old_initialize initialize
25
+
26
+ def initialize(msg = nil)
27
+ if msg&.include?('Node with given id does not belong to the document')
28
+ raise StaleElementReferenceError, msg
29
+ end
30
+
31
+ old_initialize(msg)
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -2,6 +2,8 @@ require 'capybara/rspec'
2
2
  require 'selenium-webdriver'
3
3
  require 'capybara/chromedriver/logger'
4
4
 
5
+ require 'pageflow/support/config/capybara/selenium_error_patch'
6
+
5
7
  Capybara.register_driver :selenium_chrome_headless_no_sandbox do |app|
6
8
  options = Selenium::WebDriver::Options.chrome(
7
9
  logging_prefs: {browser: 'ALL'}
@@ -9,6 +11,7 @@ Capybara.register_driver :selenium_chrome_headless_no_sandbox do |app|
9
11
 
10
12
  options.add_argument('--headless=new')
11
13
  options.add_argument('--no-sandbox')
14
+ options.add_argument('--disable-dev-shm-usage')
12
15
  options.add_argument('--disable-gpu') if Gem.win_platform?
13
16
 
14
17
  Capybara::Selenium::Driver.new(app,
@@ -0,0 +1,28 @@
1
+ module Pageflow
2
+ class TestGeneratedFile < ActiveRecord::Base
3
+ self.table_name = :test_generated_files
4
+ include ReusableFile
5
+
6
+ def retryable?
7
+ false
8
+ end
9
+
10
+ def ready?
11
+ true
12
+ end
13
+
14
+ def failed?
15
+ false
16
+ end
17
+
18
+ def publish!; end
19
+
20
+ def url
21
+ read_attribute(:url)
22
+ end
23
+
24
+ def original_url
25
+ url
26
+ end
27
+ end
28
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pageflow-support
3
3
  version: !ruby/object:Gem::Version
4
- version: 17.1.0
4
+ version: 17.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Codevise Solutions Ltd
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-09-17 00:00:00.000000000 Z
11
+ date: 2026-09-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mysql2
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - '='
32
32
  - !ruby/object:Gem::Version
33
- version: 17.1.0
33
+ version: 17.2.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - '='
39
39
  - !ruby/object:Gem::Version
40
- version: 17.1.0
40
+ version: 17.2.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: domino
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -58,14 +58,14 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '4.8'
61
+ version: '6.5'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '4.8'
68
+ version: '6.5'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: bootsnap
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -122,20 +122,6 @@ dependencies:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
124
  version: '4.10'
125
- - !ruby/object:Gem::Dependency
126
- name: ar_after_transaction
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - "~>"
130
- - !ruby/object:Gem::Version
131
- version: 0.10.0
132
- type: :runtime
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - "~>"
137
- - !ruby/object:Gem::Version
138
- version: 0.10.0
139
125
  - !ruby/object:Gem::Dependency
140
126
  name: redis
141
127
  requirement: !ruby/object:Gem::Requirement
@@ -178,7 +164,7 @@ dependencies:
178
164
  - - "~>"
179
165
  - !ruby/object:Gem::Version
180
166
  version: '2.1'
181
- description:
167
+ description:
182
168
  email:
183
169
  - info@codevise.de
184
170
  executables: []
@@ -205,10 +191,12 @@ files:
205
191
  - pageflow/dummy/exit_on_failure_patch.rb
206
192
  - pageflow/dummy/rails_template.rb
207
193
  - pageflow/dummy/templates/add_custom_fields.rb
194
+ - pageflow/dummy/templates/create_test_generated_file.rb
208
195
  - pageflow/dummy/templates/create_test_multi_attachment_file.rb
209
196
  - pageflow/dummy/templates/create_test_revision_components.rb
210
197
  - pageflow/dummy/templates/create_test_uploadable_file.rb
211
198
  - pageflow/dummy/templates/database.yml
199
+ - pageflow/dummy/templates/favicon.ico
212
200
  - pageflow/dummy/templates/test_theme.scss
213
201
  - pageflow/dummy/templates/test_theme_preview.png
214
202
  - pageflow/edit_lock_test_helper.rb
@@ -226,9 +214,11 @@ files:
226
214
  - pageflow/shared_contexts/fake_translations.rb
227
215
  - pageflow/support.rb
228
216
  - pageflow/support/config/capybara.rb
217
+ - pageflow/support/config/capybara/selenium_error_patch.rb
229
218
  - pageflow/support/config/paperclip.rb
230
219
  - pageflow/support/config/webmock.rb
231
220
  - pageflow/test_entry_type.rb
221
+ - pageflow/test_generated_file.rb
232
222
  - pageflow/test_page_type.rb
233
223
  - pageflow/test_uploadable_file.rb
234
224
  - pageflow/test_widget_type.rb
@@ -237,7 +227,7 @@ homepage: https://pageflow.io
237
227
  licenses: []
238
228
  metadata:
239
229
  rubygems_mfa_required: 'true'
240
- post_install_message:
230
+ post_install_message:
241
231
  rdoc_options: []
242
232
  require_paths:
243
233
  - "."
@@ -252,8 +242,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
252
242
  - !ruby/object:Gem::Version
253
243
  version: '0'
254
244
  requirements: []
255
- rubygems_version: 3.4.10
256
- signing_key:
245
+ rubygems_version: 3.4.19
246
+ signing_key:
257
247
  specification_version: 4
258
248
  summary: Spec support for Pageflow extensions.
259
249
  test_files: []