Skip to content

Commit

Permalink
Fix correct address button for companies
Browse files Browse the repository at this point in the history
  • Loading branch information
ngiger committed Jan 13, 2015
1 parent 9eed7fc commit 6e9b6e0
Show file tree
Hide file tree
Showing 8 changed files with 45 additions and 17 deletions.
10 changes: 6 additions & 4 deletions spec/address_correction_spec.rb
Expand Up @@ -68,13 +68,17 @@ def enter_search_to_field_by_name(search_text, field_name)
AddressCorrections = Struct.new(:name, :url_display, :url_correct, :url_from_received_mail)
to_check = [
# TODO: How can we ensure that we have valid EAN and OID?
# TODO: make it work for companies, too. Eg. adapt session.rb, OddbUrl + '/de/gcc/company/ean/7601001352940',
AddressCorrections.new('company',
OddbUrl + '/de/gcc/company/ean/7601001001121',
OddbUrl + '/de/gcc/suggest_address/company/7601001001121/address/0/zone/companies',
OddbUrl + '/de/gcc/address_suggestion/company/7601001001121/oid/32401513',
),
AddressCorrections.new('doctor',
OddbUrl + '/de/gcc/doctor/ean/7601000254344',
OddbUrl + '/de/gcc/suggest_address/doctor/7601000254344/address/0/zone/doctors',
OddbUrl + '/de/gcc/address_suggestion/doctor/7601000254344/oid/32401513',
),
AddressCorrections.new('hospital',
AddressCorrections.new('hospital',
OddbUrl + '/de/gcc/hospital/ean/7601002002592',
OddbUrl + '/de/gcc/suggest_address/hospital/7601002002592/address/0/zone/hospitals',
OddbUrl + '/de/gcc/address_suggestion/hospital/7601002002592/oid/32401511',
Expand All @@ -85,8 +89,6 @@ def enter_search_to_field_by_name(search_text, field_name)
OddbUrl + '/de/gcc/address_suggestion/pharmacy/7601001380028/oid/32401536',
),
]


to_check.each {
|correction|
it "should be possible to correct an address for a #{correction.name}" do
Expand Down
14 changes: 12 additions & 2 deletions src/state/global.rb
Expand Up @@ -958,11 +958,15 @@ def suggest_address
@session.search_hospital(ean)
end
pharmacy = if ean2 = @session.user_input(:pharmacy)
@session.search_pharmacy(ean2)
@session.pharmacy_by_gln(ean2)
end
company = if ean3 = @session.user_input(:company)
@session.search_registration_holder(ean3).first
end
if (doctor and addr = doctor.address(@session.user_input(:address))) \
or(pharmacy and addr = pharmacy.address(@session.user_input(:address))) \
or (hospital and addr = hospital.address(@session.user_input(:address)))
or (hospital and addr = hospital.address(@session.user_input(:address))) \
or (company and addr = company.address(@session.user_input(:address)))
SuggestAddress.new(@session, addr)
elsif doctor # create a new address
addr = Address2.new
Expand All @@ -979,7 +983,13 @@ def suggest_address
addr.name = hospital.fullname
addr.pointer = hospital.pointer + [:address, @session.user_input(:address)]
SuggestAddress.new(@session, addr)
elsif company
addr = Address2.new
addr.name = company.fullname
addr.pointer = company.pointer + [:address, @session.user_input(:address)]
SuggestAddress.new(@session, addr)
else
$stdout.puts "globa suggest_address FAILED"
end
end
def address_suggestion
Expand Down
6 changes: 3 additions & 3 deletions src/state/suggest_address.rb
Expand Up @@ -46,12 +46,12 @@ def save_suggestion
@url = if @parent.is_a?(ODDB::Doctor)
name = 'Doctor'
@session.lookandfeel._event_url(:address_suggestion, [:doctor, (@parent.ean13 || @parent.oid), :oid, addr_sugg.oid])
elsif @parent.is_a?(ODDB::Company)
name = 'Company or pharmacy '+ @parent.is_pharmacy?.to_s
@session.lookandfeel._event_url(:address_suggestion, [ @parent.is_pharmacy? ? :pharmacy : :company, @parent.ean13, :oid, addr_sugg.oid])
elsif @parent.is_a?(ODDB::Hospital)
name = 'Hospital'
@session.lookandfeel._event_url(:address_suggestion, [:hospital, @parent.ean13, :oid, addr_sugg.oid])
elsif @parent.is_a?(ODDB::Company)
name = (@parent.is_pharmacy? ? :pharmacy : :company).to_s
@session.lookandfeel._event_url(:address_suggestion, [ @parent.is_pharmacy? ? :pharmacy : :company, @parent.ean13, :oid, addr_sugg.oid])
else
@session.lookandfeel._event_url(:resolve, {:pointer => addr_sugg.pointer})
end
Expand Down
8 changes: 5 additions & 3 deletions src/util/oddbapp.rb
Expand Up @@ -245,8 +245,9 @@ def commercial_form(oid)
def commercial_form_by_name(name)
ODDB::CommercialForm.find_by_name(name)
end
def company(oid)
@companies[oid.to_i]
def company(ean13_or_oid)
return company_by_gln(ean13_or_oid) if ean13_or_oid.to_s.match(VALID_EAN13)
@companies[ean13_or_oid.to_i]
end
def pharmacy_by_gln(gln)
return nil unless gln.to_s.match(VALID_EAN13)
Expand All @@ -255,7 +256,8 @@ def pharmacy_by_gln(gln)
def company_by_gln(gln)
return nil unless gln.to_s.match(VALID_EAN13)
@companies.values.each { |company|
if company && company.respond_to?(:ean13) && company.ean13.to_s == gln.to_s
if company && company.respond_to?(:ean13) &&
company.ean13.to_s == gln.to_s
return company
end
}
Expand Down
2 changes: 1 addition & 1 deletion src/view/address.rb
Expand Up @@ -103,7 +103,7 @@ def correct(model)
button = HtmlGrid::Button.new(:correct, model, @session, self)
args = nil
address = nil
[:doctor, :hospital, :pharmacy].each do
[:doctor, :hospital, :pharmacy, :company].each do
|kind|
cmd = "ean = @session.user_input(:ean) and #{kind}s = @session.search_#{kind}s(ean) and #{kind} = #{kind}s.first ".gsub('ys', 'ies')
next if args
Expand Down
6 changes: 6 additions & 0 deletions src/view/suggest_address.rb
Expand Up @@ -62,6 +62,12 @@ def init
if ean = @session.user_input(:pharmacy) and pharmacy = @session.app.pharmacy(ean)
@model.name = pharmacy.name
end
if ean = @session.user_input(:company) and company = @session.app.company(ean)
@model.name = company.name
end
if ean = @session.user_input(:doctor) and doctor = @session.app.doctor(ean)
@model.name = doctor.name
end
end
super
error_message
Expand Down
9 changes: 9 additions & 0 deletions test/test_util/oddbapp_2.rb
Expand Up @@ -250,6 +250,15 @@ def test_doctor
oid = @app.doctors.keys.first
assert_equal(doctor, @app.doctor(oid))
end
def test_company_by_ean13
gln = TEST_EAN13
company = ODDB::Company.new
company.ean13 = gln
company.business_area = ODDB::BA_type::BA_public_pharmacy
@app.companies = {company.oid => company}
assert_equal(company, @app.company_by_gln(gln))
assert_equal(company, @app.company(TEST_EAN13))
end
def test_company_by_name1
company1 = ODDB::Company.new
company2 = ODDB::Company.new
Expand Down
7 changes: 3 additions & 4 deletions test/test_view/suggest_address.rb
Expand Up @@ -61,17 +61,16 @@ def setup
:attributes => {},
:base_url => 'base_url'
)
@session = flexmock('session',
@parent = flexmock('parent', :fullname => 'fullname')
@session = flexmock('session',
:lookandfeel => @lnf,
:error => 'error',
:warning? => nil,
:user_input => 'user_input',
:get_address_parent => 'get_address_parent',
:request_path => 'request_path',
:get_address_parent => 'get_address_parent',
:get_address_parent => @parent,
:error? => nil,
)
@parent = flexmock('parent', :fullname => 'fullname')
flexmock(@parent, :resolve => @parent)
pointer = flexmock('pointer', :parent => @parent)
@fax = flexmock('fax', :join =>'join')
Expand Down

0 comments on commit 6e9b6e0

Please sign in to comment.