test/test_timestamps.rb in swift-0.5.0 vs test/test_timestamps.rb in swift-0.5.1

- old
+ new

@@ -1,40 +1,42 @@ require_relative 'helper' require 'date' describe 'Adapter' do supported_by Swift::DB::Postgres do - describe 'time parsing and time zones' do + %w(Australia/Melboure America/Chicago).each do |timezone| + describe 'time parsing in %s' % timezone do + before do + @db = Swift.db + ENV['TZ'] = ":#{timezone}" + end - before do - @db = Swift.db.class.new Swift.db.options.merge(timezone: 'Asia/Kabul') - end + it 'should parse timestamps and do conversion accordingly' do + time = DateTime.parse('2010-01-01 15:00:00+04:30') + assert_timestamp_like time, fetch_timestamp_at(time), 'parses correctly' + end - it 'should parse timestamps and do conversion accordingly' do - time = DateTime.parse('2010-01-01 15:00:00+04:30') - assert_timestamp_like time, fetch_timestamp_at(time), 'parses correctly' - end + it 'should parse correctly when DST is on' do + time = DateTime.parse('2010-10-02 20:31:00+04:30') + assert_timestamp_like time, fetch_timestamp_at(time), 'DST on' + end - it 'should parse correctly when DST is on' do - time = DateTime.parse('2010-10-02 20:31:00+04:30') - assert_timestamp_like time, fetch_timestamp_at(time), 'DST on' - end + it 'should parse correctly when DST is off' do + time = DateTime.parse('2010-04-04 20:31:00+04:30') + assert_timestamp_like time, fetch_timestamp_at(time), 'DST off' + end - it 'should parse correctly when DST is off' do - time = DateTime.parse('2010-04-04 20:31:00+04:30') - assert_timestamp_like time, fetch_timestamp_at(time), 'DST off' - end + def fetch_timestamp_at value + sql = "select '%s'::timestamp with time zone as now" % value.strftime('%F %T%z') + @db.execute(sql) + @db.results.first.fetch(:now) + end - def fetch_timestamp_at value - sql = "select '%s'::timestamp with time zone as now" % value.strftime('%F %T%z') - @db.execute(sql) - @db.results.first.fetch(:now) - end - - def assert_timestamp_like expect, given, comment - match = Regexp.new expect.to_time.strftime('%F %T') - assert_kind_of DateTime, given - assert_match match, given.strftime('%F %T'), comment + def assert_timestamp_like expect, given, comment + match = Regexp.new expect.to_time.strftime('%F %T') + assert_kind_of DateTime, given + assert_match match, given.strftime('%F %T'), comment + end end end end end