Commit 878bb3096a546afcf0de543731b57388b129010d
Committed by
João M. M. da Silva
1 parent
64b24c22
Exists in
master
and in
29 other branches
[Mezuro] Refactored range model.
Showing
3 changed files
with
50 additions
and
23 deletions
Show diff stats
plugins/mezuro/lib/kalibro/range.rb
1 | 1 | class Kalibro::Range < Kalibro::Model |
2 | 2 | |
3 | - attr_accessor :beginning, :end, :label, :grade, :color, :comments | |
3 | + attr_accessor :id, :beginning, :end, :reading_id, :comments | |
4 | 4 | |
5 | 5 | def beginning=(value) |
6 | 6 | @beginning = value.to_f |
... | ... | @@ -37,5 +37,19 @@ class Kalibro::Range < Kalibro::Model |
37 | 37 | def mezuro_color |
38 | 38 | @color.nil? ? "e4ca2d" : @color.gsub(/^ff/, "") |
39 | 39 | end |
40 | + | |
41 | + def self.ranges_of( metric_configuration_id ) | |
42 | + request("Range", :ranges_of, {:metric_configuration_id => metric_configuration_id} )[:range].to_a.map { |range| new range } | |
43 | + end | |
44 | + | |
45 | + def save( metric_configuration_id ) | |
46 | + begin | |
47 | + self.id = self.class.request("Range", :save_range, {:range => self.to_hash, :metric_configuration_id => metric_configuration_id})[:range_id] | |
48 | + true | |
49 | + rescue Exception => exception | |
50 | + add_error exception | |
51 | + false | |
52 | + end | |
53 | + end | |
40 | 54 | |
41 | 55 | end | ... | ... |
plugins/mezuro/test/fixtures/range_fixtures.rb
1 | 1 | class RangeFixtures |
2 | 2 | |
3 | - Infinity = 1.0/0.0 | |
4 | - | |
5 | - def self.range_excellent | |
6 | - Kalibro::Range.new range_excellent_hash | |
7 | - end | |
8 | - | |
9 | - def self.range_bad | |
10 | - Kalibro::Range.new range_bad_hash | |
3 | + def self.range | |
4 | + Kalibro::Range.new range_hash | |
11 | 5 | end |
12 | 6 | |
13 | - def self.range_excellent_hash | |
14 | - {:beginning => 0.0, :end => 7.0, :label => 'Excellent', :grade => 10.0, :color => 'ff00ff00'} | |
7 | + def self.created_range | |
8 | + Kalibro::Range.new :beginning => 19.5, :end => "INF", :reading_id => 1, :comments => "Test range 1" | |
15 | 9 | end |
16 | 10 | |
17 | - def self.range_bad_hash | |
18 | - {:beginning => 19.5, :end => "INF", :label => 'Bad',:grade => 0.0, :color => 'ffff0000'} | |
11 | + def self.range_hash | |
12 | + {:id => 1, :beginning => 19.5, :end => "INF", :reading_id => 1, :comments => "Test range 1"} | |
19 | 13 | end |
20 | 14 | |
21 | 15 | end | ... | ... |
plugins/mezuro/test/unit/kalibro/range_test.rb
... | ... | @@ -5,24 +5,43 @@ require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/range_fixtures" |
5 | 5 | class RangeTest < ActiveSupport::TestCase |
6 | 6 | |
7 | 7 | def setup |
8 | - @hash = RangeFixtures.range_bad_hash | |
9 | - @range = RangeFixtures.range_bad | |
8 | + @hash = RangeFixtures.range_hash | |
9 | + @range = RangeFixtures.range | |
10 | + @created_range = RangeFixtures.created_range | |
10 | 11 | end |
11 | 12 | |
12 | 13 | should 'create range from hash' do |
13 | - assert_equal @hash[:label], Kalibro::Range.new(@hash).label | |
14 | + assert_equal @hash[:comments], Kalibro::Range.new(@hash).comments | |
14 | 15 | end |
15 | 16 | |
16 | 17 | should 'convert range to hash' do |
17 | 18 | assert_equal @hash, @range.to_hash |
18 | 19 | end |
19 | 20 | |
20 | - should 'create a default color for new range' do | |
21 | - assert_equal "e4ca2d", Kalibro::Range.new.mezuro_color | |
22 | - end | |
23 | - | |
24 | - should "convert color from 'ff' to '#'" do | |
25 | - assert_equal "ff0000", @range.mezuro_color | |
26 | - end | |
21 | + should 'get ranges of a metric configuration' do | |
22 | + metric_configuration_id = 31 | |
23 | + Kalibro::Range.expects(:request).with("Range", :ranges_of, {:metric_configuration_id => metric_configuration_id}).returns({:range => [@hash]}) | |
24 | + assert_equal @hash[:comments], Kalibro::Range.ranges_of(metric_configuration_id).first.comments | |
25 | + end | |
26 | + | |
27 | + should 'return true when range is saved successfully' do | |
28 | + id_from_kalibro = 1 | |
29 | + metric_configuration_id = 2 | |
30 | + Kalibro::Range.expects(:request).with("Range", :save_range, {:range => @created_range.to_hash, :metric_configuration_id => metric_configuration_id}).returns(:range_id => id_from_kalibro) | |
31 | + assert @created_range.save(metric_configuration_id) | |
32 | + assert_equal id_from_kalibro, @created_range.id | |
33 | + end | |
34 | + | |
35 | + should 'return false when range is not saved successfully' do | |
36 | + metric_configuration_id = 2 | |
37 | + Kalibro::Range.expects(:request).with("Range", :save_range, {:range => @created_range.to_hash, :metric_configuration_id => metric_configuration_id}).raises(Exception.new) | |
38 | + assert !(@created_range.save(metric_configuration_id)) | |
39 | + assert_nil @created_range.id | |
40 | + end | |
41 | + | |
42 | + should 'destroy range by id' do | |
43 | + Kalibro::Range.expects(:request).with("Range", :delete_range, {:range_id => @range.id}) | |
44 | + @range.destroy | |
45 | + end | |
27 | 46 | |
28 | 47 | end | ... | ... |