forked from zdavatz/sandoz.xmlconv.bbmb.ch
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
8 changed files
with
312 additions
and
20 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
source 'https://rubygems.org' | ||
|
||
gem 'xmlconv', :path => '../xmlconv' | ||
gem 'minitest' | ||
gem 'flexmock' | ||
group :debugger do | ||
gem 'pry-byebug' | ||
gem 'pry-doc' | ||
end | ||
|
||
group :test do | ||
gem 'rspec' | ||
gem 'watir' | ||
gem 'watir-webdriver' | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
<?xml version="1.0" encoding="ISO-8859-1"?> | ||
<customerOrder xmlns:xsd="http://www.w3.org/2001/XMLSchema" | ||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||
compressionDesired="false" productDescriptionDesired="true" | ||
backLogDesired="true" language="fr" | ||
roundUpForCondition="true" version="1.0"> | ||
<client number="4100614181" password="MDPOK" /> | ||
<orderHeader deliveryDate="2016-06-13" | ||
referenceNumber="130620161" mannerOfTransport="tour" | ||
phoneCallDesired="false" urgent="false"> | ||
<deliveryAddress line1="Rte de Fully 11" line4="Pharmacie de | ||
Saillon" line5PostalCode="1913" line5City="Saillon"> | ||
<addressLine2And3Text line2="Saillon" line3="de Saillon" | ||
/> | ||
</deliveryAddress> | ||
</orderHeader> | ||
<orderLines> | ||
<productOrderLine orderQuantity="1" | ||
roundUpForCondition="true" backLogDesired="true"> | ||
<pharmaCode id="4124733" /> | ||
</productOrderLine> | ||
<productOrderLine orderQuantity="1" | ||
roundUpForCondition="true" backLogDesired="true"> | ||
<pharmaCode id="4953990" /> | ||
</productOrderLine> | ||
<productOrderLine orderQuantity="6" | ||
roundUpForCondition="true" backLogDesired="true"> | ||
<pharmaCode id="5549297" /> | ||
</productOrderLine> | ||
<productOrderLine orderQuantity="1" | ||
roundUpForCondition="true" backLogDesired="true"> | ||
<pharmaCode id="4714009" /> | ||
</productOrderLine> | ||
<productOrderLine orderQuantity="1" | ||
roundUpForCondition="true" backLogDesired="true"> | ||
<pharmaCode id="2965693" /> | ||
</productOrderLine> | ||
<productOrderLine orderQuantity="2" | ||
roundUpForCondition="true" backLogDesired="true"> | ||
<pharmaCode id="2991118" /> | ||
</productOrderLine> | ||
<productOrderLine orderQuantity="1" | ||
roundUpForCondition="true" backLogDesired="true"> | ||
<pharmaCode id="3938468" /> | ||
</productOrderLine> | ||
<productOrderLine orderQuantity="1" | ||
roundUpForCondition="true" backLogDesired="true"> | ||
<pharmaCode id="4714179" /> | ||
</productOrderLine> | ||
<productOrderLine orderQuantity="2" | ||
roundUpForCondition="true" backLogDesired="true"> | ||
<pharmaCode id="4497463" /> | ||
</productOrderLine> | ||
<productOrderLine orderQuantity="3" | ||
roundUpForCondition="true" backLogDesired="true"> | ||
<pharmaCode id="2783905" /> | ||
</productOrderLine> | ||
<productOrderLine orderQuantity="1" | ||
roundUpForCondition="true" backLogDesired="true"> | ||
<pharmaCode id="6240372" /> | ||
</productOrderLine> | ||
<productOrderLine orderQuantity="1" | ||
roundUpForCondition="true" backLogDesired="true"> | ||
<pharmaCode id="5552508" /> | ||
</productOrderLine> | ||
</orderLines> | ||
</customerOrder> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,80 @@ | ||
#!/usr/bin/env ruby | ||
# encoding: utf-8 | ||
require 'spec_helper' | ||
@workThread = nil | ||
CustomerId = 4100614181 | ||
ProductName = 'Bilol 2.5 mg Filmtbl 100' | ||
Here = File.expand_path(File.dirname(__FILE__)) | ||
|
||
describe "bbmb.xmlconv" do | ||
|
||
before :all do | ||
@idx = 0 | ||
waitForBbmbToBeReady(@browser, BbmbUrl) | ||
end | ||
|
||
before :each do | ||
@browser.goto BbmbUrl | ||
end | ||
|
||
after :each do | ||
@idx += 1 | ||
createScreenshot(@browser, '_'+@idx.to_s) | ||
logout | ||
end | ||
|
||
after :all do | ||
@browser.close | ||
end | ||
|
||
describe "admin" do | ||
before :all do | ||
end | ||
before :each do | ||
@browser.goto BbmbUrl | ||
logout | ||
login(AdminUser, AdminPassword) | ||
end | ||
after :all do | ||
logout | ||
end | ||
it "handle an injection properly" do | ||
total_before, item_before = get_total_and_item_total | ||
puts "Before #{total_before} item #{item_before}" | ||
inject_invoice | ||
# binding.pry | ||
logout | ||
login(AdminUser, AdminPassword) | ||
total_after, item_after = get_total_and_item_total | ||
puts "After #{total_after} item #{item_after}" | ||
diff_total = total_after - total_before | ||
diff_item= item_after - item_before | ||
puts "diff_item #{diff_item} diff_total #{diff_total}" | ||
end | ||
end | ||
|
||
def inject_invoice | ||
filename = File.join(Here, 'data', 'invoice.xml') | ||
expect(File.exists?(filename)).to be true | ||
cmd = "curl http://sandoz.xmlconv.bbmb.ngiger.ch/propharma -X POST -H 'Content-type: text/xml' --data @#{filename}" | ||
expect(system(cmd)).to be true | ||
end | ||
|
||
def get_total_and_item_total | ||
@browser.goto "#{BbmbUrl}/de/#{Flavor}/customer/customer_id/#{CustomerId}" | ||
windowSize = @browser.windows.size | ||
expect(@browser.url).to match BbmbUrl | ||
text = @browser.text.clone | ||
expect(@browser.url).to match BbmbUrl | ||
expect(@browser.url).to match CustomerId.to_s | ||
how_much = @browser.link(:name => 'turnover').text | ||
@turnover = how_much.match(/(\d+\.\d+)/)[1].to_f | ||
@browser.link(:name => 'history').click | ||
expect(@browser.url).to match BbmbUrl | ||
expect(@browser.url).to match CustomerId.to_s | ||
expect(@browser.url).to match 'history' | ||
wieviel = @browser.text.match(/#{ProductName}\s+\d+\.\d+\s+(\d+\.\d+)/) | ||
@item_turnover = wieviel[1].to_f | ||
return @turnover, @item_turnover | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,134 @@ | ||
#!/usr/bin/env ruby | ||
# encoding: utf-8 | ||
# require 'simplecov' | ||
# SimpleCov.start | ||
|
||
RSpec.configure do |config| | ||
config.mock_with :flexmock | ||
config.expect_with :rspec do |c| | ||
c.syntax = [:should, :expect] | ||
end | ||
end | ||
|
||
BreakIntoPry = false | ||
begin | ||
require 'pry' | ||
rescue LoadError | ||
# ignore error for Travis-CI | ||
end | ||
$LOAD_PATH << File.join(File.dirname(File.dirname(__FILE__)), 'lib') | ||
|
||
require 'fileutils' | ||
require 'watir-webdriver' | ||
require 'pp' | ||
|
||
AdminPassword = ENV['SANDOZ_ADMIN_PASSWD'] | ||
AdminUser = 'admin@sandoz.ch' | ||
XmlConvUrl = 'http://sandoz.xmlconv.bbmb.ngiger.ch/' | ||
BbmbUrl = 'http://sandoz.bbmb.ngiger.ch/' | ||
|
||
Flavor = 'sbsm' | ||
ImageDest = File.join(Dir.pwd, 'images') | ||
Browser2test = [ :chrome ] | ||
DownloadDir = File.expand_path(File.join(File.dirname(__FILE__), '..', 'downloads')) | ||
GlobAllDownloads = File.join(DownloadDir, '*') | ||
LeeresResult = /hat ein leeres Resultat/ | ||
|
||
def setup_browser | ||
return if @browser | ||
FileUtils.makedirs(DownloadDir) | ||
if Browser2test[0].to_s.eql?('firefox') | ||
puts "Setting upd default profile for firefox" | ||
profile = Selenium::WebDriver::Firefox::Profile.new | ||
profile['browser.download.dir'] = DownloadDir | ||
profile['browser.download.folderList'] = 2 | ||
profile['browser.helperApps.alwaysAsk.force'] = false | ||
profile['browser.helperApps.neverAsk.saveToDisk'] = "application/zip;application/octet-stream;application/x-zip;application/x-zip-compressed;text/csv;test/semicolon-separated-values" | ||
|
||
@browser = Watir::Browser.new :firefox, :profile => profile | ||
elsif Browser2test[0].to_s.eql?('chrome') | ||
puts "Setting up a default profile for chrome" | ||
prefs = { | ||
:download => { | ||
:prompt_for_download => false, | ||
:default_directory => DownloadDir | ||
} | ||
} | ||
@browser = Watir::Browser.new :chrome, :prefs => prefs | ||
elsif Browser2test[0].to_s.eql?('ie') | ||
puts "Trying unknown browser type Internet Explorer" | ||
@browser = Watir::Browser.new :ie | ||
else | ||
puts "Trying unknown browser type #{Browser2test[0]}" | ||
@browser = Watir::Browser.new Browser2test[0] | ||
end | ||
end | ||
|
||
def login(user = ViewerUser, password=ViewerPassword, remember_me=false) | ||
setup_browser | ||
@browser.goto BbmbUrl | ||
sleep 0.5 | ||
@browser.text_field(:name, 'email').when_present.set(user) | ||
@browser.text_field(:name, 'pass').when_present.set(password) | ||
@browser.button(:name,"login").click | ||
sleep 1 unless @browser.button(:name,"logout").exists? | ||
if @browser.button(:name,"login").exists? | ||
@browser.goto(BbmbUrl) | ||
return false | ||
else | ||
return true | ||
end | ||
end | ||
|
||
def get_session_timestamp | ||
@@timestamp ||= Time.now.strftime('%Y%m%d_%H%M%S') | ||
end | ||
|
||
def logout | ||
setup_browser | ||
@browser.goto BbmbUrl | ||
sleep(0.1) unless @browser.link(:name=>'logout').exists? | ||
logout_btn = @browser.link(:name=>'logout') | ||
return unless logout_btn.exists? | ||
logout_btn.click | ||
end | ||
|
||
def waitForBbmbToBeReady(browser = nil, url = BbmbUrl, maxWait = 30) | ||
setup_browser | ||
startTime = Time.now | ||
@seconds = -1 | ||
0.upto(maxWait).each{ | ||
|idx| | ||
@browser.goto BbmbUrl; small_delay | ||
unless /Es tut uns leid/.match(@browser.text) | ||
@seconds = idx | ||
break | ||
end | ||
if idx == 0 | ||
$stdout.write "Waiting max #{maxWait} seconds for #{url} to be ready"; $stdout.flush | ||
else | ||
$stdout.write('.'); $stdout.flush | ||
end | ||
sleep 1 | ||
} | ||
endTime = Time.now | ||
sleep(0.2) | ||
@browser.link(:text=>'Plus').click if @browser.link(:text=>'Plus').exists? | ||
puts "Took #{(endTime - startTime).round} seconds for for #{BbmbUrl} to be ready. First answer was after #{@seconds} seconds." if (endTime - startTime).round > 2 | ||
end | ||
|
||
def small_delay | ||
sleep(0.1) | ||
end | ||
|
||
def createScreenshot(browser, added=nil) | ||
small_delay | ||
if browser.url.index('?') | ||
name = File.join(ImageDest, File.basename(browser.url.split('?')[0]).gsub(/\W/, '_')) | ||
else | ||
name = File.join(ImageDest, browser.url.split('/')[-1].gsub(/\W/, '_')) | ||
end | ||
name = "#{name}#{added}.png" | ||
browser.screenshot.save (name) | ||
puts "createScreenshot: #{name} done" if $VERBOSE | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.