de.oddb 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (431) hide show
  1. data/Guide.txt +3 -0
  2. data/History.txt +5 -0
  3. data/LICENCE.txt +339 -0
  4. data/Manifest.txt +430 -0
  5. data/README +423 -0
  6. data/README.txt +25 -0
  7. data/Rakefile +28 -0
  8. data/bin/admin +71 -0
  9. data/bin/exportd +44 -0
  10. data/bin/oddbd +33 -0
  11. data/data/fulltext/data/dicts/french/fulltext.aff +1057 -0
  12. data/data/fulltext/data/dicts/french/fulltext.dict +91189 -0
  13. data/data/fulltext/data/dicts/french/fulltext.stop +135 -0
  14. data/data/fulltext/data/dicts/german/fulltext.aff +1233 -0
  15. data/data/fulltext/data/dicts/german/fulltext.dict +287574 -0
  16. data/data/fulltext/data/dicts/german/fulltext.stop +133 -0
  17. data/data/fulltext/data/german_compound/README +15 -0
  18. data/data/fulltext/data/german_compound/compound.pl +63 -0
  19. data/data/fulltext/data/german_compound/german.stop +20 -0
  20. data/data/fulltext/data/ispell-german-compound.tar.gz +0 -0
  21. data/data/fulltext/redist/dict_french/Makefile +12 -0
  22. data/data/fulltext/redist/dict_french/README.french +1 -0
  23. data/data/fulltext/redist/dict_french/dict_french.sql.in +7 -0
  24. data/data/fulltext/redist/dict_french/dict_snowball.c +56 -0
  25. data/data/fulltext/redist/dict_french/french_stem.c +1222 -0
  26. data/data/fulltext/redist/dict_french/french_stem.h +16 -0
  27. data/data/fulltext/redist/dict_french/subinclude.h +2 -0
  28. data/data/fulltext/redist/dict_german/Makefile +12 -0
  29. data/data/fulltext/redist/dict_german/README.german +1 -0
  30. data/data/fulltext/redist/dict_german/dict_german.sql.in +7 -0
  31. data/data/fulltext/redist/dict_german/dict_snowball.c +56 -0
  32. data/data/fulltext/redist/dict_german/german_stem.c +527 -0
  33. data/data/fulltext/redist/dict_german/german_stem.h +16 -0
  34. data/data/fulltext/redist/dict_german/subinclude.h +1 -0
  35. data/data/fulltext/redist/french_stem.c +1222 -0
  36. data/data/fulltext/redist/french_stem.h +16 -0
  37. data/data/fulltext/redist/german_stem.c +527 -0
  38. data/data/fulltext/redist/german_stem.h +16 -0
  39. data/jobs/export_chde_xls +20 -0
  40. data/jobs/export_csv +20 -0
  41. data/jobs/export_fachinfo_yaml +20 -0
  42. data/jobs/export_patinfo_yaml +20 -0
  43. data/jobs/export_yaml +20 -0
  44. data/jobs/import_dimdi +15 -0
  45. data/jobs/import_gkv +19 -0
  46. data/jobs/import_pharma24 +15 -0
  47. data/jobs/import_pharmnet +30 -0
  48. data/jobs/import_whocc +18 -0
  49. data/lib/fixes/singular.rb +9 -0
  50. data/lib/fixes/yaml.rb +13 -0
  51. data/lib/oddb.rb +13 -0
  52. data/lib/oddb/business/company.rb +18 -0
  53. data/lib/oddb/business/grant_download.rb +27 -0
  54. data/lib/oddb/business/invoice.rb +75 -0
  55. data/lib/oddb/config.rb +112 -0
  56. data/lib/oddb/currency.rb +6 -0
  57. data/lib/oddb/drugs.rb +16 -0
  58. data/lib/oddb/drugs/active_agent.rb +37 -0
  59. data/lib/oddb/drugs/atc.rb +53 -0
  60. data/lib/oddb/drugs/composition.rb +41 -0
  61. data/lib/oddb/drugs/ddd.rb +24 -0
  62. data/lib/oddb/drugs/dose.rb +107 -0
  63. data/lib/oddb/drugs/galenic_form.rb +21 -0
  64. data/lib/oddb/drugs/galenic_group.rb +17 -0
  65. data/lib/oddb/drugs/package.rb +111 -0
  66. data/lib/oddb/drugs/part.rb +55 -0
  67. data/lib/oddb/drugs/product.rb +25 -0
  68. data/lib/oddb/drugs/sequence.rb +68 -0
  69. data/lib/oddb/drugs/substance.rb +31 -0
  70. data/lib/oddb/drugs/substance_group.rb +13 -0
  71. data/lib/oddb/drugs/unit.rb +12 -0
  72. data/lib/oddb/export.rb +4 -0
  73. data/lib/oddb/export/csv.rb +94 -0
  74. data/lib/oddb/export/l10n_sessions.rb +30 -0
  75. data/lib/oddb/export/rss.rb +44 -0
  76. data/lib/oddb/export/server.rb +137 -0
  77. data/lib/oddb/export/xls.rb +127 -0
  78. data/lib/oddb/export/yaml.rb +212 -0
  79. data/lib/oddb/html/state/download.rb +13 -0
  80. data/lib/oddb/html/state/drugs/admin/package.rb +190 -0
  81. data/lib/oddb/html/state/drugs/admin/product.rb +56 -0
  82. data/lib/oddb/html/state/drugs/admin/sequence.rb +253 -0
  83. data/lib/oddb/html/state/drugs/ajax/explain_ddd_price.rb +19 -0
  84. data/lib/oddb/html/state/drugs/ajax/explain_price.rb +19 -0
  85. data/lib/oddb/html/state/drugs/ajax/global.rb +18 -0
  86. data/lib/oddb/html/state/drugs/ajax/package_infos.rb +19 -0
  87. data/lib/oddb/html/state/drugs/ajax/remote_infos.rb +19 -0
  88. data/lib/oddb/html/state/drugs/atc_browser.rb +39 -0
  89. data/lib/oddb/html/state/drugs/atc_guidelines.rb +21 -0
  90. data/lib/oddb/html/state/drugs/compare.rb +52 -0
  91. data/lib/oddb/html/state/drugs/download_export.rb +18 -0
  92. data/lib/oddb/html/state/drugs/downloads.rb +42 -0
  93. data/lib/oddb/html/state/drugs/fachinfo.rb +21 -0
  94. data/lib/oddb/html/state/drugs/feedback.rb +91 -0
  95. data/lib/oddb/html/state/drugs/global.rb +270 -0
  96. data/lib/oddb/html/state/drugs/init.rb +18 -0
  97. data/lib/oddb/html/state/drugs/login.rb +17 -0
  98. data/lib/oddb/html/state/drugs/package.rb +32 -0
  99. data/lib/oddb/html/state/drugs/patinfo.rb +21 -0
  100. data/lib/oddb/html/state/drugs/products.rb +51 -0
  101. data/lib/oddb/html/state/drugs/result.rb +125 -0
  102. data/lib/oddb/html/state/global.rb +206 -0
  103. data/lib/oddb/html/state/global_predefine.rb +17 -0
  104. data/lib/oddb/html/state/limit.rb +17 -0
  105. data/lib/oddb/html/state/login.rb +56 -0
  106. data/lib/oddb/html/state/paypal/checkout.rb +97 -0
  107. data/lib/oddb/html/state/paypal/collect.rb +19 -0
  108. data/lib/oddb/html/state/paypal/download.rb +61 -0
  109. data/lib/oddb/html/state/paypal/redirect.rb +18 -0
  110. data/lib/oddb/html/state/register_download.rb +24 -0
  111. data/lib/oddb/html/state/register_export.rb +38 -0
  112. data/lib/oddb/html/state/register_poweruser.rb +17 -0
  113. data/lib/oddb/html/state/viral/admin.rb +79 -0
  114. data/lib/oddb/html/state/viral/poweruser.rb +16 -0
  115. data/lib/oddb/html/util/annotated_list.rb +39 -0
  116. data/lib/oddb/html/util/know_it_all.rb +28 -0
  117. data/lib/oddb/html/util/known_user.rb +55 -0
  118. data/lib/oddb/html/util/lookandfeel.rb +698 -0
  119. data/lib/oddb/html/util/need_all_input.rb +29 -0
  120. data/lib/oddb/html/util/session.rb +84 -0
  121. data/lib/oddb/html/util/sort.rb +72 -0
  122. data/lib/oddb/html/util/unsaved_helper.rb +20 -0
  123. data/lib/oddb/html/util/validator.rb +59 -0
  124. data/lib/oddb/html/view/ajax/json.rb +22 -0
  125. data/lib/oddb/html/view/alpha_header.rb +28 -0
  126. data/lib/oddb/html/view/document.rb +117 -0
  127. data/lib/oddb/html/view/download.rb +33 -0
  128. data/lib/oddb/html/view/drugs/admin/package.rb +245 -0
  129. data/lib/oddb/html/view/drugs/admin/product.rb +104 -0
  130. data/lib/oddb/html/view/drugs/admin/sequence.rb +305 -0
  131. data/lib/oddb/html/view/drugs/ajax/explain_ddd_price.rb +87 -0
  132. data/lib/oddb/html/view/drugs/ajax/explain_price.rb +61 -0
  133. data/lib/oddb/html/view/drugs/ajax/package_infos.rb +105 -0
  134. data/lib/oddb/html/view/drugs/ajax/remote_infos.rb +44 -0
  135. data/lib/oddb/html/view/drugs/atc_browser.rb +68 -0
  136. data/lib/oddb/html/view/drugs/atc_guidelines.rb +94 -0
  137. data/lib/oddb/html/view/drugs/compare.rb +95 -0
  138. data/lib/oddb/html/view/drugs/download_export.rb +28 -0
  139. data/lib/oddb/html/view/drugs/downloads.rb +128 -0
  140. data/lib/oddb/html/view/drugs/fachinfo.rb +46 -0
  141. data/lib/oddb/html/view/drugs/feedback.rb +235 -0
  142. data/lib/oddb/html/view/drugs/init.rb +51 -0
  143. data/lib/oddb/html/view/drugs/legend.rb +24 -0
  144. data/lib/oddb/html/view/drugs/package.rb +403 -0
  145. data/lib/oddb/html/view/drugs/patinfo.rb +46 -0
  146. data/lib/oddb/html/view/drugs/products.rb +97 -0
  147. data/lib/oddb/html/view/drugs/result.rb +296 -0
  148. data/lib/oddb/html/view/drugs/search.rb +33 -0
  149. data/lib/oddb/html/view/drugs/template.rb +15 -0
  150. data/lib/oddb/html/view/foot.rb +52 -0
  151. data/lib/oddb/html/view/google.rb +23 -0
  152. data/lib/oddb/html/view/google_ads.rb +40 -0
  153. data/lib/oddb/html/view/head.rb +78 -0
  154. data/lib/oddb/html/view/limit.rb +109 -0
  155. data/lib/oddb/html/view/list.rb +59 -0
  156. data/lib/oddb/html/view/login.rb +38 -0
  157. data/lib/oddb/html/view/navigation.rb +67 -0
  158. data/lib/oddb/html/view/offset_header.rb +35 -0
  159. data/lib/oddb/html/view/paypal/collect.rb +95 -0
  160. data/lib/oddb/html/view/paypal/redirect.rb +51 -0
  161. data/lib/oddb/html/view/paypal/register_form.rb +149 -0
  162. data/lib/oddb/html/view/register_download.rb +29 -0
  163. data/lib/oddb/html/view/register_export.rb +29 -0
  164. data/lib/oddb/html/view/register_poweruser.rb +29 -0
  165. data/lib/oddb/html/view/rss/feedback.rb +64 -0
  166. data/lib/oddb/html/view/rss_preview.rb +61 -0
  167. data/lib/oddb/html/view/search.rb +104 -0
  168. data/lib/oddb/html/view/snapback.rb +24 -0
  169. data/lib/oddb/html/view/template.rb +56 -0
  170. data/lib/oddb/import/dimdi.rb +583 -0
  171. data/lib/oddb/import/excel.rb +45 -0
  172. data/lib/oddb/import/gkv.rb +463 -0
  173. data/lib/oddb/import/importer.rb +36 -0
  174. data/lib/oddb/import/pharma24.rb +211 -0
  175. data/lib/oddb/import/pharmnet.rb +1186 -0
  176. data/lib/oddb/import/rtf.rb +409 -0
  177. data/lib/oddb/import/whocc.rb +148 -0
  178. data/lib/oddb/import/xml.rb +15 -0
  179. data/lib/oddb/model.rb +179 -0
  180. data/lib/oddb/persistence.rb +22 -0
  181. data/lib/oddb/persistence/odba.rb +32 -0
  182. data/lib/oddb/persistence/odba/business/company.rb +13 -0
  183. data/lib/oddb/persistence/odba/business/grant_download.rb +14 -0
  184. data/lib/oddb/persistence/odba/business/invoice.rb +15 -0
  185. data/lib/oddb/persistence/odba/drugs/atc.rb +15 -0
  186. data/lib/oddb/persistence/odba/drugs/galenic_form.rb +18 -0
  187. data/lib/oddb/persistence/odba/drugs/galenic_group.rb +13 -0
  188. data/lib/oddb/persistence/odba/drugs/package.rb +25 -0
  189. data/lib/oddb/persistence/odba/drugs/product.rb +13 -0
  190. data/lib/oddb/persistence/odba/drugs/sequence.rb +21 -0
  191. data/lib/oddb/persistence/odba/drugs/substance.rb +21 -0
  192. data/lib/oddb/persistence/odba/drugs/substance_group.rb +13 -0
  193. data/lib/oddb/persistence/odba/drugs/unit.rb +13 -0
  194. data/lib/oddb/persistence/odba/export.rb +26 -0
  195. data/lib/oddb/persistence/odba/model.rb +68 -0
  196. data/lib/oddb/persistence/odba/text/document.rb +11 -0
  197. data/lib/oddb/persistence/odba/util/code.rb +11 -0
  198. data/lib/oddb/persistence/odba/util/m10l_document.rb +13 -0
  199. data/lib/oddb/persistence/og.rb +16 -0
  200. data/lib/oddb/persistence/og/drugs/composition.rb +14 -0
  201. data/lib/oddb/persistence/og/drugs/product.rb +14 -0
  202. data/lib/oddb/persistence/og/drugs/sequence.rb +15 -0
  203. data/lib/oddb/persistence/og/model.rb +25 -0
  204. data/lib/oddb/persistence/og/util/multilingual.rb +13 -0
  205. data/lib/oddb/redist/rtf_tools/reader.rb +139 -0
  206. data/lib/oddb/remote/business/company.rb +17 -0
  207. data/lib/oddb/remote/drugs/active_agent.rb +27 -0
  208. data/lib/oddb/remote/drugs/atc.rb +31 -0
  209. data/lib/oddb/remote/drugs/dose.rb +8 -0
  210. data/lib/oddb/remote/drugs/galenic_form.rb +24 -0
  211. data/lib/oddb/remote/drugs/package.rb +128 -0
  212. data/lib/oddb/remote/drugs/part.rb +30 -0
  213. data/lib/oddb/remote/drugs/substance.rb +20 -0
  214. data/lib/oddb/remote/drugs/unit.rb +20 -0
  215. data/lib/oddb/remote/object.rb +36 -0
  216. data/lib/oddb/text/chapter.rb +23 -0
  217. data/lib/oddb/text/document.rb +42 -0
  218. data/lib/oddb/text/format.rb +37 -0
  219. data/lib/oddb/text/paragraph.rb +53 -0
  220. data/lib/oddb/text/picture.rb +89 -0
  221. data/lib/oddb/text/table.rb +68 -0
  222. data/lib/oddb/util.rb +9 -0
  223. data/lib/oddb/util/annotated_list.rb +37 -0
  224. data/lib/oddb/util/code.rb +69 -0
  225. data/lib/oddb/util/comparison.rb +36 -0
  226. data/lib/oddb/util/download.rb +17 -0
  227. data/lib/oddb/util/exporter.rb +8 -0
  228. data/lib/oddb/util/feedback.rb +23 -0
  229. data/lib/oddb/util/ipn.rb +53 -0
  230. data/lib/oddb/util/job.rb +23 -0
  231. data/lib/oddb/util/logger.rb +20 -0
  232. data/lib/oddb/util/m10l_document.rb +41 -0
  233. data/lib/oddb/util/mail.rb +87 -0
  234. data/lib/oddb/util/money.rb +64 -0
  235. data/lib/oddb/util/multilingual.rb +70 -0
  236. data/lib/oddb/util/quanty.rb +3 -0
  237. data/lib/oddb/util/quanty/fact.rb +242 -0
  238. data/lib/oddb/util/quanty/main.rb +164 -0
  239. data/lib/oddb/util/quanty/parse.rb +872 -0
  240. data/lib/oddb/util/quanty/units.dump +0 -0
  241. data/lib/oddb/util/server.rb +150 -0
  242. data/lib/oddb/util/smtp_tls.rb +58 -0
  243. data/lib/oddb/util/updater.rb +161 -0
  244. data/lib/oddb/util/ydim.rb +110 -0
  245. data/lib/oddb/util/yus.rb +46 -0
  246. data/test/business/test_company.rb +29 -0
  247. data/test/business/test_grant_download.rb +29 -0
  248. data/test/drugs/test_active_agent.rb +53 -0
  249. data/test/drugs/test_atc.rb +54 -0
  250. data/test/drugs/test_composition.rb +88 -0
  251. data/test/drugs/test_ddd.rb +22 -0
  252. data/test/drugs/test_dose.rb +189 -0
  253. data/test/drugs/test_galenic_form.rb +41 -0
  254. data/test/drugs/test_package.rb +172 -0
  255. data/test/drugs/test_part.rb +32 -0
  256. data/test/drugs/test_product.rb +31 -0
  257. data/test/drugs/test_sequence.rb +140 -0
  258. data/test/drugs/test_substance.rb +51 -0
  259. data/test/drugs/test_substance_group.rb +27 -0
  260. data/test/export/test_rss.rb +86 -0
  261. data/test/export/test_server.rb +163 -0
  262. data/test/export/test_xls.rb +146 -0
  263. data/test/export/test_yaml.rb +120 -0
  264. data/test/import/data/csv/products.csv +11 -0
  265. data/test/import/data/html/dimdi_index.html +400 -0
  266. data/test/import/data/html/gkv/Befreiungsliste_Arzneimittel_Versicherte.gkvnet +508 -0
  267. data/test/import/data/html/pharma24/1337397.html +754 -0
  268. data/test/import/data/html/pharma24/842756.html +570 -0
  269. data/test/import/data/html/pharma24/ac-page-10.html +2999 -0
  270. data/test/import/data/html/pharma24/ac-page-11.html +2999 -0
  271. data/test/import/data/html/pharma24/ac-page-12.html +2999 -0
  272. data/test/import/data/html/pharma24/ac-page-13.html +2999 -0
  273. data/test/import/data/html/pharma24/ac-page-14.html +2999 -0
  274. data/test/import/data/html/pharma24/ac-page-15.html +3011 -0
  275. data/test/import/data/html/pharma24/ac-page-16.html +3050 -0
  276. data/test/import/data/html/pharma24/ac-page-17.html +3285 -0
  277. data/test/import/data/html/pharma24/ac-page-18.html +3109 -0
  278. data/test/import/data/html/pharma24/ac-page-19.html +3126 -0
  279. data/test/import/data/html/pharma24/ac-page-2.html +3005 -0
  280. data/test/import/data/html/pharma24/ac-page-20.html +3007 -0
  281. data/test/import/data/html/pharma24/ac-page-21.html +2999 -0
  282. data/test/import/data/html/pharma24/ac-page-22.html +2999 -0
  283. data/test/import/data/html/pharma24/ac-page-23.html +3055 -0
  284. data/test/import/data/html/pharma24/ac-page-24.html +2999 -0
  285. data/test/import/data/html/pharma24/ac-page-25.html +3004 -0
  286. data/test/import/data/html/pharma24/ac-page-26.html +2999 -0
  287. data/test/import/data/html/pharma24/ac-page-27.html +3167 -0
  288. data/test/import/data/html/pharma24/ac-page-28.html +3236 -0
  289. data/test/import/data/html/pharma24/ac-page-29.html +3110 -0
  290. data/test/import/data/html/pharma24/ac-page-3.html +2999 -0
  291. data/test/import/data/html/pharma24/ac-page-30.html +2999 -0
  292. data/test/import/data/html/pharma24/ac-page-31.html +2999 -0
  293. data/test/import/data/html/pharma24/ac-page-32.html +2999 -0
  294. data/test/import/data/html/pharma24/ac-page-33.html +3001 -0
  295. data/test/import/data/html/pharma24/ac-page-34.html +2999 -0
  296. data/test/import/data/html/pharma24/ac-page-35.html +2999 -0
  297. data/test/import/data/html/pharma24/ac-page-36.html +2999 -0
  298. data/test/import/data/html/pharma24/ac-page-37.html +2999 -0
  299. data/test/import/data/html/pharma24/ac-page-38.html +3003 -0
  300. data/test/import/data/html/pharma24/ac-page-39.html +2999 -0
  301. data/test/import/data/html/pharma24/ac-page-4.html +2999 -0
  302. data/test/import/data/html/pharma24/ac-page-40.html +2999 -0
  303. data/test/import/data/html/pharma24/ac-page-41.html +2999 -0
  304. data/test/import/data/html/pharma24/ac-page-42.html +2999 -0
  305. data/test/import/data/html/pharma24/ac-page-43.html +2999 -0
  306. data/test/import/data/html/pharma24/ac-page-44.html +2999 -0
  307. data/test/import/data/html/pharma24/ac-page-45.html +2999 -0
  308. data/test/import/data/html/pharma24/ac-page-46.html +2999 -0
  309. data/test/import/data/html/pharma24/ac-page-47.html +2999 -0
  310. data/test/import/data/html/pharma24/ac-page-48.html +2999 -0
  311. data/test/import/data/html/pharma24/ac-page-49.html +2999 -0
  312. data/test/import/data/html/pharma24/ac-page-5.html +3168 -0
  313. data/test/import/data/html/pharma24/ac-page-50.html +2999 -0
  314. data/test/import/data/html/pharma24/ac-page-51.html +2999 -0
  315. data/test/import/data/html/pharma24/ac-page-52.html +3003 -0
  316. data/test/import/data/html/pharma24/ac-page-53.html +2999 -0
  317. data/test/import/data/html/pharma24/ac-page-54.html +3095 -0
  318. data/test/import/data/html/pharma24/ac-page-55.html +3041 -0
  319. data/test/import/data/html/pharma24/ac-page-56.html +2999 -0
  320. data/test/import/data/html/pharma24/ac-page-57.html +3001 -0
  321. data/test/import/data/html/pharma24/ac-page-58.html +3001 -0
  322. data/test/import/data/html/pharma24/ac-page-59.html +2999 -0
  323. data/test/import/data/html/pharma24/ac-page-6.html +3072 -0
  324. data/test/import/data/html/pharma24/ac-page-60.html +3001 -0
  325. data/test/import/data/html/pharma24/ac-page-61.html +3005 -0
  326. data/test/import/data/html/pharma24/ac-page-62.html +2999 -0
  327. data/test/import/data/html/pharma24/ac-page-63.html +3007 -0
  328. data/test/import/data/html/pharma24/ac-page-64.html +3007 -0
  329. data/test/import/data/html/pharma24/ac-page-65.html +2999 -0
  330. data/test/import/data/html/pharma24/ac-page-66.html +3011 -0
  331. data/test/import/data/html/pharma24/ac-page-67.html +3026 -0
  332. data/test/import/data/html/pharma24/ac-page-68.html +2999 -0
  333. data/test/import/data/html/pharma24/ac-page-69.html +3010 -0
  334. data/test/import/data/html/pharma24/ac-page-7.html +2999 -0
  335. data/test/import/data/html/pharma24/ac-page-70.html +3192 -0
  336. data/test/import/data/html/pharma24/ac-page-71.html +3133 -0
  337. data/test/import/data/html/pharma24/ac-page-72.html +2999 -0
  338. data/test/import/data/html/pharma24/ac-page-73.html +3227 -0
  339. data/test/import/data/html/pharma24/ac-page-74.html +3241 -0
  340. data/test/import/data/html/pharma24/ac-page-75.html +3227 -0
  341. data/test/import/data/html/pharma24/ac-page-76.html +3244 -0
  342. data/test/import/data/html/pharma24/ac-page-77.html +1164 -0
  343. data/test/import/data/html/pharma24/ac-page-8.html +2999 -0
  344. data/test/import/data/html/pharma24/ac-page-9.html +2999 -0
  345. data/test/import/data/html/pharma24/ac.html +2999 -0
  346. data/test/import/data/html/pharmnet/display.html +662 -0
  347. data/test/import/data/html/pharmnet/display1.html +625 -0
  348. data/test/import/data/html/pharmnet/display2.html +625 -0
  349. data/test/import/data/html/pharmnet/display3.html +625 -0
  350. data/test/import/data/html/pharmnet/display_tramal.html +634 -0
  351. data/test/import/data/html/pharmnet/empty_result.html +395 -0
  352. data/test/import/data/html/pharmnet/gate.html +246 -0
  353. data/test/import/data/html/pharmnet/index.html +258 -0
  354. data/test/import/data/html/pharmnet/paged_result_1.html +401 -0
  355. data/test/import/data/html/pharmnet/paged_result_2.html +401 -0
  356. data/test/import/data/html/pharmnet/result.html +401 -0
  357. data/test/import/data/html/pharmnet/search.html +865 -0
  358. data/test/import/data/html/pharmnet/search_filtered.html +182 -0
  359. data/test/import/data/html/whocc/A.html +56 -0
  360. data/test/import/data/html/whocc/A03.html +48 -0
  361. data/test/import/data/html/whocc/A03AB.html +48 -0
  362. data/test/import/data/html/whocc/A06AA.html +47 -0
  363. data/test/import/data/html/whocc/C03.html +47 -0
  364. data/test/import/data/html/whocc/login.html +77 -0
  365. data/test/import/data/mail/csv.mail +81 -0
  366. data/test/import/data/rtf/pharmnet/aarane.pi.rtf +648 -0
  367. data/test/import/data/rtf/pharmnet/ace_hemmer_ratio.pi.rtf +324 -0
  368. data/test/import/data/rtf/pharmnet/ace_hemmer_ratio.rtf +4816 -0
  369. data/test/import/data/rtf/pharmnet/acemetacin.pi.rtf +388 -0
  370. data/test/import/data/rtf/pharmnet/acemit.pi.rtf +240 -0
  371. data/test/import/data/rtf/pharmnet/acerbon.pi.rtf +1257 -0
  372. data/test/import/data/rtf/pharmnet/acetylcystein.pi.rtf +323 -0
  373. data/test/import/data/rtf/pharmnet/aciclo.pi.rtf +287 -0
  374. data/test/import/data/rtf/pharmnet/aciclovir.pi.rtf +236 -0
  375. data/test/import/data/rtf/pharmnet/actrapid.pi.rtf +322 -0
  376. data/test/import/data/rtf/pharmnet/amlodipin.pi.rtf +452 -0
  377. data/test/import/data/rtf/pharmnet/amlodipin.rtf +473 -0
  378. data/test/import/data/rtf/pharmnet/aspirin.pi.rtf +313 -0
  379. data/test/import/data/rtf/pharmnet/aspirin.rtf +781 -0
  380. data/test/import/data/rtf/pharmnet/baymycard.pi.rtf +447 -0
  381. data/test/import/data/rtf/pharmnet/omeprazol.pi.rtf +510 -0
  382. data/test/import/data/rtf/pharmnet/omeprazol.rtf +9216 -0
  383. data/test/import/data/rtf/pharmnet/paroxetin.pi.rtf +678 -0
  384. data/test/import/data/rtf/pharmnet/selegilin.pi.rtf +312 -0
  385. data/test/import/data/rtf/pharmnet/selegilin.rtf +683 -0
  386. data/test/import/data/rtf/pharmnet/valium.pi.rtf +387 -0
  387. data/test/import/data/txt/gkv/gkv_p1.txt +17 -0
  388. data/test/import/data/xls/darform_010706.xls +0 -0
  389. data/test/import/data/xls/fb010706.xls +0 -0
  390. data/test/import/data/xls/liste_zuzahlungsbefreite_arzneimittel_suchfunktion.xls +0 -0
  391. data/test/import/data/xls/wirkkurz_010406.xls +0 -0
  392. data/test/import/data/xml/ATC_2006.xml +47 -0
  393. data/test/import/data/xml/ATC_2006_ddd.xml +35 -0
  394. data/test/import/test_dimdi.rb +323 -0
  395. data/test/import/test_excel.rb +31 -0
  396. data/test/import/test_gkv.rb +260 -0
  397. data/test/import/test_pharma24.rb +112 -0
  398. data/test/import/test_pharmnet.rb +980 -0
  399. data/test/import/test_rtf.rb +37 -0
  400. data/test/import/test_whocc.rb +314 -0
  401. data/test/remote/drugs/test_active_agent.rb +36 -0
  402. data/test/selenium/selenium-server.jar +0 -0
  403. data/test/selenium/test_atc_browser.rb +121 -0
  404. data/test/selenium/test_atc_guidelines.rb +95 -0
  405. data/test/selenium/test_collect.rb +137 -0
  406. data/test/selenium/test_compare.rb +294 -0
  407. data/test/selenium/test_fachinfo.rb +128 -0
  408. data/test/selenium/test_feedback.rb +192 -0
  409. data/test/selenium/test_init.rb +64 -0
  410. data/test/selenium/test_limit.rb +304 -0
  411. data/test/selenium/test_login.rb +67 -0
  412. data/test/selenium/test_package.rb +516 -0
  413. data/test/selenium/test_patinfo.rb +128 -0
  414. data/test/selenium/test_product.rb +80 -0
  415. data/test/selenium/test_products.rb +141 -0
  416. data/test/selenium/test_search.rb +933 -0
  417. data/test/selenium/test_sequence.rb +513 -0
  418. data/test/selenium/unit.rb +190 -0
  419. data/test/stub/http_server.rb +144 -0
  420. data/test/stub/model.rb +173 -0
  421. data/test/suite.rb +15 -0
  422. data/test/test_model.rb +83 -0
  423. data/test/util/test_code.rb +74 -0
  424. data/test/util/test_ipn.rb +117 -0
  425. data/test/util/test_mail.rb +85 -0
  426. data/test/util/test_multilingual.rb +97 -0
  427. data/test/util/test_server.rb +94 -0
  428. data/test/util/test_updater.rb +130 -0
  429. data/test/util/test_ydim.rb +115 -0
  430. data/test/util/test_yus.rb +79 -0
  431. metadata +568 -0
@@ -0,0 +1,37 @@
1
+ #!/usr/bin/env ruby
2
+ # Import::TestRtf -- de.oddb.org -- 16.10.2007 -- hwyss@ywesee.com
3
+
4
+ $: << File.expand_path('../../lib', File.dirname(__FILE__))
5
+
6
+ require 'test/unit'
7
+ require 'oddb/import/rtf'
8
+
9
+ module ODDB
10
+ module Import
11
+ class TestRtf < Test::Unit::TestCase
12
+ def setup
13
+ @importer = Rtf.new
14
+ end
15
+ def test_import__rtf
16
+ path = File.expand_path('data/rtf/pharmnet/selegilin.rtf',
17
+ File.dirname(__FILE__))
18
+ document = nil
19
+ File.open(path) { |fh|
20
+ document = @importer.import(fh)
21
+ }
22
+ assert_instance_of(Text::Document, document)
23
+ assert_equal(1, document.chapters.size)
24
+ assert_instance_of(Text::Chapter, document.chapter('default'))
25
+ end
26
+ def test_import__html__raises_error
27
+ path = File.expand_path('data/html/pharmnet/gate.html',
28
+ File.dirname(__FILE__))
29
+ assert_raises(ArgumentError) do
30
+ File.open(path) do |fh|
31
+ @importer.import(fh)
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,314 @@
1
+ #!/usr/bin/env ruby
2
+ # Import::Whocc::TestAtc -- de.oddb.org -- 17.11.2006 -- hwyss@ywesee.com
3
+
4
+ $: << File.expand_path('..', File.dirname(__FILE__))
5
+ $: << File.expand_path('../../lib', File.dirname(__FILE__))
6
+
7
+ require 'flexmock'
8
+ require 'test/unit'
9
+ require 'oddb/config'
10
+ require 'oddb/import/whocc'
11
+ require 'mechanize'
12
+ require 'stub/model'
13
+
14
+ module ODDB
15
+ module Drugs
16
+ class Atc < Model
17
+ simulate_database(:code)
18
+ end
19
+ class Ddd < Model
20
+ simulate_database
21
+ end
22
+ end
23
+ module Import
24
+ module Whocc
25
+ class TestAtc < Test::Unit::TestCase
26
+ def setup
27
+ Drugs::Atc.instances.clear
28
+ @data_dir = File.expand_path('data', File.dirname(__FILE__))
29
+ @path = File.expand_path('xml/ATC_2006.xml', @data_dir)
30
+ @import = Atc.new
31
+ end
32
+ def test_import
33
+ assert_equal([], Drugs::Atc.instances)
34
+ input = open(@path)
35
+ @import.import(input)
36
+ assert_equal(23, Drugs::Atc.instances.size)
37
+ atc = Drugs::Atc.instances.first
38
+ expected = [ 'A', 'A01', 'A01A', 'A01AA', 'A01AA01', 'A01AA30',
39
+ 'A01AB', 'A01AB02', 'V', 'V01', 'V01A', 'V01AA', 'V01AA01',
40
+ 'V03', 'V03A', 'V03AB', 'V03AB01', 'V03AZ01', 'V04', 'V04C',
41
+ 'V04CC04', 'V04CD', 'V04CD05', ]
42
+ codes = Drugs::Atc.instances.collect { |atc| atc.code }
43
+ assert_equal(expected, codes)
44
+ assert_equal('ALIMENTÄRES SYSTEM UND STOFFWECHSEL',
45
+ Drugs::Atc.instances.at(0).name.de)
46
+ assert_equal('STOMATOLOGIKA',
47
+ Drugs::Atc.instances.at(1).name.de)
48
+ assert_equal('Somatorelin',
49
+ Drugs::Atc.instances.at(22).name.de)
50
+
51
+ # do it again, nothing should change
52
+ input = open(@path)
53
+ @import.import(input)
54
+ assert_equal(23, Drugs::Atc.instances.size)
55
+ atc = Drugs::Atc.instances.first
56
+ codes = Drugs::Atc.instances.collect { |atc| atc.code }
57
+ assert_equal(expected, codes)
58
+ assert_equal('ALIMENTÄRES SYSTEM UND STOFFWECHSEL',
59
+ Drugs::Atc.instances.at(0).name.de)
60
+ assert_equal('STOMATOLOGIKA',
61
+ Drugs::Atc.instances.at(1).name.de)
62
+ assert_equal('Somatorelin',
63
+ Drugs::Atc.instances.at(22).name.de)
64
+ end
65
+ end
66
+ class TestDdd < Test::Unit::TestCase
67
+ def setup
68
+ Drugs::Atc.instances.clear
69
+ Drugs::Ddd.instances.clear
70
+ @data_dir = File.expand_path('data', File.dirname(__FILE__))
71
+ @path = File.expand_path('xml/ATC_2006_ddd.xml', @data_dir)
72
+ @import = Ddd.new
73
+ end
74
+ def test_import
75
+ assert_equal([], Drugs::Atc.instances)
76
+ assert_equal([], Drugs::Ddd.instances)
77
+ input = open(@path)
78
+ @import.import(input)
79
+ assert_equal(2, Drugs::Atc.instances.size)
80
+ assert_equal(3, Drugs::Ddd.instances.size)
81
+ atc1 = Drugs::Atc.instances.at(0)
82
+ atc2 = Drugs::Atc.instances.at(1)
83
+ ddds = Drugs::Ddd.instances
84
+ assert_equal(ddds[0,1], atc1.ddds)
85
+ assert_equal(ddds[1,2], atc2.ddds)
86
+ ddd1 = atc2.ddds.first
87
+ ddd2 = atc2.ddds.last
88
+ assert_equal('O', ddd1.administration)
89
+ assert_equal(Drugs::Dose.new(7, 'mg'), ddd1.dose)
90
+ assert_equal('mikrokristall. Substanz', ddd1.comment)
91
+ assert_equal(atc2, ddd1.atc)
92
+ assert_equal('O', ddd2.administration)
93
+ assert_equal(Drugs::Dose.new(10, 'mg'), ddd2.dose)
94
+ assert_nil(ddd2.comment)
95
+ assert_equal(atc2, ddd2.atc)
96
+ codes = Drugs::Atc.instances.collect { |atc| atc.code }
97
+
98
+ # do it again, nothing should change
99
+ input = open(@path)
100
+ @import.import(input)
101
+ assert_equal(2, Drugs::Atc.instances.size)
102
+ assert_equal(3, Drugs::Ddd.instances.size)
103
+ atc1 = Drugs::Atc.instances.at(0)
104
+ atc2 = Drugs::Atc.instances.at(1)
105
+ ddds = Drugs::Ddd.instances
106
+ assert_equal(ddds[0,1], atc1.ddds)
107
+ assert_equal(ddds[1,2], atc2.ddds)
108
+ ddd1 = atc2.ddds.first
109
+ ddd2 = atc2.ddds.last
110
+ assert_equal('O', ddd1.administration)
111
+ assert_equal(Drugs::Dose.new(7, 'mg'), ddd1.dose)
112
+ assert_equal('mikrokristall. Substanz', ddd1.comment)
113
+ assert_equal(atc2, ddd1.atc)
114
+ assert_equal('O', ddd2.administration)
115
+ assert_equal(Drugs::Dose.new(10, 'mg'), ddd2.dose)
116
+ assert_nil(ddd2.comment)
117
+ assert_equal(atc2, ddd2.atc)
118
+ codes = Drugs::Atc.instances.collect { |atc| atc.code }
119
+ end
120
+ end
121
+ class TestGuidelines < Test::Unit::TestCase
122
+ include FlexMock::TestCase
123
+ def setup
124
+ Drugs::Atc.instances.clear
125
+ @import = Guidelines.new
126
+ @html_path = File.expand_path('data/html/whocc',
127
+ File.dirname(__FILE__))
128
+ end
129
+ def setup_page(url, html)
130
+ response = {'content-type' => 'text/html'}
131
+ WWW::Mechanize::Page.new(URI.parse(url), response, html, 200)
132
+ end
133
+ def teardown
134
+ ODDB.config.credentials = {}
135
+ super
136
+ end
137
+ def test_login
138
+ ODDB.config.credentials = {
139
+ 'whocc' => {'username' => 'tester', 'password' => 'secret'},
140
+ }
141
+ url = 'http://www.whocc.no/atcddd/database/index.php'
142
+ html = File.read(File.join(@html_path, 'login.html'))
143
+ page = setup_page(url, html)
144
+ agent = flexmock('Mechanize')
145
+ agent.should_receive(:get).with(url).and_return(page)
146
+ agent.should_receive(:submit).with(WWW::Mechanize::Form)\
147
+ .and_return { |form|
148
+ assert_equal('tester', form.username)
149
+ assert_equal('secret', form.password)
150
+ }
151
+ @import.login(agent)
152
+ end
153
+ def test_login__no_credentials
154
+ agent = flexmock('Mechanize')
155
+ assert_raises(RuntimeError) {
156
+ @import.login(agent)
157
+ }
158
+ end
159
+ def test_import
160
+ stub = flexstub(@import)
161
+ stub.should_receive(:login).with('agent')
162
+ %w{A B C D G H J L M N P R S V}.each { |level|
163
+ stub.should_receive(:import_code).with('agent', level)\
164
+ .times(1).and_return { assert true }
165
+ }
166
+ res = @import.import('agent')
167
+ assert_equal(@import.report, res)
168
+ end
169
+ def test_import_code__A
170
+ url = "http://www.whocc.no/atcddd/database/index.php?query=A&showdescription=yes"
171
+ html = File.read(File.join(@html_path, 'A.html'))
172
+ page = setup_page(url, html)
173
+ agent = flexmock('Mechanize')
174
+ agent.should_receive(:get).with(url).times(1).and_return(page)
175
+ @import.import_code(agent, @import.codes.shift)
176
+ assert_equal(['A'], @import.codes.visited)
177
+ assert_equal(%w{B C D G H J L M N P R S V A01 A02 A03 A04 A05 A06
178
+ A07 A08 A09 A10 A11 A12 A13 A14 A15 A16},
179
+ @import.codes.queue)
180
+ assert_equal(1, Drugs::Atc.instances.size)
181
+ atc = Drugs::Atc.instances.first
182
+ assert_equal('A', atc.code)
183
+ assert_equal('Alimentary Tract and Metabolism', atc.name.en)
184
+ assert_equal(nil, atc.guidelines.en)
185
+ assert_equal(nil, atc.ddd_guidelines.en)
186
+ end
187
+ def test_import_code__A03
188
+ url = "http://www.whocc.no/atcddd/database/index.php?query=A03&showdescription=yes"
189
+ html = File.read(File.join(@html_path, 'A03.html'))
190
+ page = setup_page(url, html)
191
+ agent = flexmock('Mechanize')
192
+ agent.should_receive(:get).with(url).times(1).and_return(page)
193
+ @import.codes.queue.clear.push('A03')
194
+ @import.import_code(agent, @import.codes.shift)
195
+ assert_equal(['A03'], @import.codes.visited)
196
+ assert_equal(%w{A A03A A03B A03C A03D A03E A03F},
197
+ @import.codes.queue)
198
+ assert_equal(1, Drugs::Atc.instances.size)
199
+ atc = Drugs::Atc.instances.first
200
+ assert_equal('A03', atc.code)
201
+ assert_equal('Drugs for Functional Gastrointestinal Disorders',
202
+ atc.name.en)
203
+ expected = <<-EOS
204
+ A major part of the preparations in this group are combined preparations. Preparations containing e.g. analgesics and antispasmodics could be classified either in this group or in N02 - Analgesics. Combinations of psycholeptics and antispasmodics could be classified in A03 or in N05 - Psycholeptics etc. The main indication for the use of the combination will, together with the relative effect of the active components, decide the classification. In the treatment of pain caused by spasms, the spasmolytic component must be judged as more important than the analgesic component. Accordingly, analgesic/antispasmodic combinations should be classified in A03 if the main effect of the preparation is the antispasmodic action.
205
+ Combined preparations are classified in:
206
+
207
+
208
+ A03C - Antispasmodics in combination with psycholeptics
209
+ A03D - Antispasmodics in combination with analgesics
210
+ A03E - Antispasmodics and anticholinergics in combination with other drugs
211
+
212
+ Antispasmodics, which are used specifically in the urogenital tractus, are classified in G04BD - Urinary antispasmodics.
213
+
214
+ EOS
215
+ assert_equal(expected, atc.guidelines.en)
216
+ expected = <<-EOS
217
+ The DDD is equal for different routes of administration (oral, parenteral or rectal) of the same compound and is based on the oral dose.
218
+ EOS
219
+ assert_equal(expected.chop, atc.ddd_guidelines.en)
220
+ end
221
+ def test_import_code__A03AB
222
+ url = "http://www.whocc.no/atcddd/database/index.php?query=A03AB&showdescription=yes"
223
+ html = File.read(File.join(@html_path, 'A03AB.html'))
224
+ page = setup_page(url, html)
225
+ agent = flexmock('Mechanize')
226
+ agent.should_receive(:get).with(url).times(1).and_return(page)
227
+ @import.codes.queue.clear.push('A03AB')
228
+ @import.import_code(agent, @import.codes.shift)
229
+ assert_equal(['A03AB'], @import.codes.visited)
230
+ assert_equal(%w{A A03 A03A}, @import.codes.queue)
231
+ assert_equal(22, Drugs::Atc.instances.size)
232
+ atc = Drugs::Atc.instances.first
233
+ assert_equal('A03AB', atc.code)
234
+ assert_equal('Synthetic Anticholinergics, Quaternary Ammonium Compounds',
235
+ atc.name.en)
236
+ expected = <<-EOS
237
+ Plain preparations containing glycopyrronium are classified in this group. Preparations containing glycopyrronium in combination with neostigmine are classified in N07AA51. Trospium see G04BD and A03DA.
238
+ EOS
239
+ assert_equal(expected.chop, atc.guidelines.en)
240
+ assert_equal(nil, atc.ddd_guidelines.en)
241
+ atc = Drugs::Atc.instances.at(1)
242
+ assert_equal('A03AB01', atc.code)
243
+ assert_equal('Benzilone', atc.name.en)
244
+ end
245
+ def test_import_code__C03
246
+ url = "http://www.whocc.no/atcddd/database/index.php?query=C03&showdescription=yes"
247
+ html = File.read(File.join(@html_path, 'C03.html'))
248
+ page = setup_page(url, html)
249
+ agent = flexmock('Mechanize')
250
+ agent.should_receive(:get).with(url).times(1).and_return(page)
251
+ @import.codes.queue.clear.push('C03')
252
+ @import.import_code(agent, @import.codes.shift)
253
+ assert_equal(['C03'], @import.codes.visited)
254
+ assert_equal(%w{C C03A C03B C03C C03D C03E}, @import.codes.queue)
255
+ assert_equal(1, Drugs::Atc.instances.size)
256
+ atc = Drugs::Atc.instances.first
257
+ assert_equal('C03', atc.code)
258
+ assert_equal('Diuretics', atc.name.en)
259
+ expected = <<-EOS
260
+ This group comprises diuretics, plain and in combination with potassium or other agents. Potassium-sparing agents are classified in C03D and C03E.
261
+
262
+ Combinations with digitalis glycosides, see C01AA.
263
+
264
+ Combinations with antihypertensives, see C02L - Antihypertensives and diuretics in combination.
265
+
266
+ Combinations with beta blocking agents, see C07B - C07D.
267
+
268
+ Combinations with calcium channel blockers, see C08.
269
+
270
+ Combinations with agents acting on the renin angiotensin system, see C09B and C09D.
271
+
272
+ EOS
273
+ assert_equal(expected, atc.guidelines.en)
274
+ expected = <<-EOS
275
+ The DDDs for diuretics are based on monotherapy. Most diuretics are used both for the treatment of edema and hypertension in similar doses and the DDDs are therefore based on both indications.
276
+
277
+ The DDDs for combinations correspond to the DDD for the diuretic component, except for ATC group C03E, see comments under this level.
278
+ EOS
279
+ assert_equal(expected.chop, atc.ddd_guidelines.en)
280
+ end
281
+ def test_report
282
+ assert_instance_of(Array, @import.report)
283
+ end
284
+ end
285
+ class TestCodeHandler < Test::Unit::TestCase
286
+ def setup
287
+ @handler = Guidelines::CodeHandler.new
288
+ end
289
+ def test_shift
290
+ @handler.instance_variable_set('@queue', ['A', 'B'])
291
+ assert_equal('A', @handler.shift)
292
+ assert_equal(['A'], @handler.instance_variable_get('@visited'))
293
+ assert_equal(['B'], @handler.instance_variable_get('@queue'))
294
+ end
295
+ def test_push
296
+ @handler.instance_variable_set('@queue', ['A'])
297
+ @handler.push('B')
298
+ assert_equal(['A', 'B'], @handler.instance_variable_get('@queue'))
299
+ end
300
+ def test_push__visited
301
+ @handler.instance_variable_set('@queue', ['A'])
302
+ @handler.instance_variable_set('@visited', ['B'])
303
+ @handler.push('B')
304
+ assert_equal(['A'], @handler.instance_variable_get('@queue'))
305
+ end
306
+ def test_push__twice
307
+ @handler.instance_variable_set('@queue', ['A', 'B'])
308
+ @handler.push('B')
309
+ assert_equal(['A', 'B'], @handler.instance_variable_get('@queue'))
310
+ end
311
+ end
312
+ end
313
+ end
314
+ end
@@ -0,0 +1,36 @@
1
+ #!/usr/bin/env ruby
2
+ # Remote::Drugs::TestActiveAgent -- de.oddb.org -- 20.02.2007 -- hwyss@ywesee.com
3
+
4
+ $: << File.expand_path('../../../lib', File.dirname(__FILE__))
5
+
6
+ require 'test/unit'
7
+ require 'oddb/drugs/active_agent'
8
+ require 'oddb/drugs/substance'
9
+ require 'oddb/remote/drugs/active_agent'
10
+ require 'flexmock'
11
+
12
+ module ODDB
13
+ module Remote
14
+ module Drugs
15
+ class TestActiveAgent < Test::Unit::TestCase
16
+ include FlexMock::TestCase
17
+ def setup
18
+ @remote = flexmock('Remote')
19
+ rsub = flexmock('Substance')
20
+ rsub.should_receive(:de).and_return('Substance')
21
+ @remote.should_receive(:substance).and_return(rsub)
22
+ @active_agent = ActiveAgent.new(0, @remote)
23
+ end
24
+ def test_spaceship__no_dose
25
+ sub = ODDB::Drugs::Substance.new
26
+ sub.name.de = 'Substance'
27
+ local = ODDB::Drugs::ActiveAgent.new(sub, 10)
28
+ @remote.should_receive(:dose).and_return(nil)
29
+ assert_nothing_raised {
30
+ @active_agent <=> local
31
+ }
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,121 @@
1
+ #!/usr/bin/env ruby
2
+ # Selenium::TestAtcBrowser -- de.oddb.org -- 14.12.2007 -- hwyss@ywesee.com
3
+
4
+ $: << File.expand_path('..', File.dirname(__FILE__))
5
+
6
+ require 'selenium/unit'
7
+ require 'stub/model'
8
+
9
+ module ODDB
10
+ module Selenium
11
+ class TestAtcBrowser < Test::Unit::TestCase
12
+ include Selenium::TestCase
13
+ def setup
14
+ super
15
+ atc1 = Drugs::Atc.new('N04BA02')
16
+ atc1.name.de = 'Levodopa und Decarboxylasehemmer'
17
+ ddd = Drugs::Ddd.new('O')
18
+ ddd.dose = Drugs::Dose.new(0.6, 'g')
19
+ atc1.add_ddd(ddd)
20
+ atc1.save
21
+ atc2 = Drugs::Atc.new('N04BA')
22
+ atc2.name.de = 'Dopa und Dopa-Derivate'
23
+ atc2.guidelines.en = <<-EOS
24
+ Combinations with decarboxylase inhibitors and other dopaminergic agents are classified here.
25
+ EOS
26
+ atc2.ddd_guidelines.en = <<-EOS
27
+ The DDD for the combination of levodopa and decarboxylase inhibitor is based on the content of levodopa, see ATC index.
28
+ EOS
29
+ atc2.save
30
+ atc3 = Drugs::Atc.new('N04B')
31
+ atc3.name.de = 'Dopaminerge Mittel'
32
+ atc3.save
33
+ atc4 = Drugs::Atc.new('N04')
34
+ atc4.name.de = 'Antiparkinsonmittel'
35
+ atc4.guidelines.en = <<-EOS
36
+ This group comprises preparations used in the treatment of Parkinson's disease and related conditions, including drug-induced parkinsonism.
37
+ EOS
38
+ atc4.ddd_guidelines.en = <<-EOS
39
+ The DDDs are based on recommended doses for the long-term treatment of symptoms of Parkinson's disease.
40
+ No separate DDDs are established for oral depot formulations.
41
+ EOS
42
+ atc4.save
43
+ atc5 = Drugs::Atc.new('N')
44
+ atc5.name.de = 'Nervensystem'
45
+ atc5.save
46
+ atc6 = Drugs::Atc.new('N04BA03')
47
+ atc6.name.de = 'Levodopa, Decarboxylasehemmer und COMT-Hemmer'
48
+ atc6.save
49
+ flexstub(atc6).should_receive(:packages).and_return(['nonempty'])
50
+ end
51
+ def test_atc_browser
52
+ open "/de/drugs/atc_browser"
53
+
54
+ assert_equal 'DE - ODDB.org | Medikamente | ATC-Browser | Open Drug Database',
55
+ get_title
56
+
57
+ assert is_text_present('Nervensystem (N)')
58
+ assert is_element_present('link=Nervensystem (N)')
59
+ assert !is_text_present('Antiparkinsonmittel (N04)')
60
+ assert !is_element_present('link=ddd')
61
+
62
+ click 'link=Nervensystem (N)'
63
+ wait_for_page_to_load "30000"
64
+
65
+ assert_equal 'DE - ODDB.org | Medikamente | ATC-Browser | Open Drug Database',
66
+ get_title
67
+ assert is_text_present('Nervensystem (N)')
68
+ assert is_element_present('link=Nervensystem (N)')
69
+ assert is_text_present('Antiparkinsonmittel (N04)')
70
+ assert is_element_present('link=Antiparkinsonmittel (N04)')
71
+ assert is_element_present('link=WHO-DDD')
72
+ ## opened because they are single children:
73
+ assert is_text_present("Dopaminerge Mittel (N04B)")
74
+ assert is_element_present("link=Dopaminerge Mittel (N04B)")
75
+ assert is_text_present("Dopa und Dopa-Derivate (N04BA)")
76
+ assert is_element_present("link=Dopa und Dopa-Derivate (N04BA)")
77
+ assert is_text_present("Levodopa und Decarboxylasehemmer (N04BA02)")
78
+ assert is_text_present("Levodopa, Decarboxylasehemmer und COMT-Hemmer (N04BA03)")
79
+ ## has no packages
80
+ assert !is_element_present("link=Levodopa und Decarboxylasehemmer (N04BA02)")
81
+ ## has packages
82
+ assert is_element_present("link=Levodopa, Decarboxylasehemmer und COMT-Hemmer (N04BA03)")
83
+
84
+
85
+ click 'link=Antiparkinsonmittel (N04)'
86
+ wait_for_page_to_load "30000"
87
+ assert_equal 'DE - ODDB.org | Medikamente | ATC-Browser | Open Drug Database',
88
+ get_title
89
+ assert is_text_present('Nervensystem (N)')
90
+ assert is_element_present('link=Nervensystem (N)')
91
+ assert is_text_present('Antiparkinsonmittel (N04)')
92
+ assert !is_element_present('link=Antiparkinsonmittel (N04)')
93
+ assert is_element_present('link=WHO-DDD')
94
+ ## opened because they are single children:
95
+ assert is_text_present("Dopaminerge Mittel (N04B)")
96
+ assert is_element_present("link=Dopaminerge Mittel (N04B)")
97
+ assert is_text_present("Dopa und Dopa-Derivate (N04BA)")
98
+ assert is_element_present("link=Dopa und Dopa-Derivate (N04BA)")
99
+ assert is_text_present("Levodopa und Decarboxylasehemmer (N04BA02)")
100
+ assert is_text_present("Levodopa, Decarboxylasehemmer und COMT-Hemmer (N04BA03)")
101
+ ## has no packages
102
+ assert !is_element_present("link=Levodopa und Decarboxylasehemmer (N04BA02)")
103
+ ## has packages
104
+ assert is_element_present("link=Levodopa, Decarboxylasehemmer und COMT-Hemmer (N04BA03)")
105
+
106
+ end
107
+ def test_atc_browser__limited
108
+ ODDB.config.query_limit = 1
109
+ open "/de/drugs/atc_browser"
110
+ assert_equal 'DE - ODDB.org | Medikamente | ATC-Browser | Open Drug Database',
111
+ get_title
112
+ open "/de/drugs/atc_browser"
113
+ assert_equal 'DE - ODDB.org | Medikamente | Open Drug Database',
114
+ get_title
115
+ assert is_text_present("Abfragebeschränkung")
116
+ ensure
117
+ ODDB.config.query_limit = 20
118
+ end
119
+ end
120
+ end
121
+ end