activerecord-time 0.5.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 58d80c32a813a511615958ac7e50c39646a6f6bf
4
- data.tar.gz: 57f8670274cdf265cd4ffa812046a8142e04bda2
3
+ metadata.gz: dabe685f8ccbf24d8508ebaac1638b4d544a4199
4
+ data.tar.gz: bb73addeaac1bcec334d5e26c2d9eb78a39e163f
5
5
  SHA512:
6
- metadata.gz: 403db3b2198fe2bb9042ca4087109882dc8445e29fdadbc3ae150f72ded6715dbad0e5ee52307e88d7e9c1560ff97d601d8c3c6e4abf71087ceb7da0369fe086
7
- data.tar.gz: 4612616c3dba28dd200b6994fb3d1763d0470f01cd71f64fac68b20c36c06ed1f2fa4763baef7f7eba0b56105ce21d2f774db52c0bf330656179095267f2cce4
6
+ metadata.gz: 43236b8cc04aa36186110e88efb5e214063fa58b56fb273fbc8d3855717f400509a5afd61b8435104302e586f5445809162797c473583f31d0fda1cda9699b42
7
+ data.tar.gz: cbba40060ba4e41068afbddd4709a1451251ec82094555b16df087cf4523845c9e5180ee0f90f920fbd6ceab522b25fde63c4b59bc1d6a91cf4c07567f50c2ce
data/.gitignore CHANGED
@@ -5,6 +5,7 @@ debug.log
5
5
  *.rbc
6
6
  .bundle
7
7
  .config
8
+ .DS_Store
8
9
  .idea
9
10
  .yardoc
10
11
  Gemfile.lock
@@ -3,7 +3,7 @@ sudo: false
3
3
  rvm:
4
4
  - jruby-head
5
5
  - ruby-head
6
- - jruby-9.0.0.0
6
+ - jruby-9.0.1.0
7
7
  - "2.2"
8
8
  - "2.1"
9
9
  - "2.0.0"
data/Gemfile CHANGED
@@ -6,9 +6,3 @@ gemspec
6
6
  if ENV['AR_VERSION']
7
7
  gem 'activerecord', ENV['AR_VERSION']
8
8
  end
9
-
10
- # TODO(uwe): Remove when ARJDBC 1.4.0 is out
11
- if RUBY_ENGINE == 'jruby'
12
- gem 'activerecord-jdbc-adapter', '>= 1.3.17', github: 'jruby/activerecord-jdbc-adapter', branch: '1-3-stable'
13
- end
14
- # ODOT
data/README.md CHANGED
@@ -7,7 +7,13 @@ A handler for storing TimeOfDay objects in ActiveRecord objects as SQL time valu
7
7
  Also adds load/dump of TimeOfDay objects to and from YAML streams, so you can use
8
8
  them in fixtures.
9
9
 
10
- The gem supports MRI and JRuby at Ruby language level 1.9.3 and later.
10
+ Also adds JSON encode/decode.
11
+
12
+ The gem supports MRI and JRuby at Ruby language level 1.9.3 and later. Other
13
+ Ruby implementations may work.
14
+
15
+ ActiveRecord 3.2 and later supported.
16
+
11
17
 
12
18
  ## Installation
13
19
 
@@ -25,8 +31,8 @@ Or install it yourself as:
25
31
 
26
32
  ## Usage
27
33
 
28
- Create your tables with fields with type :time and you will be able to access them as
29
- TimeOfDay objects.
34
+ Create your tables with fields with type :time and you will be able to access
35
+ them as TimeOfDay objects.
30
36
 
31
37
  ```Ruby
32
38
  create_table :schedules do |t|
@@ -66,6 +72,37 @@ schedule = Schedule.new
66
72
  schedule.start_time = '08:34'
67
73
  ```
68
74
 
75
+ ## TimeOfDay Kernel extension
76
+
77
+ Kernel is extended with a TimeOfDay constructor that takes either a parseable
78
+ String or one or more integers.
79
+
80
+ ```Ruby
81
+ party_starts_at = TimeOfDay('17:59')
82
+ dancing_starts_at = TimeOfDay(20, 02)
83
+ ```
84
+
85
+ ## TimeOfDay Date extension
86
+
87
+ Ruby Date objects are extended with the `at` method that takes a TimeOfDay
88
+ argument to produce a Ruby Time object. As a shortcut, a String that is
89
+ parseable by TimeOfDay can be given.
90
+
91
+ ```Ruby
92
+ halloween = Date.parse('2015-10-31')
93
+ trick_or_treat = halloween.at(TimeOfDay.parse('18:00'))
94
+ halloween_dinner = halloween.at('20:00')
95
+ ```
96
+
97
+ ## TimeOfDay Time extension
98
+
99
+ Ruby Time objects are extended with the `time_of_day` method that returns a
100
+ TimeOfDay object corresponding to the time of day of the Time object.
101
+
102
+ ```Ruby
103
+ Time.parse('2015-10-31 20:00').time_of_day # returns TimeOfDay(20, 0)
104
+ ```
105
+
69
106
 
70
107
 
71
108
  ## Contributing
@@ -75,3 +112,15 @@ schedule.start_time = '08:34'
75
112
  3. Commit your changes (`git commit -am 'Add some feature'`)
76
113
  4. Push to the branch (`git push origin my-new-feature`)
77
114
  5. Create new Pull Request
115
+
116
+ ## Testing
117
+
118
+ Run tests using
119
+
120
+ rake
121
+
122
+ ### Matrix test
123
+
124
+ ./matrix_test.rb
125
+
126
+ This will run the tests for the same environments as travis-ci.
@@ -30,4 +30,5 @@ Gem::Specification.new do |gem|
30
30
  end
31
31
  gem.add_development_dependency 'minitest-reporters'
32
32
  gem.add_development_dependency 'rake'
33
+ gem.add_development_dependency 'simplecov'
33
34
  end
@@ -1,17 +1,3 @@
1
- GIT
2
- remote: git://github.com/jruby/activerecord-jdbc-adapter.git
3
- revision: 16446e752f07e03eaa6386184039addb42fc3e60
4
- branch: 1-3-stable
5
- specs:
6
- activerecord-jdbc-adapter (1.3.17)
7
- activerecord (>= 2.2)
8
- activerecord-jdbcpostgresql-adapter (1.3.17)
9
- activerecord-jdbc-adapter (~> 1.3.17)
10
- jdbc-postgres (>= 9.1)
11
- activerecord-jdbcsqlite3-adapter (1.3.17)
12
- activerecord-jdbc-adapter (~> 1.3.17)
13
- jdbc-sqlite3 (>= 3.7.2, < 3.9)
14
-
15
1
  GEM
16
2
  remote: https://rubygems.org/
17
3
  specs:
@@ -23,15 +9,25 @@ GEM
23
9
  activesupport (= 3.2.22)
24
10
  arel (~> 3.0.2)
25
11
  tzinfo (~> 0.3.29)
12
+ activerecord-jdbc-adapter (1.3.18)
13
+ activerecord (>= 2.2)
14
+ activerecord-jdbcpostgresql-adapter (1.3.18)
15
+ activerecord-jdbc-adapter (~> 1.3.18)
16
+ jdbc-postgres (>= 9.1)
17
+ activerecord-jdbcsqlite3-adapter (1.3.18)
18
+ activerecord-jdbc-adapter (~> 1.3.18)
19
+ jdbc-sqlite3 (>= 3.7.2, < 3.9)
26
20
  activesupport (3.2.22)
27
21
  i18n (~> 0.6, >= 0.6.4)
28
22
  multi_json (~> 1.0)
29
23
  ansi (1.5.0)
30
24
  arel (3.0.3)
31
25
  builder (3.0.4)
26
+ docile (1.1.5)
32
27
  i18n (0.7.0)
33
28
  jdbc-postgres (9.4.1200)
34
29
  jdbc-sqlite3 (3.8.10.1)
30
+ json (1.8.3-java)
35
31
  minitest (5.8.0)
36
32
  minitest-reporters (1.0.19)
37
33
  ansi
@@ -42,6 +38,11 @@ GEM
42
38
  pg (0.18.2)
43
39
  rake (10.4.2)
44
40
  ruby-progressbar (1.7.5)
41
+ simplecov (0.10.0)
42
+ docile (~> 1.1.0)
43
+ json (~> 1.8)
44
+ simplecov-html (~> 0.10.0)
45
+ simplecov-html (0.10.0)
45
46
  sqlite3 (1.3.10)
46
47
  tzinfo (0.3.44)
47
48
 
@@ -51,12 +52,13 @@ PLATFORMS
51
52
 
52
53
  DEPENDENCIES
53
54
  activerecord (~> 3.2.22)
54
- activerecord-jdbc-adapter (>= 1.3.17)!
55
+ activerecord-jdbc-adapter
55
56
  activerecord-jdbcpostgresql-adapter
56
57
  activerecord-jdbcsqlite3-adapter
57
58
  minitest-reporters
58
59
  pg
59
60
  rake
61
+ simplecov
60
62
  sqlite3
61
63
 
62
64
  BUNDLED WITH
@@ -1,17 +1,3 @@
1
- GIT
2
- remote: git://github.com/jruby/activerecord-jdbc-adapter.git
3
- revision: 16446e752f07e03eaa6386184039addb42fc3e60
4
- branch: 1-3-stable
5
- specs:
6
- activerecord-jdbc-adapter (1.3.17)
7
- activerecord (>= 2.2)
8
- activerecord-jdbcpostgresql-adapter (1.3.17)
9
- activerecord-jdbc-adapter (~> 1.3.17)
10
- jdbc-postgres (>= 9.1)
11
- activerecord-jdbcsqlite3-adapter (1.3.17)
12
- activerecord-jdbc-adapter (~> 1.3.17)
13
- jdbc-sqlite3 (>= 3.7.2, < 3.9)
14
-
15
1
  GEM
16
2
  remote: https://rubygems.org/
17
3
  specs:
@@ -24,6 +10,14 @@ GEM
24
10
  activesupport (= 4.0.13)
25
11
  arel (~> 4.0.0)
26
12
  activerecord-deprecated_finders (1.0.4)
13
+ activerecord-jdbc-adapter (1.3.18)
14
+ activerecord (>= 2.2)
15
+ activerecord-jdbcpostgresql-adapter (1.3.18)
16
+ activerecord-jdbc-adapter (~> 1.3.18)
17
+ jdbc-postgres (>= 9.1)
18
+ activerecord-jdbcsqlite3-adapter (1.3.18)
19
+ activerecord-jdbc-adapter (~> 1.3.18)
20
+ jdbc-sqlite3 (>= 3.7.2, < 3.9)
27
21
  activesupport (4.0.13)
28
22
  i18n (~> 0.6, >= 0.6.9)
29
23
  minitest (~> 4.2)
@@ -33,10 +27,12 @@ GEM
33
27
  ansi (1.5.0)
34
28
  arel (4.0.2)
35
29
  builder (3.1.4)
30
+ docile (1.1.5)
36
31
  hashie (3.4.2)
37
32
  i18n (0.7.0)
38
33
  jdbc-postgres (9.4.1200)
39
34
  jdbc-sqlite3 (3.8.10.1)
35
+ json (1.8.3-java)
40
36
  minitest (4.7.5)
41
37
  minitest-reporters (0.14.24)
42
38
  ansi
@@ -49,6 +45,11 @@ GEM
49
45
  ansi (~> 1.5.0)
50
46
  hashie (>= 1.1.0)
51
47
  rake (10.4.2)
48
+ simplecov (0.10.0)
49
+ docile (~> 1.1.0)
50
+ json (~> 1.8)
51
+ simplecov-html (~> 0.10.0)
52
+ simplecov-html (0.10.0)
52
53
  sqlite3 (1.3.10)
53
54
  thread_safe (0.3.5)
54
55
  thread_safe (0.3.5-java)
@@ -60,12 +61,13 @@ PLATFORMS
60
61
 
61
62
  DEPENDENCIES
62
63
  activerecord (~> 4.0.13)
63
- activerecord-jdbc-adapter (>= 1.3.17)!
64
+ activerecord-jdbc-adapter
64
65
  activerecord-jdbcpostgresql-adapter
65
66
  activerecord-jdbcsqlite3-adapter
66
67
  minitest-reporters
67
68
  pg
68
69
  rake
70
+ simplecov
69
71
  sqlite3
70
72
 
71
73
  BUNDLED WITH
@@ -1,17 +1,3 @@
1
- GIT
2
- remote: git://github.com/jruby/activerecord-jdbc-adapter.git
3
- revision: 16446e752f07e03eaa6386184039addb42fc3e60
4
- branch: 1-3-stable
5
- specs:
6
- activerecord-jdbc-adapter (1.3.17)
7
- activerecord (>= 2.2)
8
- activerecord-jdbcpostgresql-adapter (1.3.17)
9
- activerecord-jdbc-adapter (~> 1.3.17)
10
- jdbc-postgres (>= 9.1)
11
- activerecord-jdbcsqlite3-adapter (1.3.17)
12
- activerecord-jdbc-adapter (~> 1.3.17)
13
- jdbc-sqlite3 (>= 3.7.2, < 3.9)
14
-
15
1
  GEM
16
2
  remote: https://rubygems.org/
17
3
  specs:
@@ -22,6 +8,14 @@ GEM
22
8
  activemodel (= 4.1.12)
23
9
  activesupport (= 4.1.12)
24
10
  arel (~> 5.0.0)
11
+ activerecord-jdbc-adapter (1.3.18)
12
+ activerecord (>= 2.2)
13
+ activerecord-jdbcpostgresql-adapter (1.3.18)
14
+ activerecord-jdbc-adapter (~> 1.3.18)
15
+ jdbc-postgres (>= 9.1)
16
+ activerecord-jdbcsqlite3-adapter (1.3.18)
17
+ activerecord-jdbc-adapter (~> 1.3.18)
18
+ jdbc-sqlite3 (>= 3.7.2, < 3.9)
25
19
  activesupport (4.1.12)
26
20
  i18n (~> 0.6, >= 0.6.9)
27
21
  json (~> 1.7, >= 1.7.7)
@@ -31,6 +25,7 @@ GEM
31
25
  ansi (1.5.0)
32
26
  arel (5.0.1.20140414130214)
33
27
  builder (3.2.2)
28
+ docile (1.1.5)
34
29
  i18n (0.7.0)
35
30
  jdbc-postgres (9.4.1200)
36
31
  jdbc-sqlite3 (3.8.10.1)
@@ -45,6 +40,11 @@ GEM
45
40
  pg (0.18.2)
46
41
  rake (10.4.2)
47
42
  ruby-progressbar (1.7.5)
43
+ simplecov (0.10.0)
44
+ docile (~> 1.1.0)
45
+ json (~> 1.8)
46
+ simplecov-html (~> 0.10.0)
47
+ simplecov-html (0.10.0)
48
48
  sqlite3 (1.3.10)
49
49
  thread_safe (0.3.5)
50
50
  thread_safe (0.3.5-java)
@@ -57,12 +57,13 @@ PLATFORMS
57
57
 
58
58
  DEPENDENCIES
59
59
  activerecord (~> 4.1.12)
60
- activerecord-jdbc-adapter (>= 1.3.17)!
60
+ activerecord-jdbc-adapter
61
61
  activerecord-jdbcpostgresql-adapter
62
62
  activerecord-jdbcsqlite3-adapter
63
63
  minitest-reporters
64
64
  pg
65
65
  rake
66
+ simplecov
66
67
  sqlite3
67
68
 
68
69
  BUNDLED WITH
@@ -1,19 +1,3 @@
1
- GIT
2
- remote: git://github.com/jruby/activerecord-jdbc-adapter.git
3
- revision: 16446e752f07e03eaa6386184039addb42fc3e60
4
- branch: 1-3-stable
5
- specs:
6
- activerecord-jdbc-adapter (1.3.17)
7
- activerecord (>= 2.2)
8
- activerecord-jdbcpostgresql-adapter (1.3.17)
9
- activerecord-jdbc-adapter (~> 1.3.17)
10
- jdbc-postgres (>= 9.1)
11
- activerecord-jdbcsqlite3-adapter (1.3.17)
12
- activerecord-jdbc-adapter (~> 1.3.17)
13
- jdbc-sqlite3 (>= 3.7.2, < 3.9)
14
- jdbc-postgres (9.3.1102)
15
- jdbc-sqlite3 (3.7.2.1)
16
-
17
1
  GEM
18
2
  remote: https://rubygems.org/
19
3
  specs:
@@ -24,6 +8,14 @@ GEM
24
8
  activemodel (= 4.2.3)
25
9
  activesupport (= 4.2.3)
26
10
  arel (~> 6.0)
11
+ activerecord-jdbc-adapter (1.3.18)
12
+ activerecord (>= 2.2)
13
+ activerecord-jdbcpostgresql-adapter (1.3.18)
14
+ activerecord-jdbc-adapter (~> 1.3.18)
15
+ jdbc-postgres (>= 9.1)
16
+ activerecord-jdbcsqlite3-adapter (1.3.18)
17
+ activerecord-jdbc-adapter (~> 1.3.18)
18
+ jdbc-sqlite3 (>= 3.7.2, < 3.9)
27
19
  activesupport (4.2.3)
28
20
  i18n (~> 0.7)
29
21
  json (~> 1.7, >= 1.7.7)
@@ -33,7 +25,10 @@ GEM
33
25
  ansi (1.5.0)
34
26
  arel (6.0.3)
35
27
  builder (3.2.2)
28
+ docile (1.1.5)
36
29
  i18n (0.7.0)
30
+ jdbc-postgres (9.4.1200)
31
+ jdbc-sqlite3 (3.8.10.1)
37
32
  json (1.8.3)
38
33
  json (1.8.3-java)
39
34
  minitest (5.8.0)
@@ -45,6 +40,11 @@ GEM
45
40
  pg (0.18.2)
46
41
  rake (10.4.2)
47
42
  ruby-progressbar (1.7.5)
43
+ simplecov (0.10.0)
44
+ docile (~> 1.1.0)
45
+ json (~> 1.8)
46
+ simplecov-html (~> 0.10.0)
47
+ simplecov-html (0.10.0)
48
48
  sqlite3 (1.3.10)
49
49
  thread_safe (0.3.5)
50
50
  thread_safe (0.3.5-java)
@@ -57,12 +57,13 @@ PLATFORMS
57
57
 
58
58
  DEPENDENCIES
59
59
  activerecord (~> 4.2.3)
60
- activerecord-jdbc-adapter (>= 1.3.17)!
60
+ activerecord-jdbc-adapter
61
61
  activerecord-jdbcpostgresql-adapter
62
62
  activerecord-jdbcsqlite3-adapter
63
63
  minitest-reporters
64
64
  pg
65
65
  rake
66
+ simplecov
66
67
  sqlite3
67
68
 
68
69
  BUNDLED WITH
@@ -1,9 +1,7 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  platform :jruby do
4
- gem 'activerecord-jdbc-adapter', '>= 1.3.17',
5
- github: 'jruby/activerecord-jdbc-adapter',
6
- branch: '1-3-stable'
4
+ gem 'activerecord-jdbc-adapter'
7
5
  gem 'activerecord-jdbcpostgresql-adapter'
8
6
  gem 'activerecord-jdbcsqlite3-adapter'
9
7
  end
@@ -15,3 +13,4 @@ end
15
13
 
16
14
  gem 'minitest-reporters'
17
15
  gem 'rake'
16
+ gem 'simplecov'
@@ -1,5 +1,5 @@
1
1
  module Activerecord
2
2
  module Time
3
- VERSION = '0.5.0'
3
+ VERSION = '0.6.0'
4
4
  end
5
5
  end
@@ -95,6 +95,10 @@ class TimeOfDay
95
95
  end
96
96
  end
97
97
 
98
+ def to_json(*)
99
+ %{"#{to_s}"}
100
+ end
101
+
98
102
  end
99
103
 
100
104
  class Time
@@ -106,9 +110,21 @@ end
106
110
 
107
111
  class Date
108
112
  def at(time_of_day)
113
+ time_of_day = TimeOfDay.parse(time_of_day) if time_of_day.is_a?(String)
109
114
  Time.local(year, month, day, time_of_day.hour, time_of_day.minute, time_of_day.second)
110
115
  end
111
116
 
112
117
  end
113
118
 
119
+ module Kernel
120
+ def TimeOfDay(string_or_int, *ints)
121
+ if string_or_int.is_a? String
122
+ raise(ArgumentError, 'TimeOfDay() takes a string or multiple integers as arguments') unless ints.empty?
123
+ TimeOfDay.parse(string_or_int)
124
+ else
125
+ TimeOfDay.new(string_or_int, *ints)
126
+ end
127
+ end
128
+ end
129
+
114
130
  YAML.add_tag 'tag:yaml.org,2002:time', TimeOfDay
@@ -9,7 +9,7 @@ travis['rvm'].each do |ruby|
9
9
  puts
10
10
  system "rvm install #{ruby}"
11
11
  exit $? unless $? == 0
12
- system "rvm #{ruby} do gem install bundler"
12
+ system "rvm #{ruby} do gem query -i -n bundler >/dev/null || gem install bundler"
13
13
  exit $? unless $? == 0
14
14
  travis['gemfile'].each do |gemfile|
15
15
  puts '$' * 80
@@ -13,6 +13,9 @@ require 'logger'
13
13
  require 'fileutils'
14
14
  require 'yaml'
15
15
 
16
+ require 'simplecov'
17
+ SimpleCov.start
18
+
16
19
  FileUtils.rm_rf File.expand_path(':memory:', File.dirname(__FILE__))
17
20
  config = YAML::load(IO.read(File.dirname(__FILE__) + '/database.yml'))
18
21
  ActiveRecord::Base.logger = Logger.new(File.dirname(__FILE__) + '/test.log')
@@ -16,6 +16,44 @@ class TimeOfDayTest < Minitest::Test
16
16
  @twelve_o_clock = nil
17
17
  end
18
18
 
19
+ def test_initialize
20
+ tod = TimeOfDay.new(1, 2, 3)
21
+ assert_equal 1, tod.hour
22
+ assert_equal 2, tod.minute
23
+ assert_equal 3, tod.second
24
+ end
25
+
26
+ def test_kernel_initialize
27
+ tod = TimeOfDay(1, 2, 3)
28
+ assert_equal 1, tod.hour
29
+ assert_equal 2, tod.minute
30
+ assert_equal 3, tod.second
31
+ end
32
+
33
+ def test_kernel_initialize_string
34
+ tod = TimeOfDay('01:02:03')
35
+ assert_equal 1, tod.hour
36
+ assert_equal 2, tod.minute
37
+ assert_equal 3, tod.second
38
+ end
39
+
40
+ def test_now
41
+ tod = TimeOfDay.now
42
+ assert tod.hour
43
+ end
44
+
45
+ def test_parse
46
+ tod = TimeOfDay.parse('10:01')
47
+ assert_equal 10, tod.hour
48
+ assert_equal 1, tod.minute
49
+ assert_equal 0, tod.second
50
+
51
+ tod = TimeOfDay.parse('23:59:59')
52
+ assert_equal 23, tod.hour
53
+ assert_equal 59, tod.minute
54
+ assert_equal 59, tod.second
55
+ end
56
+
19
57
  def test_parse_full
20
58
  assert_equal @twelve_o_clock, TimeOfDay.parse('12:00:00')
21
59
  end
@@ -43,10 +81,10 @@ class TimeOfDayTest < Minitest::Test
43
81
  end
44
82
 
45
83
  def test_activerecord
46
- Event.create! name: 'Bored meeting', start_at: @twelve_o_clock
47
- t = Event.where(start_at: '12:00:00').first
84
+ Event.create! :name => 'Bored meeting', :start_at => @twelve_o_clock
85
+ t = Event.where(:start_at => '12:00:00').first
48
86
  assert_equal TimeOfDay, t.start_at.class
49
- assert_equal t, Event.where(start_at: @twelve_o_clock).first
87
+ assert_equal t, Event.where(:start_at => @twelve_o_clock).first
50
88
  assert_equal t, Event.where('start_at = ?', @twelve_o_clock).first
51
89
  assert_equal t, Event.where('start_at >= ?', @twelve_o_clock).first
52
90
  assert_equal t, Event.where('start_at <= ?', @twelve_o_clock).first
@@ -56,9 +94,9 @@ class TimeOfDayTest < Minitest::Test
56
94
 
57
95
  # TODO(uwe): Simplify when we stop supporting ActiveRecord 3
58
96
  if ActiveRecord::VERSION::MAJOR >= 4
59
- t.update! start_at: TimeOfDay.new(13)
97
+ t.update! :start_at => TimeOfDay.new(13)
60
98
  else
61
- t.update_attributes! start_at: TimeOfDay.new(13)
99
+ t.update_attributes! :start_at => TimeOfDay.new(13)
62
100
  end
63
101
  # ODOT
64
102
 
@@ -67,17 +105,100 @@ class TimeOfDayTest < Minitest::Test
67
105
 
68
106
  def test_activerecord_binary_column
69
107
  text = 'Some binary content'
70
- Event.create! content: text
71
- e = Event.where(content: text).first
108
+ Event.create! :content => text
109
+ e = Event.where(:content => text).first
72
110
  assert_equal text, e.content
73
111
 
74
112
  # TODO(uwe): Simplify when we stop supporting ActiveRecord 3
75
113
  if ActiveRecord::VERSION::MAJOR >= 4
76
- e.update! content: 'Other binary content'
114
+ e.update! :content => 'Other binary content'
77
115
  else
78
- e.update_attributes! content: 'Other binary content'
116
+ e.update_attributes! :content => 'Other binary content'
79
117
  end
80
118
  # ODOT
81
119
  end
82
120
 
121
+ def test_on
122
+ tod = TimeOfDay.new(12, 59)
123
+ assert_equal 12, tod.hour
124
+ assert_equal 59, tod.minute
125
+
126
+ t = tod.on(Date.new(2000, 12, 31))
127
+ assert_equal 12, t.hour
128
+ assert_equal 59, t.min
129
+ assert_equal 0, t.sec
130
+ assert_equal 2000, t.year
131
+ assert_equal 12, t.month
132
+ assert_equal 31, t.day
133
+ end
134
+
135
+ def test_minus
136
+ tod = TimeOfDay.new(12, 0, 59)
137
+ tod -= 60
138
+
139
+ assert_equal 11, tod.hour
140
+ assert_equal 59, tod.minute
141
+ assert_equal 59, tod.second
142
+ end
143
+
144
+ def test_equality
145
+ tod1 = TimeOfDay.new(12, 0, 5)
146
+ tod2 = TimeOfDay.new(12, 0, 5)
147
+ assert tod1 == tod2
148
+ tod2 -= 1
149
+ assert_equal false, tod1 == tod2
150
+ end
151
+
152
+ def test_spaceship
153
+ tod1 = TimeOfDay.new(12, 0)
154
+ tod2 = TimeOfDay.new(13, 0)
155
+ assert_equal -1, tod1 <=> tod2
156
+ assert_equal 1, tod2 <=> tod1
157
+ assert_equal 0, tod1 <=> tod1
158
+ end
159
+
160
+ def test_strftime
161
+ tod = TimeOfDay.new(6, 20, 59)
162
+ assert_equal '06:20:59', tod.strftime('%H:%M:%S')
163
+ end
164
+
165
+ def test_to_s
166
+ tod = TimeOfDay.new(12, 13, 14)
167
+ assert_equal '12:13', tod.to_s(false)
168
+ assert_equal '12:13:14', tod.to_s(true)
169
+ end
170
+
171
+ def test_to_yaml
172
+ tod = TimeOfDay.new(12, 13, 14)
173
+ assert_match /--- !!time '?12:13:14'?\n/, tod.to_yaml
174
+ end
175
+
176
+ def test_date_at
177
+ tod = TimeOfDay.new(12, 13, 14)
178
+ d = Date.new(2000, 12, 31)
179
+ t = d.at(tod)
180
+ assert_equal 12, t.hour
181
+ assert_equal 13, t.min
182
+ assert_equal 14, t.sec
183
+ assert_equal 2000, t.year
184
+ assert_equal 12, t.month
185
+ assert_equal 31, t.day
186
+ end
187
+
188
+ def test_date_at_string
189
+ tod = '12:13:14'
190
+ d = Date.new(2000, 12, 31)
191
+ t = d.at(tod)
192
+ assert_equal 12, t.hour
193
+ assert_equal 13, t.min
194
+ assert_equal 14, t.sec
195
+ assert_equal 2000, t.year
196
+ assert_equal 12, t.month
197
+ assert_equal 31, t.day
198
+ end
199
+
200
+ def test_to_json
201
+ tod = TimeOfDay.new(12, 13)
202
+ assert_equal "\"12:13:00\"", tod.to_json('foo')
203
+ end
83
204
  end
metadata CHANGED
@@ -1,17 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activerecord-time
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Uwe Kubosch
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-08-08 00:00:00.000000000 Z
11
+ date: 2015-10-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: activerecord
15
14
  requirement: !ruby/object:Gem::Requirement
16
15
  requirements:
17
16
  - - ">="
@@ -20,8 +19,9 @@ dependencies:
20
19
  - - "<"
21
20
  - !ruby/object:Gem::Version
22
21
  version: 5.0.0
23
- type: :runtime
22
+ name: activerecord
24
23
  prerelease: false
24
+ type: :runtime
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - ">="
@@ -31,63 +31,76 @@ dependencies:
31
31
  - !ruby/object:Gem::Version
32
32
  version: 5.0.0
33
33
  - !ruby/object:Gem::Dependency
34
- name: pg
35
34
  requirement: !ruby/object:Gem::Requirement
36
35
  requirements:
37
36
  - - ">="
38
37
  - !ruby/object:Gem::Version
39
38
  version: '0'
40
- type: :development
39
+ name: activerecord-jdbcpostgresql-adapter
41
40
  prerelease: false
41
+ type: :development
42
42
  version_requirements: !ruby/object:Gem::Requirement
43
43
  requirements:
44
44
  - - ">="
45
45
  - !ruby/object:Gem::Version
46
46
  version: '0'
47
47
  - !ruby/object:Gem::Dependency
48
- name: sqlite3
49
48
  requirement: !ruby/object:Gem::Requirement
50
49
  requirements:
51
50
  - - ">="
52
51
  - !ruby/object:Gem::Version
53
52
  version: '0'
54
- type: :development
53
+ name: activerecord-jdbcsqlite3-adapter
55
54
  prerelease: false
55
+ type: :development
56
56
  version_requirements: !ruby/object:Gem::Requirement
57
57
  requirements:
58
58
  - - ">="
59
59
  - !ruby/object:Gem::Version
60
60
  version: '0'
61
61
  - !ruby/object:Gem::Dependency
62
- name: minitest-reporters
63
62
  requirement: !ruby/object:Gem::Requirement
64
63
  requirements:
65
64
  - - ">="
66
65
  - !ruby/object:Gem::Version
67
66
  version: '0'
68
- type: :development
67
+ name: minitest-reporters
69
68
  prerelease: false
69
+ type: :development
70
70
  version_requirements: !ruby/object:Gem::Requirement
71
71
  requirements:
72
72
  - - ">="
73
73
  - !ruby/object:Gem::Version
74
74
  version: '0'
75
75
  - !ruby/object:Gem::Dependency
76
- name: rake
77
76
  requirement: !ruby/object:Gem::Requirement
78
77
  requirements:
79
78
  - - ">="
80
79
  - !ruby/object:Gem::Version
81
80
  version: '0'
81
+ name: rake
82
+ prerelease: false
82
83
  type: :development
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ - !ruby/object:Gem::Dependency
90
+ requirement: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - ">="
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
95
+ name: simplecov
83
96
  prerelease: false
97
+ type: :development
84
98
  version_requirements: !ruby/object:Gem::Requirement
85
99
  requirements:
86
100
  - - ">="
87
101
  - !ruby/object:Gem::Version
88
102
  version: '0'
89
- description: A handler for storing TimeOfDay objects in ActiveRecord objects as sql
90
- time values.
103
+ description: A handler for storing TimeOfDay objects in ActiveRecord objects as sql time values.
91
104
  email:
92
105
  - uwe@kubosch.no
93
106
  executables: []
@@ -125,7 +138,7 @@ homepage: https://github.com/donv/activerecord-time
125
138
  licenses:
126
139
  - MIT
127
140
  metadata: {}
128
- post_install_message:
141
+ post_install_message:
129
142
  rdoc_options: []
130
143
  require_paths:
131
144
  - lib
@@ -140,12 +153,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
140
153
  - !ruby/object:Gem::Version
141
154
  version: '0'
142
155
  requirements: []
143
- rubyforge_project:
144
- rubygems_version: 2.4.6
145
- signing_key:
156
+ rubyforge_project:
157
+ rubygems_version: 2.4.8
158
+ signing_key:
146
159
  specification_version: 4
147
- summary: A handler for storing TimeOfDay objects in ActiveRecord objects as sql time
148
- values.
160
+ summary: A handler for storing TimeOfDay objects in ActiveRecord objects as sql time values.
149
161
  test_files:
150
162
  - test/database.yml
151
163
  - test/schema.rb