measured 2.4.0 → 2.5.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,13 @@
1
+ class AlwaysTrueCache
2
+ def exist?
3
+ true
4
+ end
5
+
6
+ def read
7
+ {}
8
+ end
9
+
10
+ def write(*)
11
+ nil
12
+ end
13
+ end
@@ -0,0 +1,6 @@
1
+ # Extract the subclasses that exist early on because other classes will get added by tests
2
+ # later on in execution and in an unpredictable order.
3
+ class ActiveSupport::TestCase
4
+ cattr_accessor :measurable_subclasses
5
+ self.measurable_subclasses = Measured::Measurable.subclasses
6
+ end
data/test/test_helper.rb CHANGED
@@ -1,17 +1,18 @@
1
+ require "pry" unless ENV["CI"]
1
2
  require "measured"
2
3
  require "minitest/reporters"
3
4
  require "minitest/autorun"
4
5
  require "mocha/setup"
5
- require "pry" unless ENV["CI"]
6
6
 
7
7
  ActiveSupport.test_order = :random
8
8
 
9
9
  Minitest::Reporters.use! [Minitest::Reporters::ProgressReporter.new(color: true)]
10
10
 
11
+ require "support/subclasses"
11
12
  require "support/fake_system"
13
+ require "support/always_true_cache"
12
14
 
13
15
  class ActiveSupport::TestCase
14
-
15
16
  protected
16
17
 
17
18
  def assert_close_bigdecimal exp, act, delta = BigDecimal('0.000001')
@@ -54,7 +54,7 @@ class Measured::UnitSystemBuilderTest < ActiveSupport::TestCase
54
54
  end
55
55
 
56
56
  prefixes = Measured::UnitSystemBuilder::SI_PREFIXES.map { |short, _, _| "#{short}ft" }
57
- prefixes += %w(in ft)
57
+ prefixes += %w(in ft)
58
58
  assert_equal prefixes.sort, measurable.unit_names
59
59
  end
60
60
 
@@ -109,4 +109,24 @@ class Measured::UnitSystemBuilderTest < ActiveSupport::TestCase
109
109
  assert_equal (2240), measurable.unit_system.unit_for!(:long_ton).conversion_amount
110
110
  assert_equal "lb", measurable.unit_system.unit_for!(:long_ton).conversion_unit
111
111
  end
112
+
113
+ test "#cache sets no cache by default" do
114
+ measurable = Measured.build do
115
+ unit :m
116
+ unit :km, value: "1000 m"
117
+ end
118
+
119
+ refute_predicate measurable.unit_system, :cached?
120
+ end
121
+
122
+ test "#cache sets the class and args" do
123
+ measurable = Measured.build do
124
+ unit :m
125
+ unit :km, value: "1000 m"
126
+
127
+ cache AlwaysTrueCache
128
+ end
129
+
130
+ assert_predicate measurable.unit_system, :cached?
131
+ end
112
132
  end
@@ -99,4 +99,18 @@ class Measured::UnitSystemTest < ActiveSupport::TestCase
99
99
  test "#convert handles the same unit" do
100
100
  assert_equal 2, @conversion.convert(2, from: @unit_in, to: @unit_in)
101
101
  end
102
+
103
+ test "#update_cache calls the builder" do
104
+ Measured::ConversionTableBuilder.any_instance.expects(:update_cache)
105
+ @conversion.update_cache
106
+ end
107
+
108
+ test "#cached? calls the builder and is false" do
109
+ refute_predicate @conversion, :cached?
110
+ end
111
+
112
+ test "#cached? calls the builder and is true" do
113
+ conversion = Measured::UnitSystem.new([@unit_m, @unit_in, @unit_ft], cache: { class: AlwaysTrueCache })
114
+ assert_predicate conversion, :cached?
115
+ end
102
116
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: measured
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.0
4
+ version: 2.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kevin McPhillips
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2018-01-24 00:00:00.000000000 Z
13
+ date: 2019-05-21 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activesupport
@@ -18,14 +18,14 @@ dependencies:
18
18
  requirements:
19
19
  - - ">="
20
20
  - !ruby/object:Gem::Version
21
- version: '4.2'
21
+ version: '5.0'
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  requirements:
26
26
  - - ">="
27
27
  - !ruby/object:Gem::Version
28
- version: '4.2'
28
+ version: '5.0'
29
29
  - !ruby/object:Gem::Dependency
30
30
  name: rake
31
31
  requirement: !ruby/object:Gem::Requirement
@@ -110,11 +110,20 @@ files:
110
110
  - LICENSE
111
111
  - README.md
112
112
  - Rakefile
113
+ - cache/.keep
114
+ - cache/length.json
115
+ - cache/volume.json
116
+ - cache/weight.json
113
117
  - dev.yml
114
- - gemfiles/activesupport-4.2.gemfile
118
+ - gemfiles/activesupport-5.0.gemfile
119
+ - gemfiles/activesupport-5.1.gemfile
120
+ - gemfiles/activesupport-6.0.gemfile
115
121
  - lib/measured.rb
116
122
  - lib/measured/arithmetic.rb
117
123
  - lib/measured/base.rb
124
+ - lib/measured/cache/json.rb
125
+ - lib/measured/cache/json_writer.rb
126
+ - lib/measured/cache/null.rb
118
127
  - lib/measured/conversion_table_builder.rb
119
128
  - lib/measured/measurable.rb
120
129
  - lib/measured/parser.rb
@@ -128,10 +137,16 @@ files:
128
137
  - measured.gemspec
129
138
  - shipit.rubygems.yml
130
139
  - test/arithmetic_test.rb
140
+ - test/cache/json_test.rb
141
+ - test/cache/json_writer_test.rb
142
+ - test/cache/null_test.rb
143
+ - test/cache_consistency_test.rb
131
144
  - test/conversion_table_builder_test.rb
132
145
  - test/measurable_test.rb
133
146
  - test/parser_test.rb
147
+ - test/support/always_true_cache.rb
134
148
  - test/support/fake_system.rb
149
+ - test/support/subclasses.rb
135
150
  - test/test_helper.rb
136
151
  - test/unit_error_test.rb
137
152
  - test/unit_system_builder_test.rb
@@ -160,16 +175,22 @@ required_rubygems_version: !ruby/object:Gem::Requirement
160
175
  version: '0'
161
176
  requirements: []
162
177
  rubyforge_project:
163
- rubygems_version: 2.6.14
178
+ rubygems_version: 2.7.6
164
179
  signing_key:
165
180
  specification_version: 4
166
181
  summary: Encapsulate measurements with their units in Ruby
167
182
  test_files:
168
183
  - test/arithmetic_test.rb
184
+ - test/cache/json_test.rb
185
+ - test/cache/json_writer_test.rb
186
+ - test/cache/null_test.rb
187
+ - test/cache_consistency_test.rb
169
188
  - test/conversion_table_builder_test.rb
170
189
  - test/measurable_test.rb
171
190
  - test/parser_test.rb
191
+ - test/support/always_true_cache.rb
172
192
  - test/support/fake_system.rb
193
+ - test/support/subclasses.rb
173
194
  - test/test_helper.rb
174
195
  - test/unit_error_test.rb
175
196
  - test/unit_system_builder_test.rb