require "spec_helper"
require "rexml/document"
require "webmock/rspec"
describe Oddb2xml::Builder do
include REXML
raise "Cannot rspec in directroy containing a spac" if / /.match?(Oddb2xml::SpecData)
include ServerMockHelper
def check_artikelstamm_xml(key, expected_value)
expect(@artikelstamm_name).not_to be nil
expect(@inhalt).not_to be nil
unless @inhalt.index(expected_value)
puts expected_value
# binding.pry # TODO: Must not be active in production!!
end
expect(@inhalt.index(expected_value)).not_to be nil
end
def common_run_init(options = {})
@saved_dir = Dir.pwd
@oddb2xml_xsd = File.expand_path(File.join(File.dirname(__FILE__), "..", "oddb2xml.xsd"))
@oddb_calc_xsd = File.expand_path(File.join(File.dirname(__FILE__), "..", "oddb_calc.xsd"))
@elexis_v5_xsd = File.expand_path(File.join(__FILE__, "..", "..", "Elexis_Artikelstamm_v5.xsd"))
@elexis_v5_csv = File.join(Oddb2xml::WORK_DIR, "artikelstamm_#{Date.today.strftime("%d%m%Y")}_v5.csv")
expect(File.exist?(@oddb2xml_xsd)).to eq true
expect(File.exist?(@oddb_calc_xsd)).to eq true
expect(File.exist?(@elexis_v5_xsd)).to eq true
cleanup_directories_before_run
FileUtils.makedirs(Oddb2xml::WORK_DIR)
Dir.chdir(Oddb2xml::WORK_DIR)
mock_downloads
end
after(:all) do
Dir.chdir @saved_dir if @saved_dir && File.directory?(@saved_dir)
end
context "when artikelstamm option is given" do
before(:all) do
common_run_init
options = Oddb2xml::Options.parse(["--artikelstamm"]) # , '--log'])
# @res = buildr_capture(:stdout){ Oddb2xml::Cli.new(options).run }
Oddb2xml::Cli.new(options).run # to debug
@artikelstamm_name = File.join(Oddb2xml::WORK_DIR, "artikelstamm_#{Date.today.strftime("%d%m%Y")}_v5.xml")
@doc = Nokogiri::XML(File.open(@artikelstamm_name))
# @rexml = REXML::Document.new File.read(@artikelstamm_name)
@inhalt = IO.read(@artikelstamm_name)
end
it "should exist" do
expect(File.exist?(@artikelstamm_name)).to eq true
end
it "should create transfer.ut8" do
expect(File.exist?(File.join(Oddb2xml::DOWNLOADS, "transfer.utf8"))).to eq true
end
it "should have a comment" do
expect(@inhalt).to match(/
A
Ceres Urtinkturen gemäss L2 mit -- im Kommentar
),
"Chapter 70 item" => %(-
2500000588532
2069639
A
EINF ARZNEI Ceres Urtinktur spez 20ml
23.44
31.30
true
2069639
),
"HTML-encoded limitation" => %(Zur Erhaltungstherapie (Monotherapie) bei erwachsenen Patientinnen mit rezidiviertem, fortgeschrittenem Ovarialkarzinom mit BRCA Mutation im Anschluss an eine platinhaltige Chemotherapie bei Vorliegen einer kompletten oder partiellen Remission.
Der behandelnde Arzt ist verpflichtet, die erforderlichen Daten laufend im vorgegebenen Internettool des Registers, abrufbar auf http://www.olaparib-registry.ch, zu erfassen. Eine schriftliche Einwilligung der Patientin muss vorliegen. Es sind folgende Daten zu erfassen:
1\) Geburtsjahr, sowie Vortherapien für das OC
2\) Datum Therapiestart, Dosierung, Dosisanpassungen, Datum Therapieende.
),
"No A+" => %(
1336901
A
Pethidin HCl Amino 100 mg/2 ml, Injektionslösung
N02AB02
)}
tests.each do |key, expected|
it "should a valid entry for #{key}" do
check_artikelstamm_xml(key, expected)
end
end
end
context "chapter 70 hack" do
before(:all) do
mock_downloads
end
it "parsing" do
require "oddb2xml/chapter_70_hack"
result = Oddb2xml::Chapter70xtractor.parse
expect(result.class).to eq Array
expect(result.first).to eq ["2069562", "70.01.10", "Urtinktur", "1--10 g/ml", "13.40", ""]
expect(result.last).to eq ["6516727", "70.02", "Allergenorum extractum varium / Inj. Susp. \n\tFortsetzungsbehandlung", "1 Durchstfl 1.5 ml", "311.85", "L"]
end
end
end