diff --git a/src/state/global.rb b/src/state/global.rb index 9e9b540..bba5219 100644 --- a/src/state/global.rb +++ b/src/state/global.rb @@ -1,5 +1,5 @@ #!/usr/bin/env ruby -# ODDB::State::Global -- oddb.org -- 03.08.2011 -- mhatakeyama@ywesee.com +# ODDB::State::Global -- oddb.org -- 05.08.2011 -- mhatakeyama@ywesee.com # ODDB::State::Global -- oddb.org -- 25.11.2002 -- hwyss@ywesee.com require 'htmlgrid/urllink' @@ -248,7 +248,7 @@ module ODDB super end def fachinfo - if (iksnr = @session.user_input(:swissmedicnr)) \ + if (iksnr = @session.user_input(:reg) || @session.user_input(:swissmedicnr)) \ && (reg = @session.app.registration(iksnr)) \ && fachinfo = reg.fachinfo State::Drugs::Fachinfo.new(@session, fachinfo) @@ -257,8 +257,8 @@ module ODDB end end def patinfo - if (iksnr = @session.user_input(:swissmedicnr)) \ - && (seqnr = @session.user_input(:seqnr)) \ + if (iksnr = @session.user_input(:reg) || @session.user_input(:swissmedicnr)) \ + && (seqnr = @session.user_input(:seq)) \ && (reg = @session.app.registration(iksnr)) \ && (seq = reg.sequence(seqnr)) \ && (patinfo = seq.patinfo) @@ -267,7 +267,6 @@ module ODDB Http404.new(@session, nil) end end - def feedbacks if((pointer = @session.user_input(:pointer)) \ && pointer.is_a?(Persistence::Pointer) \ @@ -470,16 +469,30 @@ module ODDB def resolve if(@session.request_path == @request_path) self - elsif((pointer = @session.user_input(:pointer)) \ - && pointer.is_a?(Persistence::Pointer) \ - && (model = pointer.resolve(@session.app))) - if(klass = resolve_state(pointer)) - klass.new(@session, model) - else - State::Admin::TransparentLogin.new(@session, model) - end + else + iksnr = @session.user_input(:reg) + seqnr = @session.user_input(:seq) + ikscd = @session.user_input(:pack) + pointer = if iksnr && seqnr && ikscd + @session.app.registration(iksnr).sequence(seqnr).package(ikscd).pointer + elsif iksnr && seqnr + @session.app.registration(iksnr).sequence(seqnr).pointer + elsif iksnr + @session.app.registration(iksnr).pointer + else + @session.user_input(:pointer) + end + if pointer.is_a?(Persistence::Pointer) \ + && (model = pointer.resolve(@session.app)) + if(klass = resolve_state(pointer)) + klass.new(@session, model) + else + State::Admin::TransparentLogin.new(@session, model) + end + end end end + alias :drug :resolve def resolve_state(pointer, type=:standard) state_map = { :standard => self::class::RESOLVE_STATES, @@ -591,11 +604,24 @@ module ODDB def show if(@session.request_path == @request_path) self - elsif((pointer = @session.user_input(:pointer)) \ - && pointer.is_a?(Persistence::Pointer) \ + else + iksnr = @session.user_input(:reg) + seqnr = @session.user_input(:seq) + ikscd = @session.user_input(:pack) + pointer = if iksnr && seqnr && ikscd + @session.app.registration(iksnr).sequence(seqnr).package(ikscd).pointer + elsif iksnr && seqnr + @session.app.registration(iksnr).sequence(seqnr).pointer + elsif iksnr + @session.app.registration(iksnr).pointer + else + @session.user_input(:pointer) + end + if pointer.is_a?(Persistence::Pointer) \ && (model = pointer.resolve(@session.app)) \ - && klass = resolve_state(pointer, :readonly)) - klass.new(@session, model) + && klass = resolve_state(pointer, :readonly) + klass.new(@session, model) + end end end def snapback_event diff --git a/src/util/persistence.rb b/src/util/persistence.rb index 3fa6645..54c8ad1 100644 --- a/src/util/persistence.rb +++ b/src/util/persistence.rb @@ -1,5 +1,6 @@ #!/usr/bin/env ruby -# Persistence -- oddb -- 26.02.2003 -- hwyss@ywesee.com +# Persistence -- oddb.org -- 05.08.2011 -- mhatakeyama@ywesee.com +# Persistence -- oddb.org -- 26.02.2003 -- hwyss@ywesee.com require 'rockit/rockit' require 'odba' @@ -327,6 +328,18 @@ Grammar OddbSize '!' << step.join(',') }.join << '.' end + def to_csv + @directions.collect { |orig| + step = orig.collect { |arg| + if(arg.is_a? Pointer) + arg + else + arg.to_s.gsub('%','%%').gsub(/[:!,.]/u, '%\0') + end + } + step.join(',') + }.join(',') + end def to_yus_privilege @directions.inject('org.oddb.model') { |yus, steps| steps = steps.dup diff --git a/src/util/validator.rb b/src/util/validator.rb index 1078f46..5d8a7fa 100644 --- a/src/util/validator.rb +++ b/src/util/validator.rb @@ -160,6 +160,7 @@ module ODDB :download, :download_credit, :download_export, + :drug, :effective_substances, :export_csv, :fachinfo, @@ -454,10 +455,12 @@ module ODDB def ikscd(value) swissmedic_id(:ikscd, value, 1..3, 3) end + alias :pack :ikscd def iksnr(value) swissmedic_id(:iksnr, value, 4..5) end alias :swissmedicnr :iksnr + alias :reg :iksnr def notify_recipient(value) RMail::Address.parse(value.to_s).collect { |parsed| parsed.address } end @@ -487,6 +490,7 @@ module ODDB def seqnr(value) swissmedic_id(:seqnr, value, 1..2, 2) end + alias :seq :seqnr @@swissmedic = /^\d+$/u def swissmedic_id(key, value, range, pad=false) return value if value.empty? diff --git a/src/view/additional_information.rb b/src/view/additional_information.rb index 110f424..eb05cc8 100644 --- a/src/view/additional_information.rb +++ b/src/view/additional_information.rb @@ -1,5 +1,5 @@ #!/usr/bin/env ruby -# ODDB::View::AdditionalInformation -- oddb.org -- 04.08.2011 -- mhatakeyama@ywesee.com +# ODDB::View::AdditionalInformation -- oddb.org -- 05.08.2011 -- mhatakeyama@ywesee.com # ODDB::View::AdditionalInformation -- oddb.org -- 09.12.2003 -- rwaltert@ywesee.com require 'view/drugs/atcchooser' @@ -85,7 +85,14 @@ module ODDB end def compositions(model, session=@session) link = HtmlGrid::Link.new(:show, model, session, self) - link.href = @lookandfeel._event_url(:show, {:pointer => model.pointer}) + smart_link_format = model.pointer.to_csv.gsub(/registration/, 'reg').gsub(/sequence/, 'seq').gsub(/package/, 'pack').split(/,/) + if smart_link_format.include?('reg') + link.href = @lookandfeel._event_url(:show, smart_link_format) + else + old_link_format = {:pointer => model.pointer} + link.href = @lookandfeel._event_url(:show, old_link_format) + end + lang = @session.language parts = model.compositions.collect { |comp| part = '' @@ -167,8 +174,7 @@ module ODDB if(model.fachinfo_active?) link = HtmlGrid::Link.new(:square_fachinfo, model, @session, self) - link.href = @lookandfeel._event_url(:fachinfo, - {:swissmedicnr => model.iksnr}) + link.href = @lookandfeel._event_url(:fachinfo, {:reg => model.iksnr}) link.css_class = css link.set_attribute('title', @lookandfeel.lookup(:fachinfo)) link @@ -286,10 +292,12 @@ module ODDB href = @lookandfeel.resource_global(:pdf_patinfo, pdf_patinfo) elsif (model.patinfo and seqnr = model.seqnr) klass = HtmlGrid::Link - href = @lookandfeel._event_url(:patinfo, {:seqnr => seqnr, :swissmedicnr => model.iksnr}) + smart_link_format = [:reg, model.iksnr, :seq, seqnr] + href = @lookandfeel._event_url(:patinfo, smart_link_format) elsif (patinfo = model.patinfo) # This is an old format URL for PI. Probably no need any more (but still available). klass = HtmlGrid::Link - href = @lookandfeel._event_url(:resolve, {'pointer' => patinfo.pointer}) + old_link_format = {'pointer' => patinfo.pointer} + href = @lookandfeel._event_url(:resolve, old_link_format) end link = klass.new(:square_patinfo, model, @session, self) link.href = href diff --git a/src/view/admin/registration.rb b/src/view/admin/registration.rb index fce5b0f..f2ea1dc 100644 --- a/src/view/admin/registration.rb +++ b/src/view/admin/registration.rb @@ -1,5 +1,6 @@ #!/usr/bin/env ruby -# View::Admin::Registration -- oddb -- 07.03.2003 -- hwyss@ywesee.com +# ODDB::View::Admin::Registration -- oddb.org -- 05.08.2011 -- mhatakeyama@ywesee.com +# ODDB::View::Admin::Registration -- oddb.org -- 07.03.2003 -- hwyss@ywesee.com require 'view/drugs/privatetemplate' require 'htmlgrid/errormessage' @@ -62,8 +63,13 @@ module RegistrationSequenceList else evt = @session.state.respond_to?(:suggest_choose) ? :suggest_choose : :show link = HtmlGrid::Link.new(:seqnr, model, @session, self) - args = {:pointer => model.pointer} - link.href = @lookandfeel.event_url(evt, args) + smart_link_format = model.pointer.to_csv.gsub(/registration/, 'reg').gsub(/sequence/, 'seq').gsub(/package/, 'pack').split(/,/) + if evt == :show and smart_link_format.include?('reg') + link.href = @lookandfeel.event_url(evt, smart_link_format) + else + old_link_format = {:pointer => model.pointer} + link.href = @lookandfeel.event_url(evt, old_link_format) + end link.value = model.seqnr link end @@ -267,8 +273,7 @@ class RegistrationForm < View::Form if(model.has_fachinfo?) link = HtmlGrid::Link.new(:square_fachinfo, model, @session, self) - link.href = @lookandfeel._event_url(:fachinfo, - {:swissmedicnr => model.iksnr}) + link.href = @lookandfeel._event_url(:fachinfo, {:reg => model.iksnr}) link.css_class = css link.set_attribute('title', @lookandfeel.lookup(:fachinfo)) link diff --git a/src/view/admin/sequence.rb b/src/view/admin/sequence.rb index 36e639e..6c41450 100644 --- a/src/view/admin/sequence.rb +++ b/src/view/admin/sequence.rb @@ -1,5 +1,6 @@ #!/usr/bin/env ruby -# View::Admin::Sequence -- oddb -- 11.03.2003 -- hwyss@ywesee.com +# ODDB::View::Admin::Sequence -- oddb.org -- 05.08.2011 -- mhatakeyama@ywesee.com +# ODDB::View::Admin::Sequence -- oddb.org -- 11.03.2003 -- hwyss@ywesee.com require 'view/admin/swissmedic_source' require 'view/drugs/privatetemplate' @@ -254,8 +255,13 @@ module SequencePackageList evt = @session.state.respond_to?(:suggest_choose) ? :suggest_choose : :show link = HtmlGrid::Link.new(:ikscd, model, @session, self) link.value = model.ikscd - args = {:pointer => model.pointer} - link.href = @lookandfeel.event_url(evt, args) + smart_link_format = model.pointer.to_csv.gsub(/registration/, 'reg').gsub(/sequence/, 'seq').gsub(/package/, 'pack').split(/,/) + if evt == :show and smart_link_format.include?('reg') + link.href = @lookandfeel.event_url(evt, smart_link_format) + else + old_link_format = {:pointer => model.pointer} + link.href = @lookandfeel.event_url(evt, old_link_format) + end link end end diff --git a/src/view/pointersteps.rb b/src/view/pointersteps.rb index a5670aa..2f5b8d1 100644 --- a/src/view/pointersteps.rb +++ b/src/view/pointersteps.rb @@ -1,5 +1,6 @@ #!/usr/bin/env ruby -# View::PointerSteps -- oddb -- 21.03.2003 -- mhuggler@ywesee.com +# ODDB::View::PointerSteps -- oddb.org -- 05.08.2011 -- mhatakeyama@ywesee.com +# ODDB::View::PointerSteps -- oddb.org -- 21.03.2003 -- mhuggler@ywesee.com require 'htmlgrid/list' require 'htmlgrid/link' @@ -88,7 +89,13 @@ module ODDB def pointer_descr(model, session=@session) link = PointerLink.new(:pointer_descr, model, @session, self) unless(@session.allowed?('edit', model)) - link.href = @lookandfeel._event_url(:show, :pointer => model.pointer) + smart_link_format = model.pointer.to_csv.gsub(/registration/, 'reg').gsub(/sequence/, 'seq').gsub(/package/, 'pack').split(/,/) + if smart_link_format.include?('reg') + link.href = @lookandfeel._event_url(:show, smart_link_format) + else + old_link_format = {:pointer => model.pointer} + link.href = @lookandfeel._event_url(:show, old_link_format) + end end link end diff --git a/src/view/pointervalue.rb b/src/view/pointervalue.rb index aabf45c..a99f998 100644 --- a/src/view/pointervalue.rb +++ b/src/view/pointervalue.rb @@ -25,8 +25,18 @@ module ODDB class PointerLink < View::PointerValue def init super - arguments = {'pointer' => @model.pointer.to_s} - @attributes['href'] = @lookandfeel._event_url(:resolve, arguments) + # @model.pointer.to_s might be like this: + # :!registration,31706!sequence,01!package,017. + # in such case, URL link will be smarter than the URL by using pointer. + # z.B.) http://ch.oddb.org/de/gcc/drug/reg/31706/seq/01/pack/017 + # The old format is also available. + smart_link_format = @model.pointer.to_csv.gsub(/registration/, 'reg').gsub(/sequence/, 'seq').gsub(/package/, 'pack').split(/,/) + if smart_link_format.include?('reg') + @attributes['href'] = @lookandfeel._event_url(:drug, smart_link_format) + else # This is an old format by using the default pointer format + old_link_format = {'pointer' => @model.pointer.to_s} + @attributes['href'] = @lookandfeel._event_url(:resolve, old_link_format) + end end def to_html(context) context.a(@attributes) { @value } diff --git a/test/test_state/global.rb b/test/test_state/global.rb index bfedb47..c4b16b5 100644 --- a/test/test_state/global.rb +++ b/test/test_state/global.rb @@ -1,6 +1,6 @@ #!/usr/bin/env ruby -# ODDB::State::TestGlobal -- oddb -- 04.08.2011 -- mhatakeyama@ywesee.com -# ODDB::State::TestGlobal -- oddb -- 13.10.2003 -- mhuggler@ywesee.com +# ODDB::State::TestGlobal -- oddb.org -- 05.08.2011 -- mhatakeyama@ywesee.com +# ODDB::State::TestGlobal -- oddb.org -- 13.10.2003 -- mhuggler@ywesee.com $: << File.expand_path('..', File.dirname(__FILE__)) $: << File.expand_path("../../src", File.dirname(__FILE__)) @@ -108,7 +108,10 @@ end ptr.should_receive(:skeleton).and_return([:company]) end flexstub(@session) do |s| - s.should_receive(:user_input).and_return(pointer) + s.should_receive(:user_input).once.with(:pointer).and_return(pointer) + s.should_receive(:user_input).once.with(:reg).and_return(nil) + s.should_receive(:user_input).once.with(:seq).and_return(nil) + s.should_receive(:user_input).once.with(:pack).and_return(nil) end newstate = @state.resolve assert_instance_of(State::Companies::Company, newstate) @@ -514,28 +517,94 @@ end assert_equal(nil, @state.proceed_poweruser) end def test_resolve + @state.request_path = 1 + assert_equal(@state, @state.resolve) + end + def test_resolve__else_pointer pointer = flexmock('pointer') do |ptr| ptr.should_receive(:is_a?).and_return(true) ptr.should_receive(:resolve).and_return('model') end flexmock(@session) do |s| - s.should_receive(:user_input).and_return(pointer) + s.should_receive(:user_input).once.with(:pointer).and_return(pointer) + s.should_receive(:user_input).once.with(:reg).and_return(nil) + s.should_receive(:user_input).once.with(:seq).and_return(nil) + s.should_receive(:user_input).once.with(:pack).and_return(nil) end - klass = flexmock('klass') do |klass| - klass.should_receive(:new).and_return('resolve_state') + flexmock(@state) do |s| + s.should_receive(:resolve_state) + end + assert_kind_of(ODDB::State::Admin::TransparentLogin, @state.resolve) + end + def test_resolve__else_package + pointer = flexmock('pointer') do |ptr| + ptr.should_receive(:is_a?).and_return(true) + ptr.should_receive(:resolve).and_return('model') + end + package = flexmock('package', :pointer => pointer) + sequence = flexmock('sequence', + :package => package, + :pointer => pointer + ) + registration = flexmock('registration', + :sequence => sequence, + :pointer => pointer + ) + flexmock(@session.app, :registration => registration) + flexmock(@session) do |s| + s.should_receive(:user_input).once.with(:reg).and_return('iksnr') + s.should_receive(:user_input).once.with(:seq).and_return('seqnr') + s.should_receive(:user_input).once.with(:pack).and_return('ikscd') end flexmock(@state) do |s| - s.should_receive(:resolve_state).and_return(klass) + s.should_receive(:resolve_state) + end + assert_kind_of(ODDB::State::Admin::TransparentLogin, @state.resolve) + end + def test_resolve__else_sequence + pointer = flexmock('pointer') do |ptr| + ptr.should_receive(:is_a?).and_return(true) + ptr.should_receive(:resolve).and_return('model') + end + package = flexmock('package', :pointer => pointer) + sequence = flexmock('sequence', + :package => package, + :pointer => pointer + ) + registration = flexmock('registration', + :sequence => sequence, + :pointer => pointer + ) + flexmock(@session.app, :registration => registration) + flexmock(@session) do |s| + s.should_receive(:user_input).once.with(:reg).and_return('iksnr') + s.should_receive(:user_input).once.with(:seq).and_return('seqnr') + s.should_receive(:user_input).once.with(:pack).and_return(nil) + end + flexmock(@state) do |s| + s.should_receive(:resolve_state) end - assert_equal('resolve_state', @state.resolve) + assert_kind_of(ODDB::State::Admin::TransparentLogin, @state.resolve) end - def test_resolve__else + def test_resolve__else_registration pointer = flexmock('pointer') do |ptr| ptr.should_receive(:is_a?).and_return(true) ptr.should_receive(:resolve).and_return('model') end + package = flexmock('package', :pointer => pointer) + sequence = flexmock('sequence', + :package => package, + :pointer => pointer + ) + registration = flexmock('registration', + :sequence => sequence, + :pointer => pointer + ) + flexmock(@session.app, :registration => registration) flexmock(@session) do |s| - s.should_receive(:user_input).and_return(pointer) + s.should_receive(:user_input).once.with(:reg).and_return('iksnr') + s.should_receive(:user_input).once.with(:seq).and_return(nil) + s.should_receive(:user_input).once.with(:pack).and_return(nil) end flexmock(@state) do |s| s.should_receive(:resolve_state) @@ -782,7 +851,7 @@ end @state.instance_eval('@request_path = "request_path"') assert_equal(@state, @state.show) end - def test_show__else + def test_show__else_pointer klass = flexmock('klass') do |klass| klass.should_receive(:new).and_return('klass.new') end @@ -794,7 +863,94 @@ end ptr.should_receive(:resolve).and_return('model') end flexmock(@session) do |s| - s.should_receive(:user_input).and_return(pointer) + s.should_receive(:user_input).once.with(:pointer).and_return(pointer) + s.should_receive(:user_input).once.with(:reg).and_return(nil) + s.should_receive(:user_input).once.with(:seq).and_return(nil) + s.should_receive(:user_input).once.with(:pack).and_return(nil) + end + assert_equal('klass.new', @state.show) + end + def test_show__else_package + klass = flexmock('klass') do |klass| + klass.should_receive(:new).and_return('klass.new') + end + flexmock(@state) do |s| + s.should_receive(:resolve_state).and_return(klass) + end + pointer = flexmock('pointer') do |ptr| + ptr.should_receive(:is_a?).and_return(true) + ptr.should_receive(:resolve).and_return('model') + end + package = flexmock('package', :pointer => pointer) + sequence = flexmock('sequence', + :package => package, + :pointer => pointer + ) + registration = flexmock('registration', + :sequence => sequence, + :pointer => pointer + ) + flexmock(@session.app, :registration => registration) + flexmock(@session) do |s| + s.should_receive(:user_input).once.with(:reg).and_return('iksnr') + s.should_receive(:user_input).once.with(:seq).and_return('seqnr') + s.should_receive(:user_input).once.with(:pack).and_return('ikscd') + end + assert_equal('klass.new', @state.show) + end + def test_show__else_sequence + klass = flexmock('klass') do |klass| + klass.should_receive(:new).and_return('klass.new') + end + flexmock(@state) do |s| + s.should_receive(:resolve_state).and_return(klass) + end + pointer = flexmock('pointer') do |ptr| + ptr.should_receive(:is_a?).and_return(true) + ptr.should_receive(:resolve).and_return('model') + end + package = flexmock('package', :pointer => pointer) + sequence = flexmock('sequence', + :package => package, + :pointer => pointer + ) + registration = flexmock('registration', + :sequence => sequence, + :pointer => pointer + ) + flexmock(@session.app, :registration => registration) + flexmock(@session) do |s| + s.should_receive(:user_input).once.with(:reg).and_return('iksnr') + s.should_receive(:user_input).once.with(:seq).and_return('seqnr') + s.should_receive(:user_input).once.with(:pack).and_return(nil) + end + assert_equal('klass.new', @state.show) + end + def test_show__else_registration + klass = flexmock('klass') do |klass| + klass.should_receive(:new).and_return('klass.new') + end + flexmock(@state) do |s| + s.should_receive(:resolve_state).and_return(klass) + end + pointer = flexmock('pointer') do |ptr| + ptr.should_receive(:is_a?).and_return(true) + ptr.should_receive(:resolve).and_return('model') + end + package = flexmock('package', :pointer => pointer) + sequence = flexmock('sequence', + :package => package, + :pointer => pointer + ) + registration = flexmock('registration', + :sequence => sequence, + :pointer => pointer + ) + flexmock(@session.app, :registration => registration) + flexmock(@session) do |s| + s.should_receive(:user_input).once.with(:reg).and_return('iksnr') + s.should_receive(:user_input).once.with(:seq).and_return(nil) + s.should_receive(:user_input).once.with(:pack).and_return(nil) end assert_equal('klass.new', @state.show) end @@ -909,8 +1065,9 @@ end end def test_patinfo flexmock(@session) do |s| + s.should_receive(:user_input).once.with(:reg).and_return('iksnr') + s.should_receive(:user_input).once.with(:seq).and_return('seqnr') s.should_receive(:user_input).once.with(:swissmedicnr).and_return('iksnr') - s.should_receive(:user_input).once.with(:seqnr).and_return('seqnr') end sequence = flexmock('sequence', :patinfo => 'patinfo') registration = flexmock('registration', :sequence => sequence) diff --git a/test/test_util/persistence.rb b/test/test_util/persistence.rb index 2dc8c3d..de712a0 100644 --- a/test/test_util/persistence.rb +++ b/test/test_util/persistence.rb @@ -1,5 +1,6 @@ #!/usr/bin/env ruby -# TestPersistence -- oddb -- 26.02.2003 -- hwyss@ywesee.com +# ODDB::TestPersistence -- oddb.org -- 05.08.2011 -- mhatakeyama@ywesee.com +# ODDB::TestPersistence -- oddb.org -- 26.02.2003 -- hwyss@ywesee.com $: << File.expand_path('..', File.dirname(__FILE__)) $: << File.expand_path("../../src", File.dirname(__FILE__)) @@ -8,6 +9,7 @@ require 'test/unit' require 'util/persistence' require 'date' require 'stub/odba' +require 'flexmock' module ODDB module Persistence @@ -465,3 +467,15 @@ module ODDB end end end + +module ODDB + module Persistence + class TestPointer < Test::Unit::TestCase + include FlexMock::TestCase + def test_to_csv + pointer = ODDB::Persistence::Pointer.new(['key', 'value']) + assert_equal('key,value', pointer.to_csv) + end + end + end +end diff --git a/test/test_util/validator.rb b/test/test_util/validator.rb index 510ccec..39b37b4 100644 --- a/test/test_util/validator.rb +++ b/test/test_util/validator.rb @@ -1,6 +1,6 @@ #!/usr/bin/env ruby -# TestValidator -- oddb -- 10.03.2011 -- mhatakeyama@ywesee.com -# TestValidator -- oddb -- 04.03.2003 -- hwyss@ywesee.com +# TestValidator -- oddb.org -- 10.03.2011 -- mhatakeyama@ywesee.com +# TestValidator -- oddb.org -- 04.03.2003 -- hwyss@ywesee.com $: << File.expand_path('..', File.dirname(__FILE__)) $: << File.expand_path("../../src", File.dirname(__FILE__)) diff --git a/test/test_view/admin/registration.rb b/test/test_view/admin/registration.rb index 73a8056..1f98fe8 100644 --- a/test/test_view/admin/registration.rb +++ b/test/test_view/admin/registration.rb @@ -1,5 +1,5 @@ #!/usr/bin/env ruby -# View::Admin::TestRegistration -- oddb.org -- 03.06.2011 -- mhatakeyama@ywesee.com +# ODDB::View::Admin::TestRegistration -- oddb.org -- 05.08.2011 -- mhatakeyama@ywesee.com $: << File.expand_path('../..', File.dirname(__FILE__)) $: << File.expand_path("../../../src", File.dirname(__FILE__)) @@ -66,6 +66,8 @@ class TestRegistrationSequences < Test::Unit::TestCase include ODDB::View::Admin::TestSetup def setup htmlgrid_setup + @pointer = flexmock('pointer', :to_csv => 'pointer') + flexmock(@model, :pointer => @pointer) @list = ODDB::View::Admin::RegistrationSequences.new([@model], @session) end def test_atc_class @@ -76,6 +78,7 @@ class TestRegistrationSequences < Test::Unit::TestCase assert_equal(expected, @list.galenic_form(@model, @session)) end def test_seqnr + flexmock(@pointer, :to_csv => "registration,12345,sequence,123,package,12") assert_kind_of(HtmlGrid::Link, @list.seqnr(@model, @session)) end def test_seqnr__edit @@ -85,12 +88,13 @@ class TestRegistrationSequences < Test::Unit::TestCase assert_kind_of(ODDB::View::PointerLink, @list.seqnr(@model, @session)) end end - class TestRootRegistrationSequences < Test::Unit::TestCase include FlexMock::TestCase include ODDB::View::Admin::TestSetup def setup htmlgrid_setup + pointer = flexmock('pointer', :to_csv => "pointer") + flexmock(@model, :pointer => pointer) @list = ODDB::View::Admin::RootRegistrationSequences.new([@model], @session) end def test_compose_empty_list @@ -217,9 +221,10 @@ class TestResellerRegistrationForm < Test::Unit::TestCase include ODDB::View::Admin::TestSetup def setup htmlgrid_setup + pointer = flexmock('pointer', :to_csv => "pointer") @company = flexmock('company') do |c| c.should_receive(:invoiceable?) - c.should_receive(:pointer) + c.should_receive(:pointer).and_return(pointer) end flexmock(@model) do |m| m.should_receive(:company).and_return(@company) @@ -276,6 +281,8 @@ class TestRegistrationComposite < Test::Unit::TestCase m.should_receive(:has_fachinfo?) m.should_receive(:sequences).and_return({'key' => @sequence}) end + pointer = flexmock('pointer', :to_csv => "pointer") + flexmock(@sequence, :pointer => pointer) @composite = ODDB::View::Admin::RegistrationComposite.new(@model, @session) end def test_registration_sequences @@ -290,7 +297,6 @@ class TestRegistrationComposite < Test::Unit::TestCase assert_kind_of(HtmlGrid::Value, @composite.source(@model, @session)) end end - end # Admin end # View end # ODDB diff --git a/test/test_view/admin/sequence.rb b/test/test_view/admin/sequence.rb index 40c9b11..33c1f42 100644 --- a/test/test_view/admin/sequence.rb +++ b/test/test_view/admin/sequence.rb @@ -1,5 +1,5 @@ #!/usr/bin/env ruby -# ODDB::View::Admin::TestSequence -- oddb.org -- 04.08.2011 -- mhatakeyama@ywesee.com +# ODDB::View::Admin::TestSequence -- oddb.org -- 05.08.2011 -- mhatakeyama@ywesee.com $: << File.expand_path('../..', File.dirname(__FILE__)) $: << File.expand_path("../../../src", File.dirname(__FILE__)) @@ -245,25 +245,26 @@ class TestSequencePackage < Test::Unit::TestCase compose = flexmock('compose') do |c| c.should_receive(:galenic_form) end + @pointer = flexmock('pointer', :to_csv => 'registration,31706,sequence,01,package,017') active_agent = flexmock('active_agent') do |a| a.should_receive(:substance) a.should_receive(:dose) a.should_receive(:parent).and_return(compose) a.should_receive(:ikscd).and_return('ikscd') - a.should_receive(:pointer) a.should_receive(:commercial_forms).and_return([]) a.should_receive(:size) a.should_receive(:price_exfactory) a.should_receive(:price_public) a.should_receive(:sl_entry) + a.should_receive(:pointer).and_return(@pointer) end @model = [active_agent] @agents = ODDB::View::Admin::SequencePackages.new(@model, @session) end def test_ikscd flexmock(@session, :allowed? => true) - model = flexmock('model', :pointer => nil) - assert_kind_of(ODDB::View::PointerLink, @agents.ikscd(model)) + flexmock(@model, :pointer => @pointer) + assert_kind_of(ODDB::View::PointerLink, @agents.ikscd(@model)) end end @@ -431,9 +432,10 @@ class TestSequenceForm < Test::Unit::TestCase assert_kind_of(HtmlGrid::LabelText, @composite.patinfo_label(@model, @session)) end def test_patinfo_upload + pointer = flexmock('pointer', :to_csv => 'pointer') company = flexmock('company') do |c| c.should_receive(:invoiceable?) - c.should_receive(:pointer) + c.should_receive(:pointer).and_return(pointer) end flexmock(@model, :company => company) assert_kind_of(ODDB::View::PointerLink, @composite.patinfo_upload(@model, @session)) @@ -483,9 +485,10 @@ class TestSequenceComposite < Test::Unit::TestCase c.should_receive(:active_agents).and_return([active_agent]) end commercial_form = flexmock('commercial_form') + pointer = flexmock('pointer', :to_csv => 'pointer') @package = flexmock('package') do |p| p.should_receive(:ikscd).and_return('ikscd') - p.should_receive(:pointer) + p.should_receive(:pointer).and_return(pointer) p.should_receive(:commercial_forms).and_return([commercial_form]) p.should_receive(:parts).and_return([]) p.should_receive(:price_exfactory) @@ -608,9 +611,10 @@ class TestResellerSequenceComposite < Test::Unit::TestCase c.should_receive(:active_agents).and_return([active_agent]) end commercial_form = flexmock('commercial_form') + pointer = flexmock('pointer', :to_csv => 'pointer') @package = flexmock('package') do |p| p.should_receive(:ikscd).and_return('ikscd') - p.should_receive(:pointer) + p.should_receive(:pointer).and_return(pointer) p.should_receive(:commercial_forms).and_return([commercial_form]) p.should_receive(:parts).and_return([]) p.should_receive(:price_exfactory) diff --git a/test/test_view/pointersteps.rb b/test/test_view/pointersteps.rb index 0de1a25..5b2b43b 100644 --- a/test/test_view/pointersteps.rb +++ b/test/test_view/pointersteps.rb @@ -1,5 +1,5 @@ #!/usr/bin/env ruby -# ODDB::View::TestPointerSteps -- oddb.org -- 28.04.2011 -- hwyss@ywesee.com +# ODDB::View::TestPointerSteps -- oddb.org -- 05.08.2011 -- mhatakeyama@ywesee.com # ODDB::View::TestPointerSteps -- oddb.org -- 02.04.2003 -- hwyss@ywesee.com $: << File.expand_path('..', File.dirname(__FILE__)) @@ -10,6 +10,12 @@ require 'flexmock' require 'view/pointersteps' require 'stub/cgi' +class String + def to_csv + self + end +end + module ODDB module View class StubPointerStepsModel @@ -33,6 +39,9 @@ module ODDB def pointer self end + def to_csv + self.to_s + end end class StubPointerStepsAncestor attr_reader :pointer_descr @@ -179,7 +188,12 @@ module ODDB steps = ODDB::View::PointerSteps.new(@model, @session, @container) assert_kind_of(ODDB::View::PointerLink, steps.pointer_descr(@model, @session)) end - + def test_pointer_descr_smart_link + flexmock(@session, :allowed? => nil) + flexmock(@model, :pointer => "registration, 12345, sequence, 012, package, 01") + steps = ODDB::View::PointerSteps.new(@model, @session, @container) + assert_kind_of(ODDB::View::PointerLink, steps.pointer_descr(@model, @session)) + end class StubSnapback include ODDB::View::Snapback def initialize(model, session)