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