Skip to content

Commit

Permalink
List desitin products first for Evidentia LnF
Browse files Browse the repository at this point in the history
  • Loading branch information
ngiger committed May 4, 2015
1 parent 91f5e43 commit 97f6ecc
Show file tree
Hide file tree
Showing 2 changed files with 63 additions and 11 deletions.
4 changes: 3 additions & 1 deletion src/util/resultsort.rb
Expand Up @@ -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) },
Expand Down Expand Up @@ -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
Expand Down
70 changes: 60 additions & 10 deletions 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__))
Expand All @@ -9,6 +10,7 @@
require 'flexmock'
require 'util/resultsort'
require 'model/dose'
require 'custom/lookandfeelwrapper'

module ODDB
class StubResultStateSort
Expand Down Expand Up @@ -41,20 +43,42 @@ def initialize(packages)

class TestResultSort <Minitest::Test
include FlexMock::TestCase
def create_default_product_mock(product_name)
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(product_name)
package.should_receive(:galenic_forms).by_default.and_return([package])
package.should_receive(:dose).by_default.and_return('dose')
package.should_receive(:company).by_default.and_return('company_original')
package.should_receive(:comparable_size).by_default.and_return('comparable_size')
package.should_receive(:inspect).by_default.and_return(product_name)
package
end
def setup
@session = flexmock('session', :language => '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')
Expand Down Expand Up @@ -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')
Expand All @@ -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

0 comments on commit 97f6ecc

Please sign in to comment.