From 97f6eccdc63498781ba735b5ca27201473d11d67 Mon Sep 17 00:00:00 2001 From: Niklaus Giger Date: Mon, 4 May 2015 13:01:51 +0200 Subject: [PATCH] List desitin products first for Evidentia LnF --- src/util/resultsort.rb | 4 ++- test/test_util/resultsort.rb | 70 ++++++++++++++++++++++++++++++------ 2 files changed, 63 insertions(+), 11 deletions(-) diff --git a/src/util/resultsort.rb b/src/util/resultsort.rb index b0fdbd8ca..3f04579c6 100644 --- a/src/util/resultsort.rb +++ b/src/util/resultsort.rb @@ -20,8 +20,10 @@ module ResultSort def sort_result(packages, session) begin packages.sort_by { |package| + priorize_desitin = (session and session.lookandfeel.enabled?(:evidentia, false) and package.company and (/desitin/i.match(package.company.to_s) != nil)) [ package.expired? ? 1 : -1, + priorize_desitin ? 0 : 1, generic_type_weight(package), package.name_base.to_s, package.galenic_forms.collect { |gf| galform_str(gf, session) }, @@ -52,7 +54,7 @@ def galform_str(galform, session) end end def generic_type_weight(package) - case package.generic_type.to_sym + case package.generic_type ? package.generic_type.to_sym : nil when :original 0 when :generic diff --git a/test/test_util/resultsort.rb b/test/test_util/resultsort.rb index 8a1865043..53b91579c 100644 --- a/test/test_util/resultsort.rb +++ b/test/test_util/resultsort.rb @@ -1,5 +1,6 @@ #!/usr/bin/env ruby # encoding: utf-8 +# vim: tabstop=2 shiftwidth=2 expandtab # ODDB::TestResultSort -- oddb.org -- 23.06.2011 -- mhatakeyama@ywesee.com $: << File.expand_path("../../src", File.dirname(__FILE__)) @@ -9,6 +10,7 @@ require 'flexmock' require 'util/resultsort' require 'model/dose' +require 'custom/lookandfeelwrapper' module ODDB class StubResultStateSort @@ -41,20 +43,42 @@ def initialize(packages) class TestResultSort 'language') + @session.should_receive(:flavor).and_return(@standard) + @component = LookandfeelBase.new(@session) + @standard = LookandfeelStandardResult.new(@component) + @session.should_receive(:lookandfeel).by_default.and_return(@component) @galenic_form = flexmock('galenic_form') @galenic_form.should_receive(:odba_instance).by_default.and_return(nil) - @package = flexmock('package') - @package.should_receive(:odba_instance).by_default.and_return(nil) - @package.should_receive(:generic_type).by_default.and_return(:original) - @package.should_receive(:expired? ).by_default.and_return(nil) - @package.should_receive(:name_base).by_default.and_return('name_base') - @package.should_receive(:galenic_forms).by_default.and_return([@package]) - @package.should_receive(:dose).by_default.and_return('dose') - @package.should_receive(:comparable_size).by_default.and_return('comparable_size') + @package = create_default_product_mock('product_1') @sort = ODDB::StubResultSort.new([@package]) end + + def setup_more_products + @package2 = create_default_product_mock('product_2') + @package2.should_receive(:generic_type).and_return(:generic) + @package2.should_receive(:company).and_return('company_generic') + @package3 = create_default_product_mock('product_3') + @package3.should_receive(:generic_type).and_return(:generic) + @package3.should_receive(:company).and_return('desitin') + @package4 = create_default_product_mock('product_4') + @package4.should_receive(:name_base).and_return('product_4_orignal') + @sort = ODDB::StubResultSort.new([@package, @package2, @package3, @package4]) + end def test_galform_str__else @galenic_form.should_receive(:odba_instance).and_return('odba_instance') @galenic_form.should_receive(:language).and_return('language') @@ -91,6 +115,33 @@ def test_generic_type_weight__else def test_sort_result assert_equal([@package], @sort.sort_result([@package], @session)) end + def test_sort_result_default + setup_more_products + expected_order = [@package, # original + @package4, # original + @package2, # alphabetically sorted + @package3, + ] + assert_equal(expected_order, @sort.sort_result([@package, @package2, @package3, @package4], @session)) + assert_equal(expected_order, @sort.sort_result([@package, @package3, @package4, @package2], @session)) + assert_equal(expected_order, @sort.sort_result([@package4, @package3, @package2, @package], @session)) + end + def test_sort_result_evidentia + @session.should_receive(:flavor).and_return(@evidentia) + @component = LookandfeelBase.new(@session) + @evidentia = LookandfeelEvidentia.new(@component) + @session.should_receive(:flavor).and_return(@evidentia) + @session.should_receive(:lookandfeel).and_return(@evidentia) + setup_more_products + expected_order = [@package3, # because it is from desitin + @package, # original + @package4, # original + @package2, # alphabetically sorted + ] + assert_equal(expected_order, @sort.sort_result([@package, @package2, @package3, @package4], @session)) +# assert_equal(expected_order, @sort.sort_result([@package, @package3, @package4, @package2], @session)) +# assert_equal(expected_order, @sort.sort_result([@package4, @package3, @package2, @package], @session)) + end def stdout_null require 'tempfile' $stdout = Tempfile.open('stdout') @@ -102,11 +153,10 @@ def test_sort_result__error flexmock(@package) do |p| p.should_receive(:expired?).and_raise(StandardError) end - stdout_null do + stdout_null do assert_equal([@package], @sort.sort_result([@package], @session)) end end end - end # ODDB