ramaze.ch.oddb.org 1.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 (286) hide show
  1. data/History.txt +6 -0
  2. data/LICENSE +339 -0
  3. data/Manifest.txt +285 -0
  4. data/README.txt +45 -0
  5. data/Rakefile +28 -0
  6. data/bin/admin +69 -0
  7. data/bin/exportd +63 -0
  8. data/bin/migrate +461 -0
  9. data/bin/oddbd +62 -0
  10. data/data/fulltext/data/dicts/french/fulltext.aff +1057 -0
  11. data/data/fulltext/data/dicts/french/fulltext.dict +91189 -0
  12. data/data/fulltext/data/dicts/french/fulltext.stop +135 -0
  13. data/data/fulltext/data/dicts/german/fulltext.aff +1233 -0
  14. data/data/fulltext/data/dicts/german/fulltext.dict +287574 -0
  15. data/data/fulltext/data/dicts/german/fulltext.stop +133 -0
  16. data/data/fulltext/data/german_compound/README +15 -0
  17. data/data/fulltext/data/german_compound/compound.pl +63 -0
  18. data/data/fulltext/data/german_compound/german.stop +20 -0
  19. data/data/fulltext/data/ispell-german-compound.tar.gz +0 -0
  20. data/data/fulltext/redist/dict_french/Makefile +12 -0
  21. data/data/fulltext/redist/dict_french/README.french +1 -0
  22. data/data/fulltext/redist/dict_french/dict_french.sql.in +7 -0
  23. data/data/fulltext/redist/dict_french/dict_snowball.c +56 -0
  24. data/data/fulltext/redist/dict_french/french_stem.c +1222 -0
  25. data/data/fulltext/redist/dict_french/french_stem.h +16 -0
  26. data/data/fulltext/redist/dict_french/subinclude.h +2 -0
  27. data/data/fulltext/redist/dict_german/Makefile +12 -0
  28. data/data/fulltext/redist/dict_german/README.german +1 -0
  29. data/data/fulltext/redist/dict_german/dict_german.sql.in +7 -0
  30. data/data/fulltext/redist/dict_german/dict_snowball.c +56 -0
  31. data/data/fulltext/redist/dict_german/german_stem.c +527 -0
  32. data/data/fulltext/redist/dict_german/german_stem.h +16 -0
  33. data/data/fulltext/redist/dict_german/subinclude.h +1 -0
  34. data/data/fulltext/redist/french_stem.c +1222 -0
  35. data/data/fulltext/redist/french_stem.h +16 -0
  36. data/data/fulltext/redist/german_stem.c +527 -0
  37. data/data/fulltext/redist/german_stem.h +16 -0
  38. data/lib/fixes/ruby19.rb +21 -0
  39. data/lib/fixes/selenium.rb +20 -0
  40. data/lib/fixes/singular.rb +8 -0
  41. data/lib/fixes/yaml.rb +13 -0
  42. data/lib/oddb.rb +11 -0
  43. data/lib/oddb/business/company.rb +18 -0
  44. data/lib/oddb/business/invoice.rb +75 -0
  45. data/lib/oddb/business/price.rb +60 -0
  46. data/lib/oddb/config.rb +73 -0
  47. data/lib/oddb/drugs.rb +16 -0
  48. data/lib/oddb/drugs/active_agent.rb +37 -0
  49. data/lib/oddb/drugs/atc.rb +53 -0
  50. data/lib/oddb/drugs/composition.rb +41 -0
  51. data/lib/oddb/drugs/ddd.rb +24 -0
  52. data/lib/oddb/drugs/dose.rb +107 -0
  53. data/lib/oddb/drugs/galenic_form.rb +21 -0
  54. data/lib/oddb/drugs/galenic_group.rb +17 -0
  55. data/lib/oddb/drugs/package.rb +87 -0
  56. data/lib/oddb/drugs/part.rb +56 -0
  57. data/lib/oddb/drugs/product.rb +25 -0
  58. data/lib/oddb/drugs/sequence.rb +61 -0
  59. data/lib/oddb/drugs/substance.rb +31 -0
  60. data/lib/oddb/drugs/substance_group.rb +13 -0
  61. data/lib/oddb/drugs/unit.rb +12 -0
  62. data/lib/oddb/export.rb +4 -0
  63. data/lib/oddb/export/csv.rb +89 -0
  64. data/lib/oddb/export/l10n_sessions.rb +30 -0
  65. data/lib/oddb/export/rss.rb +44 -0
  66. data/lib/oddb/export/server.rb +58 -0
  67. data/lib/oddb/export/xls.rb +119 -0
  68. data/lib/oddb/export/yaml.rb +123 -0
  69. data/lib/oddb/html/state/drugs/admin/package.rb +189 -0
  70. data/lib/oddb/html/state/drugs/admin/product.rb +56 -0
  71. data/lib/oddb/html/state/drugs/admin/sequence.rb +259 -0
  72. data/lib/oddb/html/state/drugs/ajax/explain_ddd_price.rb +19 -0
  73. data/lib/oddb/html/state/drugs/ajax/explain_price.rb +19 -0
  74. data/lib/oddb/html/state/drugs/ajax/global.rb +18 -0
  75. data/lib/oddb/html/state/drugs/ajax/package_infos.rb +19 -0
  76. data/lib/oddb/html/state/drugs/ajax/remote_infos.rb +19 -0
  77. data/lib/oddb/html/state/drugs/atc_browser.rb +39 -0
  78. data/lib/oddb/html/state/drugs/atc_guidelines.rb +21 -0
  79. data/lib/oddb/html/state/drugs/compare.rb +52 -0
  80. data/lib/oddb/html/state/drugs/download_export.rb +18 -0
  81. data/lib/oddb/html/state/drugs/fachinfo.rb +21 -0
  82. data/lib/oddb/html/state/drugs/feedback.rb +94 -0
  83. data/lib/oddb/html/state/drugs/global.rb +266 -0
  84. data/lib/oddb/html/state/drugs/init.rb +18 -0
  85. data/lib/oddb/html/state/drugs/login.rb +17 -0
  86. data/lib/oddb/html/state/drugs/package.rb +32 -0
  87. data/lib/oddb/html/state/drugs/patinfo.rb +21 -0
  88. data/lib/oddb/html/state/drugs/products.rb +51 -0
  89. data/lib/oddb/html/state/drugs/result.rb +125 -0
  90. data/lib/oddb/html/state/global.rb +165 -0
  91. data/lib/oddb/html/state/global_predefine.rb +17 -0
  92. data/lib/oddb/html/state/limit.rb +17 -0
  93. data/lib/oddb/html/state/login.rb +56 -0
  94. data/lib/oddb/html/state/paypal/checkout.rb +130 -0
  95. data/lib/oddb/html/state/paypal/collect.rb +46 -0
  96. data/lib/oddb/html/state/paypal/redirect.rb +18 -0
  97. data/lib/oddb/html/state/register_export.rb +38 -0
  98. data/lib/oddb/html/state/register_poweruser.rb +17 -0
  99. data/lib/oddb/html/state/viral/admin.rb +76 -0
  100. data/lib/oddb/html/state/viral/poweruser.rb +16 -0
  101. data/lib/oddb/html/util/annotated_list.rb +39 -0
  102. data/lib/oddb/html/util/know_it_all.rb +28 -0
  103. data/lib/oddb/html/util/known_user.rb +55 -0
  104. data/lib/oddb/html/util/lookandfeel.rb +554 -0
  105. data/lib/oddb/html/util/need_all_input.rb +29 -0
  106. data/lib/oddb/html/util/session.rb +88 -0
  107. data/lib/oddb/html/util/sort.rb +72 -0
  108. data/lib/oddb/html/util/unsaved_helper.rb +20 -0
  109. data/lib/oddb/html/util/validator.rb +54 -0
  110. data/lib/oddb/html/view/ajax/json.rb +22 -0
  111. data/lib/oddb/html/view/alpha_header.rb +28 -0
  112. data/lib/oddb/html/view/document.rb +126 -0
  113. data/lib/oddb/html/view/drugs/admin/package.rb +237 -0
  114. data/lib/oddb/html/view/drugs/admin/product.rb +104 -0
  115. data/lib/oddb/html/view/drugs/admin/sequence.rb +312 -0
  116. data/lib/oddb/html/view/drugs/ajax/explain_ddd_price.rb +87 -0
  117. data/lib/oddb/html/view/drugs/ajax/explain_price.rb +61 -0
  118. data/lib/oddb/html/view/drugs/ajax/package_infos.rb +105 -0
  119. data/lib/oddb/html/view/drugs/ajax/remote_infos.rb +44 -0
  120. data/lib/oddb/html/view/drugs/atc_browser.rb +68 -0
  121. data/lib/oddb/html/view/drugs/atc_guidelines.rb +94 -0
  122. data/lib/oddb/html/view/drugs/compare.rb +95 -0
  123. data/lib/oddb/html/view/drugs/download_export.rb +28 -0
  124. data/lib/oddb/html/view/drugs/fachinfo.rb +46 -0
  125. data/lib/oddb/html/view/drugs/feedback.rb +231 -0
  126. data/lib/oddb/html/view/drugs/init.rb +51 -0
  127. data/lib/oddb/html/view/drugs/legend.rb +24 -0
  128. data/lib/oddb/html/view/drugs/package.rb +398 -0
  129. data/lib/oddb/html/view/drugs/patinfo.rb +46 -0
  130. data/lib/oddb/html/view/drugs/products.rb +97 -0
  131. data/lib/oddb/html/view/drugs/result.rb +296 -0
  132. data/lib/oddb/html/view/drugs/search.rb +33 -0
  133. data/lib/oddb/html/view/drugs/template.rb +15 -0
  134. data/lib/oddb/html/view/foot.rb +52 -0
  135. data/lib/oddb/html/view/google.rb +23 -0
  136. data/lib/oddb/html/view/google_ads.rb +40 -0
  137. data/lib/oddb/html/view/head.rb +78 -0
  138. data/lib/oddb/html/view/limit.rb +109 -0
  139. data/lib/oddb/html/view/list.rb +59 -0
  140. data/lib/oddb/html/view/login.rb +38 -0
  141. data/lib/oddb/html/view/navigation.rb +67 -0
  142. data/lib/oddb/html/view/offset_header.rb +35 -0
  143. data/lib/oddb/html/view/paypal/collect.rb +84 -0
  144. data/lib/oddb/html/view/paypal/redirect.rb +51 -0
  145. data/lib/oddb/html/view/paypal/register_form.rb +106 -0
  146. data/lib/oddb/html/view/register_export.rb +29 -0
  147. data/lib/oddb/html/view/register_poweruser.rb +29 -0
  148. data/lib/oddb/html/view/rss/feedback.rb +64 -0
  149. data/lib/oddb/html/view/rss_preview.rb +54 -0
  150. data/lib/oddb/html/view/search.rb +104 -0
  151. data/lib/oddb/html/view/snapback.rb +24 -0
  152. data/lib/oddb/html/view/template.rb +56 -0
  153. data/lib/oddb/import/excel.rb +45 -0
  154. data/lib/oddb/import/import.rb +39 -0
  155. data/lib/oddb/import/rtf.rb +410 -0
  156. data/lib/oddb/import/whocc.rb +173 -0
  157. data/lib/oddb/import/xml.rb +15 -0
  158. data/lib/oddb/model.rb +179 -0
  159. data/lib/oddb/persistence/odba.rb +33 -0
  160. data/lib/oddb/persistence/odba/business/company.rb +13 -0
  161. data/lib/oddb/persistence/odba/business/invoice.rb +15 -0
  162. data/lib/oddb/persistence/odba/drugs/atc.rb +15 -0
  163. data/lib/oddb/persistence/odba/drugs/galenic_form.rb +18 -0
  164. data/lib/oddb/persistence/odba/drugs/galenic_group.rb +13 -0
  165. data/lib/oddb/persistence/odba/drugs/package.rb +25 -0
  166. data/lib/oddb/persistence/odba/drugs/product.rb +13 -0
  167. data/lib/oddb/persistence/odba/drugs/sequence.rb +21 -0
  168. data/lib/oddb/persistence/odba/drugs/substance.rb +21 -0
  169. data/lib/oddb/persistence/odba/drugs/substance_group.rb +13 -0
  170. data/lib/oddb/persistence/odba/drugs/unit.rb +13 -0
  171. data/lib/oddb/persistence/odba/export.rb +26 -0
  172. data/lib/oddb/persistence/odba/model.rb +68 -0
  173. data/lib/oddb/persistence/odba/regulatory/authority.rb +13 -0
  174. data/lib/oddb/persistence/odba/regulatory/registration.rb +13 -0
  175. data/lib/oddb/persistence/odba/text/document.rb +11 -0
  176. data/lib/oddb/persistence/odba/util/code.rb +11 -0
  177. data/lib/oddb/persistence/odba/util/m10l_document.rb +13 -0
  178. data/lib/oddb/persistence/og.rb +16 -0
  179. data/lib/oddb/persistence/og/drugs/composition.rb +14 -0
  180. data/lib/oddb/persistence/og/drugs/product.rb +14 -0
  181. data/lib/oddb/persistence/og/drugs/sequence.rb +15 -0
  182. data/lib/oddb/persistence/og/model.rb +25 -0
  183. data/lib/oddb/persistence/og/util/multilingual.rb +13 -0
  184. data/lib/oddb/redist/rtf_tools/reader.rb +139 -0
  185. data/lib/oddb/regulatory/authority.rb +14 -0
  186. data/lib/oddb/regulatory/registration.rb +15 -0
  187. data/lib/oddb/remote/business/company.rb +23 -0
  188. data/lib/oddb/remote/drugs/active_agent.rb +27 -0
  189. data/lib/oddb/remote/drugs/atc.rb +32 -0
  190. data/lib/oddb/remote/drugs/dose.rb +8 -0
  191. data/lib/oddb/remote/drugs/galenic_form.rb +25 -0
  192. data/lib/oddb/remote/drugs/package.rb +126 -0
  193. data/lib/oddb/remote/drugs/part.rb +30 -0
  194. data/lib/oddb/remote/drugs/product.rb +19 -0
  195. data/lib/oddb/remote/drugs/sequence.rb +46 -0
  196. data/lib/oddb/remote/drugs/substance.rb +20 -0
  197. data/lib/oddb/remote/drugs/unit.rb +19 -0
  198. data/lib/oddb/remote/object.rb +36 -0
  199. data/lib/oddb/remote/text/document.rb +20 -0
  200. data/lib/oddb/remote/util/m10l_document.rb +22 -0
  201. data/lib/oddb/text/chapter.rb +27 -0
  202. data/lib/oddb/text/document.rb +43 -0
  203. data/lib/oddb/text/format.rb +37 -0
  204. data/lib/oddb/text/paragraph.rb +58 -0
  205. data/lib/oddb/text/picture.rb +93 -0
  206. data/lib/oddb/text/table.rb +68 -0
  207. data/lib/oddb/util.rb +8 -0
  208. data/lib/oddb/util/annotated_list.rb +37 -0
  209. data/lib/oddb/util/code.rb +69 -0
  210. data/lib/oddb/util/comparison.rb +36 -0
  211. data/lib/oddb/util/exporter.rb +8 -0
  212. data/lib/oddb/util/feedback.rb +23 -0
  213. data/lib/oddb/util/ipn.rb +48 -0
  214. data/lib/oddb/util/m10l_document.rb +38 -0
  215. data/lib/oddb/util/mail.rb +73 -0
  216. data/lib/oddb/util/money.rb +60 -0
  217. data/lib/oddb/util/multilingual.rb +70 -0
  218. data/lib/oddb/util/quanty.rb +4 -0
  219. data/lib/oddb/util/quanty/fact.rb +229 -0
  220. data/lib/oddb/util/quanty/main.rb +160 -0
  221. data/lib/oddb/util/quanty/parse.rb +853 -0
  222. data/lib/oddb/util/quanty/units.dump +0 -0
  223. data/lib/oddb/util/server.rb +117 -0
  224. data/lib/oddb/util/updater.rb +41 -0
  225. data/lib/oddb/util/ydim.rb +110 -0
  226. data/lib/oddb/util/yus.rb +46 -0
  227. data/test/business/test_company.rb +29 -0
  228. data/test/business/test_price.rb +46 -0
  229. data/test/drugs/test_active_agent.rb +53 -0
  230. data/test/drugs/test_atc.rb +54 -0
  231. data/test/drugs/test_composition.rb +88 -0
  232. data/test/drugs/test_ddd.rb +22 -0
  233. data/test/drugs/test_dose.rb +190 -0
  234. data/test/drugs/test_galenic_form.rb +41 -0
  235. data/test/drugs/test_package.rb +173 -0
  236. data/test/drugs/test_part.rb +32 -0
  237. data/test/drugs/test_product.rb +31 -0
  238. data/test/drugs/test_sequence.rb +140 -0
  239. data/test/drugs/test_substance.rb +51 -0
  240. data/test/drugs/test_substance_group.rb +27 -0
  241. data/test/export/test_rss.rb +94 -0
  242. data/test/export/test_server.rb +117 -0
  243. data/test/export/test_xls.rb +152 -0
  244. data/test/export/test_yaml.rb +120 -0
  245. data/test/import/data/html/whocc/A.html +56 -0
  246. data/test/import/data/html/whocc/A03.html +48 -0
  247. data/test/import/data/html/whocc/A03AB.html +48 -0
  248. data/test/import/data/html/whocc/A06AA.html +47 -0
  249. data/test/import/data/html/whocc/C03.html +47 -0
  250. data/test/import/data/html/whocc/login.html +77 -0
  251. data/test/import/data/xml/ATC_2006.xml +47 -0
  252. data/test/import/data/xml/ATC_2006_ddd.xml +35 -0
  253. data/test/import/test_excel.rb +34 -0
  254. data/test/import/test_rtf.rb +40 -0
  255. data/test/import/test_whocc.rb +315 -0
  256. data/test/remote/drugs/test_active_agent.rb +36 -0
  257. data/test/selenium/selenium-server.jar +0 -0
  258. data/test/selenium/test_atc_browser.rb +122 -0
  259. data/test/selenium/test_atc_guidelines.rb +96 -0
  260. data/test/selenium/test_collect.rb +138 -0
  261. data/test/selenium/test_compare.rb +206 -0
  262. data/test/selenium/test_fachinfo.rb +130 -0
  263. data/test/selenium/test_feedback.rb +196 -0
  264. data/test/selenium/test_init.rb +52 -0
  265. data/test/selenium/test_limit.rb +305 -0
  266. data/test/selenium/test_login.rb +67 -0
  267. data/test/selenium/test_package.rb +512 -0
  268. data/test/selenium/test_patinfo.rb +131 -0
  269. data/test/selenium/test_product.rb +80 -0
  270. data/test/selenium/test_products.rb +142 -0
  271. data/test/selenium/test_search.rb +715 -0
  272. data/test/selenium/test_sequence.rb +543 -0
  273. data/test/selenium/unit.rb +185 -0
  274. data/test/stub/http_server.rb +169 -0
  275. data/test/stub/model.rb +173 -0
  276. data/test/suite.rb +15 -0
  277. data/test/test_model.rb +83 -0
  278. data/test/util/test_code.rb +74 -0
  279. data/test/util/test_ipn.rb +117 -0
  280. data/test/util/test_mail.rb +86 -0
  281. data/test/util/test_multilingual.rb +97 -0
  282. data/test/util/test_server.rb +48 -0
  283. data/test/util/test_updater.rb +353 -0
  284. data/test/util/test_ydim.rb +115 -0
  285. data/test/util/test_yus.rb +79 -0
  286. metadata +418 -0
@@ -0,0 +1,67 @@
1
+ #!/usr/bin/env ruby
2
+ # Selenium::TestLogin -- de.oddb.org -- 23.01.2007 -- hwyss@ywesee.com
3
+
4
+ $: << File.expand_path('..', File.dirname(__FILE__))
5
+
6
+ require 'selenium/unit'
7
+ require 'stub/model'
8
+ require 'oddb/config'
9
+
10
+ module ODDB
11
+ module Selenium
12
+ class TestLogin < Test::Unit::TestCase
13
+ include Selenium::TestCase
14
+ def test_login
15
+ open "/"
16
+ assert_equal "CH - ODDB.org | Medikamente | Home | Open Drug Database", @selenium.get_title
17
+ click "link=Anmelden"
18
+ wait_for_page_to_load 30
19
+ assert_equal "CH - ODDB.org | Medikamente | Anmelden | Open Drug Database", @selenium.get_title
20
+ assert_equal "E-Mail", get_text("//label[@for='email']")
21
+ assert is_element_present("email")
22
+ assert_equal "Passwort", get_text("//label[@for='pass']")
23
+ assert is_element_present("pass")
24
+ assert_match Regexp.new(ODDB.config.http_server),
25
+ get_attribute("//form[@name='login']@action")
26
+ assert is_element_present("//input[@name='login_']")
27
+ end
28
+ def test_login__fail_unknown_user
29
+ open "/"
30
+ click "link=Anmelden"
31
+ wait_for_page_to_load 30
32
+ @auth.should_receive(:login).and_return { raise Yus::UnknownEntityError }
33
+ type "email", "unknown@bbmb.ch"
34
+ type "pass", "secret"
35
+ click "//input[@type='submit']"
36
+ wait_for_page_to_load 30
37
+ assert_equal "CH - ODDB.org | Medikamente | Anmelden | Open Drug Database", @selenium.get_title
38
+ assert_equal "error", get_attribute("//label[@for='email']@class")
39
+ end
40
+ def test_login__fail_wrong_password
41
+ open "/"
42
+ click "link=Anmelden"
43
+ wait_for_page_to_load 30
44
+ @auth.should_receive(:login).and_return { raise Yus::AuthenticationError }
45
+ type "email", "unknown@bbmb.ch"
46
+ type "pass", "secret"
47
+ click "//input[@type='submit']"
48
+ wait_for_page_to_load 30
49
+ assert_equal "CH - ODDB.org | Medikamente | Anmelden | Open Drug Database", @selenium.get_title
50
+ assert_equal "error", get_attribute("//label[@for='pass']@class")
51
+ end
52
+ def test_login__success
53
+ user = login_admin
54
+ assert_equal "CH - ODDB.org | Medikamente | Home | Open Drug Database", @selenium.get_title
55
+ end
56
+ def test_logout
57
+ user = login_admin
58
+ assert_equal "CH - ODDB.org | Medikamente | Home | Open Drug Database", @selenium.get_title
59
+ @auth.should_receive(:logout).and_return { assert true }
60
+ click "link=Abmelden"
61
+ wait_for_page_to_load 30
62
+ assert_equal "CH - ODDB.org | Medikamente | Home | Open Drug Database", @selenium.get_title
63
+ assert !is_text_present('Abmelden')
64
+ end
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,512 @@
1
+ #!/usr/bin/env ruby
2
+ # encoding: utf-8
3
+ # Selenium::TestPackage -- de.oddb.org -- 21.11.2006 -- hwyss@ywesee.com
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 TestPackage < Test::Unit::TestCase
15
+ include Selenium::TestCase
16
+ def setup_package(pzn='12345')
17
+ product = Drugs::Product.new
18
+ company = Business::Company.new
19
+ company.name.de = 'Producer AG'
20
+ product.company = company
21
+ company.save
22
+ sequence = Drugs::Sequence.new
23
+ sequence.atc = Drugs::Atc.new('N04BB01')
24
+ sequence.atc.name.de = 'Amantadin'
25
+ ddd = Drugs::Ddd.new('O')
26
+ ddd.dose = Drugs::Dose.new(5, 'mg')
27
+ sequence.atc.add_ddd(ddd)
28
+ sequence.product = product
29
+ composition = Drugs::Composition.new
30
+ composition.equivalence_factor = '44.6'
31
+ sequence.add_composition(composition)
32
+ substance = Drugs::Substance.new
33
+ substance.name.de = "Amantadin"
34
+ dose = Drugs::Dose.new(100, 'mg')
35
+ active_agent = Drugs::ActiveAgent.new(substance, dose)
36
+ composition.add_active_agent(active_agent)
37
+ package = Drugs::Package.new
38
+ code = Util::Code.new(:festbetragsstufe, 3, 'CH')
39
+ package.add_code(code)
40
+ code = Util::Code.new(:zuzahlungsbefreit, true, 'CH')
41
+ package.add_code(code)
42
+ code = Util::Code.new(:prescription, true, 'CH')
43
+ package.add_code(code)
44
+ code = Util::Code.new(:cid, pzn, 'CH')
45
+ package.add_code(code)
46
+ part = Drugs::Part.new
47
+ part.composition = composition
48
+ part.package = package
49
+ part.size = 5
50
+ unit = Drugs::Unit.new
51
+ unit.name.de = 'Ampullen'
52
+ part.unit = unit
53
+ part.quantity = Drugs::Dose.new(20, 'ml')
54
+ package.name.de = 'Amantadin by Producer'
55
+ package.sequence = sequence
56
+ package.add_price(Business::Price.new(:public, 'CH', 6))
57
+ package.add_price(Business::Price.new(:festbetrag, 'CH', 10))
58
+ package.save
59
+ package
60
+ end
61
+ def test_package
62
+ package = setup_package
63
+ open "/de/drugs/package/cid/12345"
64
+ assert_equal "CH - ODDB.org | Medikamente | Details | Amantadin by Producer | Open Drug Database", get_title
65
+ assert is_text_present('Amantadin by Producer - Producer AG')
66
+ assert is_text_present('12345')
67
+ assert !is_text_present('54321')
68
+ assert is_text_present('N04BB01 ( Amantadin )')
69
+ assert is_text_present('Packungsgrösse und Wirkstoffe')
70
+ assert is_text_present('5 Ampullen à 20 ml')
71
+ assert is_text_present('100 mg')
72
+ assert is_text_present('Ja')
73
+ assert !is_text_present('Nein')
74
+ package.code(:zuzahlungsbefreit).value = false
75
+ refresh
76
+ wait_for_page_to_load 30
77
+ assert_equal "CH - ODDB.org | Medikamente | Details | Amantadin by Producer | Open Drug Database", get_title
78
+ assert_equal "6.00", get_text('//tr[4]/td[2]')
79
+ assert_equal "10.00", get_text('//tr[4]/td[4]')
80
+ assert_equal "3", get_text('//tr[5]/td[2]')
81
+ assert_equal "Nein", get_text('//tr[6]/td[2]')
82
+ assert_equal "", get_text('//tr[6]/td[4]')
83
+ assert_equal "Ja", get_text('//tr[7]/td[2]')
84
+ assert_equal "44.6", get_text('//tr[7]/td[4]')
85
+
86
+ package2 = setup_package('54321')
87
+ open "/de/drugs/package/cid/54321"
88
+ assert_equal "CH - ODDB.org | Medikamente | Details | Amantadin by Producer | Open Drug Database",
89
+ get_title
90
+ assert is_text_present('Amantadin by Producer - Producer AG')
91
+ assert is_text_present('Ja')
92
+ assert !is_text_present('Nein')
93
+ assert is_text_present('54321')
94
+ assert !is_text_present('12345')
95
+ end
96
+ def test_package__search
97
+ setup_package
98
+ open "/de/drugs/package/cid/12345"
99
+ assert_equal "CH - ODDB.org | Medikamente | Details | Amantadin by Producer | Open Drug Database", get_title
100
+ type "query", "Amantadin"
101
+ select "dstype", "Preisvergleich"
102
+ wait_for_page_to_load 30
103
+ assert_equal "CH - ODDB.org | Medikamente | Suchen | Amantadin | Preisvergleich | Open Drug Database",
104
+ get_title
105
+ end
106
+ def test_package__limited
107
+ ODDB.config.query_limit = 1
108
+ package = setup_package
109
+ open "/de/drugs/package/cid/12345"
110
+ assert_equal "CH - ODDB.org | Medikamente | Details | Amantadin by Producer | Open Drug Database", get_title
111
+ open "/de/drugs/package/cid/12345"
112
+ assert_equal 'CH - ODDB.org | Medikamente | Open Drug Database',
113
+ get_title
114
+ assert is_text_present("Abfragebeschränkung")
115
+ ensure
116
+ ODDB.config.query_limit = 20
117
+ end
118
+ end
119
+ class TestAdminPackage < Test::Unit::TestCase
120
+ include Selenium::TestCase
121
+ def setup
122
+ Drugs::Part.instances.clear
123
+ Drugs::Package.instances.clear
124
+ Drugs::ActiveAgent.instances.clear
125
+ Drugs::Composition.instances.clear
126
+ Drugs::Sequence.instances.clear
127
+ Drugs::Product.instances.clear
128
+ Business::Company.instances.clear
129
+ super
130
+ end
131
+ def setup_package(pzn='12345')
132
+ product = Drugs::Product.new
133
+ company = Business::Company.new
134
+ company.name.de = 'Producer AG'
135
+ product.company = company
136
+ company.save
137
+ sequence = Drugs::Sequence.new
138
+ sequence.atc = Drugs::Atc.new('N04BB01')
139
+ sequence.atc.name.de = 'Amantadin'
140
+ ddd = Drugs::Ddd.new('O')
141
+ ddd.dose = Drugs::Dose.new(5, 'mg')
142
+ sequence.atc.add_ddd(ddd)
143
+ sequence.product = product
144
+ composition = Drugs::Composition.new
145
+ composition.equivalence_factor = '44.6'
146
+ sequence.add_composition(composition)
147
+ substance = Drugs::Substance.new
148
+ substance.name.de = "Amantadin"
149
+ dose = Drugs::Dose.new(100, 'mg')
150
+ active_agent = Drugs::ActiveAgent.new(substance, dose)
151
+ composition.add_active_agent(active_agent)
152
+ package = Drugs::Package.new
153
+ code = Util::Code.new(:festbetragsstufe, 3, 'CH')
154
+ package.add_code(code)
155
+ code = Util::Code.new(:zuzahlungsbefreit, true, 'CH')
156
+ package.add_code(code)
157
+ code = Util::Code.new(:prescription, true, 'CH')
158
+ package.add_code(code)
159
+ code = Util::Code.new(:cid, pzn, 'CH')
160
+ package.add_code(code)
161
+ part = Drugs::Part.new
162
+ part.composition = composition
163
+ part.package = package
164
+ part.size = 5
165
+ unit = Drugs::Unit.new
166
+ unit.name.de = 'Ampullen'
167
+ part.unit = unit
168
+ part.quantity = Drugs::Dose.new(20, 'ml')
169
+ package.name.de = 'Amantadin by Producer'
170
+ package.sequence = sequence
171
+ package.add_price(Business::Price.new(:public, 'CH', 6))
172
+ package.add_price(Business::Price.new(:festbetrag, 'CH', 10))
173
+ package.save
174
+ package
175
+ end
176
+ def test_admin_package
177
+ package = setup_package
178
+ user = login_admin
179
+ open "/de/drugs/package/cid/12345"
180
+ assert_equal "CH - ODDB.org | Medikamente | Details | Amantadin by Producer | Open Drug Database", get_title
181
+ assert is_element_present("name")
182
+ assert is_element_present("code_cid")
183
+ assert is_element_present("price_public")
184
+ assert is_element_present("price_festbetrag")
185
+ assert is_element_present("code_festbetragsstufe")
186
+ assert is_element_present("code_festbetragsgruppe")
187
+ assert is_element_present("code_zuzahlungsbefreit")
188
+ assert is_element_present("sequence")
189
+ assert is_element_present("code_prescription")
190
+ assert is_element_present("update")
191
+ assert is_element_present("delete")
192
+
193
+ assert_equal "Amantadin by Producer", get_value("name")
194
+ assert_equal "12345", get_value("code_cid")
195
+ assert_equal "6.00", get_value("price_public")
196
+ assert_equal "10.00", get_value("price_festbetrag")
197
+ assert_equal "3", get_value("code_festbetragsstufe")
198
+ assert_equal "", get_value("code_festbetragsgruppe")
199
+ assert is_checked("code_zuzahlungsbefreit")
200
+ assert is_checked("code_prescription")
201
+ assert_equal "Amantadin 100 mg",
202
+ get_selected_label("//select[@name='sequence']")
203
+
204
+ assert !is_element_present("link=-")
205
+ assert is_element_present("multi[0]")
206
+ assert is_element_present("size[0]")
207
+ assert is_element_present("unit[0]")
208
+ assert is_element_present("quantity[0]")
209
+ assert is_element_present("composition[0]")
210
+ assert is_element_present("link=+")
211
+
212
+ assert_equal "5", get_value("size[0]")
213
+ assert_equal "Ampullen", get_value("unit[0]")
214
+ assert_equal "20 ml", get_value("quantity[0]")
215
+ assert_equal "Amantadin 100 mg",
216
+ get_selected_label("//select[@name='composition[0]']")
217
+ end
218
+ def test_admin_package__update__error
219
+ package = setup_package
220
+ other = setup_package('54321')
221
+ user = login_admin
222
+ open "/de/drugs/package/cid/12345"
223
+ assert_equal "CH - ODDB.org | Medikamente | Details | Amantadin by Producer | Open Drug Database", get_title
224
+
225
+ type "name", ""
226
+ type "code_cid", "54321"
227
+ type "price_public", ""
228
+ type "price_festbetrag", ""
229
+ type "code_festbetragsstufe", ""
230
+ type "code_festbetragsgruppe", ""
231
+ #assert is_element_present("sequence")
232
+ click "code_prescription"
233
+ click "update"
234
+
235
+ wait_for_page_to_load 30
236
+
237
+ assert is_text_present("Bitte geben Sie einen Namen an.")
238
+ assert is_text_present("Der Swissmedic-Code '54321' (Amantadin by Producer) ist bereits vergeben.")
239
+ assert_equal "Amantadin by Producer", get_value("name")
240
+ assert_equal "12345", get_value("code_cid")
241
+ assert_equal "", get_value("price_public")
242
+ assert_equal "", get_value("price_festbetrag")
243
+ assert_equal "", get_value("code_festbetragsstufe")
244
+ assert_equal "", get_value("code_festbetragsgruppe")
245
+ assert is_checked("code_zuzahlungsbefreit")
246
+ assert !is_checked("code_prescription")
247
+ #assert_equal "Amantadin 100 mg",
248
+ # get_selected_label("//select[@name='sequence']")
249
+
250
+ assert_equal "Amantadin by Producer", package.name.de
251
+ assert_equal '12345', package.code(:cid).value
252
+ assert_equal nil, package.price(:public)
253
+ assert_equal nil, package.price(:festbetrag)
254
+ assert_equal nil, package.code(:festbetragsstufe).value
255
+ assert_equal nil, package.code(:festbetragsgruppe).value
256
+ assert_equal true, package.code(:zuzahlungsbefreit).value
257
+ assert_equal false, package.code(:prescription).value
258
+ end
259
+ def test_admin_package__update__success
260
+ package = setup_package
261
+ user = login_admin
262
+ open "/de/drugs/package/cid/12345"
263
+ assert_equal "CH - ODDB.org | Medikamente | Details | Amantadin by Producer | Open Drug Database", get_title
264
+
265
+ type "name", "Modified Name"
266
+ type "code_cid", "54321"
267
+ type "price_public", "12"
268
+ type "price_festbetrag", "9"
269
+ type "code_festbetragsstufe", "1"
270
+ type "code_festbetragsgruppe", "2"
271
+ click "code_zuzahlungsbefreit"
272
+ #assert is_element_present("sequence")
273
+ click "code_prescription"
274
+ click "update"
275
+
276
+ wait_for_page_to_load 30
277
+
278
+ assert_equal "Modified Name", get_value("name")
279
+ assert_equal "54321", get_value("code_cid")
280
+ assert_equal "12.00", get_value("price_public")
281
+ assert_equal "9.00", get_value("price_festbetrag")
282
+ assert_equal "1", get_value("code_festbetragsstufe")
283
+ assert_equal "2", get_value("code_festbetragsgruppe")
284
+ assert !is_checked("code_zuzahlungsbefreit")
285
+ assert !is_checked("code_prescription")
286
+ #assert_equal "Amantadin 100 mg",
287
+ # get_selected_label("//select[@name='sequence']")
288
+
289
+ assert_equal "Modified Name", package.name.de
290
+ assert_equal '54321', package.code(:cid).value
291
+ assert_equal 12, package.price(:public)
292
+ assert_equal 9, package.price(:festbetrag)
293
+ assert_equal "1", package.code(:festbetragsstufe).value
294
+ assert_equal "2", package.code(:festbetragsgruppe).value
295
+ assert_equal false, package.code(:zuzahlungsbefreit).value
296
+ assert_equal false, package.code(:prescription).value
297
+ end
298
+ def test_admin_package__delete
299
+ package = setup_package
300
+ user = login_admin
301
+ open "/de/drugs/package/cid/12345"
302
+ assert_equal "CH - ODDB.org | Medikamente | Details | Amantadin by Producer | Open Drug Database", get_title
303
+
304
+ click "link=Sequenz"
305
+ wait_for_page_to_load 30
306
+ link_loc = "link=12345"
307
+ assert_equal "CH - ODDB.org | Medikamente | Sequenz | #{package.sequence.uid} | Open Drug Database", get_title
308
+ assert is_element_present(link_loc)
309
+ click link_loc
310
+ wait_for_page_to_load 30
311
+ assert_equal "CH - ODDB.org | Medikamente | Details | Amantadin by Producer | Open Drug Database", get_title
312
+
313
+ click "delete"
314
+ assert_equal "Wollen Sie diese Packung wirklich löschen?", get_confirmation
315
+
316
+ wait_for_page_to_load 30
317
+
318
+ assert_equal "CH - ODDB.org | Medikamente | Sequenz | #{package.sequence.uid} | Open Drug Database", get_title
319
+ assert !is_element_present(link_loc)
320
+ end
321
+ def test_admin_package__parts
322
+ package = setup_package
323
+ unit = ODDB::Drugs::Unit.new
324
+ unit.name.de = "Fertigspritzen"
325
+ unit.save
326
+ user = login_admin
327
+ open "/de/drugs/package/cid/12345"
328
+ assert_equal "CH - ODDB.org | Medikamente | Details | Amantadin by Producer | Open Drug Database", get_title
329
+ assert is_element_present("link=+")
330
+ assert !is_element_present("link=-")
331
+
332
+ click "link=+"
333
+ sleep(0.5)
334
+ assert !is_element_present("link=+")
335
+ assert is_element_present("link=-")
336
+ assert is_element_present("multi[1]")
337
+ assert is_element_present("size[1]")
338
+ assert is_element_present("unit[1]")
339
+ assert is_element_present("quantity[1]")
340
+ assert is_element_present("composition[1]")
341
+ refresh
342
+ wait_for_page_to_load 30
343
+
344
+ assert_equal "CH - ODDB.org | Medikamente | Details | Amantadin by Producer | Open Drug Database", get_title
345
+ assert is_element_present("link=+")
346
+ assert !is_element_present("link=-")
347
+ assert !is_element_present("multi[1]")
348
+ assert !is_element_present("size[1]")
349
+ assert !is_element_present("unit[1]")
350
+ assert !is_element_present("quantity[1]")
351
+ assert !is_element_present("composition[1]")
352
+
353
+ click "link=+"
354
+ sleep(0.5)
355
+ type "multi[1]", "10"
356
+ type "size[1]", "5"
357
+ type "unit[1]", "Fertigspritzen"
358
+ type "quantity[1]", "20ml"
359
+
360
+ click "update"
361
+ wait_for_page_to_load 30
362
+
363
+ assert_equal 2, package.parts.size
364
+ part = package.parts.last
365
+ assert_equal 10, part.multi
366
+ assert_equal 5, part.size
367
+ assert_equal unit, part.unit
368
+ assert_equal ODDB::Drugs::Dose.new(20, 'ml'), part.quantity
369
+
370
+ assert is_element_present("link=+")
371
+ assert is_element_present("link=-")
372
+ assert is_element_present("multi[1]")
373
+ assert is_element_present("size[1]")
374
+ assert is_element_present("unit[1]")
375
+ assert is_element_present("quantity[1]")
376
+ assert is_element_present("composition[1]")
377
+ assert_equal "10", get_value("multi[1]")
378
+ assert_equal "5", get_value("size[1]")
379
+ assert_equal "Fertigspritzen", get_value("unit[1]")
380
+ assert_equal "20 ml", get_value("quantity[1]")
381
+
382
+ click "link=+"
383
+ sleep(0.5)
384
+ assert is_element_present("multi[2]")
385
+ click "//table[@id='parts']//tr[3]//td[1]//a"
386
+ sleep(0.5)
387
+ assert is_element_present("link=+")
388
+ assert !is_element_present("multi[2]")
389
+
390
+ click "//table[@id='parts']//tr[2]//td[1]//a"
391
+ sleep(0.5)
392
+ assert !is_element_present("multi[1]")
393
+ assert_equal 1, package.parts.size
394
+ end
395
+ def test_admin_package__not_limited
396
+ ODDB.config.query_limit = 1
397
+ package = setup_package
398
+ user = login_admin
399
+ 2.times {
400
+ open "/de/drugs/package/cid/12345"
401
+ assert_equal "CH - ODDB.org | Medikamente | Details | Amantadin by Producer | Open Drug Database", get_title
402
+ assert is_element_present("name")
403
+ assert is_element_present("code_cid")
404
+ assert is_element_present("price_public")
405
+ assert is_element_present("price_festbetrag")
406
+ assert is_element_present("code_festbetragsstufe")
407
+ assert is_element_present("code_festbetragsgruppe")
408
+ assert is_element_present("code_zuzahlungsbefreit")
409
+ assert is_element_present("code_prescription")
410
+ }
411
+ ensure
412
+ ODDB.config.query_limit = 20
413
+ end
414
+ def test_admin_new_package__success
415
+ package = setup_package
416
+ user = login_admin
417
+ uid = package.sequence.uid
418
+ open "/de/drugs/sequence/uid/#{uid}"
419
+ assert_equal "CH - ODDB.org | Medikamente | Sequenz | #{uid} | Open Drug Database", get_title
420
+
421
+ click "new_package"
422
+ wait_for_page_to_load 30
423
+ assert_equal "CH - ODDB.org | Medikamente | Neue Packung | Open Drug Database", get_title
424
+
425
+ type "name", "New Package"
426
+ type "code_cid", "12346"
427
+ type "price_public", "12"
428
+ type "price_festbetrag", "9"
429
+ type "code_festbetragsstufe", "1"
430
+ type "code_festbetragsgruppe", "2"
431
+ click "code_zuzahlungsbefreit"
432
+ #assert is_element_present("sequence")
433
+ click "code_prescription"
434
+ click "update"
435
+
436
+ wait_for_page_to_load 30
437
+
438
+ assert_equal "New Package", get_value("name")
439
+ assert_equal "12346", get_value("code_cid")
440
+ assert_equal "12.00", get_value("price_public")
441
+ assert_equal "9.00", get_value("price_festbetrag")
442
+ assert_equal "1", get_value("code_festbetragsstufe")
443
+ assert_equal "2", get_value("code_festbetragsgruppe")
444
+ assert is_checked("code_zuzahlungsbefreit")
445
+ assert is_checked("code_prescription")
446
+
447
+ assert_equal 2, package.sequence.packages.size
448
+ package = package.sequence.packages.last
449
+ assert_equal "New Package", package.name.de
450
+ assert_equal '12346', package.code(:cid).value
451
+ assert_equal 12, package.price(:public)
452
+ assert_equal 9, package.price(:festbetrag)
453
+ assert_equal "1", package.code(:festbetragsstufe).value
454
+ assert_equal "2", package.code(:festbetragsgruppe).value
455
+ assert_equal true, package.code(:zuzahlungsbefreit).value
456
+ assert_equal true, package.code(:prescription).value
457
+ end
458
+ def test_admin_new_package__errors
459
+ package = setup_package
460
+ user = login_admin
461
+ uid = package.sequence.uid
462
+ open "/de/drugs/sequence/uid/#{uid}"
463
+ assert_equal "CH - ODDB.org | Medikamente | Sequenz | #{uid} | Open Drug Database", get_title
464
+
465
+ click "new_package"
466
+ wait_for_page_to_load 30
467
+ assert_equal "CH - ODDB.org | Medikamente | Neue Packung | Open Drug Database", get_title
468
+
469
+ type "code_cid", "12345"
470
+ type "price_public", "12"
471
+ type "price_festbetrag", "9"
472
+ type "code_festbetragsstufe", "1"
473
+ type "code_festbetragsgruppe", "2"
474
+ click "code_zuzahlungsbefreit"
475
+ #assert is_element_present("sequence")
476
+ click "code_prescription"
477
+ click "update"
478
+
479
+ wait_for_page_to_load 30
480
+
481
+ assert is_text_present("Bitte geben Sie einen Namen an.")
482
+ assert is_text_present("Der Swissmedic-Code '12345' (Amantadin by Producer) ist bereits vergeben.")
483
+ assert_equal "12345", get_value("code_cid")
484
+ assert_equal "12", get_value("price_public")
485
+ assert_equal "9", get_value("price_festbetrag")
486
+ assert_equal "1", get_value("code_festbetragsstufe")
487
+ assert_equal "2", get_value("code_festbetragsgruppe")
488
+ assert !is_checked("code_zuzahlungsbefreit")
489
+ assert !is_checked("code_prescription")
490
+
491
+ assert_equal 1, package.sequence.packages.size
492
+ end
493
+ def test_admin_new_package__delete
494
+ package = setup_package
495
+ user = login_admin
496
+ uid = package.sequence.uid
497
+ open "/de/drugs/sequence/uid/#{uid}"
498
+ assert_equal "CH - ODDB.org | Medikamente | Sequenz | #{uid} | Open Drug Database", get_title
499
+
500
+ click "new_package"
501
+ wait_for_page_to_load 30
502
+ assert_equal "CH - ODDB.org | Medikamente | Neue Packung | Open Drug Database", get_title
503
+
504
+ click "delete"
505
+ wait_for_page_to_load 30
506
+ assert_equal "CH - ODDB.org | Medikamente | Sequenz | #{uid} | Open Drug Database", get_title
507
+
508
+ assert_equal 1, package.sequence.packages.size
509
+ end
510
+ end
511
+ end
512
+ end