Fix pre-existing CI tech debt: RuboCop, Erblint, assets precompile

RuboCop (9 offenses, 5 files):
- embed_scripts_controller: drop redundant .freeze (frozen_string_literal on)
- sessions_controller: use modifier if for redir return
- feature_toggles/signing_flow/template_crud specs: convert flaky
  `pending 'desc: reason' do` to `it 'desc', skip: 'reason' do`
- signing_flow_edge_cases: break over-long execute_script line

Erblint (2 offenses):
- sso_settings: replace inline `rescue` modifier with precomputed
  begin/rescue local for the OAuth callback URI
- sms_settings: remove leading blank line in the multi-statement <% %> block

Assets precompile:
- config/initializers/migrate.rb runs DatabaseTasks.migrate when
  RAILS_ENV=production and RUN_MIGRATIONS!=false. The precompile CI job has
  no postgres service, so it failed on a refused DB connection. Set
  RUN_MIGRATIONS=false for the precompile step so no DB is touched.

All pre-existing on master before the SMS work; none are SMS-related.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
pull/687/head
Wabo 2 weeks ago
parent 921f0c6d4b
commit 7b2c3ccb12

@ -149,6 +149,7 @@ jobs:
RAILS_ENV: production
SECRET_KEY_BASE: dummy-for-precompile
DATABASE_URL: postgres://postgres:postgres@localhost:5432/wabosign_test
RUN_MIGRATIONS: 'false'
run: |
bundle exec rake assets:precompile

@ -1,7 +1,7 @@
# frozen_string_literal: true
class EmbedScriptsController < ActionController::Metal
DUMMY_SCRIPT = <<~JAVASCRIPT.freeze
DUMMY_SCRIPT = <<~JAVASCRIPT
const DummyBuilder = class extends HTMLElement {
connectedCallback() {
this.innerHTML = `

@ -25,9 +25,7 @@ class SessionsController < Devise::SessionsController
private
def after_sign_in_path_for(...)
if params[:redir].present?
return params[:redir]
end
return params[:redir] if params[:redir].present?
super
end

@ -6,21 +6,19 @@
<% value = @encrypted_config.value || {} %>
<% sms_enabled = Sms.enabled?(current_account) %>
<% sms_live = Sms.enabled_for?(current_account) %>
<%
provider_labels = {
'bulkvs' => 'BulkVS',
'twilio' => 'Twilio',
'voipms' => 'VoIP.ms',
'signalwire' => 'SignalWire'
}
sending_number = case value['provider'].to_s
when 'twilio' then value['twilio_from']
when 'voipms' then value['voipms_did']
when 'signalwire' then value['signalwire_from']
else value['from_number']
end
selected_provider = value['provider'].presence || 'bulkvs'
%>
<% provider_labels = {
'bulkvs' => 'BulkVS',
'twilio' => 'Twilio',
'voipms' => 'VoIP.ms',
'signalwire' => 'SignalWire'
}
sending_number = case value['provider'].to_s
when 'twilio' then value['twilio_from']
when 'voipms' then value['voipms_did']
when 'signalwire' then value['signalwire_from']
else value['from_number']
end
selected_provider = value['provider'].presence || 'bulkvs' %>
<% if sms_live %>
<div class="alert alert-success mb-4">

@ -5,6 +5,12 @@
<% creds = Wabosign.google_sso_credentials %>
<% value = @encrypted_config.value || {} %>
<% callback_uri =
begin
"#{root_url}auth/google_oauth2/callback"
rescue StandardError
'/auth/google_oauth2/callback'
end %>
<% if creds[:source] == :env %>
<div class="alert mb-4">
@ -37,7 +43,7 @@
<p class="font-bold">Google SSO is not configured</p>
<p class="text-gray-700">
Fill in your Google Cloud OAuth client details below. The OAuth redirect URI to register in <a href="https://console.cloud.google.com/apis/credentials" target="_blank" rel="noopener" class="link">Google Cloud Console</a> is
<code><%= "#{root_url}auth/google_oauth2/callback" rescue '/auth/google_oauth2/callback' %></code>.
<code><%= callback_uri %></code>.
</p>
</div>
</div>

@ -94,7 +94,7 @@ RSpec.describe 'Feature Toggles' do
email: 'second@example.com')
end
pending 'blocks second signer: Vue timing issue with Submitters.current_submitter_order?' do
it 'blocks second signer', skip: 'Vue timing issue with Submitters.current_submitter_order?' do
create(:account_config, account:, key: AccountConfig::ENFORCE_SIGNING_ORDER_KEY, value: true)
visit submit_form_path(slug: second_submitter.slug)
@ -143,7 +143,7 @@ RSpec.describe 'Feature Toggles' do
let(:other_account) { create(:account) }
let(:other_user) { create(:user, account: other_account) }
pending 'force MFA: requires multitenant mode' do
it 'force MFA', skip: 'requires multitenant mode' do
create(:account_config, account: other_account, key: AccountConfig::FORCE_MFA, value: true)
sign_in(other_user)

@ -20,7 +20,7 @@ RSpec.describe 'Signing Flow Edge Cases' do
email: 'second@example.com')
end
pending 'blocks second signer: Vue timing issue with Submitters.current_submitter_order?' do
it 'blocks second signer', skip: 'Vue timing issue with Submitters.current_submitter_order?' do
create(:account_config, account:, key: AccountConfig::ENFORCE_SIGNING_ORDER_KEY, value: true)
visit submit_form_path(slug: second_submitter.slug)
@ -78,7 +78,7 @@ RSpec.describe 'Signing Flow Edge Cases' do
create(:account_config, account:, key: AccountConfig::ALLOW_TO_RESUBMIT, value: true)
end
pending 'resubmit flow: field not found on second start form visit' do
it 'resubmit flow', skip: 'field not found on second start form visit' do
visit start_form_path(slug: template.slug)
fill_in 'Email', with: 'john@example.com'
@ -116,14 +116,16 @@ RSpec.describe 'Signing Flow Edge Cases' do
submission.update!(template_fields: fields)
end
pending 'optional fields: Vue teleport timing issue with complete button' do
it 'optional fields', skip: 'Vue teleport timing issue with complete button' do
visit submit_form_path(slug: submitter.slug)
find('#expand_form_button').click
expect(page).to have_css('#complete_button_container')
page.execute_script('document.getElementById("complete_form_button")?.click() || document.querySelector(".complete-button")?.click()')
complete_js = 'document.getElementById("complete_form_button")?.click() || ' \
'document.querySelector(".complete-button")?.click()'
page.execute_script(complete_js)
expect(page).to have_content('Form has been completed!')

@ -23,7 +23,7 @@ RSpec.describe 'Template CRUD Edge Cases' do
expect(template.reload.archived_at).to be_nil
end
pending 'archived templates index: restore button selector not matching' do
it 'archived templates index', skip: 'restore button selector not matching' do
visit templates_archived_index_path
expect(page).to have_content(template.name)

Loading…
Cancel
Save