diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2c83e5ee..f2e48cc4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,12 +13,22 @@ jobs: ruby: 3.3 - gemfile: rails_8_0 ruby: 3.4 + - gemfile: rails_8_0 + ruby: "4.0" + - gemfile: rails_8_1 + ruby: 3.2 + - gemfile: rails_8_1 + ruby: 3.3 + - gemfile: rails_8_1 + ruby: 3.4 + - gemfile: rails_8_1 + ruby: "4.0" name: ${{ matrix.gemfile }}, ruby ${{ matrix.ruby }} env: BUNDLE_GEMFILE: ${{ github.workspace }}/gemfiles/${{ matrix.gemfile }}.gemfile steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v7 - name: Set up Ruby uses: ruby/setup-ruby@v1 diff --git a/Appraisals b/Appraisals index fec3689c..710baee9 100644 --- a/Appraisals +++ b/Appraisals @@ -1,3 +1,7 @@ appraise "rails_8_0" do gem "rails", "~> 8.0.0" end + +appraise "rails_8_1" do + gem "rails", "~> 8.1.0" +end diff --git a/gemfiles/rails_8_1.gemfile b/gemfiles/rails_8_1.gemfile new file mode 100644 index 00000000..2c1eb8b9 --- /dev/null +++ b/gemfiles/rails_8_1.gemfile @@ -0,0 +1,13 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "rails", "~> 8.1.0" +gem "rspec" +gem "rspec-rails", "~> 8.0" +gem "sqlite3", "~> 2.0" +gem "debug" +gem "appraisal" +gem "nokogiri" + +gemspec path: "../" diff --git a/spec/validates_timeliness/orm/active_record_spec.rb b/spec/validates_timeliness/orm/active_record_spec.rb index 973c2435..154c68bf 100644 --- a/spec/validates_timeliness/orm/active_record_spec.rb +++ b/spec/validates_timeliness/orm/active_record_spec.rb @@ -107,6 +107,14 @@ class EmployeeWithParser < ActiveRecord::Base context 'timezone aware' do with_config(:default_timezone, 'Australia/Melbourne') + let(:expected_time) do + if ActiveRecord.gem_version >= Gem::Version.new('8.1') + Time.zone.local(2000, 1, 1, 12, 30) + else + '12:30'.in_time_zone + end + end + before do unless ActiveRecord::Base.time_zone_aware_types.include?(:time) ActiveRecord::Base.time_zone_aware_types.push(:time) @@ -116,7 +124,7 @@ class EmployeeWithParser < ActiveRecord::Base it 'should parse a string value' do record.birth_time = '12:30' - expect(record.birth_time).to eq('12:30'.in_time_zone) + expect(record.birth_time).to eq(expected_time) expect(Timeliness::Parser).to have_received(:parse) end @@ -130,8 +138,8 @@ class EmployeeWithParser < ActiveRecord::Base it 'should store a Time value after parsing string' do record.birth_time = '12:30' - expect(record.birth_time).to eq('12:30'.in_time_zone) - expect(record.birth_time.utc_offset).to eq '12:30'.in_time_zone.utc_offset + expect(record.birth_time).to eq(expected_time) + expect(record.birth_time.utc_offset).to eq expected_time.utc_offset end end