Skip to content

Commit 9d28b94

Browse files
AP-613 convert oclc number to int if it's a float in the spreadsheet (#7)
converting oclc numbers to floats in spec removed spaces at end of line for rubocop bumped nokogiri to 1.19 and ruby to 3.3 forgot to update the build and gem push files with the updated ruby version updated rubocop target to ruby 3.3 bumped rubocop version Fixed comment typo, and change requirement for rubocop to 1.85.0 instead of 1.85
1 parent 6961957 commit 9d28b94

9 files changed

Lines changed: 40 additions & 6 deletions

File tree

.github/workflows/build.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ jobs:
66
fail-fast: false
77
matrix:
88
os: [ ubuntu-latest, macos-latest ]
9-
ruby: [ '3.1', '3.2' ]
9+
ruby: [ '3.3', '3.4' ]
1010
runs-on: ${{ matrix.os }}
1111

1212
steps:

.github/workflows/gem-push.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ jobs:
1818
- name: Set up Ruby
1919
uses: ruby/setup-ruby@v1
2020
with:
21-
ruby-version: '3.2'
21+
ruby-version: '3.3'
2222
bundler-cache: true
2323

2424
- name: Publish to RubyGems

.rubocop.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@ inherit_mode:
33
- Exclude
44
- Include
55

6+
AllCops:
7+
TargetRubyVersion: 3.3
8+
69
# Allow one line around block body (Layout/EmptyLines will still disallow two or more)
710
Layout/EmptyLinesAroundBlockBody:
811
Enabled: false

.ruby-version

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
3.1.2
1+
~> 3.3

berkeley_library-location.gemspec

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ Gem::Specification.new do |spec|
1414
spec.version = BerkeleyLibrary::Location::ModuleInfo::VERSION
1515
spec.homepage = BerkeleyLibrary::Location::ModuleInfo::HOMEPAGE
1616

17-
spec.required_ruby_version = '>= 3.1.0'
17+
spec.required_ruby_version = '>= 3.3.0'
1818

1919
spec.metadata['homepage_uri'] = spec.homepage
2020
spec.metadata['source_code_uri'] = spec.homepage
@@ -31,6 +31,7 @@ Gem::Specification.new do |spec|
3131
spec.add_dependency 'berkeley_library-util', '~> 0.1', '>= 0.1.9'
3232
spec.add_dependency 'jsonpath', '~> 0.5.8'
3333
spec.add_dependency 'marcel', '~> 1.0.2'
34+
spec.add_dependency 'nokogiri', '>= 1.19.1'
3435
spec.add_dependency 'rest-client', '~> 2.1'
3536
spec.add_dependency 'rubyXL', '~> 3.4'
3637

@@ -40,7 +41,7 @@ Gem::Specification.new do |spec|
4041
spec.add_development_dependency 'dotenv', '~> 2.7'
4142
spec.add_development_dependency 'rake', '~> 13.0'
4243
spec.add_development_dependency 'rspec', '~> 3.10'
43-
spec.add_development_dependency 'rubocop', '= 1.39'
44+
spec.add_development_dependency 'rubocop', '~> 1.75.0'
4445
spec.add_development_dependency 'rubocop-rake', '= 0.6.0'
4546
spec.add_development_dependency 'rubocop-rspec', '= 2.4.0'
4647
spec.add_development_dependency 'ruby-prof', '~> 1.7.1'

lib/berkeley_library/location/xlsx_reader.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ def each_oclc_number
1919
return to_enum(:each_oclc_number) unless block_given?
2020

2121
ss.each_value(oclc_col_index, include_header: false) do |v|
22+
# convert to integer if oclc number is a float in the spreadsheet
23+
v = v.to_i if v.is_a?(Float)
2224
next if (v_str = v.to_s).strip == ''
2325

2426
yield v_str

spec/.rubocop.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,5 +123,5 @@ RSpec/VerifiedDoubles:
123123
RSpec/IdenticalEqualityAssertion: # new in 2.4
124124
Enabled: true
125125

126-
RSpec/Rails/AvoidSetupHook: # new in 2.4
126+
RSpecRails/AvoidSetupHook:
127127
Enabled: true

spec/berkeley_library/location/xlsx_reader_spec.rb

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,12 +73,40 @@ module Location
7373
.to yield_successive_args(*oclc_numbers_expected)
7474
end
7575

76+
# Added this since oclc floats in oclc-numbers-float.xlsx weren't being read
77+
# in as floats at runtime.
78+
it 'processes OCLC numbers converted to floats from the base spreadsheet' do
79+
source_xlsx_path = 'spec/data/excel/oclc-numbers.xlsx'
80+
source_oclc_numbers = XLSXReader.new(source_xlsx_path).each_oclc_number.to_a
81+
82+
Dir.mktmpdir(File.basename(__FILE__)) do |tmpdir|
83+
xlsx_path = File.join(tmpdir, 'oclc-numbers-from-source-as-floats.xlsx')
84+
85+
ss = BerkeleyLibrary::Util::XLSX::Spreadsheet.new
86+
c_index = ss.ensure_column!(BerkeleyLibrary::Location::Constants::OCLC_COL_HEADER)
87+
source_oclc_numbers.each_with_index do |oclc_num, i|
88+
r_index = 1 + i # skip header row
89+
ss.set_value_at(r_index, c_index, oclc_num.to_f)
90+
end
91+
ss.save_as(xlsx_path)
92+
93+
reader = XLSXReader.new(xlsx_path)
94+
expect(reader.each_oclc_number.to_a).to eq(source_oclc_numbers)
95+
end
96+
end
97+
7698
it 'finds OCLC numbers as strings' do
7799
reader = XLSXReader.new('spec/data/excel/oclc-numbers-text.xlsx')
78100
expect { |b| reader.each_oclc_number(&b) }
79101
.to yield_successive_args(*oclc_numbers_expected)
80102
end
81103

104+
it 'finds OCLC numbers when column is formatted as Excel number' do
105+
reader = XLSXReader.new('spec/data/excel/oclc-numbers-float.xlsx')
106+
expect { |b| reader.each_oclc_number(&b) }
107+
.to yield_successive_args(*oclc_numbers_expected)
108+
end
109+
82110
it 'skips blank cells' do
83111
reader = XLSXReader.new('spec/data/excel/oclc-numbers-sparse.xlsx')
84112
expect { |b| reader.each_oclc_number(&b) }
9.86 KB
Binary file not shown.

0 commit comments

Comments
 (0)