Skip to content

Commit

Permalink
Remove OpenStruct usage
Browse files Browse the repository at this point in the history
Loading the gem on Ruby 3.3.5 or 3.4.0-preview1 prints this warning:

    lib/jira-ruby.rb:53: warning: ostruct was loaded from the standard library, but will no longer be part of the default gems starting from Ruby 3.5.0.
    You can add ostruct to your Gemfile or gemspec to silence this warning.

OpenStruct is used to store two values, field_map and field_map_reverse,
but only field_map was used, so we can store it directly in an instance
variable and remove the dependency on OpenStruct.
  • Loading branch information
eugeneius committed Sep 29, 2024
1 parent 582b175 commit 93a514f
Show file tree
Hide file tree
Showing 8 changed files with 13 additions and 24 deletions.
3 changes: 0 additions & 3 deletions .rubocop.yml
Original file line number Diff line number Diff line change
Expand Up @@ -178,9 +178,6 @@ Style/ClassAndModuleChildren:
Style/MissingRespondToMissing:
Enabled: false

Style/OpenStructUse:
Enabled: false

Style/OptionalBooleanParameter:
Enabled: false

Expand Down
5 changes: 1 addition & 4 deletions lib/jira/client.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

require 'json'
require 'forwardable'
require 'ostruct'

module JIRA
# This class is the main access point for all JIRA::Resource instances.
Expand Down Expand Up @@ -55,7 +54,7 @@ class Client
#
# The authenticated client instance returned by the respective client type
# (Oauth, Basic)
attr_accessor :consumer, :request_client, :http_debug, :cache
attr_accessor :consumer, :request_client, :http_debug, :field_map_cache

# The configuration options for this client instance
attr_reader :options
Expand Down Expand Up @@ -164,8 +163,6 @@ def initialize(options = {})
@http_debug = @options[:http_debug]

@options.freeze

@cache = OpenStruct.new
end

def Project # :nodoc:
Expand Down
12 changes: 4 additions & 8 deletions lib/jira/resource/field.rb
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ def self.safer_name(description, jira_id)

def self.map_fields(client)
field_map = {}
field_map_reverse = {}
fields = client.Field.all

# two pass approach, so that a custom field with the same name
Expand All @@ -30,7 +29,6 @@ def self.map_fields(client)
next if f.custom

name = safe_name(f.name)
field_map_reverse[f.id] = [f.name, name] # capture both the official name, and the mapped name
field_map[name] = f.id
end

Expand All @@ -44,23 +42,21 @@ def self.map_fields(client)
else
safe_name(f.name)
end
field_map_reverse[f.id] = [f.name, name] # capture both the official name, and the mapped name
field_map[name] = f.id
end

client.cache.field_map_reverse = field_map_reverse # not sure where this will be used yet, but sure to be useful
client.cache.field_map = field_map
client.field_map_cache = field_map
end

def self.field_map(client)
client.cache.field_map
client.field_map_cache
end

def self.name_to_id(client, field_name)
field_name = field_name.to_s
return field_name unless client.cache.field_map && client.cache.field_map[field_name]
return field_name unless client.field_map_cache && client.field_map_cache[field_name]

client.cache.field_map[field_name]
client.field_map_cache[field_name]
end

def respond_to?(method_name, _include_all = false)
Expand Down
2 changes: 1 addition & 1 deletion spec/integration/user_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@

before do
allow(client).to receive(:get)
.with('/rest/api/2/users/search?username=_&maxResults=1000') { OpenStruct.new(body: '["User1"]') }
.with('/rest/api/2/users/search?username=_&maxResults=1000') { double(body: '["User1"]') }
allow(client).to receive_message_chain(:User, :build).with('users') { [] }
end

Expand Down
6 changes: 3 additions & 3 deletions spec/jira/resource/board_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -107,15 +107,15 @@ class JIRAResourceDelegation < SimpleDelegator # :nodoc:

context 'when there are multiple pages of results' do
let(:result_1) do
OpenStruct.new(body: {
double(body: {
'startAt' => 0,
'maxResults' => 1,
'total' => 2,
'issues' => []
}.to_json)
end
let(:result_2) do
OpenStruct.new(body: {
double(body: {
'startAt' => 1,
'maxResults' => 1,
'total' => 2,
Expand All @@ -132,7 +132,7 @@ class JIRAResourceDelegation < SimpleDelegator # :nodoc:

context 'when there is only one page of results' do
let(:result_1) do
OpenStruct.new(body: {
double(body: {
'startAt' => 0,
'maxResults' => 2,
'total' => 2,
Expand Down
5 changes: 2 additions & 3 deletions spec/jira/resource/field_spec.rb
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
require 'spec_helper'

describe JIRA::Resource::Field do
let(:cache) { OpenStruct.new }

let(:client) do
client = double(options: { rest_base_path: '/jira/rest/api/2' })
field = JIRA::Resource::FieldFactory.new(client)
allow(client).to receive(:Field).and_return(field)
allow(client).to receive(:cache).and_return(cache)
allow(client).to receive(:field_map_cache).and_return(nil)
allow(client).to receive(:field_map_cache=)
# info about all fields on the client
allow(client.Field).to receive(:all).and_return([
described_class.new(client,
Expand Down
2 changes: 1 addition & 1 deletion spec/jira/resource/issue_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ class JIRAResourceDelegation < SimpleDelegator # :nodoc:
let(:client) do
client = double(options: { rest_base_path: '/jira/rest/api/2' })
allow(client).to receive(:Field).and_return(JIRA::Resource::FieldFactory.new(client))
allow(client).to receive(:cache).and_return(OpenStruct.new)
allow(client).to receive(:field_map_cache).and_return(nil)
client
end

Expand Down
2 changes: 1 addition & 1 deletion spec/jira/resource/status_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
let(:client) do
client = double(options: { rest_base_path: '/jira/rest/api/2' })
allow(client).to receive(:Field).and_return(JIRA::Resource::FieldFactory.new(client))
allow(client).to receive(:cache).and_return(OpenStruct.new)
allow(client).to receive(:field_map_cache).and_return(nil)
client
end

Expand Down

0 comments on commit 93a514f

Please sign in to comment.