Skip to content

Commit 0ff12a5

Browse files
committed
Test activesupport versions
1 parent ead9b9f commit 0ff12a5

File tree

7 files changed

+61
-60
lines changed

7 files changed

+61
-60
lines changed

.github/workflows/ci.yml

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ jobs:
99
runs-on: ubuntu-latest
1010
strategy:
1111
matrix:
12-
ruby-version: ["2.7", "3.0", "3.1", "3.2", "3.3"]
12+
ruby-version: ["3.0", "3.1", "3.2", "3.3"]
13+
activesupport-version: ["activesupport-6.1", "activesupport-7.1"]
1314

1415
steps:
1516
- uses: actions/checkout@v4
@@ -18,9 +19,11 @@ jobs:
1819
- uses: actions/cache@v4
1920
with:
2021
path: vendor/bundle
21-
key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }}-v1
22+
key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }}-v2
2223
- uses: ruby/setup-ruby@v1
2324
with:
2425
ruby-version: ${{ matrix.ruby-version }}
2526
- run: bin/setup
26-
- run: bin/test
27+
- run: bundle exec appraisal generate
28+
- run: bundle exec appraisal install
29+
- run: bundle exec appraisal ${{ matrix.activesupport-version }} bin/test

Appraisals

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,7 @@
1-
appraise "ruby-2.7" do
1+
appraise "activesupport-6.1" do
2+
gem "activesupport", "~> 6.1.0"
23
end
34

4-
appraise "ruby-3.0" do
5-
end
6-
7-
appraise "ruby-3.1" do
8-
end
9-
10-
appraise "ruby-3.2" do
11-
end
12-
13-
appraise "ruby-3.3" do
5+
appraise "activesupport-7.1" do
6+
gem "activesupport", "~> 7.1.0"
147
end

Gemfile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
11
source "https://rubygems.org"
22
gemspec
3+
4+
gem "activesupport", ">= 5.1"

bin/test

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#!/bin/sh
22

33
echo "== Running tests =="
4+
[ "${CI}" = "1" ] && bundle info activesupport
45
bundle exec rake test "$@"

test/cases/time_slice_test.rb

Lines changed: 43 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -12,61 +12,61 @@ class TimeSliceTest < TestCase
1212
it "accepts a period and :length option" do
1313
range = TimeSlice.new("2h", length: "4")
1414
assert_equal 4, range.length
15-
assert_equal "2019-01-06 10:00:00", range.from.to_fs(:db)
16-
assert_equal "2019-01-06 16:00:00", range.to.to_fs(:db)
17-
assert_time_range "[2019-01-06 10:00:00, 2019-01-06 12:00:00]", range[0]
18-
assert_time_range "[2019-01-06 12:00:00, 2019-01-06 14:00:00]", range[1]
19-
assert_time_range "[2019-01-06 14:00:00, 2019-01-06 16:00:00]", range[2]
20-
assert_time_range "[2019-01-06 16:00:00, 2019-01-06 18:00:00]", range[3]
15+
assert_equal "2019-01-06T10:00:00Z", range.from.iso8601
16+
assert_equal "2019-01-06T16:00:00Z", range.to.iso8601
17+
assert_time_range "[2019-01-06T10:00:00Z, 2019-01-06T12:00:00Z]", range[0]
18+
assert_time_range "[2019-01-06T12:00:00Z, 2019-01-06T14:00:00Z]", range[1]
19+
assert_time_range "[2019-01-06T14:00:00Z, 2019-01-06T16:00:00Z]", range[2]
20+
assert_time_range "[2019-01-06T16:00:00Z, 2019-01-06T18:00:00Z]", range[3]
2121

2222
range = TimeSlice.new("2h", length: 1)
2323
assert_equal 1, range.length
24-
assert_time_range "[2019-01-06 16:00:00, 2019-01-06 18:00:00]", range[0]
24+
assert_time_range "[2019-01-06T16:00:00Z, 2019-01-06T18:00:00Z]", range[0]
2525
end
2626

2727
it "is enumerable" do
2828
assert range.each { true }
29-
assert_time_range "[[2019-01-06 14:00:00, 2019-01-06 16:00:00], [2019-01-06 16:00:00, 2019-01-06 18:00:00]]", range
29+
assert_time_range "[[2019-01-06T14:00:00Z, 2019-01-06T16:00:00Z], [2019-01-06T16:00:00Z, 2019-01-06T18:00:00Z]]", range
3030
end
3131

3232
it "accepts a :from option" do
3333
range = TimeSlice.new("5m", from: "2019-01-06 17:20")
34-
assert_equal "2019-01-06 17:20:00", range.from.to_fs(:db)
35-
assert_equal "2019-01-06 17:40:00", range.to.to_fs(:db)
36-
assert_time_range "[2019-01-06 17:20:00, 2019-01-06 17:25:00]", range.first
37-
assert_time_range "[2019-01-06 17:40:00, 2019-01-06 17:45:00]", range.last
34+
assert_equal "2019-01-06T17:20:00Z", range.from.iso8601
35+
assert_equal "2019-01-06T17:40:00Z", range.to.iso8601
36+
assert_time_range "[2019-01-06T17:20:00Z, 2019-01-06T17:25:00Z]", range.first
37+
assert_time_range "[2019-01-06T17:40:00Z, 2019-01-06T17:45:00Z]", range.last
3838
assert_equal 5, range.length
3939

4040
range = TimeSlice.new("1m", from: "2019-01-06 17:20")
41-
assert_equal "2019-01-06 17:20:00", range.from.to_fs(:db)
42-
assert_equal "2019-01-06 17:44:00", range.to.to_fs(:db)
43-
assert_time_range "[2019-01-06 17:20:00, 2019-01-06 17:21:00]", range.first
44-
assert_time_range "[2019-01-06 17:44:00, 2019-01-06 17:45:00]", range.last
41+
assert_equal "2019-01-06T17:20:00Z", range.from.iso8601
42+
assert_equal "2019-01-06T17:44:00Z", range.to.iso8601
43+
assert_time_range "[2019-01-06T17:20:00Z, 2019-01-06T17:21:00Z]", range.first
44+
assert_time_range "[2019-01-06T17:44:00Z, 2019-01-06T17:45:00Z]", range.last
4545
assert_equal 25, range.length
4646
end
4747

4848
it "accepts a :from and :to option" do
4949
range = TimeSlice.new("5m", from: "2019-01-06 17:10", to: "2019-01-06 17:35")
50-
assert_equal "2019-01-06 17:10:00", range.from.to_fs(:db)
51-
assert_equal "2019-01-06 17:35:00", range.to.to_fs(:db)
52-
assert_time_range "[2019-01-06 17:10:00, 2019-01-06 17:15:00]", range.first
53-
assert_time_range "[2019-01-06 17:35:00, 2019-01-06 17:40:00]", range.last
50+
assert_equal "2019-01-06T17:10:00Z", range.from.iso8601
51+
assert_equal "2019-01-06T17:35:00Z", range.to.iso8601
52+
assert_time_range "[2019-01-06T17:10:00Z, 2019-01-06T17:15:00Z]", range.first
53+
assert_time_range "[2019-01-06T17:35:00Z, 2019-01-06T17:40:00Z]", range.last
5454
assert_equal 6, range.length
5555

5656
range = TimeSlice.new("5m", from: "2019-01-06 17:10:00", to: "2019-01-06 17:10:05")
57-
assert_equal "2019-01-06 17:10:00", range.from.to_fs(:db)
58-
assert_equal "2019-01-06 17:10:00", range.to.to_fs(:db)
59-
assert_time_range "[2019-01-06 17:10:00, 2019-01-06 17:15:00]", range.first
60-
assert_time_range "[2019-01-06 17:10:00, 2019-01-06 17:15:00]", range.last
57+
assert_equal "2019-01-06T17:10:00Z", range.from.iso8601
58+
assert_equal "2019-01-06T17:10:00Z", range.to.iso8601
59+
assert_time_range "[2019-01-06T17:10:00Z, 2019-01-06T17:15:00Z]", range.first
60+
assert_time_range "[2019-01-06T17:10:00Z, 2019-01-06T17:15:00Z]", range.last
6161
assert_equal 1, range.length
6262
end
6363

6464
it "accepts a :from and :length option" do
6565
range = TimeSlice.new("5m", from: "2019-01-06 17:10", length: 3)
66-
assert_equal "2019-01-06 17:10:00", range.from.to_fs(:db)
67-
assert_equal "2019-01-06 17:20:00", range.to.to_fs(:db)
68-
assert_time_range "[2019-01-06 17:10:00, 2019-01-06 17:15:00]", range.first
69-
assert_time_range "[2019-01-06 17:20:00, 2019-01-06 17:25:00]", range.last
66+
assert_equal "2019-01-06T17:10:00Z", range.from.iso8601
67+
assert_equal "2019-01-06T17:20:00Z", range.to.iso8601
68+
assert_time_range "[2019-01-06T17:10:00Z, 2019-01-06T17:15:00Z]", range.first
69+
assert_time_range "[2019-01-06T17:20:00Z, 2019-01-06T17:25:00Z]", range.last
7070
assert_equal 3, range.length
7171
end
7272

@@ -90,11 +90,11 @@ class TimeSliceTest < TestCase
9090
it "gets previous times" do
9191
range = TimeSlice.new("5m", from: "2019-01-06 17:00", to: "2019-01-06 17:35")
9292
prev = range.previous("2019-01-06 17:20:00", 3)
93-
assert_equal "2019-01-06 17:05:00", prev.from.to_fs(:db)
94-
assert_equal "2019-01-06 17:15:00", prev.to.to_fs(:db)
95-
assert_time_range "[2019-01-06 17:05:00, 2019-01-06 17:10:00]", prev[0]
96-
assert_time_range "[2019-01-06 17:10:00, 2019-01-06 17:15:00]", prev[1]
97-
assert_time_range "[2019-01-06 17:15:00, 2019-01-06 17:20:00]", prev[2]
93+
assert_equal "2019-01-06T17:05:00Z", prev.from.iso8601
94+
assert_equal "2019-01-06T17:15:00Z", prev.to.iso8601
95+
assert_time_range "[2019-01-06T17:05:00Z, 2019-01-06T17:10:00Z]", prev[0]
96+
assert_time_range "[2019-01-06T17:10:00Z, 2019-01-06T17:15:00Z]", prev[1]
97+
assert_time_range "[2019-01-06T17:15:00Z, 2019-01-06T17:20:00Z]", prev[2]
9898
assert_equal 3, prev.length
9999
end
100100

@@ -106,20 +106,20 @@ class TimeSliceTest < TestCase
106106
it "correctly handles different time periods" do
107107
range = TimeSlice.new("15m", from: "2019-01-06 12:00", to: "2019-01-06 13:00")
108108
assert_equal 5, range.length
109-
assert_time_range "[2019-01-06 12:00:00, 2019-01-06 12:15:00]", range.first
110-
assert_time_range "[2019-01-06 13:00:00, 2019-01-06 13:15:00]", range.last
109+
assert_time_range "[2019-01-06T12:00:00Z, 2019-01-06T12:15:00Z]", range.first
110+
assert_time_range "[2019-01-06T13:00:00Z, 2019-01-06T13:15:00Z]", range.last
111111

112112
range = TimeSlice.new("1d", from: "2019-01-01", to: "2019-01-05")
113113
assert_equal 5, range.length
114-
assert_time_range "[2019-01-01 00:00:00, 2019-01-02 00:00:00]", range.first
115-
assert_time_range "[2019-01-05 00:00:00, 2019-01-06 00:00:00]", range.last
114+
assert_time_range "[2019-01-01T00:00:00Z, 2019-01-02T00:00:00Z]", range.first
115+
assert_time_range "[2019-01-05T00:00:00Z, 2019-01-06T00:00:00Z]", range.last
116116
end
117117

118118
it "handles empty ranges" do
119119
range = TimeSlice.new("1h", from: "2019-01-06 12:00", to: "2019-01-06 12:00")
120120
assert_equal 1, range.length
121-
assert_time_range "[2019-01-06 12:00:00, 2019-01-06 13:00:00]", range.first
122-
assert_time_range "[2019-01-06 12:00:00, 2019-01-06 13:00:00]", range.last
121+
assert_time_range "[2019-01-06T12:00:00Z, 2019-01-06T13:00:00Z]", range.first
122+
assert_time_range "[2019-01-06T12:00:00Z, 2019-01-06T13:00:00Z]", range.last
123123
end
124124

125125
it "correctly implements the Enumerable interface" do
@@ -153,11 +153,11 @@ class TimeSliceTest < TestCase
153153
it "correctly handles previous method with edge cases" do
154154
range = TimeSlice.new("1h", from: "2019-01-06 12:00", to: "2019-01-06 15:00")
155155
prev = range.previous("2019-01-06 13:00", 2)
156-
assert_time_range "[2019-01-06 11:00:00, 2019-01-06 12:00:00]", prev.first
157-
assert_time_range "[2019-01-06 12:00:00, 2019-01-06 13:00:00]", prev.last
156+
assert_time_range "[2019-01-06T11:00:00Z, 2019-01-06T12:00:00Z]", prev.first
157+
assert_time_range "[2019-01-06T12:00:00Z, 2019-01-06T13:00:00Z]", prev.last
158158

159159
prev = range.previous("2019-01-06 12:00", 2)
160-
assert_time_range "[2019-01-06 10:00:00, 2019-01-06 11:00:00]", prev.first
161-
assert_time_range "[2019-01-06 11:00:00, 2019-01-06 12:00:00]", prev.last
160+
assert_time_range "[2019-01-06T10:00:00Z, 2019-01-06T11:00:00Z]", prev.first
161+
assert_time_range "[2019-01-06T11:00:00Z, 2019-01-06T12:00:00Z]", prev.last
162162
end
163163
end

test/test_helper.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
require "minitest/autorun"
2+
require "minitest/focus"
23
require "mocha/minitest"
34
require_relative "../lib/time_slice"
45

@@ -13,7 +14,7 @@ def time_array_to_s(times)
1314
end
1415

1516
times = times
16-
.map { |times| times.map { |t| t.to_fs(:db) } }
17+
.map { |times| times.map { |t| t.iso8601 } }
1718
.map { |times| "[#{times.join(", ")}]" }
1819
.join(", ")
1920

time_slice.gemspec

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,14 @@ Gem::Specification.new do |spec|
1515
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
1616
spec.require_paths = ["lib"]
1717

18-
spec.required_ruby_version = ">= 2.7.0"
18+
spec.required_ruby_version = ">= 3.0"
1919

20-
spec.add_dependency("activesupport", "> 5.1")
20+
spec.add_dependency("activesupport", ">= 5.1")
2121
spec.add_dependency("rounding", "> 1.0")
2222

2323
spec.add_development_dependency("appraisal", "~> 2.5.0")
2424
spec.add_development_dependency("minitest", "~> 5.24.1")
25+
spec.add_development_dependency("minitest-focus", "~> 1.4")
2526
spec.add_development_dependency("mocha", "~> 2.4.0")
2627
spec.add_development_dependency("rake", "~> 13.2.1")
2728
end

0 commit comments

Comments
 (0)