timezone 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.
@@ -134,7 +134,7 @@ module Timezone
134
134
  "Pacific/Fakaofo"=>"Tokelau Is.",
135
135
  "Pacific/Chatham"=>"Chatham Is.",
136
136
  "Pacific/Apia"=>"Samoa"
137
- }
137
+ }.freeze
138
138
 
139
139
  def self.format(zone)
140
140
  TIMEZONE_MAPPING[zone] || zone
@@ -70,7 +70,13 @@ module Timezone
70
70
  use_google? && !!google_client_id
71
71
  end
72
72
 
73
+ def self.lookup=(lookup)
74
+ @lookup = lookup && lookup.new(self)
75
+ end
76
+
73
77
  def self.lookup
78
+ return @lookup if @lookup
79
+
74
80
  use_google? ? google_lookup : geonames_lookup
75
81
  end
76
82
 
@@ -99,7 +105,7 @@ module Timezone
99
105
  end
100
106
 
101
107
  class << self
102
- alias_method :url=, :geonames_url=
108
+ alias url= geonames_url=
103
109
  end
104
110
 
105
111
  # The Google API URL
@@ -13,6 +13,7 @@ module Timezone
13
13
  class GeoNames < Base; end
14
14
  class Google < Base; end
15
15
  class ParseTime < Base; end
16
+ class Test < Base ; end
16
17
  class InvalidConfig < Base ; end
17
18
  end
18
19
  end
@@ -0,0 +1,29 @@
1
+ require 'timezone/lookup/basic'
2
+ require 'timezone/error'
3
+
4
+ module Timezone
5
+ module Lookup
6
+ class Test < ::Timezone::Lookup::Basic
7
+ def initialize(config)
8
+ @stubs = {}
9
+ # Regular config w/ protocol and URL checks does not apply for stubs.
10
+ end
11
+
12
+ def stub(lat, lng, timezone)
13
+ @stubs[key(lat, lng)] = timezone
14
+ end
15
+
16
+ def lookup(lat, lng)
17
+ @stubs.fetch(key(lat, lng)) do
18
+ raise ::Timezone::Error::Test, 'missing stub'
19
+ end
20
+ end
21
+
22
+ private
23
+
24
+ def key(lat, lng)
25
+ "#{lat},#{lng}"
26
+ end
27
+ end
28
+ end
29
+ end
@@ -4,7 +4,7 @@ module Timezone
4
4
  class Parser
5
5
  LINE = /\s*(.+)\s*=\s*(.+)\s*isdst=(\d+)\s*gmtoff=([\+\-]*\d+)/
6
6
 
7
- ZONEINFO_DIR = '/usr/share/zoneinfo'
7
+ ZONEINFO_DIR = '/usr/share/zoneinfo'.freeze
8
8
 
9
9
  attr_reader :zoneinfo
10
10
 
@@ -24,7 +24,7 @@ module Timezone
24
24
  class Line
25
25
  attr_accessor :source, :name, :dst, :offset
26
26
 
27
- SOURCE_FORMAT = '%a %b %e %H:%M:%S %Y %Z'
27
+ SOURCE_FORMAT = '%a %b %e %H:%M:%S %Y %Z'.freeze
28
28
 
29
29
  def initialize(match)
30
30
  self.source = Time.strptime(match[1]+'C', SOURCE_FORMAT).to_i
@@ -1,3 +1,3 @@
1
1
  module Timezone
2
- VERSION = '0.5.0'
2
+ VERSION = '0.6.0'.freeze
3
3
  end
@@ -60,7 +60,7 @@ module Timezone
60
60
  reference.utc + utc_offset(reference)
61
61
  end
62
62
 
63
- alias_method :utc_to_local, :time
63
+ alias utc_to_local time
64
64
 
65
65
  # Determine the UTC time for a given time in the timezone.
66
66
  #
@@ -0,0 +1,39 @@
1
+ require 'timezone/configure'
2
+ require 'timezone/lookup/test'
3
+ require 'timezone/zone'
4
+ require 'minitest/autorun'
5
+
6
+ class TestLookupTest < ::Minitest::Unit::TestCase
7
+ def setup
8
+ Timezone::Configure.begin do |c|
9
+ c.lookup = ::Timezone::Lookup::Test
10
+ end
11
+ end
12
+
13
+ def test_simple_stub
14
+ ::Timezone::Configure.lookup.stub(-10, 10, 'America/Los_Angeles')
15
+
16
+ assert_equal(
17
+ 'America/Los_Angeles',
18
+ ::Timezone::Zone.new(lat: -10, lon: 10).zone)
19
+ end
20
+
21
+ def test_missing_stub
22
+ assert_raises(::Timezone::Error::Test) do
23
+ ::Timezone::Zone.new(lat: 100, lon: 100)
24
+ end
25
+ end
26
+
27
+ def test_clear_lookup
28
+ ::Timezone::Configure.begin do |c|
29
+ c.username = 'foo'
30
+ c.lookup = nil
31
+ end
32
+
33
+ assert ::Timezone::Lookup::Geonames, ::Timezone::Configure.lookup.class
34
+ end
35
+
36
+ def teardown
37
+ Timezone::Configure.begin{ |c| c.lookup = nil }
38
+ end
39
+ end
@@ -256,7 +256,7 @@ class TimezoneTest < ::Minitest::Unit::TestCase
256
256
  :time_with_offset,
257
257
  :dst?,
258
258
  :utc_offset
259
- ]
259
+ ].freeze
260
260
 
261
261
  def check_equivalence(zone, time, other)
262
262
  tz = Timezone::Zone.new(:zone => zone)
@@ -279,14 +279,18 @@ class TimezoneTest < ::Minitest::Unit::TestCase
279
279
  end
280
280
 
281
281
  def test_datetime_equivalence
282
+ zone = ENV['TZ']
283
+ ENV['TZ'] = 'UTC'
282
284
  time = Time.new(2011, 2, 3, 13, 5, 0)
283
- datetime = DateTime.new(2011, 2, 3, 13, 5, 0)
285
+ datetime = DateTime.new(2011, 2, 3, 13, 5, 0, 0)
284
286
 
285
287
  check_equivalence('America/Los_Angeles', time, datetime)
286
288
 
287
289
  time = Time.new(2011, 6, 3, 13, 5, 0)
288
- datetime = DateTime.new(2011, 6, 3, 13, 5, 0)
290
+ datetime = DateTime.new(2011, 6, 3, 13, 5, 0, 0)
289
291
 
290
292
  check_equivalence('America/Los_Angeles', time, datetime)
293
+ ensure
294
+ ENV['TZ'] = zone
291
295
  end
292
296
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: timezone
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
  - Pan Thomakos
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-11-19 00:00:00.000000000 Z
11
+ date: 2016-02-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -698,6 +698,7 @@ files:
698
698
  - lib/timezone/lookup/basic.rb
699
699
  - lib/timezone/lookup/geonames.rb
700
700
  - lib/timezone/lookup/google.rb
701
+ - lib/timezone/lookup/test.rb
701
702
  - lib/timezone/net_http_client.rb
702
703
  - lib/timezone/parser.rb
703
704
  - lib/timezone/version.rb
@@ -712,6 +713,7 @@ files:
712
713
  - test/mocks/google_lat_lon_coords.txt
713
714
  - test/mocks/google_request_denied.txt
714
715
  - test/mocks/lat_lon_coords.txt
716
+ - test/test_lookup_test.rb
715
717
  - test/timezone_test.rb
716
718
  - timezone.gemspec
717
719
  homepage: http://github.com/panthomakos/timezone
@@ -738,7 +740,7 @@ rubyforge_project: timezone
738
740
  rubygems_version: 2.4.5.1
739
741
  signing_key:
740
742
  specification_version: 4
741
- summary: timezone-0.5.0
743
+ summary: timezone-0.6.0
742
744
  test_files:
743
745
  - test/basic_lookup_test.rb
744
746
  - test/data/Helsinki_rules_without_timestamps.json
@@ -750,5 +752,6 @@ test_files:
750
752
  - test/mocks/google_lat_lon_coords.txt
751
753
  - test/mocks/google_request_denied.txt
752
754
  - test/mocks/lat_lon_coords.txt
755
+ - test/test_lookup_test.rb
753
756
  - test/timezone_test.rb
754
757
  has_rdoc: