de.oddb 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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,128 @@
1
+ #!/usr/bin/env ruby
2
+ # Selenium::TestFachinfo -- de.oddb.org -- 01.11.2007 -- hwyss@ywesee.com
3
+
4
+
5
+ $: << File.expand_path('..', File.dirname(__FILE__))
6
+
7
+ require 'selenium/unit'
8
+ require 'stub/model'
9
+ require 'oddb/drugs'
10
+ require 'oddb/util'
11
+
12
+ module ODDB
13
+ module Selenium
14
+ class TestFachinfo < Test::Unit::TestCase
15
+ include Selenium::TestCase
16
+ def setup
17
+ Drugs::Package.instances.clear
18
+ super
19
+ end
20
+ def setup_package(pzn='12345')
21
+ product = Drugs::Product.new
22
+ company = Business::Company.new
23
+ company.name.de = 'Producer AG'
24
+ product.company = company
25
+ product.name.de = "Amantadin by Producer"
26
+ company.save
27
+ sequence = Drugs::Sequence.new
28
+ sequence.atc = Drugs::Atc.new('N04BB01')
29
+ sequence.atc.name.de = 'Amantadin'
30
+ ddd = Drugs::Ddd.new('O')
31
+ ddd.dose = Drugs::Dose.new(5, 'mg')
32
+ sequence.atc.add_ddd(ddd)
33
+ sequence.product = product
34
+ composition = Drugs::Composition.new
35
+ composition.equivalence_factor = '44.6'
36
+ sequence.add_composition(composition)
37
+ substance = Drugs::Substance.new
38
+ substance.name.de = "Amantadin"
39
+ dose = Drugs::Dose.new(100, 'mg')
40
+ active_agent = Drugs::ActiveAgent.new(substance, dose)
41
+ composition.add_active_agent(active_agent)
42
+ package = Drugs::Package.new
43
+ code = Util::Code.new(:festbetragsstufe, 3, 'DE')
44
+ package.add_code(code)
45
+ code = Util::Code.new(:zuzahlungsbefreit, true, 'DE')
46
+ package.add_code(code)
47
+ code = Util::Code.new(:prescription, true, 'DE')
48
+ package.add_code(code)
49
+ code = Util::Code.new(:cid, pzn, 'DE')
50
+ package.add_code(code)
51
+ part = Drugs::Part.new
52
+ part.composition = composition
53
+ part.package = package
54
+ part.size = 5
55
+ unit = Drugs::Unit.new
56
+ unit.name.de = 'Ampullen'
57
+ part.unit = unit
58
+ part.quantity = Drugs::Dose.new(20, 'ml')
59
+ package.name.de = 'Amantadin by Producer'
60
+ package.sequence = sequence
61
+ package.add_price(Util::Money.new(6, :public, 'DE'))
62
+ package.add_price(Util::Money.new(10, :festbetrag, 'DE'))
63
+ package.save
64
+ package
65
+ end
66
+ def setup_fachinfo
67
+ document = Text::Document.new
68
+ chapter = Text::Chapter.new('name')
69
+ paragraph = Text::Paragraph.new
70
+ paragraph.set_format("b")
71
+ paragraph << "1. Bezeichnung"
72
+ chapter.add_paragraph paragraph
73
+ paragraph = Text::Paragraph.new
74
+ paragraph << "Amantadin Product"
75
+ chapter.add_paragraph paragraph
76
+ document.add_chapter(chapter)
77
+ chapter = Text::Chapter.new('composition')
78
+ paragraph = Text::Paragraph.new
79
+ paragraph.set_format("b")
80
+ paragraph << "2. Zusammensetzung"
81
+ chapter.add_paragraph paragraph
82
+ table = Text::Table.new
83
+ table << "Für Kinder"
84
+ table.next_cell!
85
+ table << "Für Erwachsene"
86
+ table.next_row!
87
+ table << "10 mg Amantadin pro Tablette"
88
+ table.next_cell!
89
+ table << "100 mg Amantadin pro Tablette"
90
+ chapter.add_paragraph table
91
+ document.add_chapter(chapter)
92
+ chapter = Text::Chapter.new('packaging')
93
+ paragraph = Text::Paragraph.new
94
+ paragraph.set_format("b")
95
+ paragraph << "6.1"
96
+ paragraph.set_format()
97
+ paragraph << " Behältnis"
98
+ chapter.add_paragraph paragraph
99
+ picture = Text::Picture.new
100
+ flexmock(picture).should_receive(:path).and_return('/resources/oddb/logo.png')
101
+ flexmock(picture).should_receive(:filename).and_return('logo.png')
102
+ chapter.add_paragraph picture
103
+ document.add_chapter(chapter)
104
+ document
105
+ end
106
+ def test_fachinfo
107
+ package = setup_package
108
+ package.fachinfo.de = setup_fachinfo
109
+ open "/de/drugs/fachinfo/uid/#{package.sequence.uid}"
110
+ assert_equal "DE - ODDB.org | Medikamente | Fachinformation | Amantadin by Producer | Open Drug Database", get_title
111
+ assert is_text_present("1. Bezeichnung\nAmantadin Product")
112
+ end
113
+ def test_fachinfo__limited
114
+ ODDB.config.query_limit = 1
115
+ package = setup_package
116
+ package.fachinfo.de = setup_fachinfo
117
+ open "/de/drugs/fachinfo/uid/#{package.sequence.uid}"
118
+ assert_equal "DE - ODDB.org | Medikamente | Fachinformation | Amantadin by Producer | Open Drug Database", get_title
119
+ open "/de/drugs/fachinfo/uid/#{package.sequence.uid}"
120
+ assert_equal 'DE - ODDB.org | Medikamente | Open Drug Database',
121
+ get_title
122
+ assert is_text_present("Abfragebeschränkung")
123
+ ensure
124
+ ODDB.config.query_limit = 20
125
+ end
126
+ end
127
+ end
128
+ end
@@ -0,0 +1,192 @@
1
+ #!/usr/bin/env ruby
2
+ # Selenium::TestFeedback -- de.oddb.org -- 11.12.2007 -- hwyss@ywesee.com
3
+
4
+ $: << File.expand_path('..', File.dirname(__FILE__))
5
+
6
+ require 'selenium/unit'
7
+ require 'stub/model'
8
+ require 'oddb/drugs'
9
+ require 'oddb/util'
10
+
11
+ module ODDB
12
+ module Selenium
13
+ class TestFeedback < Test::Unit::TestCase
14
+ include Selenium::TestCase
15
+ def setup
16
+ ODDB.config.data_dir = File.expand_path('../../data', File.dirname(__FILE__))
17
+ ODDB.config.var = File.expand_path('var', File.dirname(__FILE__))
18
+ @path = File.join(ODDB.config.var, 'rss', 'de', 'feedback.rss')
19
+ File.delete(@path) if(File.exist? @path)
20
+ super
21
+ end
22
+ def teardown
23
+ Drugs::Package.instances.clear
24
+ super
25
+ end
26
+ def setup_package(pzn='12345')
27
+ product = Drugs::Product.new
28
+ company = Business::Company.new
29
+ company.name.de = 'Producer AG'
30
+ product.company = company
31
+ company.save
32
+ sequence = Drugs::Sequence.new
33
+ sequence.atc = Drugs::Atc.new('N04BB01')
34
+ sequence.atc.name.de = 'Amantadin'
35
+ ddd = Drugs::Ddd.new('O')
36
+ ddd.dose = Drugs::Dose.new(5, 'mg')
37
+ sequence.atc.add_ddd(ddd)
38
+ sequence.product = product
39
+ composition = Drugs::Composition.new
40
+ composition.equivalence_factor = '44.6'
41
+ sequence.add_composition(composition)
42
+ substance = Drugs::Substance.new
43
+ substance.name.de = "Amantadin"
44
+ dose = Drugs::Dose.new(100, 'mg')
45
+ active_agent = Drugs::ActiveAgent.new(substance, dose)
46
+ composition.add_active_agent(active_agent)
47
+ package = Drugs::Package.new
48
+ code = Util::Code.new(:festbetragsstufe, 3, 'DE')
49
+ package.add_code(code)
50
+ code = Util::Code.new(:zuzahlungsbefreit, true, 'DE')
51
+ package.add_code(code)
52
+ code = Util::Code.new(:prescription, true, 'DE')
53
+ package.add_code(code)
54
+ code = Util::Code.new(:cid, pzn, 'DE')
55
+ package.add_code(code)
56
+ part = Drugs::Part.new
57
+ part.composition = composition
58
+ part.package = package
59
+ part.size = 5
60
+ unit = Drugs::Unit.new
61
+ unit.name.de = 'Ampullen'
62
+ part.unit = unit
63
+ part.quantity = Drugs::Dose.new(20, 'ml')
64
+ package.name.de = 'Amantadin by Producer'
65
+ package.sequence = sequence
66
+ package.add_price(Util::Money.new(6, :public, 'DE'))
67
+ package.add_price(Util::Money.new(10, :festbetrag, 'DE'))
68
+ package.save
69
+ package
70
+ end
71
+ def test_feedback
72
+ package = setup_package
73
+ open "/de/drugs/feedback/pzn/12345"
74
+ assert_equal "DE - ODDB.org | Medikamente | Feedback | Amantadin by Producer | Open Drug Database", get_title
75
+ assert is_text_present('Feedback zu Amantadin by Producer in der Handelsform: 5 Ampullen à 20 ml')
76
+ assert is_element_present('name')
77
+ assert is_element_present('email')
78
+ assert is_element_present('email_public')
79
+ assert is_element_present('message')
80
+ assert is_element_present('item_good_experience')
81
+ assert is_element_present('item_recommended')
82
+ assert is_element_present('item_good_impression')
83
+ assert is_element_present('item_helps')
84
+ assert is_text_present("Was steht im Bild unten?")
85
+ end
86
+ def test_feedback__errors
87
+ package = setup_package
88
+ open "/de/drugs/feedback/pzn/12345"
89
+ assert_equal "DE - ODDB.org | Medikamente | Feedback | Amantadin by Producer | Open Drug Database", get_title
90
+ assert is_text_present('Feedback zu Amantadin by Producer in der Handelsform: 5 Ampullen à 20 ml')
91
+ assert is_element_present('name')
92
+ assert is_element_present('email')
93
+ assert is_element_present('email_public')
94
+ assert is_element_present('message')
95
+ assert is_element_present('item_good_experience')
96
+ assert is_element_present('item_recommended')
97
+ assert is_element_present('item_good_impression')
98
+ assert is_element_present('item_helps')
99
+ assert is_text_present("Was steht im Bild unten?")
100
+ assert is_element_present("//input[starts-with(@name, 'captcha')]")
101
+ click "//input[@type='submit']"
102
+ wait_for_page_to_load "30000"
103
+ assert is_text_present('Ihre Eingabe stimmt nicht mit dem Bild überein. Bitte versuchen Sie es noch einmal.')
104
+ assert is_text_present('Bitte füllen Sie alle Felder aus.')
105
+ assert is_element_present('name')
106
+ assert is_element_present('email')
107
+ assert is_element_present('email_public')
108
+ assert is_element_present('message')
109
+ assert is_element_present('item_good_experience')
110
+ assert is_element_present('item_recommended')
111
+ assert is_element_present('item_good_impression')
112
+ assert is_element_present('item_helps')
113
+ assert is_text_present("Was steht im Bild unten?")
114
+ assert is_element_present("//input[starts-with(@name, 'captcha')]")
115
+ end
116
+ def test_feedback__success
117
+ flexmock(Turing::Challenge).new_instances\
118
+ .should_receive(:valid_answer?).and_return(true)
119
+ package = setup_package
120
+ open "/de/drugs/feedback/pzn/12345"
121
+ assert_equal "DE - ODDB.org | Medikamente | Feedback | Amantadin by Producer | Open Drug Database", get_title
122
+ assert is_text_present('Feedback zu Amantadin by Producer in der Handelsform: 5 Ampullen à 20 ml')
123
+ assert is_element_present('name')
124
+ assert is_element_present('email')
125
+ assert is_element_present('email_public')
126
+ assert is_element_present('message')
127
+ assert is_element_present('item_good_experience')
128
+ assert is_element_present('item_recommended')
129
+ assert is_element_present('item_good_impression')
130
+ assert is_element_present('item_helps')
131
+ assert is_text_present("Was steht im Bild unten?")
132
+ assert is_element_present("//input[starts-with(@name, 'captcha')]")
133
+ type "name", "My Name"
134
+ type "email", "my.email@home.com"
135
+ check "//input[@name='email_public'][@value='1']"
136
+ type "message", "My personal experience"
137
+ check "//input[@name='item_good_experience'][@value='0']"
138
+ check "//input[@name='item_recommended'][@value='1']"
139
+ check "//input[@name='item_good_impression'][@value='0']"
140
+ check "//input[@name='item_helps'][@value='1']"
141
+ type "//input[starts-with(@name, 'captcha')]", "Valid thanks to Flexmock"
142
+ click "//input[@type='submit']"
143
+ wait_for_page_to_load "30000"
144
+ assert is_text_present("Vielen Dank! Ihr Feedback wurde gespeichert. Sie können jetzt noch Änderungen vornehmen.")
145
+ assert !is_text_present('Ihre Eingabe stimmt nicht mit dem Bild überein. Bitte versuchen Sie es noch einmal.')
146
+ assert !is_text_present('Bitte geben Sie einen Namen an.')
147
+ assert !is_text_present('Bitte geben Sie eine gültige E-Mail-Adresse an.')
148
+ assert is_element_present('name')
149
+ assert is_element_present('email')
150
+ assert is_element_present('email_public')
151
+ assert is_element_present('message')
152
+ assert is_element_present('item_good_experience')
153
+ assert is_element_present('item_recommended')
154
+ assert is_element_present('item_good_impression')
155
+ assert is_element_present('item_helps')
156
+ assert !is_element_present("//input[starts-with(@name, 'captcha')]")
157
+ assert !is_text_present("Was steht im Bild unten?")
158
+ assert is_text_present("Feedback von My Name\nerstellt am:")
159
+ assert is_text_present("My personal experience")
160
+ assert !is_text_present("My personal experience with this Product was ok.")
161
+ type "message", "My personal experience with this Product was ok."
162
+ click "//input[@type='submit']"
163
+ wait_for_page_to_load "30000"
164
+ assert is_text_present("Vielen Dank! Ihr Feedback wurde geändert. Sie können noch weitere Änderungen vornehmen.")
165
+ assert is_text_present("My personal experience with this Product was ok.")
166
+ assert File.exist?(@path)
167
+ end
168
+ def test_feedback__search
169
+ setup_package
170
+ open "/de/drugs/feedback/pzn/12345"
171
+ assert_equal "DE - ODDB.org | Medikamente | Feedback | Amantadin by Producer | Open Drug Database", get_title
172
+ type "query", "Amantadin"
173
+ select "dstype", "Preisvergleich"
174
+ wait_for_page_to_load "30000"
175
+ assert_equal "DE - ODDB.org | Medikamente | Suchen | Amantadin | Preisvergleich | Open Drug Database",
176
+ get_title
177
+ end
178
+ def test_feedback__limited
179
+ ODDB.config.query_limit = 1
180
+ package = setup_package
181
+ open "/de/drugs/feedback/pzn/12345"
182
+ assert_equal "DE - ODDB.org | Medikamente | Feedback | Amantadin by Producer | Open Drug Database", get_title
183
+ open "/de/drugs/feedback/pzn/12345"
184
+ assert_equal 'DE - ODDB.org | Medikamente | Open Drug Database',
185
+ get_title
186
+ assert is_text_present("Abfragebeschränkung")
187
+ ensure
188
+ ODDB.config.query_limit = 20
189
+ end
190
+ end
191
+ end
192
+ end
@@ -0,0 +1,64 @@
1
+ #!/usr/bin/env ruby
2
+ # Selenium::TestInit -- de.oddb.org -- 20.02.2007 -- hwyss@ywesee.com
3
+
4
+ $: << File.expand_path('..', File.dirname(__FILE__))
5
+
6
+ require 'selenium/unit'
7
+ require 'stub/model'
8
+ require 'oddb/util'
9
+
10
+ module ODDB
11
+ module Selenium
12
+ class TestInit < Test::Unit::TestCase
13
+ include Selenium::TestCase
14
+ def setup
15
+ f1 = Util::Feedback.new
16
+ i1 = flexmock('package')
17
+ p1 = flexmock('part')
18
+ p1.should_receive(:size).and_return(10)
19
+ u1 = Drugs::Unit.new
20
+ u1.name.de = 'Tabletten'
21
+ p1.should_receive(:unit).and_return(u1)
22
+ p1.should_ignore_missing
23
+ i1.should_receive(:name).and_return('Product')
24
+ i1.should_receive(:parts).and_return [p1]
25
+ i1.should_ignore_missing
26
+ f1.item = i1
27
+ f1.save
28
+ super
29
+ end
30
+ def teardown
31
+ Util::Feedback.instances.clear
32
+ super
33
+ end
34
+ def test_init
35
+ open "/"
36
+ assert_equal "DE - ODDB.org | Medikamente | Home | Open Drug Database", get_title
37
+ assert is_element_present("query")
38
+ assert is_element_present("reset")
39
+ assert is_element_present("//input[@name='search']")
40
+ assert_match Regexp.new(ODDB.config.http_server),
41
+ get_attribute("//form[@name='search']@action")
42
+ assert is_element_present("link=Home")
43
+ assert is_element_present("link=Kontakt")
44
+ assert is_element_present("link=Arzneimittel A-Z")
45
+ assert is_element_present("//a[@name='feedback_feed_title']")
46
+ assert is_text_present("Product in der Handelsform: 10 Tabletten")
47
+ end
48
+ def test_init__mm
49
+ open "/de/drugs/home/flavor/mm"
50
+ assert_equal "CH | DE - ODDB.org | Medikamente | Home | Open Drug Database", get_title
51
+ assert is_element_present("query")
52
+ assert is_element_present("reset")
53
+ assert is_element_present("//input[@name='search']")
54
+ assert_match Regexp.new(ODDB.config.http_server),
55
+ get_attribute("//form[@name='search']@action")
56
+ assert is_element_present("link=Home")
57
+ assert is_element_present("link=Kontakt")
58
+ assert is_element_present("link=Arzneimittel A-Z")
59
+ assert !is_element_present("//a[@name='feedback_feed_title']")
60
+ assert !is_text_present("in der Handelsform")
61
+ end
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,304 @@
1
+ #!/usr/bin/env ruby
2
+ # Selenium::TestLimit -- de.oddb.org -- 01.02.2008 -- hwyss@ywesee.com
3
+
4
+ $: << File.expand_path('..', File.dirname(__FILE__))
5
+
6
+ require 'selenium/unit'
7
+ require 'odba'
8
+ require 'oddb/drugs'
9
+ require 'oddb/util'
10
+ require 'stub/model'
11
+
12
+ module ODDB
13
+ module Selenium
14
+ class TestLimit < Test::Unit::TestCase
15
+ include Selenium::TestCase
16
+ def setup
17
+ Drugs::Package.instances.clear
18
+ Drugs::Product.instances.clear
19
+ Business::Company.instances.clear
20
+ @cache = flexstub(ODBA.cache)
21
+ flexstub(Currency).should_receive(:rate)\
22
+ .with('EUR', 'CHF').and_return(1.5)
23
+ currency = flexmock('Currency')
24
+ @currency = DRb.start_service('druby://localhost:0', currency)
25
+ ODDB.config.currency_rates = @currency.uri
26
+ currency.should_receive(:rate).with('EUR', 'CHF').and_return(1.6)
27
+ super
28
+ end
29
+ def setup_autosession(yus)
30
+ session = flexmock('session')
31
+ yus.should_receive(:autosession).and_return { |domain, block|
32
+ assert_equal 'org.oddb.de', domain
33
+ block.call session
34
+ }
35
+ session
36
+ end
37
+ def setup_package(name="Amantadin by Producer", atccode='N04BB01')
38
+ product = Drugs::Product.new
39
+ company = Business::Company.new
40
+ company.name.de = 'Producer AG'
41
+ product.company = company
42
+ company.save
43
+ sequence = Drugs::Sequence.new
44
+ sequence.product = product
45
+ atc = Drugs::Atc.new(atccode)
46
+ atc.name.de = 'Amantadin'
47
+ ddd = Drugs::Ddd.new('O')
48
+ ddd.dose = Drugs::Dose.new(10, 'mg')
49
+ atc.add_ddd(ddd)
50
+ sequence.atc = atc
51
+ composition = Drugs::Composition.new
52
+ galform = Drugs::GalenicForm.new
53
+ galform.description.de = 'Tabletten'
54
+ composition.galenic_form = galform
55
+ grp = Drugs::GalenicGroup.new('Tabletten')
56
+ grp.administration = 'O'
57
+ galform.group = grp
58
+ sequence.add_composition(composition)
59
+ substance = Drugs::Substance.new
60
+ substance.name.de = 'Amantadin'
61
+ dose = Drugs::Dose.new(100, 'mg')
62
+ active_agent = Drugs::ActiveAgent.new(substance, dose)
63
+ composition.add_active_agent(active_agent)
64
+ package = Drugs::Package.new
65
+ code = Util::Code.new(:cid, '12345', 'DE')
66
+ package.add_code(code)
67
+ code = Util::Code.new(:festbetragsstufe, 3, 'DE')
68
+ package.add_code(code)
69
+ code = Util::Code.new(:festbetragsgruppe, 4, 'DE')
70
+ package.add_code(code)
71
+ code = Util::Code.new(:zuzahlungsbefreit, true, 'DE')
72
+ package.add_code(code)
73
+ part = Drugs::Part.new
74
+ part.package = package
75
+ part.size = 5
76
+ part.composition = composition
77
+ unit = Drugs::Unit.new
78
+ unit.name.de = 'Ampullen'
79
+ part.unit = unit
80
+ part.quantity = Drugs::Dose.new(20, 'ml')
81
+ package.name.de = name
82
+ package.sequence = sequence
83
+ package.add_price(Util::Money.new(6, :public, 'DE'))
84
+ package.add_price(Util::Money.new(10, :festbetrag, 'DE'))
85
+ package.save
86
+ package
87
+ end
88
+ def test_limit
89
+ ODDB.config.query_limit = 1
90
+ package = setup_package
91
+ open "/de/drugs/search/query/Amantadin"
92
+ assert_equal "DE - ODDB.org | Medikamente | Suchen | Amantadin | Preisvergleich | Open Drug Database",
93
+ get_title
94
+ 2.times {
95
+ open "/de/drugs/search/query/Amantadin"
96
+ assert_equal 'DE - ODDB.org | Medikamente | Open Drug Database',
97
+ get_title
98
+ assert is_text_present("Abfragebeschränkung")
99
+ }
100
+ ensure
101
+ ODDB.config.query_limit = 20
102
+ end
103
+ def test_limit__login__fail_unknown_user
104
+ ODDB.config.query_limit = 1
105
+ package = setup_package
106
+ open "/de/drugs/search/query/Amantadin"
107
+ assert_equal "DE - ODDB.org | Medikamente | Suchen | Amantadin | Preisvergleich | Open Drug Database",
108
+ get_title
109
+ open "/de/drugs/search/query/Amantadin"
110
+ assert_equal 'DE - ODDB.org | Medikamente | Open Drug Database',
111
+ get_title
112
+ assert is_text_present("Abfragebeschränkung")
113
+ @auth.should_receive(:login).and_return { raise Yus::UnknownEntityError }
114
+ type "email", "unknown@bbmb.ch"
115
+ type "pass", "secret"
116
+ click "//input[@name='login_']"
117
+ wait_for_page_to_load "30000"
118
+ assert_equal 'DE - ODDB.org | Medikamente | Open Drug Database',
119
+ get_title
120
+ assert_equal "error", get_attribute("//label[@for='email']@class")
121
+ ensure
122
+ ODDB.config.query_limit = 20
123
+ end
124
+ def test_limit__login__fail_wrong_password
125
+ ODDB.config.query_limit = 1
126
+ package = setup_package
127
+ open "/de/drugs/search/query/Amantadin"
128
+ assert_equal "DE - ODDB.org | Medikamente | Suchen | Amantadin | Preisvergleich | Open Drug Database",
129
+ get_title
130
+ open "/de/drugs/search/query/Amantadin"
131
+ assert_equal 'DE - ODDB.org | Medikamente | Open Drug Database',
132
+ get_title
133
+ assert is_text_present("Abfragebeschränkung")
134
+ @auth.should_receive(:login).and_return { raise Yus::AuthenticationError }
135
+ type "email", "unknown@bbmb.ch"
136
+ type "pass", "secret"
137
+ click "//input[@name='login_']"
138
+ wait_for_page_to_load "30000"
139
+ assert_equal 'DE - ODDB.org | Medikamente | Open Drug Database',
140
+ get_title
141
+ assert_equal "error", get_attribute("//label[@for='pass']@class")
142
+ ensure
143
+ ODDB.config.query_limit = 20
144
+ end
145
+ def test_limit__login
146
+ ODDB.config.query_limit = 1
147
+ package = setup_package
148
+ open "/de/drugs/search/query/Amantadin"
149
+ assert_equal "DE - ODDB.org | Medikamente | Suchen | Amantadin | Preisvergleich | Open Drug Database",
150
+ get_title
151
+ open "/de/drugs/search/query/Amantadin"
152
+ assert_equal 'DE - ODDB.org | Medikamente | Open Drug Database',
153
+ get_title
154
+ assert is_text_present("Abfragebeschränkung")
155
+
156
+ email = "poweruser@oddb.org"
157
+ permissions = [
158
+ ['login', 'org.oddb.de.PowerUser'], ['view', 'org.oddb.de']
159
+ ]
160
+ user = mock_user email, *permissions
161
+ @auth.should_receive(:login).and_return(user)
162
+ type "email", email
163
+ type "pass", "sikrit"
164
+ click "//input[@name='login_']"
165
+ wait_for_page_to_load "30000"
166
+ assert_equal "DE - ODDB.org | Medikamente | Suchen | Amantadin | Preisvergleich | Open Drug Database",
167
+ get_title
168
+ ensure
169
+ ODDB.config.query_limit = 20
170
+ end
171
+ def test_limit__new_user__error
172
+ ODDB.config.query_limit = 1
173
+ package = setup_package
174
+ open "/de/drugs/search/query/Amantadin"
175
+ assert_equal "DE - ODDB.org | Medikamente | Suchen | Amantadin | Preisvergleich | Open Drug Database",
176
+ get_title
177
+ open "/de/drugs/search/query/Amantadin"
178
+ assert_equal 'DE - ODDB.org | Medikamente | Open Drug Database',
179
+ get_title
180
+ assert is_text_present("Abfragebeschränkung")
181
+
182
+ click "//input[@type='submit']"
183
+ wait_for_page_to_load "30000"
184
+
185
+ assert is_text_present("Bitte wählen Sie eine Zeitdauer")
186
+ ensure
187
+ ODDB.config.query_limit = 20
188
+ end
189
+ def test_limit__new_user
190
+ ODDB.config.query_limit = 1
191
+ package = setup_package
192
+ open "/de/drugs/search/query/Amantadin"
193
+ assert_equal "DE - ODDB.org | Medikamente | Suchen | Amantadin | Preisvergleich | Open Drug Database",
194
+ get_title
195
+ open "/de/drugs/search/query/Amantadin"
196
+ assert_equal 'DE - ODDB.org | Medikamente | Open Drug Database',
197
+ get_title
198
+ assert is_text_present("Abfragebeschränkung")
199
+
200
+ click "//input[@name='days']"
201
+ click "//input[@type='submit']"
202
+ wait_for_page_to_load "30000"
203
+
204
+ assert is_text_present("Power-User Datenerfassung")
205
+ assert is_text_present('Bitte geben Sie Ihre persönlichen Angaben ein und wählen Sie einen Benutzernamen und ein Passwort.')
206
+
207
+ assert_equal "E-Mail", get_text("//label[@for='email']")
208
+ assert is_element_present("email")
209
+ assert_equal "Passwort", get_text("//label[@for='pass']")
210
+ assert is_element_present("pass")
211
+ assert_equal "Bestätigung", get_text("//label[@for='confirm_pass']")
212
+ assert is_element_present("confirm_pass")
213
+ assert_equal "Anrede", get_text("//label[@for='salutation']")
214
+ assert is_element_present("salutation")
215
+ assert_equal "Nachname", get_text("//label[@for='name_last']")
216
+ assert is_element_present("name_last")
217
+ assert_equal "Vorname", get_text("//label[@for='name_first']")
218
+ assert is_element_present("name_first")
219
+
220
+ assert is_text_present("365 x")
221
+ assert is_text_present("unlimited access")
222
+ ensure
223
+ ODDB.config.query_limit = 20
224
+ end
225
+ def test_limit__new_user__step2_error
226
+ ODDB.config.query_limit = 1
227
+ package = setup_package
228
+ open "/de/drugs/search/query/Amantadin"
229
+ assert_equal "DE - ODDB.org | Medikamente | Suchen | Amantadin | Preisvergleich | Open Drug Database",
230
+ get_title
231
+ open "/de/drugs/search/query/Amantadin"
232
+ assert_equal 'DE - ODDB.org | Medikamente | Open Drug Database',
233
+ get_title
234
+ assert is_text_present("Abfragebeschränkung")
235
+
236
+ click "//input[@name='days']"
237
+ click "//input[@type='submit']"
238
+ wait_for_page_to_load "30000"
239
+
240
+ assert is_text_present("Power-User Datenerfassung")
241
+ assert is_text_present('Bitte geben Sie Ihre persönlichen Angaben ein und wählen Sie einen Benutzernamen und ein Passwort.')
242
+
243
+ @auth.should_receive(:login).and_return { raise Yus::UnknownEntityError }
244
+ click "//input[@type='submit']"
245
+ wait_for_page_to_load "30000"
246
+ assert is_text_present("Bitte füllen Sie alle Felder aus.")
247
+ %w{email pass confirm_pass salutation name_last name_first}.each { |key|
248
+ assert_equal "error", get_attribute("//label[@for='#{key}']@class")
249
+ }
250
+ ensure
251
+ ODDB.config.query_limit = 20
252
+ end
253
+ def test_limit__new_user__step2
254
+ yus = flexmock("yus-server")
255
+ remote = DRb.start_service('druby://localhost:0', yus)
256
+ yus_session = setup_autosession(yus)
257
+ yus_session.should_receive(:get_entity_preferences).and_return({})
258
+ email = "poweruser@oddb.org"
259
+ ODDB.config.auth_server = remote.uri
260
+ ODDB.config.query_limit = 1
261
+ package = setup_package
262
+ open "/de/drugs/search/query/Amantadin"
263
+ assert_equal "DE - ODDB.org | Medikamente | Suchen | Amantadin | Preisvergleich | Open Drug Database",
264
+ get_title
265
+ open "/de/drugs/search/query/Amantadin"
266
+ assert_equal 'DE - ODDB.org | Medikamente | Open Drug Database',
267
+ get_title
268
+ assert is_text_present("Abfragebeschränkung")
269
+
270
+ click "//input[@name='days']"
271
+ click "//input[@type='submit']"
272
+ wait_for_page_to_load "30000"
273
+
274
+ assert is_text_present("Power-User Datenerfassung")
275
+ assert is_text_present('Bitte geben Sie Ihre persönlichen Angaben ein und wählen Sie einen Benutzernamen und ein Passwort.')
276
+
277
+ @auth.should_receive(:login).and_return { raise Yus::UnknownEntityError }
278
+ type "email", email
279
+ type "pass", "secret"
280
+ type "confirm_pass", "secret"
281
+ select "//select[@name='salutation']", "Herr"
282
+ type "name_last", "Test"
283
+ type "name_first", "Fritz"
284
+
285
+ yus_session.should_receive(:create_entity).with(email, "5ebe2294ecd0e0f08eab7690d2a6ee69")
286
+ permissions = [
287
+ ['login', 'org.oddb.de.PowerUser'], ['view', 'org.oddb.de']
288
+ ]
289
+ user = mock_user email, *permissions
290
+ ODDB.server = server = flexmock("server")
291
+ server.should_receive(:login).and_return(user)
292
+ @auth.should_receive(:login).and_return(user)
293
+
294
+ click "//input[@type='submit']"
295
+ wait_for_page_to_load "30000"
296
+
297
+ output = @http_server.redirected_output
298
+ assert_match /www.sandbox.paypal.com/, output
299
+ ensure
300
+ ODDB.config.query_limit = 20
301
+ end
302
+ end
303
+ end
304
+ end