diff --git a/plugins/mezuro/lib/kalibro/model.rb b/plugins/mezuro/lib/kalibro/model.rb index d453f50..1738d2f 100644 --- a/plugins/mezuro/lib/kalibro/model.rb +++ b/plugins/mezuro/lib/kalibro/model.rb @@ -50,7 +50,7 @@ class Kalibro::Model def save begin - self.class.request(save_endpoint, save_action, save_params) + self.id = self.class.request(save_endpoint, save_action, save_params) true rescue Exception => exception add_error exception diff --git a/plugins/mezuro/lib/kalibro/reading.rb b/plugins/mezuro/lib/kalibro/reading.rb new file mode 100644 index 0000000..4e6f2fd --- /dev/null +++ b/plugins/mezuro/lib/kalibro/reading.rb @@ -0,0 +1,17 @@ +class Kalibro::Reading < Kalibro::Model + + attr_accessor :id, :label, :grade, :color + + def self.find(id) + new request("Reading", :get_reading, {:reading_id => id})[:reading] + end + + def self.readings_of( group_id ) + request("Reading", :readings_of, {:group_id => group_id})[:reading].to_a.map { |reading| new reading } + end + + def self.reading_of( range_id ) + new request("Reading", :reading_of, {:range_id => range_id} )[:reading] + end + +end diff --git a/plugins/mezuro/test/fixtures/reading_fixtures.rb b/plugins/mezuro/test/fixtures/reading_fixtures.rb new file mode 100644 index 0000000..8db9c35 --- /dev/null +++ b/plugins/mezuro/test/fixtures/reading_fixtures.rb @@ -0,0 +1,16 @@ +class ReadingFixtures + + def self.reading + Kalibro::Reading.new reading_hash + end + + def self.created_reading # A created object has no id before being sent to kalibro + Kalibro::Reading.new :label => "Reading Test Label", :grade => 10.5, :color => "AABBCC" + end + + def self.reading_hash + {:id => 42, :label => "Reading Test Label", :grade => 10.5, :color => "AABBCC" } + end + +end + diff --git a/plugins/mezuro/test/fixtures/reading_group_fixtures.rb b/plugins/mezuro/test/fixtures/reading_group_fixtures.rb index a1c9933..fe0ae63 100644 --- a/plugins/mezuro/test/fixtures/reading_group_fixtures.rb +++ b/plugins/mezuro/test/fixtures/reading_group_fixtures.rb @@ -4,6 +4,10 @@ class ReadingGroupFixtures Kalibro::ReadingGroup.new reading_group_hash end + def self.created_reading_group # A created object has no id before being sent to kalibro + Kalibro::ReadingGroup.new :name => "Reading Group Test", :description => "Reading group in the fixtures" + end + def self.reading_group_hash {:id => 42, :name => "Reading Group Test", :description => "Reading group in the fixtures"} end diff --git a/plugins/mezuro/test/unit/kalibro/reading_group_test.rb b/plugins/mezuro/test/unit/kalibro/reading_group_test.rb index 993d7ad..5b54805 100644 --- a/plugins/mezuro/test/unit/kalibro/reading_group_test.rb +++ b/plugins/mezuro/test/unit/kalibro/reading_group_test.rb @@ -6,6 +6,7 @@ class ReadingGroupTest < ActiveSupport::TestCase def setup @hash = ReadingGroupFixtures.reading_group_hash @reading_group = ReadingGroupFixtures.reading_group + @created_reading_group = ReadingGroupFixtures.created_reading_group end should 'create reading group from hash' do @@ -29,7 +30,7 @@ class ReadingGroupTest < ActiveSupport::TestCase should 'get all reading groups' do Kalibro::ReadingGroup.expects(:request).with("ReadingGroup", :all_reading_groups).returns({:reading_group => [@hash]}) - assert_equal @hash[:name], Kalibro::ReadingGroup.all[0].name + assert_equal @hash[:name], Kalibro::ReadingGroup.all.first.name end should 'get reading group of a metric configuration' do @@ -39,13 +40,16 @@ class ReadingGroupTest < ActiveSupport::TestCase end should 'return true when reading group is saved successfully' do - Kalibro::ReadingGroup.expects(:request).with("ReadingGroup", :save_reading_group, {:reading_group => @reading_group.to_hash}).returns(-1) - assert @reading_group.save + id_from_kalibro = 1 + Kalibro::ReadingGroup.expects(:request).with("ReadingGroup", :save_reading_group, {:reading_group => @created_reading_group.to_hash}).returns(id_from_kalibro) + assert @created_reading_group.save + assert_equal id_from_kalibro, @created_reading_group.id end should 'return false when reading group is not saved successfully' do - Kalibro::ReadingGroup.expects(:request).with("ReadingGroup", :save_reading_group, {:reading_group => @reading_group.to_hash}).raises(Exception.new) - assert !(@reading_group.save) + Kalibro::ReadingGroup.expects(:request).with("ReadingGroup", :save_reading_group, {:reading_group => @created_reading_group.to_hash}).raises(Exception.new) + assert !(@created_reading_group.save) + assert_nil @created_reading_group.id end should 'destroy reading group by id' do diff --git a/plugins/mezuro/test/unit/kalibro/reading_test.rb b/plugins/mezuro/test/unit/kalibro/reading_test.rb new file mode 100644 index 0000000..c0bf696 --- /dev/null +++ b/plugins/mezuro/test/unit/kalibro/reading_test.rb @@ -0,0 +1,57 @@ +require "test_helper" +require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/reading_fixtures" + +class ReadingTest < ActiveSupport::TestCase + + def setup + @hash = ReadingFixtures.reading_hash + @reading = ReadingFixtures.reading + @created_reading = ReadingFixtures.created_reading + end + + should 'create reading from hash' do + assert_equal @hash[:label], Kalibro::Reading.new(@hash).label + end + + should 'convert reading to hash' do + assert_equal @hash, @reading.to_hash + end + + should 'get reading' do + Kalibro::Reading.expects(:request).with("Reading", :get_reading, {:reading_id => @hash[:id]}). + returns({:reading => @hash}) + assert_equal @hash[:label], Kalibro::Reading.find(@hash[:id]).label + end + + should 'get reading of a range' do + range_id = 31 + Kalibro::Reading.expects(:request).with("Reading", :reading_of, {:range_id => range_id}).returns({:reading => @hash}) + assert_equal @hash[:label], Kalibro::Reading.reading_of(range_id).label + end + + should 'get readings of a reading group' do + reading_group_id = 31 + Kalibro::Reading.expects(:request).with("Reading", :readings_of, {:group_id => reading_group_id}).returns({:reading => [@hash]}) + assert_equal @hash[:label], Kalibro::Reading.readings_of(reading_group_id).first.label + end + + should 'return true when reading is saved successfully' do + id_from_kalibro = 1 + Kalibro::Reading.expects(:request).with("Reading", :save_reading, {:reading => @created_reading.to_hash}).returns(id_from_kalibro) + assert @created_reading.save + assert_equal id_from_kalibro, @created_reading.id + end + + should 'return false when reading is not saved successfully' do + Kalibro::Reading.expects(:request).with("Reading", :save_reading, {:reading => @created_reading.to_hash}).raises(Exception.new) + assert !(@created_reading.save) + assert_nil @created_reading.id + end + + should 'destroy reading by id' do + Kalibro::Reading.expects(:request).with("Reading", :delete_reading, {:reading_id => @reading.id}) + @reading.destroy + end + +end + -- libgit2 0.21.2