diff --git a/plugins/mezuro/lib/kalibro/date_module_result.rb b/plugins/mezuro/lib/kalibro/date_module_result.rb new file mode 100644 index 0000000..09a66da --- /dev/null +++ b/plugins/mezuro/lib/kalibro/date_module_result.rb @@ -0,0 +1,13 @@ +class Kalibro::DateModuleResult < Kalibro::Model + + attr_accessor :date, :module_result + + def date=(value) + @date = value.is_a?(String) ? DateTime.parse(value) : value + end + + def module_result=(value) + @module_result = Kalibro::ModuleResult.to_object value + end + +end diff --git a/plugins/mezuro/lib/kalibro/module_result.rb b/plugins/mezuro/lib/kalibro/module_result.rb index 17bb5c3..1cb8f0e 100644 --- a/plugins/mezuro/lib/kalibro/module_result.rb +++ b/plugins/mezuro/lib/kalibro/module_result.rb @@ -19,4 +19,8 @@ class Kalibro::ModuleResult < Kalibro::Model @grade = value.to_f end + def self.history_of(module_result_id) + self.request(:history_of_module, {:module_result_id => module_result_id})[:date_module_result].to_a.map {|date_module_result| Kalibro::DateModuleResult.new date_module_result} + end + end diff --git a/plugins/mezuro/test/fixtures/date_module_result_fixtures.rb b/plugins/mezuro/test/fixtures/date_module_result_fixtures.rb new file mode 100644 index 0000000..d49b4c5 --- /dev/null +++ b/plugins/mezuro/test/fixtures/date_module_result_fixtures.rb @@ -0,0 +1,24 @@ +require File.dirname(__FILE__) + '/module_result_fixtures' + +class DateModuleResultFixtures + + def self.date_module_result + Kalibro::DateModuleResult.new date_module_result_hash + end + + def self.date_module_result_hash + { + :date => '2011-10-20T18:26:43.151+00:00', + :module_result => ModuleResultFixtures.module_result_hash, + :attributes! => + { + :module_result => + { + "xmlns:xsi"=>"http://www.w3.org/2001/XMLSchema-instance", + "xsi:type"=>"kalibro:moduleResultXml" + } + } + } + end + +end diff --git a/plugins/mezuro/test/unit/kalibro/date_module_result_test.rb b/plugins/mezuro/test/unit/kalibro/date_module_result_test.rb new file mode 100644 index 0000000..af971f6 --- /dev/null +++ b/plugins/mezuro/test/unit/kalibro/date_module_result_test.rb @@ -0,0 +1,20 @@ +require "test_helper" + +require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/date_module_result_fixtures" + +class DateModuleResultTest < ActiveSupport::TestCase + + def setup + @hash = DateModule.date_module_result_hash + @date_module_result = DateModuleResultFixtures.date_module_result + end + + should 'create date_module_result from hash' do + assert_equal @hash[:module_result][:id], Kalibro::DateModuleResult.new(@hash).module_result.id + end + + should 'convert date_module_result to hash' do + assert_equal @hash, @date_module_result.to_hash + end + +end diff --git a/plugins/mezuro/test/unit/kalibro/module_result_test.rb b/plugins/mezuro/test/unit/kalibro/module_result_test.rb index 95f9064..3bb7211 100644 --- a/plugins/mezuro/test/unit/kalibro/module_result_test.rb +++ b/plugins/mezuro/test/unit/kalibro/module_result_test.rb @@ -29,4 +29,9 @@ class ModuleResultTest < ActiveSupport::TestCase assert @hash[:id], @module_result.children.first.id end + should 'return history of a module result' do + Kalibro::ModuleResult.expects(:request).with(:history_of_module, {:module_result_id => module_id}).returns({:date_module_result => [DateModuleResultFixtures.date_module_result_hash]}) + assert_equal DateModuleResultFixtures.date_module_result_hash[:module_result][:id], Kalibro::ModuleResult.history_of(@module_result.id).first.module_result.id + end + end -- libgit2 0.21.2