Class: ODDB::FiParse::TestPatinfoHpricot

Inherits:
Test::Unit::TestCase
  • Object
show all
Defined in:
ext/fiparse/test/test_patinfo_hpricot.rb

Instance Method Summary (collapse)

Instance Method Details

- (Object) setup



15
16
17
# File 'ext/fiparse/test/test_patinfo_hpricot.rb', line 15

def setup
  @writer = PatinfoHpricot.new
end

- (Object) test_chapter



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'ext/fiparse/test/test_patinfo_hpricot.rb', line 18

def test_chapter
  html = "<div class=\"paragraph\">\n<h2><a name=\"7840\">Was ist in Cimifemin enthalten?</a></h2>\n<p class=\"spacing\"><span style=\"font-style: italic;\">1 Tablette</span>\nenth\303\244lt: 0,018-0,026 ml Fl\303\274ssigextrakt aus Cimicifugawurzelstock\n(Traubensilberkerze), (DEV: 0,78-1,14:1), Auszugsmittel Isopropanol 40%\n(V/V).</p>\n<p class=\"noSpacing\">Dieses Pr\303\244parat enth\303\244lt zus\303\244tzlich Hilfsstoffe.</p>\n</div>\n"
  code, chapter = @writer.chapter(Hpricot(html).at("div.paragraph"))
  assert_equal('7840', code)
  assert_instance_of(ODDB::Text::Chapter, chapter )
  assert_equal('Was ist in Cimifemin enthalten?', chapter.heading)
  assert_equal(1, chapter.sections.size)
  section = chapter.sections.first
  assert_equal("", section.subheading)
  assert_equal(2, section.paragraphs.size)
  paragraph = section.paragraphs.at(0)
  expected =  "1 Tablette enthält: 0,018-0,026 ml Flüssigextrakt aus "
  expected << "Cimicifugawurzelstock (Traubensilberkerze), "
  expected << "(DEV: 0,78-1,14:1), Auszugsmittel Isopropanol 40% (V/V)."
  assert_equal(2, paragraph.formats.size)
  fmt = paragraph.formats.first
  assert_equal([:italic], fmt.values)
  assert_equal(0..9, fmt.range)
  fmt = paragraph.formats.last
  assert_equal([], fmt.values)
  assert_equal(10..-1, fmt.range)
  assert_equal(expected, paragraph.text)
  paragraph = section.paragraphs.at(1)
  expected =  "Dieses Präparat enthält zusätzlich Hilfsstoffe."
  assert_equal(expected, paragraph.text)
end

- (Object) test_chapter__with_sections



54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'ext/fiparse/test/test_patinfo_hpricot.rb', line 54

def test_chapter__with_sections
  html = "<div class=\"paragraph\">\n<h2><a name=\"7740\">Wie verwenden Sie Ponstan?</a></h2>\n<p class=\"noSpacing\">Halten Sie sich generell an die von Ihrem Arzt bzw. Ihrer \303\204rztin verordneten Richtlinien. Die \303\274bliche Dosierung betr\303\244gt:</p>\n<h3><span style=\"font-style:italic\">F\303\274r Erwachsene und Jugendliche \303\274ber 14 Jahre</span></h3>\n<p class=\"spacing1\">T\303\244glich 3 mal 1 Filmtablette bzw. 3 mal 2 Kapseln Ponstan w\303\244hrend der Mahlzeiten. Je nach Bedarf kann diese Dosis vermindert oder erh\303\266ht werden, jedoch sollten Sie am selben Tag nicht mehr als 4 Filmtabletten oder 8 Kapseln einnehmen. Die \303\274bliche Dosierung f\303\274r Z\303\244pfchen betr\303\244gt 3mal t\303\244glich 1 Z\303\244pfchen Ponstan zu 500 mg.</p>\n<p class=\"spacing1\">Ponstan Z\303\244pfchen sollten Sie nicht mehr als 7 Tage hintereinander anwenden, da es bei l\303\244ngerer Anwendung zu lokalen Reizerscheinungen kommen kann.</p>\n<p class=\"spacing1\">F\303\274r Kinder im Alter von 6 Monaten bis 14 Jahren wird Ihr Arzt bzw. Ihre \303\204rztin die Dosis dem Alter entsprechend anpassen. Bei Einnahme von Suspension oder Kapseln gibt man im allgemeinen als Einzeldosis 6,5 mg pro kg K\303\266rpergewicht. Bei Verwendung von Z\303\244pfchen werden 12 mg pro kg K\303\266rpergewicht verabreicht. Kinder sollten Ponstan nur kurzfristig erhalten, es sei denn zur Behandlung der Still'schen Krankheit.</p>\n<p class=\"spacing1\">\303\204ndern Sie nicht von sich aus die verschriebene Dosierung. Wenn Sie glauben, das Arzneimittel wirke zu schwach oder zu stark, so sprechen Sie mit Ihrem Arzt oder Apotheker bzw. mit Ihrer \303\204rztin oder Apothekerin.</p>\n<h3><span style=\"font-style:italic; \">Dosierungsschema f\303\274r Kinder</span></h3>\n<table cellSpacing=\"0\" cellPadding=\"0\" border=\"0\">\n<thead>\n<tr>\n<th>Alter\\302\\240\\302\\240\\302\\240\\302\\240Suspension\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240Kapseln\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240Z\303\244pfchen\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240</th>\n</tr>\n<tr>\n<th>in\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240zu\\302\\24010\\302\\240mg/ml\\302\\240\\302\\240\\302\\240\\302\\240zu\\302\\240250\\302\\240mg\\302\\240\\302\\240\\302\\240125\\302\\240bzw.\\302\\240500\\302\\240mg\\302\\240</th>\n</tr>\n<tr>\n<th class=\"rowSepBelow\">Jahren\\302\\240\\302\\240\\302\\240pro\\302\\240Tag\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240pro\\302\\240Tag\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240pro\\302\\240Tag\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>\302\275\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\2405\\302\\240ml\\302\\240\\302\\240\\302\\2403\303\227\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240-\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\2401\\302\\240Supp.\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240</td>\n</tr>\n<tr>\n<td class=\"rowSepBelow\">\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240125\\302\\240mg\\302\\2402-3\303\227\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240</td>\n</tr>\n<tr>\n<td>1-3\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\2407,5\\302\\240ml\\302\\2403\303\227\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240-\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\2401\\302\\240Supp.\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240</td>\n</tr>\n<tr>\n<td class=\"rowSepBelow\">\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240125\\302\\240mg\\302\\2403\303\227\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240</td>\n</tr>\n<tr>\n<td>3-6\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\24010\\302\\240ml\\302\\240\\302\\2403\303\227\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240-\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\2401\\302\\240Supp.\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240</td>\n</tr>\n<tr>\n<td class=\"rowSepBelow\">\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240125\\302\\240mg\\302\\2404\303\227\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240</td>\n</tr>\n<tr>\n<td>6-9\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\24015\\302\\240ml\\302\\240\\302\\2403\303\227\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240-\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\2401\\302\\240Supp.\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240</td>\n</tr>\n<tr>\n<td class=\"rowSepBelow\">\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240500\\302\\240mg\\302\\2401-2\303\227\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240</td>\n</tr>\n<tr>\n<td>9-12\\302\\240\\302\\240\\302\\240\\302\\240\\302\\24020\\302\\240ml\\302\\240\\302\\2403\303\227\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\2401\\302\\240Kps\\302\\2402-3\303\227\\302\\240\\302\\2401\\302\\240Supp.\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240</td>\n</tr>\n<tr>\n<td class=\"rowSepBelow\">\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240500\\302\\240mg\\302\\2402\303\227\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240</td>\n</tr>\n<tr>\n<td>12-14\\302\\240\\302\\240\\302\\240\\302\\24025\\302\\240ml\\302\\240\\302\\2403\303\227\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\2401\\302\\240Kps\\302\\2403\303\227\\302\\240\\302\\240\\302\\240\\302\\2401\\302\\240Supp.\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240</td>\n</tr>\n<tr>\n<td>\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240500\\302\\240mg\\302\\2403\303\227\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240\\302\\240</td>\n</tr>\n</tbody>\n</table>\n</div>\n"
  code, chapter = @writer.chapter(Hpricot(html).at("div.paragraph"))
  assert_equal('7740', code)
  assert_instance_of(ODDB::Text::Chapter, chapter )
  assert_equal('Wie verwenden Sie Ponstan?', chapter.heading)
  assert_equal(3, chapter.sections.size)
  section = chapter.sections.at(0)
  assert_equal("", section.subheading)
  assert_equal(1, section.paragraphs.size)
  paragraph = section.paragraphs.at(0)
  expected =  "Halten Sie sich generell an die von Ihrem Arzt bzw. Ihrer "
  expected << "Ärztin verordneten Richtlinien. Die übliche Dosierung beträgt:"
  assert_equal(expected, paragraph.text)
  section = chapter.sections.at(1)
  assert_equal("Für Erwachsene und Jugendliche über 14 Jahre\n", 
               section.subheading)
  assert_equal(4, section.paragraphs.size)
  paragraph = section.paragraphs.at(0)
  expected =  "Täglich 3 mal 1 Filmtablette bzw. 3 mal 2 Kapseln Ponstan "
  expected << "während der Mahlzeiten. Je nach Bedarf kann diese Dosis "
  expected << "vermindert oder erhöht werden, jedoch sollten Sie am selben "
  expected << "Tag nicht mehr als 4 Filmtabletten oder 8 Kapseln einnehmen. "
  expected << "Die übliche Dosierung für Zäpfchen beträgt 3mal täglich 1 "
  expected << "Zäpfchen Ponstan zu 500 mg."
  assert_equal(expected, paragraph.text)
  section = chapter.sections.at(2)
  assert_equal(1, section.paragraphs.size)
  paragraph = section.paragraphs.at(0)
  expected = "Alter    Suspension     Kapseln     Z\\303\\244pfchen\nin       zu 10 mg/ml    zu 250 mg   125 bzw. 500 mg\nJahren   pro Tag        pro Tag     pro Tag\n-----------------------------------------------------\n\\302\\275        5 ml   3\\303\\227      -           1 Supp.\n125 mg 2-3\\303\\227\n-----------------------------------------------------\n1-3      7,5 ml 3\\303\\227      -           1 Supp.\n125 mg 3\\303\\227\n-----------------------------------------------------\n3-6      10 ml  3\\303\\227      -           1 Supp.\n125 mg 4\\303\\227\n-----------------------------------------------------\n6-9      15 ml  3\\303\\227      -           1 Supp.\n500 mg 1-2\\303\\227\n-----------------------------------------------------\n9-12     20 ml  3\\303\\227      1 Kps 2-3\\303\\227  1 Supp.\n500 mg 2\\303\\227\n-----------------------------------------------------\n12-14    25 ml  3\\303\\227      1 Kps 3\\303\\227    1 Supp.\n500 mg 3\\303\\227\n\n"
  assert_equal(expected.chomp, paragraph.text)
  assert_equal(true, paragraph.preformatted?)
end

- (Object) test_identify_chapter__raises_unknown_chaptercode



174
175
176
177
178
# File 'ext/fiparse/test/test_patinfo_hpricot.rb', line 174

def test_identify_chapter__raises_unknown_chaptercode
  assert_raises(RuntimeError) { 
    @writer.identify_chapter('7800', nil)
  }
end