tztime 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/HISTORY +4 -0
- data/LICENSE +20 -0
- data/README +135 -0
- data/lib/tztime.rb +5 -0
- data/lib/tztime/activerecord.rb +14 -0
- data/lib/tztime/activerecord/acts/local_time.rb +110 -0
- data/lib/tztime/local_time.rb +313 -0
- data/lib/tztime/local_time/builder.rb +424 -0
- data/lib/tztime/time_zone_element.rb +81 -0
- data/test/test_active_record.rb +64 -0
- data/test/test_active_support.rb +14 -0
- data/test/test_format.rb +18 -0
- data/test/test_helper.rb +2 -0
- data/test/test_time_zone.rb +77 -0
- metadata +85 -0
@@ -0,0 +1,64 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/test_helper.rb'
|
2
|
+
require 'tztime/activerecord'
|
3
|
+
|
4
|
+
class TestActiveRecord < ::Test::Unit::TestCase
|
5
|
+
def setup
|
6
|
+
ActiveRecord::Base.establish_connection(
|
7
|
+
:adapter => "sqlite3",
|
8
|
+
:database => "./test.sqlite3"
|
9
|
+
)
|
10
|
+
ActiveRecord::Base.connection.execute("CREATE TABLE settings (id PRIMARY KEY, time_zone_name VARCHAR, created_at DATETIME);")
|
11
|
+
@setting = Setting.create :time_zone_name => 'America/Los_Angeles'
|
12
|
+
end
|
13
|
+
|
14
|
+
def teardown
|
15
|
+
ActiveRecord::Base.remove_connection
|
16
|
+
File.delete("./test.sqlite3")
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_created_at_is_utc
|
20
|
+
assert_equal "UTC", @setting.created_at.zone
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_local_created_at_is_pdt
|
24
|
+
assert_equal "PDT", @setting.local_created_at.zone
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_local_get_now_is_utc
|
28
|
+
assert_equal "UTC", @setting.get_now.zone
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_local_get_now_is_pdt
|
32
|
+
assert_equal "PDT", @setting.local_get_now.zone
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_local_get_now_is_local_time
|
36
|
+
assert_equal TZTime::LocalTime, @setting.local_get_now.class
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_accessor_name
|
40
|
+
assert @setting.respond_to?(:time_builder)
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_builder_time_zone
|
44
|
+
assert_equal :PDT, @setting.time_builder.now.time_zone_abbreviation
|
45
|
+
end
|
46
|
+
|
47
|
+
def test_builder_time
|
48
|
+
assert_equal 4, @setting.time_builder.utc(2008, 3, 1, 12).hour
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_assign_builder_object
|
52
|
+
@setting.time_builder = TZTime::LocalTime::Builder.new('America/Denver')
|
53
|
+
assert_equal 'America/Denver', @setting.time_zone_name
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
class Setting < ActiveRecord::Base
|
58
|
+
acts_as_local_time :time_zone_field => :time_zone_name,
|
59
|
+
:time_builder_accessor => :time_builder
|
60
|
+
|
61
|
+
def get_now
|
62
|
+
Time.now
|
63
|
+
end
|
64
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/test_helper.rb'
|
2
|
+
require 'active_support'
|
3
|
+
|
4
|
+
class TestActiveSupport < ::Test::Unit::TestCase
|
5
|
+
TimeZone.all.each do |tz|
|
6
|
+
def_name = tz.name.gsub(/[\s()'&-]+/, '_').gsub('.', '').downcase
|
7
|
+
class_eval <<-EOF
|
8
|
+
def test_#{def_name}
|
9
|
+
tz = TZTime::LocalTime::Builder.get_time_zone(%q[#{tz.name}])
|
10
|
+
assert_not_nil tz, %q[#{tz.to_s} does not have a conversion]
|
11
|
+
end
|
12
|
+
EOF
|
13
|
+
end
|
14
|
+
end
|
data/test/test_format.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/test_helper.rb'
|
2
|
+
|
3
|
+
class TestFormat < ::Test::Unit::TestCase
|
4
|
+
def setup
|
5
|
+
@builder = TZTime::LocalTime::Builder.new('America/New_York')
|
6
|
+
@time = @builder.local(2008, 4, 1, 14)
|
7
|
+
end
|
8
|
+
|
9
|
+
def test_time_zone
|
10
|
+
assert_equal "EDT %Z", @time.strftime("%Z %%Z")
|
11
|
+
assert_equal "%Z EDT", @time.strftime("%%Z %Z")
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_meridian_indicator
|
15
|
+
assert_equal "p %P", @time.strftime("%P %%P")
|
16
|
+
assert_equal "%P p", @time.strftime("%%P %P")
|
17
|
+
end
|
18
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,77 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/test_helper.rb'
|
2
|
+
|
3
|
+
class TestTimeZone < ::Test::Unit::TestCase
|
4
|
+
include TZTime::TimeZoneElement
|
5
|
+
|
6
|
+
def test_offset_edt_dst
|
7
|
+
self.time_zone = 'America/New_York'
|
8
|
+
time = local_time_builder.local(2008, 6, 1)
|
9
|
+
assert_equal(-14400, time.time_zone_offset)
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_offset_edt_no_dst
|
13
|
+
self.time_zone = 'America/New_York'
|
14
|
+
time = local_time_builder.local(2008, 1, 1)
|
15
|
+
assert_equal(-18000, time.time_zone_offset)
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_offset_pst_dst
|
19
|
+
self.time_zone = 'America/Los_Angeles'
|
20
|
+
time = local_time_builder.local(2008, 6, 1)
|
21
|
+
assert_equal(-25200, time.time_zone_offset)
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_offset_pst_no_dst
|
25
|
+
self.time_zone = 'America/Los_Angeles'
|
26
|
+
time = local_time_builder.local(2008, 1, 1)
|
27
|
+
assert_equal(-28800, time.time_zone_offset)
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_time_zone_abbreviation_est
|
31
|
+
self.time_zone = 'America/New_York'
|
32
|
+
time = local_time_builder.local(2007, 12, 16)
|
33
|
+
assert_equal(:EST, time.time_zone_abbreviation)
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_time_zone_abbreviation_edt
|
37
|
+
self.time_zone = 'America/New_York'
|
38
|
+
time = local_time_builder.local(2008, 4, 16)
|
39
|
+
assert_equal(:EDT, time.time_zone_abbreviation)
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_time_zone_abbreviation_pst
|
43
|
+
self.time_zone = 'America/Los_Angeles'
|
44
|
+
time = local_time_builder.local(2007, 12, 16)
|
45
|
+
assert_equal(:PST, time.time_zone_abbreviation)
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_time_zone_abbreviation_pdt
|
49
|
+
self.time_zone = 'America/Los_Angeles'
|
50
|
+
time = local_time_builder.local(2008, 4, 16)
|
51
|
+
assert_equal(:PDT, time.time_zone_abbreviation)
|
52
|
+
end
|
53
|
+
|
54
|
+
def test_at_local
|
55
|
+
self.time_zone = 'America/Los_Angeles'
|
56
|
+
time = Time.local(2008, 4, 10, 19, 25)
|
57
|
+
assert_equal 19, local_time_builder. at_local(time).hour
|
58
|
+
end
|
59
|
+
|
60
|
+
def test_at_utc
|
61
|
+
self.time_zone = 'America/Los_Angeles'
|
62
|
+
time = Time.local(2008, 4, 10, 19, 25)
|
63
|
+
assert_equal 12, local_time_builder.at_utc(time).hour
|
64
|
+
end
|
65
|
+
|
66
|
+
def test_convert
|
67
|
+
self.time_zone = 'America/Los_Angeles'
|
68
|
+
time = Time.utc(2008, 4, 10, 19, 25)
|
69
|
+
assert_equal 12, local_time_builder.convert(time).hour
|
70
|
+
end
|
71
|
+
|
72
|
+
def test_convert_explicit
|
73
|
+
self.time_zone = 'America/Los_Angeles'
|
74
|
+
time = Time.utc(2008, 4, 10, 19, 25)
|
75
|
+
assert_equal 16, local_time_builder.convert(time, 'America/New_York').hour
|
76
|
+
end
|
77
|
+
end
|
metadata
ADDED
@@ -0,0 +1,85 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: tztime
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Jeremy Larkin
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2008-04-10 00:00:00 -04:00
|
13
|
+
default_executable:
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: tzinfo
|
17
|
+
version_requirement:
|
18
|
+
version_requirements: !ruby/object:Gem::Requirement
|
19
|
+
requirements:
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 0.3.8
|
23
|
+
version:
|
24
|
+
description:
|
25
|
+
email: jeremy@formcollective.com
|
26
|
+
executables: []
|
27
|
+
|
28
|
+
extensions: []
|
29
|
+
|
30
|
+
extra_rdoc_files:
|
31
|
+
- README
|
32
|
+
- LICENSE
|
33
|
+
- HISTORY
|
34
|
+
files:
|
35
|
+
- lib/tztime/activerecord/acts/local_time.rb
|
36
|
+
- lib/tztime/activerecord.rb
|
37
|
+
- lib/tztime/local_time/builder.rb
|
38
|
+
- lib/tztime/local_time.rb
|
39
|
+
- lib/tztime/time_zone_element.rb
|
40
|
+
- lib/tztime.rb
|
41
|
+
- test/test_active_record.rb
|
42
|
+
- test/test_active_support.rb
|
43
|
+
- test/test_format.rb
|
44
|
+
- test/test_helper.rb
|
45
|
+
- test/test_time_zone.rb
|
46
|
+
- README
|
47
|
+
- LICENSE
|
48
|
+
- HISTORY
|
49
|
+
has_rdoc: true
|
50
|
+
homepage: http://tztime.rubyforge.org
|
51
|
+
post_install_message:
|
52
|
+
rdoc_options:
|
53
|
+
- --title
|
54
|
+
- TZTime
|
55
|
+
- --main
|
56
|
+
- README
|
57
|
+
- --inline-source
|
58
|
+
- --line-numbers
|
59
|
+
require_paths:
|
60
|
+
- lib
|
61
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
62
|
+
requirements:
|
63
|
+
- - ">="
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: "0"
|
66
|
+
version:
|
67
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
68
|
+
requirements:
|
69
|
+
- - ">="
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
version: "0"
|
72
|
+
version:
|
73
|
+
requirements: []
|
74
|
+
|
75
|
+
rubyforge_project: tztime
|
76
|
+
rubygems_version: 1.1.0
|
77
|
+
signing_key:
|
78
|
+
specification_version: 2
|
79
|
+
summary: Time zone localization with compatibility for Rails/ActiveRecord
|
80
|
+
test_files:
|
81
|
+
- test/test_active_record.rb
|
82
|
+
- test/test_active_support.rb
|
83
|
+
- test/test_format.rb
|
84
|
+
- test/test_helper.rb
|
85
|
+
- test/test_time_zone.rb
|