lazier 3.5.7 → 4.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis-gemfile +5 -4
- data/.travis.yml +2 -2
- data/CHANGELOG.md +65 -8
- data/Gemfile +9 -8
- data/README.md +4 -0
- data/doc/Lazier.html +178 -110
- data/doc/Lazier/Boolean.html +7 -7
- data/doc/Lazier/Configuration.html +24 -50
- data/doc/Lazier/DateTime.html +50 -305
- data/doc/Lazier/DateTime/ClassMethods.html +116 -806
- data/doc/Lazier/Exceptions.html +2 -2
- data/doc/Lazier/Exceptions/Debug.html +1 -1
- data/doc/Lazier/Exceptions/MissingTranslation.html +18 -14
- data/doc/Lazier/Exceptions/TranslationExceptionHandler.html +213 -0
- data/doc/Lazier/Hash.html +19 -155
- data/doc/Lazier/I18n.html +1735 -230
- data/doc/Lazier/Math.html +1 -1
- data/doc/Lazier/Math/ClassMethods.html +13 -13
- data/doc/Lazier/Object.html +353 -339
- data/doc/Lazier/Pathname.html +4 -4
- data/doc/Lazier/Settings.html +150 -304
- data/doc/Lazier/String.html +39 -199
- data/doc/Lazier/TimeZone.html +244 -746
- data/doc/Lazier/TimeZone/ClassMethods.html +109 -127
- data/doc/Lazier/Version.html +4 -4
- data/doc/_index.html +15 -15
- data/doc/class_list.html +1 -1
- data/doc/file.README.html +5 -1
- data/doc/index.html +5 -1
- data/doc/method_list.html +97 -169
- data/doc/top-level-namespace.html +1 -1
- data/lazier.gemspec +9 -6
- data/lib/lazier.rb +41 -50
- data/lib/lazier/boolean.rb +0 -1
- data/lib/lazier/configuration.rb +26 -28
- data/lib/lazier/datetime.rb +33 -127
- data/lib/lazier/exceptions.rb +14 -6
- data/lib/lazier/hash.rb +7 -15
- data/lib/lazier/i18n.rb +130 -48
- data/lib/lazier/math.rb +6 -7
- data/lib/lazier/object.rb +79 -97
- data/lib/lazier/pathname.rb +0 -1
- data/lib/lazier/settings.rb +12 -25
- data/lib/lazier/string.rb +17 -38
- data/lib/lazier/timezone.rb +168 -164
- data/lib/lazier/version.rb +3 -4
- data/locales/en.yml +52 -51
- data/locales/it.yml +51 -50
- data/spec/coverage_helper.rb +0 -1
- data/spec/lazier/boolean_spec.rb +2 -3
- data/spec/lazier/configuration_spec.rb +3 -5
- data/spec/lazier/datetime_spec.rb +34 -95
- data/spec/lazier/exceptions_spec.rb +25 -0
- data/spec/lazier/hash_spec.rb +0 -21
- data/spec/lazier/i18n_spec.rb +135 -51
- data/spec/lazier/math_spec.rb +0 -1
- data/spec/lazier/object_spec.rb +105 -100
- data/spec/lazier/pathname_spec.rb +0 -1
- data/spec/lazier/settings_spec.rb +25 -28
- data/spec/lazier/string_spec.rb +7 -20
- data/spec/lazier/timezone_spec.rb +101 -87
- data/spec/lazier_spec.rb +25 -8
- data/spec/spec_helper.rb +3 -2
- metadata +15 -44
- data/doc/Lazier/Localizer.html +0 -545
- data/lib/lazier/localizer.rb +0 -41
- data/spec/lazier/localizer_spec.rb +0 -45
@@ -1,4 +1,3 @@
|
|
1
|
-
# encoding: utf-8
|
2
1
|
#
|
3
2
|
# This file is part of the lazier gem. Copyright (C) 2013 and above Shogun <shogun@cowtech.it>.
|
4
3
|
# Licensed under the MIT license, which can be found at http://www.opensource.org/licenses/mit-license.php.
|
@@ -9,11 +8,10 @@ require "spec_helper"
|
|
9
8
|
describe Lazier::Settings do
|
10
9
|
let(:subject) { ::Lazier::Settings.instance }
|
11
10
|
let(:number_subject) { 123456.654321 }
|
12
|
-
let(:date_subject) { DateTime.civil(2005, 6, 7, 8, 9, 10,
|
11
|
+
let(:date_subject) { DateTime.civil(2005, 6, 7, 8, 9, 10, ::ActiveSupport::TimeZone.rationalize_offset(25200)) }
|
13
12
|
|
14
13
|
before(:all) do
|
15
14
|
Lazier.load!
|
16
|
-
::Lazier::Settings.instance.i18n = :en
|
17
15
|
end
|
18
16
|
|
19
17
|
describe ".instance" do
|
@@ -45,16 +43,16 @@ describe Lazier::Settings do
|
|
45
43
|
|
46
44
|
describe "#setup_format_number" do
|
47
45
|
it "should save format numbering options for usage" do
|
48
|
-
subject.setup_format_number(2)
|
46
|
+
subject.setup_format_number(precision: 2)
|
49
47
|
expect(number_subject.format_number).to eq("123,456.65")
|
50
48
|
|
51
|
-
subject.setup_format_number(3, "A")
|
49
|
+
subject.setup_format_number(precision: 3, decimal_separator: "A")
|
52
50
|
expect(number_subject.format_number).to eq("123,456A654")
|
53
51
|
|
54
|
-
subject.setup_format_number(4, "A", "B")
|
52
|
+
subject.setup_format_number(precision: 4, decimal_separator: "A", add_string: "B")
|
55
53
|
expect(number_subject.format_number).to eq("123,456A6543 B")
|
56
54
|
|
57
|
-
subject.setup_format_number(5, "A", "B", "C")
|
55
|
+
subject.setup_format_number(precision: 5, decimal_separator: "A", add_string: "B", k_separator: "C")
|
58
56
|
expect(number_subject.format_number).to eq("123C456A65432 B")
|
59
57
|
|
60
58
|
subject.setup_format_number
|
@@ -64,13 +62,13 @@ describe Lazier::Settings do
|
|
64
62
|
|
65
63
|
describe "#setup_boolean_names" do
|
66
64
|
it "should save names for boolean values" do
|
67
|
-
subject.setup_boolean_names("TRUE1")
|
65
|
+
subject.setup_boolean_names(true_name: "TRUE1")
|
68
66
|
expect([true.format_boolean, false.format_boolean]).to eq(["TRUE1", "No"])
|
69
67
|
|
70
|
-
subject.setup_boolean_names(
|
68
|
+
subject.setup_boolean_names(false_name: "FALSE1")
|
71
69
|
expect([true.format_boolean, false.format_boolean]).to eq(["Yes", "FALSE1"])
|
72
70
|
|
73
|
-
subject.setup_boolean_names("TRUE2", "FALSE2")
|
71
|
+
subject.setup_boolean_names(true_name: "TRUE2", false_name: "FALSE2")
|
74
72
|
expect([true.format_boolean, false.format_boolean]).to eq(["TRUE2", "FALSE2"])
|
75
73
|
|
76
74
|
subject.setup_boolean_names
|
@@ -83,26 +81,25 @@ describe Lazier::Settings do
|
|
83
81
|
subject.setup_date_formats(nil, true)
|
84
82
|
|
85
83
|
subject.setup_date_formats({c1: "%Y"})
|
86
|
-
expect(date_subject.
|
87
|
-
expect(date_subject.
|
84
|
+
expect(date_subject.format(:ct_date)).to eq(date_subject.strftime("%Y-%m-%d"))
|
85
|
+
expect(date_subject.format("c1")).to eq(date_subject.year.to_s)
|
88
86
|
|
89
87
|
subject.setup_date_formats({c1: "%Y"}, true)
|
90
|
-
expect(date_subject.
|
91
|
-
expect(date_subject.
|
88
|
+
expect(date_subject.format("ct_date")).to eq("ct_date")
|
89
|
+
expect(date_subject.format(:c1)).to eq(date_subject.year.to_s)
|
92
90
|
|
93
91
|
subject.setup_date_formats
|
94
|
-
expect(date_subject.
|
95
|
-
expect(date_subject.
|
92
|
+
expect(date_subject.format(:ct_date)).to eq(date_subject.strftime("%Y-%m-%d"))
|
93
|
+
expect(date_subject.format("c1")).to eq(date_subject.year.to_s)
|
96
94
|
|
97
95
|
subject.setup_date_formats(nil, true)
|
98
|
-
expect(date_subject.
|
99
|
-
expect(date_subject.
|
96
|
+
expect(date_subject.format("ct_date")).to eq(date_subject.strftime("%Y-%m-%d"))
|
97
|
+
expect(date_subject.format(:c1)).to eq("c1")
|
100
98
|
end
|
101
99
|
end
|
102
100
|
|
103
101
|
describe "#setup_date_names" do
|
104
102
|
it "should save names for days and months" do
|
105
|
-
subject.i18n = :en
|
106
103
|
subject.setup_date_names
|
107
104
|
subject.setup_date_formats({sdn: "%B %b %A %a"})
|
108
105
|
|
@@ -111,20 +108,20 @@ describe Lazier::Settings do
|
|
111
108
|
long_days = 7.times.map {|i| (i + 1).to_s * 2}
|
112
109
|
short_days = 7.times.map {|i| (i + 1).to_s}
|
113
110
|
|
114
|
-
subject.setup_date_names(long_months)
|
115
|
-
expect(date_subject.
|
111
|
+
subject.setup_date_names(long_months: long_months)
|
112
|
+
expect(date_subject.format(:sdn)).to eq("66 Jun Tuesday Tue")
|
116
113
|
|
117
|
-
subject.setup_date_names(long_months, short_months)
|
118
|
-
expect(date_subject.
|
114
|
+
subject.setup_date_names(long_months: long_months, short_months: short_months)
|
115
|
+
expect(date_subject.format("sdn")).to eq("66 6 Tuesday Tue")
|
119
116
|
|
120
|
-
subject.setup_date_names(long_months, short_months, long_days)
|
121
|
-
expect(date_subject.
|
117
|
+
subject.setup_date_names(long_months: long_months, short_months: short_months, long_days: long_days)
|
118
|
+
expect(date_subject.format(:sdn)).to eq("66 6 33 Tue")
|
122
119
|
|
123
|
-
subject.setup_date_names(long_months, short_months, long_days, short_days)
|
124
|
-
expect(date_subject.
|
120
|
+
subject.setup_date_names(long_months: long_months, short_months: short_months, long_days: long_days, short_days: short_days)
|
121
|
+
expect(date_subject.format("sdn")).to eq("66 6 33 3")
|
125
122
|
|
126
123
|
subject.setup_date_names
|
127
|
-
expect(date_subject.
|
124
|
+
expect(date_subject.format(:sdn)).to eq("June Jun Tuesday Tue")
|
128
125
|
end
|
129
126
|
end
|
130
127
|
end
|
data/spec/lazier/string_spec.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
# encoding: utf-8
|
2
1
|
#
|
3
2
|
# This file is part of the lazier gem. Copyright (C) 2013 and above Shogun <shogun@cowtech.it>.
|
4
3
|
# Licensed under the MIT license, which can be found at http://www.opensource.org/licenses/mit-license.php.
|
@@ -30,18 +29,6 @@ describe Lazier::String do
|
|
30
29
|
end
|
31
30
|
end
|
32
31
|
|
33
|
-
describe "#untitleize" do
|
34
|
-
it "should convert spaces to dashes" do
|
35
|
-
expect(subject.untitleize).to eq(untitleized_subject)
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
describe "#replace_ampersands" do
|
40
|
-
it "should remove HTML ampersands" do
|
41
|
-
expect(subject.replace_ampersands).to eq(amp_subject)
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
32
|
describe "#value" do
|
46
33
|
it "should return the string itself" do
|
47
34
|
expect(subject.value).to eq(subject)
|
@@ -51,14 +38,14 @@ describe Lazier::String do
|
|
51
38
|
end
|
52
39
|
end
|
53
40
|
|
54
|
-
describe "
|
41
|
+
describe "tokenize" do
|
55
42
|
it "should return a valid array" do
|
56
|
-
expect(" 1, 2,3,4,,,,,5,5".
|
57
|
-
expect(" 1, 2,3,4,,,,,5,5".
|
58
|
-
expect(" 1, 2,3,4,,,,,5,5".
|
59
|
-
expect(" 1, 2,3,4,,,,,5,5".
|
60
|
-
expect(" 1, 2,3,4,,,,,5,5".
|
61
|
-
expect("1@2@3@4@5".
|
43
|
+
expect(" 1, 2,3,4,,,,,5,5".tokenize()).to eq(["1", "2", "3", "4", "5", "5"])
|
44
|
+
expect(" 1, 2,3,4,,,,,5,5".tokenize(no_blanks: false)).to eq(["1", "2", "3", "4", "", "", "", "", "5", "5"])
|
45
|
+
expect(" 1, 2,3,4,,,,,5,5".tokenize(strip: false)).to eq([" 1", "2", "3", "4", "5", "5"])
|
46
|
+
expect(" 1, 2,3,4,,,,,5,5".tokenize(no_duplicates: true)).to eq(["1", "2", "3", "4", "5"])
|
47
|
+
expect(" 1, 2,3,4,,,,,5,5".tokenize(pattern: "@")).to eq(["1, 2,3,4,,,,,5,5"])
|
48
|
+
expect("1@2@3@4@5".tokenize(pattern: "@")).to eq(["1", "2", "3", "4", "5"])
|
62
49
|
end
|
63
50
|
end
|
64
51
|
end
|
@@ -1,4 +1,3 @@
|
|
1
|
-
# encoding: utf-8
|
2
1
|
#
|
3
2
|
# This file is part of the lazier gem. Copyright (C) 2013 and above Shogun <shogun@cowtech.it>.
|
4
3
|
# Licensed under the MIT license, which can be found at http://www.opensource.org/licenses/mit-license.php.
|
@@ -7,18 +6,17 @@
|
|
7
6
|
require "spec_helper"
|
8
7
|
|
9
8
|
describe Lazier::TimeZone do
|
9
|
+
let(:subject_zone) { ::ActiveSupport::TimeZone["Mountain Time (US & Canada)"] }
|
10
10
|
let(:subject_zone) { ::ActiveSupport::TimeZone["Mountain Time (US & Canada)"] }
|
11
11
|
let(:zone_without_dst) { ::ActiveSupport::TimeZone["International Date Line West"] }
|
12
12
|
|
13
13
|
before(:all) do
|
14
14
|
::Lazier.load!
|
15
|
-
::
|
16
|
-
::Lazier::Settings.instance.i18n = :en
|
15
|
+
::Time.zone = ::ActiveSupport::TimeZone["Mountain Time (US & Canada)"]
|
17
16
|
end
|
18
17
|
|
19
18
|
describe ".rationalize_offset" do
|
20
19
|
it "should return the correct rational value" do
|
21
|
-
expect(::ActiveSupport::TimeZone.rationalize_offset(::ActiveSupport::TimeZone[4])).to eq(Rational(1, 6))
|
22
20
|
expect(::ActiveSupport::TimeZone.rationalize_offset(-25200)).to eq(Rational(-7, 24))
|
23
21
|
end
|
24
22
|
end
|
@@ -30,52 +28,74 @@ describe Lazier::TimeZone do
|
|
30
28
|
end
|
31
29
|
end
|
32
30
|
|
33
|
-
describe ".
|
34
|
-
it "should
|
35
|
-
expect(::ActiveSupport::TimeZone.
|
36
|
-
expect(::ActiveSupport::TimeZone.
|
37
|
-
expect(::ActiveSupport::TimeZone.
|
38
|
-
expect(::ActiveSupport::TimeZone.
|
31
|
+
describe ".find" do
|
32
|
+
it "should find timezones" do
|
33
|
+
expect(::ActiveSupport::TimeZone.find("(GMT-07:00) Mountain Time (US & Canada)")).to eq(subject_zone)
|
34
|
+
expect(::ActiveSupport::TimeZone.find("(GMT-06:00) Mountain Time (US & Canada) (DST)")).to eq(subject_zone)
|
35
|
+
expect(::ActiveSupport::TimeZone.find("(GMT-06:00) Mountain Time (US & Canada) Daylight Saving Time", " Daylight Saving Time")).to eq(subject_zone)
|
36
|
+
expect(::ActiveSupport::TimeZone.find("INVALID", "INVALID")).to be_nil
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
describe ".list" do
|
41
|
+
it "should list all timezones as list" do
|
42
|
+
expect(::ActiveSupport::TimeZone.list(false)).to include("(GMT-11:00) Pacific/American Samoa", "(GMT-11:00) International Date Line West")
|
43
|
+
expect(::ActiveSupport::TimeZone.list(false).first).to eq("(GMT+01:00) Africa/Algiers")
|
44
|
+
expect(::ActiveSupport::TimeZone.list(false, sort_by_name: false).first).to eq("(GMT-11:00) Pacific/American Samoa")
|
45
|
+
expect(::ActiveSupport::TimeZone.list(false)).to include("(GMT-11:00) Pacific/American Samoa", "(GMT-11:00) International Date Line West")
|
46
|
+
expect(::ActiveSupport::TimeZone.list(true)).to include("(GMT-06:00) #{subject_zone.aliases.first} (DST)")
|
47
|
+
expect(::ActiveSupport::TimeZone.list(true, dst_label: " Daylight Saving Time")).to include("(GMT-06:00) #{subject_zone.aliases.first} Daylight Saving Time")
|
48
|
+
expect(::ActiveSupport::TimeZone.list(true, parameterized: true)).to include("-0600@mountain-time-us-canada-dst")
|
49
|
+
end
|
50
|
+
|
51
|
+
it "should list all timezones as hash" do
|
52
|
+
expect(::ActiveSupport::TimeZone.list(true, sort_by_name: true, as_hash: true)["(GMT-06:00) #{subject_zone.aliases.first} (DST)"]).to eq(subject_zone)
|
53
|
+
expect(::ActiveSupport::TimeZone.list(true, sort_by_name: true, as_hash: true).keys.first).to eq("(GMT+01:00) Africa/Algiers")
|
54
|
+
expect(::ActiveSupport::TimeZone.list(true, sort_by_name: false, as_hash: true).keys.first).to eq("(GMT-11:00) Pacific/American Samoa")
|
55
|
+
expect(::ActiveSupport::TimeZone.list(true, as_hash: true, parameterized: true)).to include("-0700@mountain-time-us-canada")
|
56
|
+
|
39
57
|
end
|
40
58
|
end
|
41
59
|
|
42
|
-
describe ".
|
60
|
+
describe ".parameterize" do
|
43
61
|
it "should return the parameterized version of the zone" do
|
44
|
-
expect(::ActiveSupport::TimeZone.
|
45
|
-
expect(::ActiveSupport::TimeZone.
|
46
|
-
expect(::ActiveSupport::TimeZone.
|
47
|
-
expect(::ActiveSupport::TimeZone.
|
48
|
-
expect(::ActiveSupport::TimeZone.
|
62
|
+
expect(::ActiveSupport::TimeZone.parameterize(subject_zone)).to eq("-0700@mountain-time-us-canada")
|
63
|
+
expect(::ActiveSupport::TimeZone.parameterize(subject_zone.to_str)).to eq("-0700@mountain-time-us-canada")
|
64
|
+
expect(::ActiveSupport::TimeZone.parameterize(subject_zone, false)).to eq("mountain-time-us-canada")
|
65
|
+
expect(::ActiveSupport::TimeZone.parameterize("INVALID")).to eq("invalid")
|
66
|
+
expect(::ActiveSupport::TimeZone.parameterize("-0700@mountain-time-us-canada")).to eq("-0700@mountain-time-us-canada")
|
49
67
|
end
|
50
68
|
end
|
51
69
|
|
52
|
-
describe ".
|
53
|
-
it "should
|
54
|
-
expect(::ActiveSupport::TimeZone.
|
55
|
-
expect(::ActiveSupport::TimeZone.
|
56
|
-
expect(::ActiveSupport::TimeZone.
|
57
|
-
expect(::ActiveSupport::TimeZone.
|
70
|
+
describe ".unparameterize" do
|
71
|
+
it "should return the parameterized version of the zone" do
|
72
|
+
expect(::ActiveSupport::TimeZone.unparameterize("-0700@mountain-time-us-canada")).to eq(subject_zone)
|
73
|
+
expect(::ActiveSupport::TimeZone.unparameterize("mountain-time-us-canada")).to be_nil
|
74
|
+
expect(::ActiveSupport::TimeZone.unparameterize("-0600@mountain-time-us-canada-day", " DAY")).to eq(subject_zone)
|
75
|
+
expect(::ActiveSupport::TimeZone.unparameterize(subject_zone.to_str)).to eq(subject_zone)
|
76
|
+
expect(::ActiveSupport::TimeZone.unparameterize("INVALID")).to eq(nil)
|
58
77
|
end
|
59
78
|
end
|
60
79
|
|
61
|
-
describe "
|
62
|
-
it "should
|
63
|
-
expect(::ActiveSupport::TimeZone.
|
64
|
-
expect(::ActiveSupport::TimeZone.
|
65
|
-
expect(::ActiveSupport::TimeZone.
|
80
|
+
describe "#compare" do
|
81
|
+
it "should correctly compare timezones" do
|
82
|
+
expect(::ActiveSupport::TimeZone.compare(::ActiveSupport::TimeZone["Africa/Algiers"], ::ActiveSupport::TimeZone["International Date Line West"])).to eq(-1)
|
83
|
+
expect(::ActiveSupport::TimeZone.compare(::ActiveSupport::TimeZone["Africa/Algiers"], ::ActiveSupport::TimeZone["Africa/Algiers"])).to eq(0)
|
84
|
+
expect(::ActiveSupport::TimeZone.compare(::ActiveSupport::TimeZone["Europe/Madrid"], ::ActiveSupport::TimeZone["Europe/Copenhagen"])).to eq(1)
|
85
|
+
expect(::ActiveSupport::TimeZone.compare("(GMT+01:00) Europe/Rome", "(GMT+02:00) Europe/Kiev")).to eq(1)
|
66
86
|
end
|
67
87
|
end
|
68
88
|
|
69
|
-
describe "#
|
70
|
-
it "should
|
71
|
-
expect(
|
89
|
+
describe "#aliases" do
|
90
|
+
it "should return the right list of aliases" do
|
91
|
+
expect(ActiveSupport::TimeZone["America/Los_Angeles"].aliases).to eq(["America/Los Angeles", "Pacific Time (US & Canada)"])
|
72
92
|
end
|
73
93
|
end
|
74
94
|
|
75
95
|
describe "#current_offset" do
|
76
96
|
it "should correctly return current zone offset" do
|
77
|
-
expect(subject_zone.current_offset(false, ::DateTime.civil(2012, 1, 15))).to eq(
|
78
|
-
expect(subject_zone.current_offset(true, ::DateTime.civil(2012, 7, 15))).to eq(
|
97
|
+
expect(subject_zone.current_offset(false, ::DateTime.civil(2012, 1, 15))).to eq(-25200)
|
98
|
+
expect(subject_zone.current_offset(true, ::DateTime.civil(2012, 7, 15))).to eq(Rational(-1, 4))
|
79
99
|
end
|
80
100
|
end
|
81
101
|
|
@@ -83,43 +103,44 @@ describe Lazier::TimeZone do
|
|
83
103
|
it "should correctly return current zone alias or the first one" do
|
84
104
|
zone = ActiveSupport::TimeZone["America/Halifax"]
|
85
105
|
expect(zone.current_alias).to eq("America/Halifax")
|
86
|
-
allow(zone
|
106
|
+
allow(zone).to receive(:name).and_return("INVALID")
|
87
107
|
expect(zone.current_alias).to eq("America/Atlantic Time (Canada)")
|
88
108
|
end
|
89
109
|
end
|
90
110
|
|
91
|
-
describe "#
|
92
|
-
it "should
|
93
|
-
|
94
|
-
|
95
|
-
expect(
|
111
|
+
describe "#current_name" do
|
112
|
+
it "should correctly get zone name with Daylight Saving Time" do
|
113
|
+
expect(subject_zone.current_name).to eq("Mountain Time (US & Canada)")
|
114
|
+
expect(subject_zone.current_name(true)).to eq("Mountain Time (US & Canada) (DST)")
|
115
|
+
expect(subject_zone.current_name(true, dst_label: "-dst")).to eq("Mountain Time (US & Canada)-dst")
|
116
|
+
expect(subject_zone.current_name(true, year: 1000)).to eq("Mountain Time (US & Canada)")
|
96
117
|
end
|
97
118
|
end
|
98
119
|
|
99
|
-
describe "#
|
120
|
+
describe "#offset" do
|
100
121
|
it "should correctly return zone offset" do
|
101
|
-
expect(subject_zone.
|
102
|
-
expect(subject_zone.dst_period(1000)).to be_nil
|
103
|
-
expect(zone_without_dst.dst_period).to be_nil
|
122
|
+
expect(subject_zone.offset).to eq(subject_zone.utc_offset)
|
104
123
|
end
|
105
124
|
end
|
106
125
|
|
107
126
|
describe "#uses_dst?" do
|
108
127
|
it "should correctly detect offset usage" do
|
109
|
-
expect(subject_zone.uses_dst?).to
|
110
|
-
expect(subject_zone.uses_dst?(::DateTime.civil(2012, 7, 15))).to
|
111
|
-
expect(subject_zone.uses_dst?(::DateTime.civil(2012, 1, 15))).to
|
112
|
-
expect(subject_zone.uses_dst?(1000)).to
|
113
|
-
expect(zone_without_dst.uses_dst?).to
|
128
|
+
expect(subject_zone.uses_dst?).to be_truthy
|
129
|
+
expect(subject_zone.uses_dst?(::DateTime.civil(2012, 7, 15))).to be_truthy
|
130
|
+
expect(subject_zone.uses_dst?(::DateTime.civil(2012, 1, 15))).to be_falsey
|
131
|
+
expect(subject_zone.uses_dst?(1000)).to be_falsey
|
132
|
+
expect(zone_without_dst.uses_dst?).to be_falsey
|
114
133
|
end
|
115
134
|
end
|
116
135
|
|
117
|
-
describe "#
|
118
|
-
it "should correctly
|
119
|
-
expect(subject_zone.
|
120
|
-
expect(subject_zone.
|
121
|
-
expect(
|
122
|
-
|
136
|
+
describe "#dst_period" do
|
137
|
+
it "should correctly return zone offset" do
|
138
|
+
expect(subject_zone.dst_period).to be_a(::TZInfo::TimezonePeriod)
|
139
|
+
expect(subject_zone.dst_period(1000)).to be_nil
|
140
|
+
expect(zone_without_dst.dst_period).to be_nil
|
141
|
+
|
142
|
+
expect(zone_without_dst).to receive(:period_for_utc).and_raise(RuntimeError)
|
143
|
+
expect(zone_without_dst.dst_period).to be_nil
|
123
144
|
end
|
124
145
|
end
|
125
146
|
|
@@ -132,40 +153,33 @@ describe Lazier::TimeZone do
|
|
132
153
|
end
|
133
154
|
end
|
134
155
|
|
135
|
-
describe "#
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
describe "#to_str_with_dst_parameterized" do
|
163
|
-
it "should correctly format (parameterized) zone with Daylight Saving Time" do
|
164
|
-
expect(subject_zone.to_str_with_dst_parameterized).to eq("-0600@mountain-time-us-canada-dst")
|
165
|
-
expect(subject_zone.to_str_with_dst_parameterized("Daylight Saving Time")).to eq("-0600@mountain-time-us-canada-daylight-saving-time")
|
166
|
-
expect(subject_zone.to_str_with_dst_parameterized(nil, 1000)).to be_nil
|
167
|
-
expect(subject_zone.to_str_with_dst_parameterized("Daylight Saving Time", nil, "NAME SPACE")).to eq("-0600@name-space-daylight-saving-time")
|
168
|
-
expect(zone_without_dst.to_str_with_dst_parameterized).to be_nil
|
156
|
+
describe "#to_str" do
|
157
|
+
describe "parameterized" do
|
158
|
+
it "should correctly parameterize the zone" do
|
159
|
+
expect(subject_zone.to_str(parameterized: true, label: "FOO")).to eq("-0700@foo")
|
160
|
+
expect(subject_zone.to_str(parameterized: true)).to eq("-0700@mountain-time-us-canada")
|
161
|
+
expect(subject_zone.to_str(true, parameterized: true)).to eq("-0600@mountain-time-us-canada-dst")
|
162
|
+
expect(subject_zone.to_str(true, parameterized: true, dst_label: "-DAY")).to eq("-0600@mountain-time-us-canada-day")
|
163
|
+
expect(subject_zone.to_str(true, parameterized: true, utc_label: "UTC")).to eq("-0600@mountain-time-us-canada-dst")
|
164
|
+
expect(subject_zone.to_str(parameterized: true, year: 1000)).to eq("-0700@mountain-time-us-canada")
|
165
|
+
expect(subject_zone.to_str(parameterized: true, with_offset: false)).to eq("mountain-time-us-canada")
|
166
|
+
end
|
167
|
+
end
|
168
|
+
|
169
|
+
describe "not parameterized" do
|
170
|
+
it "should correctly parameterize the zone" do
|
171
|
+
expect(subject_zone.to_str(label: "FOO")).to eq("(GMT-07:00) FOO")
|
172
|
+
expect(subject_zone.to_str).to eq("(GMT-07:00) Mountain Time (US & Canada)")
|
173
|
+
expect(subject_zone.to_str(true)).to eq("(GMT-06:00) Mountain Time (US & Canada) (DST)")
|
174
|
+
expect(subject_zone.to_str(true, dst_label: "-DAY")).to eq("(GMT-06:00) Mountain Time (US & Canada)-DAY")
|
175
|
+
expect(subject_zone.to_str(true, utc_label: "UTC")).to eq("(UTC-06:00) Mountain Time (US & Canada) (DST)")
|
176
|
+
expect(subject_zone.to_str(year: 1000)).to eq("(GMT-07:00) Mountain Time (US & Canada)")
|
177
|
+
expect(subject_zone.to_str(with_offset: false)).to eq("Mountain Time (US & Canada)")
|
178
|
+
expect(subject_zone.to_str(offset_position: :end)).to eq("Mountain Time (US & Canada) (GMT-07:00)")
|
179
|
+
expect(subject_zone.to_str(offset_position: :other)).to eq("(GMT-07:00) Mountain Time (US & Canada)")
|
180
|
+
expect(subject_zone.to_str(colon: false)).to eq("(GMT-0700) Mountain Time (US & Canada)")
|
181
|
+
expect(subject_zone.to_str).to eq("(GMT-07:00) Mountain Time (US & Canada)")
|
182
|
+
end
|
169
183
|
end
|
170
184
|
end
|
171
185
|
end
|
data/spec/lazier_spec.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
# encoding: utf-8
|
2
1
|
#
|
3
2
|
# This file is part of the lazier gem. Copyright (C) 2013 and above Shogun <shogun@cowtech.it>.
|
4
3
|
# Licensed under the MIT license, which can be found at http://www.opensource.org/licenses/mit-license.php.
|
@@ -9,7 +8,6 @@ require "spec_helper"
|
|
9
8
|
describe Lazier do
|
10
9
|
describe ".load!" do
|
11
10
|
describe "should load all extensions by default" do
|
12
|
-
ENV["LANG"] = "en"
|
13
11
|
::Lazier.load!
|
14
12
|
|
15
13
|
it "for Boolean" do
|
@@ -19,7 +17,7 @@ describe Lazier do
|
|
19
17
|
|
20
18
|
it "for DateTime" do
|
21
19
|
expect(::DateTime).to respond_to(:custom_format)
|
22
|
-
expect(::DateTime.now).to respond_to(:
|
20
|
+
expect(::DateTime.now).to respond_to(:format)
|
23
21
|
end
|
24
22
|
|
25
23
|
it "for Hash" do
|
@@ -31,7 +29,7 @@ describe Lazier do
|
|
31
29
|
end
|
32
30
|
|
33
31
|
it "for Object" do
|
34
|
-
expect(0).to respond_to(:
|
32
|
+
expect(0).to respond_to(:to_debug)
|
35
33
|
end
|
36
34
|
|
37
35
|
it "for Pathname" do
|
@@ -39,7 +37,7 @@ describe Lazier do
|
|
39
37
|
end
|
40
38
|
|
41
39
|
it "for String" do
|
42
|
-
expect("").to respond_to(:
|
40
|
+
expect("").to respond_to(:ensure_valid_utf8)
|
43
41
|
end
|
44
42
|
end
|
45
43
|
end
|
@@ -87,12 +85,31 @@ describe Lazier do
|
|
87
85
|
end
|
88
86
|
|
89
87
|
it "without a message should return the elapsed time" do
|
90
|
-
expect(Lazier.benchmark {
|
88
|
+
expect(Lazier.benchmark { "OK" }).to be_a(Float)
|
91
89
|
end
|
92
90
|
|
93
91
|
it "with a message should embed the elapsed time into the given message" do
|
94
|
-
expect(Lazier.benchmark("MESSAGE") {
|
95
|
-
expect(Lazier.benchmark("MESSAGE", 2) {
|
92
|
+
expect(Lazier.benchmark(message: "MESSAGE") { "OK" }).to match(/^MESSAGE \(\d+ ms\)$/)
|
93
|
+
expect(Lazier.benchmark(message: "MESSAGE", precision: 2) { "OK" }).to match(/^MESSAGE \(\d+\.\d+ ms\)$/)
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
describe ".platform" do
|
98
|
+
it "should detect the right platform" do
|
99
|
+
stub_const("RUBY_PLATFORM", "cygwin")
|
100
|
+
expect(Lazier.platform(true)).to eq(:win32)
|
101
|
+
|
102
|
+
stub_const("RUBY_PLATFORM", "darwin")
|
103
|
+
expect(Lazier.platform(true)).to eq(:osx)
|
104
|
+
|
105
|
+
stub_const("RUBY_PLATFORM", "java")
|
106
|
+
expect(Lazier.platform(true)).to eq(:java)
|
107
|
+
|
108
|
+
stub_const("RUBY_PLATFORM", "whatever")
|
109
|
+
expect(Lazier.platform(true)).to eq(:posix)
|
110
|
+
|
111
|
+
stub_const("RUBY_PLATFORM", "osx")
|
112
|
+
expect(Lazier.platform).to eq(:posix)
|
96
113
|
end
|
97
114
|
end
|
98
115
|
end
|