Skip to content

Commit ca001b6

Browse files
authored
ACD-472: Update Ruby to v. 3.3.6 (#2716)
* ACD-472: Update Ruby to v. 3.3.6 * Small refactor: make explicit calls in query_cda. * Update Gemfile * Handle Rubocop improvements and fix error about empty @laa_reference
1 parent 884709b commit ca001b6

16 files changed

+61
-64
lines changed

.circleci/config.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ executors:
7373
test-executor:
7474
working_directory: ~/repo
7575
docker:
76-
- image: cimg/ruby:3.1.5-browsers
76+
- image: cimg/ruby:3.3.6-browsers
7777
environment:
7878
RAILS_ENV: test
7979
DATABASE_URL: postgres://postgres:circleci@127.0.0.1:5432/laa_court_data_ui_test

.ruby-version

+2-1
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1-
3.1.5
1+
3.3.6
2+

Gemfile

+1-3
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@
33
source 'https://rubygems.org'
44
git_source(:github) { |repo| "https://github.com/#{repo}.git" }
55

6-
ruby '3.1.5'
7-
86
gem 'activeresource', '~> 6.1.4'
97
# Reduces boot times through caching; required in config/boot.rb
108
gem 'bootsnap', '>= 1.7.0', require: false
@@ -23,7 +21,7 @@ gem 'json_api_client', '~> 1.23'
2321
gem 'json-schema', '~> 5.1'
2422
gem 'logstasher'
2523
gem 'oauth2', '~> 2.0.9'
26-
gem 'pg', '>= 0.18', '< 2.0'
24+
gem 'pg', '>= 1.5.9', '< 2.0'
2725
gem 'prometheus_exporter', '2.1.1'
2826
gem 'puma', '>= 5.6.4'
2927
gem 'rails', '~> 7.0.8'

Gemfile.lock

+27-29
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ GEM
129129
bigdecimal
130130
rexml
131131
crass (1.0.6)
132-
date (3.4.0)
132+
date (3.4.1)
133133
descendants_tracker (0.0.4)
134134
thread_safe (~> 0.3, >= 0.3.1)
135135
devise (4.9.4)
@@ -229,12 +229,13 @@ GEM
229229
rainbow (>= 2.2.2, < 4.0)
230230
terminal-table (>= 1.5.1)
231231
ice_nine (0.11.2)
232-
io-console (0.7.2)
232+
io-console (0.8.0)
233233
jsbundling-rails (1.3.1)
234234
railties (>= 6.0.0)
235-
json (2.8.2)
236-
json-schema (5.1.0)
235+
json (2.9.0)
236+
json-schema (5.1.1)
237237
addressable (~> 2.8)
238+
bigdecimal (~> 3.1)
238239
json_api_client (1.23.0)
239240
activemodel (>= 6.0.0)
240241
activesupport (>= 6.0.0)
@@ -251,7 +252,7 @@ GEM
251252
listen (3.9.0)
252253
rb-fsevent (~> 0.10, >= 0.10.3)
253254
rb-inotify (~> 0.9, >= 0.9.10)
254-
logger (1.6.1)
255+
logger (1.6.2)
255256
logstasher (2.1.5)
256257
activesupport (>= 5.2)
257258
request_store
@@ -267,7 +268,7 @@ GEM
267268
matrix (0.4.2)
268269
method_source (1.1.0)
269270
mini_mime (1.1.5)
270-
minitest (5.25.2)
271+
minitest (5.25.4)
271272
msgpack (1.7.5)
272273
multi_xml (0.7.1)
273274
bigdecimal (~> 3.1)
@@ -282,9 +283,9 @@ GEM
282283
net-smtp (0.5.0)
283284
net-protocol
284285
nio4r (2.7.4)
285-
nokogiri (1.16.7-arm64-darwin)
286+
nokogiri (1.16.8-arm64-darwin)
286287
racc (~> 1.4)
287-
nokogiri (1.16.7-x86_64-linux)
288+
nokogiri (1.16.8-x86_64-linux)
288289
racc (~> 1.4)
289290
notifications-ruby-client (6.2.0)
290291
jwt (>= 1.5, < 3)
@@ -313,7 +314,7 @@ GEM
313314
pry-rails (0.3.11)
314315
pry (>= 0.13.0)
315316
public_suffix (6.0.1)
316-
puma (6.4.3)
317+
puma (6.5.0)
317318
nio4r (~> 2.0)
318319
racc (1.8.1)
319320
rack (2.2.10)
@@ -341,9 +342,9 @@ GEM
341342
activesupport (>= 5.0.0)
342343
minitest
343344
nokogiri (>= 1.6)
344-
rails-html-sanitizer (1.6.0)
345+
rails-html-sanitizer (1.6.1)
345346
loofah (~> 2.21)
346-
nokogiri (~> 1.14)
347+
nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0)
347348
rails-i18n (7.0.10)
348349
i18n (>= 0.7, < 2)
349350
railties (>= 6.0.0, < 8)
@@ -363,8 +364,8 @@ GEM
363364
redis-client (>= 0.22.0)
364365
redis-client (0.22.2)
365366
connection_pool
366-
regexp_parser (2.9.2)
367-
reline (0.5.11)
367+
regexp_parser (2.9.3)
368+
reline (0.5.12)
368369
io-console (~> 0.5)
369370
request_store (1.7.0)
370371
rack (>= 1.4)
@@ -395,42 +396,42 @@ GEM
395396
rspec-expectations (~> 3.13)
396397
rspec-mocks (~> 3.13)
397398
rspec-support (~> 3.13)
398-
rspec-support (3.13.1)
399+
rspec-support (3.13.2)
399400
rspec_junit_formatter (0.6.0)
400401
rspec-core (>= 2, < 4, != 2.12.0)
401-
rubocop (1.66.1)
402+
rubocop (1.69.1)
402403
json (~> 2.3)
403404
language_server-protocol (>= 3.17.0)
404405
parallel (~> 1.10)
405406
parser (>= 3.3.0.2)
406407
rainbow (>= 2.2.2, < 4.0)
407-
regexp_parser (>= 2.4, < 3.0)
408-
rubocop-ast (>= 1.32.2, < 2.0)
408+
regexp_parser (>= 2.9.3, < 3.0)
409+
rubocop-ast (>= 1.36.2, < 2.0)
409410
ruby-progressbar (~> 1.7)
410-
unicode-display_width (>= 2.4.0, < 3.0)
411-
rubocop-ast (1.32.3)
411+
unicode-display_width (>= 2.4.0, < 4.0)
412+
rubocop-ast (1.36.2)
412413
parser (>= 3.3.1.0)
413414
rubocop-capybara (2.21.0)
414415
rubocop (~> 1.41)
415416
rubocop-factory_bot (2.26.1)
416417
rubocop (~> 1.61)
417-
rubocop-performance (1.22.1)
418+
rubocop-performance (1.23.0)
418419
rubocop (>= 1.48.1, < 2.0)
419420
rubocop-ast (>= 1.31.1, < 2.0)
420-
rubocop-rails (2.26.2)
421+
rubocop-rails (2.27.0)
421422
activesupport (>= 4.2.0)
422423
rack (>= 1.1)
423424
rubocop (>= 1.52.0, < 2.0)
424425
rubocop-ast (>= 1.31.1, < 2.0)
425-
rubocop-rspec (3.0.5)
426+
rubocop-rspec (3.2.0)
426427
rubocop (~> 1.61)
427428
rubocop-rspec_rails (2.30.0)
428429
rubocop (~> 1.61)
429430
rubocop-rspec (~> 3, >= 3.0.1)
430431
ruby-progressbar (1.13.0)
431432
ruby2_keywords (0.0.5)
432433
rubyzip (2.3.2)
433-
selenium-webdriver (4.26.0)
434+
selenium-webdriver (4.27.0)
434435
base64 (~> 0.2)
435436
logger (~> 1.4)
436437
rexml (~> 3.2, >= 3.2.5)
@@ -507,14 +508,14 @@ GEM
507508
addressable (>= 2.8.0)
508509
crack (>= 0.3.2)
509510
hashdiff (>= 0.4.0, < 2.0.0)
510-
webrick (1.9.0)
511+
webrick (1.9.1)
511512
websocket (1.2.11)
512513
websocket-driver (0.7.6)
513514
websocket-extensions (>= 0.1.0)
514515
websocket-extensions (0.1.5)
515516
xpath (3.2.0)
516517
nokogiri (~> 1.8)
517-
zeitwerk (2.6.18)
518+
zeitwerk (2.7.1)
518519
zlib (3.2.0)
519520

520521
PLATFORMS
@@ -553,7 +554,7 @@ DEPENDENCIES
553554
net-pop (~> 0.1.2)
554555
net-smtp (~> 0.5.0)
555556
oauth2 (~> 2.0.9)
556-
pg (>= 0.18, < 2.0)
557+
pg (>= 1.5.9, < 2.0)
557558
prometheus_exporter (= 2.1.1)
558559
pry
559560
pry-byebug
@@ -588,8 +589,5 @@ DEPENDENCIES
588589
web-console (>= 4.2.0)
589590
webmock
590591

591-
RUBY VERSION
592-
ruby 3.1.5p252
593-
594592
BUNDLED WITH
595593
2.3.3

app/controllers/searches_controller.rb

+4-3
Original file line numberDiff line numberDiff line change
@@ -82,13 +82,14 @@ def set_view_options
8282

8383
def handle_client_error(exception)
8484
logger.info 'CLIENT_ERROR_OCCURRED'
85-
@laa_reference&.errors&.from_json(exception.response.body)
86-
render_error(I18n.t('search.error.unprocessable'), @laa_reference&.errors&.full_messages&.join(', '))
85+
86+
render_error(I18n.t('search.error.unprocessable'), exception.response.body)
8787
end
8888

8989
def handle_server_error(exception)
9090
logger.error 'SERVER_ERROR_OCCURRED'
91-
log_sentry_error(exception, @laa_reference&.errors)
91+
92+
log_sentry_error(exception, exception.response.body)
9293
render_error(I18n.t('search.error.failure'), I18n.t('error.it_helpdesk'))
9394
end
9495

app/decorators/offence_decorator.rb

+3-1
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,11 @@ def sorted_pleas
2525
end
2626

2727
def plea_sentence(plea)
28+
plea_date = plea&.pleaded_at&.to_date
29+
2830
t('offence.plea.sentence',
2931
plea: plea&.code&.humanize || t('generic.not_available'),
30-
pleaded_at: plea&.pleaded_at&.to_date&.strftime('%d/%m/%Y') || t('generic.not_available'))
32+
pleaded_at: plea_date&.strftime('%d/%m/%Y') || t('generic.not_available'))
3133
end
3234

3335
def mode_of_trial_reason_descriptions

app/decorators/offence_summary_decorator.rb

+3-1
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,10 @@ def sorted_pleas
1919
end
2020

2121
def return_plea(plea)
22+
plea_date = plea&.date&.to_date
23+
2224
t('offence.plea.sentence',
2325
plea: plea&.value&.humanize || t('generic.not_available'),
24-
pleaded_at: plea&.date&.to_date&.strftime('%d/%m/%Y') || t('generic.not_available'))
26+
pleaded_at: plea_date&.strftime('%d/%m/%Y') || t('generic.not_available'))
2527
end
2628
end

app/helpers/hearing_helper.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ def paginator(...)
66
end
77

88
def earliest_day_for(hearing)
9-
hearing&.hearing_days&.map(&:to_datetime)&.min
9+
hearing.hearing_days.map(&:to_datetime).min
1010
end
1111

1212
def transform_and_sanitize(text)

app/models/search.rb

+10-15
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
class Search
77
include ActiveModel::Model
88

9+
attr_accessor :filter, :term, :dob, :version2
10+
911
def self.filters
1012
[
1113
_filter(id: :case_reference,
@@ -21,8 +23,6 @@ def self.filters
2123
SearchFilter.new(**args)
2224
end
2325

24-
attr_accessor :filter, :term, :dob, :version2
25-
2626
def filters
2727
self.class.filters
2828
end
@@ -62,18 +62,13 @@ def query_cd_api
6262
end
6363

6464
def query_cda
65-
send(:"#{filter}_query")
66-
end
67-
68-
def case_reference_query
69-
CourtDataAdaptor::Query::ProsecutionCase.new(term)
70-
end
71-
72-
def defendant_reference_query
73-
CourtDataAdaptor::Query::Defendant::ByReference.new(term)
74-
end
75-
76-
def defendant_name_query
77-
CourtDataAdaptor::Query::Defendant::ByName.new(term, dob:)
65+
case filter
66+
when 'case_reference'
67+
CourtDataAdaptor::Query::ProsecutionCase.new(term)
68+
when 'defendant_reference'
69+
CourtDataAdaptor::Query::Defendant::ByReference.new(term)
70+
when 'defendant_name'
71+
CourtDataAdaptor::Query::Defendant::ByName.new(term, dob:)
72+
end
7873
end
7974
end

docker/Dockerfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM ruby:3.1.5-alpine3.20
1+
FROM ruby:3.3.6-alpine3.20
22
LABEL Organisation="Ministry of Justice"
33
LABEL Team="LAA Get Paid"
44
LABEL Contact="<assessaclaim@digital.justice.gov.uk>"

spec/lib/court_data_adaptor/query/defendant/by_name_spec.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ def self.resource
2929

3030
context 'with mocking' do
3131
let(:resource) { self.class.resource }
32-
let(:resultset) { instance_double('ResultSet') }
32+
let(:resultset) { instance_double('ResultSet') } # rubocop:disable RSpec/StringAsInstanceDoubleConstant
3333

3434
before do
3535
allow(instance).to receive(:refresh_token_if_required!)

spec/lib/court_data_adaptor/query/defendant/by_reference_spec.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ def self.resource
2424

2525
let(:instance) { described_class.new(term) }
2626
let(:resource) { self.class.resource }
27-
let(:resultset) { instance_double('ResultSet') }
27+
let(:resultset) { instance_double('ResultSet') } # rubocop:disable RSpec/StringAsInstanceDoubleConstant
2828

2929
before do
3030
allow(instance).to receive(:refresh_token_if_required!)

spec/lib/court_data_adaptor/query/defendant/by_uuid_spec.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ def self.resource
2424

2525
let(:instance) { described_class.new(term) }
2626
let(:resource) { self.class.resource }
27-
let(:resultset) { instance_double('ResultSet') }
27+
let(:resultset) { instance_double('ResultSet') } # rubocop:disable RSpec/StringAsInstanceDoubleConstant
2828

2929
before do
3030
allow(instance).to receive(:refresh_token_if_required!)

spec/lib/court_data_adaptor/query/hearing_spec.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ def self.resource
2222
let(:instance) { described_class.new(term) }
2323
let(:term) { 'a-hearing-uuid' }
2424
let(:resource) { self.class.resource }
25-
let(:resultset) { instance_double('ResultSet') }
25+
let(:resultset) { instance_double('ResultSet') } # rubocop:disable RSpec/StringAsInstanceDoubleConstant
2626

2727
before do
2828
allow(instance).to receive(:refresh_token_if_required!)

spec/lib/court_data_adaptor/query/prosecution_case_spec.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ def self.resource
2222
let(:instance) { described_class.new(term) }
2323
let(:term) { 'ACASEURN' }
2424
let(:resource) { self.class.resource }
25-
let(:resultset) { instance_double('ResultSet') }
25+
let(:resultset) { instance_double('ResultSet') } # rubocop:disable RSpec/StringAsInstanceDoubleConstant
2626

2727
before do
2828
allow(instance).to receive(:refresh_token_if_required!)

spec/support/capybara_extensions.rb

+3-3
Original file line numberDiff line numberDiff line change
@@ -70,15 +70,15 @@ def has_govuk_error_field?(model, field, error_text = nil)
7070
end
7171

7272
def has_govuk_detail_summary?(text, options = {})
73-
has_selector?(detail_summary_selector, **options.merge(text:))
73+
has_selector?(detail_summary_selector, text:, **options)
7474
end
7575

7676
def has_no_govuk_detail_summary?(text, options = {})
77-
has_no_selector?(detail_summary_selector, **options.merge(text:))
77+
has_no_selector?(detail_summary_selector, text:, **options)
7878
end
7979

8080
def click_govuk_detail_summary(text, options = {})
81-
detail_summary = find(detail_summary_selector, **options.merge(text:))
81+
detail_summary = find(detail_summary_selector, text:, **options)
8282
detail_summary.click
8383
end
8484

0 commit comments

Comments
 (0)