measured 2.4.0 → 2.5.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.
@@ -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