tztime 0.1.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.
- 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
|