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,543 @@
1
+ #!/usr/bin/env ruby
2
+ # encoding: utf-8
3
+ # Selenium::TestSequence -- de.oddb.org -- 15.04.2008 -- 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 TestAdminSequence < Test::Unit::TestCase
15
+ include Selenium::TestCase
16
+ def setup
17
+ Drugs::ActiveAgent.instances.clear
18
+ Drugs::Composition.instances.clear
19
+ Drugs::Sequence.instances.clear
20
+ Drugs::Product.instances.clear
21
+ Drugs::GalenicForm.instances.clear
22
+ Business::Company.instances.clear
23
+ super
24
+ end
25
+ def setup_sequence(registration = '12345.0')
26
+ product = Drugs::Product.new
27
+ product.name.de = "Product"
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
+ sequence.add_code Util::Code.new(:registration, registration, 'EU')
36
+ ddd = Drugs::Ddd.new('O')
37
+ ddd.dose = Drugs::Dose.new(5, 'mg')
38
+ sequence.atc.add_ddd(ddd)
39
+ sequence.product = product
40
+ composition = Drugs::Composition.new
41
+ composition.equivalence_factor = '44.6'
42
+ sequence.add_composition(composition)
43
+ substance = Drugs::Substance.new
44
+ substance.name.de = "Amantadin"
45
+ substance.save
46
+ dose = Drugs::Dose.new(100, 'mg')
47
+ active_agent = Drugs::ActiveAgent.new(substance, dose)
48
+ active_agent.composition = composition
49
+ galform = Drugs::GalenicForm.new
50
+ galform.description.de = 'Tabletten'
51
+ galform.save
52
+ composition.galenic_form = galform
53
+ sequence.save
54
+ sequence
55
+ end
56
+ def test_sequence
57
+ sequence = setup_sequence
58
+ user = login_admin
59
+ uid = sequence.uid
60
+ open "/de/drugs/sequence/uid/#{uid}"
61
+ assert_equal "CH - ODDB.org | Medikamente | Sequenz | #{uid} | Open Drug Database", get_title
62
+ assert is_element_present("atc")
63
+ assert is_element_present("registration")
64
+ =begin ## temporarily disabled: this should be recoded to work with swiss infos
65
+ # in 2.0
66
+ assert is_element_present("fachinfo_url")
67
+ assert is_element_present("patinfo_url")
68
+ =end
69
+ assert !is_element_present("fachinfo_url")
70
+ assert !is_element_present("patinfo_url")
71
+ assert is_element_present("update")
72
+ assert is_element_present("delete")
73
+
74
+ assert_equal "N04BB01", get_value("atc")
75
+ assert_equal "12345.0", get_value("registration")
76
+
77
+ assert is_element_present("link=-")
78
+ assert is_element_present("substance[0][0]")
79
+ assert is_element_present("dose[0][0]")
80
+ assert is_element_present("link=+")
81
+
82
+ assert_equal "Amantadin", get_value("substance[0][0]")
83
+ assert_equal "100 mg", get_value("dose[0][0]")
84
+ end
85
+ def test_sequence__update__error
86
+ sequence = setup_sequence
87
+ other = setup_sequence('54321.5')
88
+ other.save
89
+ user = login_admin
90
+ uid = sequence.uid
91
+ open "/de/drugs/sequence/uid/#{uid}"
92
+ assert_equal "CH - ODDB.org | Medikamente | Sequenz | #{uid} | Open Drug Database", get_title
93
+
94
+ assert_equal "N04BB01", get_value("atc")
95
+ assert_equal "12345.0", get_value("registration")
96
+
97
+ type 'registration', '54321.5'
98
+ type 'atc', 'A01AA01'
99
+
100
+ click "//input[@name='update']"
101
+ wait_for_page_to_load 30
102
+
103
+ assert is_text_present('Der ATC-Code "A01AA01" ist nicht bekannt.')
104
+ assert is_text_present("Die EU-Registrationsnummer '54321.5' (Product) ist bereits vergeben.")
105
+
106
+ assert_equal 'N04BB01', get_value('atc')
107
+ assert !is_text_present('Amantadin')
108
+ assert is_element_present('atc_name')
109
+ assert_equal '12345.0', get_value('registration')
110
+
111
+ assert_equal('12345.0', sequence.code(:registration, 'EU').value)
112
+
113
+ [:atc, :fi_url, :pi_url, :registration].each { |key|
114
+ assert_not_equal 'test.admin@oddb.org', sequence.data_origin(key)
115
+ }
116
+
117
+ type 'atc', 'A01AA01'
118
+ type 'atc_name', 'new ATC-Code'
119
+
120
+ click "//input[@name='update']"
121
+ wait_for_page_to_load 30
122
+ assert !is_text_present('Der ATC-Code "A01AA01" ist nicht bekannt.')
123
+ assert is_text_present('new ATC-Code')
124
+ assert_equal 'A01AA01', get_value('atc')
125
+
126
+ atc = sequence.atc
127
+ assert_equal 'A01AA01', atc.code
128
+ assert_equal 'new ATC-Code', atc.name.de
129
+ assert_equal [sequence], atc.sequences
130
+ assert atc.saved?
131
+ end
132
+ def test_sequence__update__success
133
+ sequence = setup_sequence
134
+ user = login_admin
135
+ uid = sequence.uid
136
+ open "/de/drugs/sequence/uid/#{uid}"
137
+ assert_equal "CH - ODDB.org | Medikamente | Sequenz | #{uid} | Open Drug Database", get_title
138
+
139
+ assert is_element_present("atc")
140
+
141
+ assert is_element_present("registration")
142
+ =begin ## temporarily disabled: this should be recoded to work with swiss infos
143
+ # in 2.0
144
+ assert is_element_present("fachinfo_url")
145
+ assert is_element_present("pachinfo_url")
146
+ =end
147
+ assert !is_element_present("fachinfo_url")
148
+ assert !is_element_present("pachinfo_url")
149
+ assert is_element_present("update")
150
+ assert is_element_present("delete")
151
+
152
+ assert_equal "N04BB01", get_value("atc")
153
+ assert_equal "12345.0", get_value("registration")
154
+
155
+ atc = Drugs::Atc.new('A01AA01')
156
+ atc.name.de = "Assigned Atc-Class"
157
+ atc.save
158
+
159
+ type 'registration', '54321.5'
160
+ type 'atc', 'A01AA01'
161
+
162
+ =begin ## temporarily disabled: this should be recoded to work with swiss infos
163
+ # in 2.0
164
+ fachinfo = "A Fachinfo-Document"
165
+ fi_url = "http://host.domain/fi_path.rtf"
166
+ type "fi_url", fi_url
167
+ patinfo = "A Patinfo-Document"
168
+ pi_url = "http://host.domain/pi_path.rtf"
169
+ type "pi_url", pi_url
170
+
171
+ flexmock(Import::PharmNet::Import).new_instances\
172
+ .should_receive(:import_rtf).and_return { |key, agent, url, term|
173
+ assert_instance_of WWW::Mechanize, agent
174
+ assert_equal 'Product', term
175
+ case key
176
+ when :fachinfo
177
+ assert_equal fi_url, url
178
+ fachinfo
179
+ when :patinfo
180
+ assert_equal pi_url, url
181
+ patinfo
182
+ else
183
+ flunk "import_rtf was called with invalid key: #{key.inspect}"
184
+ end
185
+ }
186
+ =end
187
+
188
+ click "//input[@name='update']"
189
+ wait_for_page_to_load 30
190
+
191
+ assert !is_text_present('Der ATC-Code "A01AA01" ist nicht bekannt.')
192
+ assert !is_text_present("Die EU-Registrationsnummer '54321.5' (Product) ist bereits vergeben.")
193
+
194
+ assert_equal 'A01AA01', get_value('atc')
195
+ assert is_text_present('Assigned Atc-Class')
196
+ assert_equal '54321.5', get_value('registration')
197
+
198
+ =begin ## temporarily disabled: this should be recoded to work with swiss infos
199
+ # in 2.0
200
+ assert is_text_present("FI")
201
+ assert is_text_present("GI")
202
+ =end
203
+
204
+ assert_equal(atc, sequence.atc)
205
+ assert_equal('54321.5', sequence.code(:registration, 'EU').value)
206
+ =begin ## temporarily disabled: this should be recoded to work with swiss infos
207
+ assert_equal(fachinfo, sequence.fachinfo.de)
208
+ assert_equal(patinfo, sequence.patinfo.de)
209
+
210
+ [:atc, :fachinfo_url, :patinfo_url, :registration].each { |key|
211
+ =end
212
+ [:atc, :registration].each { |key|
213
+ assert_equal 'test.admin@oddb.org', sequence.data_origin(key)
214
+ }
215
+
216
+ end
217
+ def test_sequence__delete
218
+ sequence = setup_sequence
219
+ user = login_admin
220
+ uid = sequence.uid
221
+ open "/de/drugs/sequence/uid/#{uid}"
222
+ assert_equal "CH - ODDB.org | Medikamente | Sequenz | #{uid} | Open Drug Database", get_title
223
+
224
+ click "link=Produkt"
225
+ wait_for_page_to_load 30
226
+ link_loc = "link=#{uid}"
227
+
228
+ assert_equal "CH - ODDB.org | Medikamente | Produkt | #{sequence.product.uid} | Open Drug Database", get_title
229
+ assert is_element_present(link_loc)
230
+ click link_loc
231
+ wait_for_page_to_load 30
232
+
233
+ assert_equal "CH - ODDB.org | Medikamente | Sequenz | #{uid} | Open Drug Database", get_title
234
+
235
+ click "delete"
236
+ assert_equal "Wollen Sie diese Sequenz wirklich löschen?", get_confirmation
237
+
238
+ wait_for_page_to_load 30
239
+
240
+ assert_equal "CH - ODDB.org | Medikamente | Produkt | #{sequence.product.uid} | Open Drug Database", get_title
241
+ assert !is_element_present(link_loc)
242
+ end
243
+ def test_sequence__active_agents
244
+ sequence = setup_sequence
245
+
246
+ sub1 = ODDB::Drugs::Substance.new
247
+ sub1.name.de = 'Enalapril'
248
+ sub1.save
249
+
250
+ user = login_admin
251
+ uid = sequence.uid
252
+ open "/de/drugs/sequence/uid/#{uid}"
253
+
254
+ assert_equal "CH - ODDB.org | Medikamente | Sequenz | #{uid} | Open Drug Database", get_title
255
+ assert is_element_present("link=+")
256
+ assert is_element_present("link=-")
257
+
258
+ click "link=+"
259
+ assert is_text_present("(unsaved)")
260
+ sleep(0.5)
261
+ assert !is_element_present("link=+")
262
+ assert is_element_present("link=-")
263
+ assert is_element_present("substance[0][1]")
264
+ assert is_element_present("dose[0][1]")
265
+ refresh
266
+ wait_for_page_to_load 30
267
+
268
+ assert_equal "CH - ODDB.org | Medikamente | Sequenz | #{uid} | Open Drug Database", get_title
269
+ assert is_element_present("link=+")
270
+ assert is_element_present("link=-")
271
+ assert !is_element_present("substance[0][1]")
272
+ assert !is_element_present("dose[0][1]")
273
+
274
+ click "link=+"
275
+ assert is_text_present("(unsaved)")
276
+ sleep(0.5)
277
+ type "substance[0][1]", "Enalapril"
278
+ type "dose[0][1]", "50 mg"
279
+
280
+ click "update"
281
+ wait_for_page_to_load 30
282
+ assert !is_text_present("(unsaved)")
283
+
284
+ assert_equal 1, sequence.compositions.size
285
+ composition = sequence.compositions.first
286
+ assert_equal 2, composition.active_agents.size
287
+ agent = composition.active_agents.last
288
+ assert_equal sub1, agent.substance
289
+ assert_equal ODDB::Drugs::Dose.new(50, 'mg'), agent.dose
290
+
291
+ assert is_element_present("link=+")
292
+ assert is_element_present("link=-")
293
+ assert is_element_present("substance[0][1]")
294
+ assert is_element_present("dose[0][1]")
295
+ assert_equal "Enalapril", get_value("substance[0][1]")
296
+ assert_equal "50 mg", get_value("dose[0][1]")
297
+
298
+ click "link=+"
299
+ sleep(0.5)
300
+ assert is_element_present("substance[0][2]")
301
+ click "//table[@id='active-agents-0']//tr[4]//td[1]//a"
302
+ sleep(0.5)
303
+ assert is_element_present("link=+")
304
+ assert !is_element_present("substance[0][2]")
305
+
306
+ click "//table[@id='active-agents-0']//tr[3]//td[1]//a"
307
+ sleep(0.5)
308
+ assert !is_element_present("substance[0][1]")
309
+ assert_equal 1, composition.active_agents.size
310
+ end
311
+ def test_sequence__galenic_form
312
+ sequence = setup_sequence
313
+
314
+ sub1 = ODDB::Drugs::Substance.new
315
+ sub1.name.de = 'Enalapril'
316
+ sub1.save
317
+
318
+ user = login_admin
319
+ uid = sequence.uid
320
+ open "/de/drugs/sequence/uid/#{uid}"
321
+
322
+ assert_equal "CH - ODDB.org | Medikamente | Sequenz | #{uid} | Open Drug Database", get_title
323
+ assert is_element_present("galenic_form[0]")
324
+ assert_equal 'Tabletten', get_value("galenic_form[0]")
325
+
326
+ type "galenic_form[0]", ''
327
+ click "update"
328
+ wait_for_page_to_load 30
329
+
330
+ composition = sequence.compositions.first
331
+ assert_nil composition.galenic_form
332
+ assert_equal '', get_value("galenic_form[0]")
333
+
334
+ type "galenic_form[0]", 'Filmtabletten'
335
+ click "update"
336
+ wait_for_page_to_load 30
337
+
338
+ assert_nil composition.galenic_form
339
+ assert_equal 'Filmtabletten', get_value("galenic_form[0]")
340
+ assert is_text_present('Die Galenische Form "Filmtabletten" ist nicht bekannt')
341
+
342
+ refresh
343
+ wait_for_page_to_load 30
344
+
345
+ assert_nil composition.galenic_form
346
+ assert_equal '', get_value("galenic_form[0]")
347
+
348
+ galform = Drugs::GalenicForm.new
349
+ galform.description.de = 'Filmtabletten'
350
+ galform.save
351
+
352
+ type "galenic_form[0]", 'Filmtabletten'
353
+ click "update"
354
+ wait_for_page_to_load 30
355
+
356
+ assert_equal galform, composition.galenic_form
357
+ assert_equal 'Filmtabletten', get_value("galenic_form[0]")
358
+ end
359
+ def test_sequence__compositions
360
+ sequence = setup_sequence
361
+
362
+ sub1 = ODDB::Drugs::Substance.new
363
+ sub1.name.de = 'Enalapril'
364
+ sub1.save
365
+
366
+ user = login_admin
367
+ uid = sequence.uid
368
+ open "/de/drugs/sequence/uid/#{uid}"
369
+
370
+ assert_equal "CH - ODDB.org | Medikamente | Sequenz | #{uid} | Open Drug Database", get_title
371
+ assert is_element_present("link=Bestandteil hinzufügen")
372
+ assert is_element_present("link=Bestandteil löschen")
373
+
374
+ click "link=Bestandteil hinzufügen"
375
+ sleep(0.5)
376
+ assert is_text_present("(unsaved)")
377
+ assert !is_element_present("link=Bestandteil hinzufügen")
378
+ assert is_element_present("link=Bestandteil löschen")
379
+ assert is_element_present("substance[1][0]")
380
+ assert is_element_present("dose[1][0]")
381
+ refresh
382
+ wait_for_page_to_load 30
383
+
384
+ assert_equal "CH - ODDB.org | Medikamente | Sequenz | #{uid} | Open Drug Database", get_title
385
+ assert is_element_present("link=Bestandteil hinzufügen")
386
+ assert is_element_present("link=Bestandteil löschen")
387
+ assert !is_element_present("substance[1][0]")
388
+ assert !is_element_present("dose[1][0]")
389
+
390
+ click "link=Bestandteil hinzufügen"
391
+ sleep(0.5)
392
+ assert is_text_present("(unsaved)")
393
+ type "substance[1][0]", "Enalapril"
394
+ type "dose[1][0]", "50 mg"
395
+
396
+ click "update"
397
+ wait_for_page_to_load 30
398
+
399
+ assert !is_text_present("(unsaved)")
400
+ assert_equal 2, sequence.compositions.size
401
+ composition = sequence.compositions.last
402
+ assert_equal 1, composition.active_agents.size
403
+ agent = composition.active_agents.last
404
+ assert_equal sub1, agent.substance
405
+ assert_equal ODDB::Drugs::Dose.new(50, 'mg'), agent.dose
406
+
407
+ assert is_element_present("link=Bestandteil hinzufügen")
408
+ assert is_element_present("link=Bestandteil löschen")
409
+ assert is_element_present("substance[1][0]")
410
+ assert is_element_present("dose[1][0]")
411
+ assert_equal "Enalapril", get_value("substance[1][0]")
412
+ assert_equal "50 mg", get_value("dose[1][0]")
413
+
414
+ click "//table[@id='active-agents-1']//a[text()='Bestandteil löschen']"
415
+ sleep(0.5)
416
+ assert !is_element_present("substance[1][0]")
417
+ composition = sequence.compositions.last
418
+ assert_equal 1, composition.active_agents.size
419
+ end
420
+ def test_new_sequence__success
421
+ sequence = setup_sequence
422
+ user = login_admin
423
+ product = sequence.product
424
+ uid = product.uid
425
+ open "/de/drugs/product/uid/#{uid}"
426
+ assert_equal "CH - ODDB.org | Medikamente | Produkt | #{uid} | Open Drug Database", get_title
427
+
428
+ click "new_sequence"
429
+ wait_for_page_to_load 30
430
+ assert_equal "CH - ODDB.org | Medikamente | Neue Sequenz | Open Drug Database", get_title
431
+
432
+ atc = Drugs::Atc.new('A01AA01')
433
+ atc.name.de = "Assigned Atc-Class"
434
+ atc.save
435
+
436
+ type 'registration', '54321.5'
437
+ type 'atc', 'A01AA01'
438
+
439
+ =begin ## temporarily disabled: this should be recoded to work with swiss infos
440
+ # in 2.0
441
+ fachinfo = "A Fachinfo-Document"
442
+ fi_url = "http://host.domain/fi_path.rtf"
443
+ type "fachinfo_url", fi_url
444
+ patinfo = "A Patinfo-Document"
445
+ pi_url = "http://host.domain/pi_path.rtf"
446
+ type "patinfo_url", pi_url
447
+
448
+ flexmock(Import::PharmNet::Import).new_instances\
449
+ .should_receive(:import_rtf).and_return { |key, agent, url, term|
450
+ assert_instance_of WWW::Mechanize, agent
451
+ assert_equal 'Product', term
452
+ case key
453
+ when :fachinfo
454
+ assert_equal fi_url, url
455
+ fachinfo
456
+ when :patinfo
457
+ assert_equal pi_url, url
458
+ patinfo
459
+ else
460
+ flunk "import_rtf was called with invalid key: #{key.inspect}"
461
+ end
462
+ }
463
+ =end
464
+
465
+ click "//input[@name='update']"
466
+ wait_for_page_to_load 30
467
+
468
+ assert !is_text_present('Der ATC-Code "A01AA01" ist nicht bekannt.')
469
+ assert !is_text_present("Die EU-Registrationsnummer '54321.5' (Product) ist bereits vergeben.")
470
+
471
+ assert_equal 'A01AA01', get_value('atc')
472
+ assert is_text_present('Assigned Atc-Class')
473
+ assert_equal '54321.5', get_value('registration')
474
+ =begin ## temporarily disabled: this should be recoded to work with swiss infos
475
+ # in 2.0
476
+ assert is_text_present("FI")
477
+ assert is_text_present("GI")
478
+ =end
479
+
480
+ assert_equal(2, product.sequences.size)
481
+ sequence = product.sequences.last
482
+
483
+ assert_equal(atc, sequence.atc)
484
+ assert_equal('54321.5', sequence.code(:registration, 'EU').value)
485
+ =begin ## temporarily disabled: this should be recoded to work with swiss infos
486
+ # in 2.0
487
+ assert_equal(fachinfo, sequence.fachinfo.de)
488
+ assert_equal(patinfo, sequence.patinfo.de)
489
+
490
+ [:atc, :fachinfo_url, :patinfo_url, :registration].each { |key|
491
+ =end
492
+ [:atc, :registration].each { |key|
493
+ assert_equal 'test.admin@oddb.org', sequence.data_origin(key)
494
+ }
495
+
496
+ end
497
+ def test_new_sequence__errors
498
+ sequence = setup_sequence
499
+ user = login_admin
500
+ product = sequence.product
501
+ uid = product.uid
502
+ open "/de/drugs/product/uid/#{uid}"
503
+ assert_equal "CH - ODDB.org | Medikamente | Produkt | #{uid} | Open Drug Database", get_title
504
+
505
+ click "new_sequence"
506
+ wait_for_page_to_load 30
507
+ assert_equal "CH - ODDB.org | Medikamente | Neue Sequenz | Open Drug Database", get_title
508
+ assert !is_element_present('new_package')
509
+
510
+ type 'registration', '12345.0'
511
+ type 'atc', 'A01AA01'
512
+
513
+ click "//input[@name='update']"
514
+ wait_for_page_to_load 30
515
+
516
+ #assert is_text_present('Der ATC-Code "A01AA01" ist nicht bekannt.')
517
+ assert is_text_present("Die EU-Registrationsnummer '12345.0' (Product) ist bereits vergeben.")
518
+
519
+ assert_equal 'A01AA01', get_value('atc')
520
+ assert_equal '12345.0', get_value('registration')
521
+
522
+ assert_equal(1, product.sequences.size)
523
+ end
524
+ def test_new_sequence__delete
525
+ sequence = setup_sequence
526
+ user = login_admin
527
+ uid = sequence.product.uid
528
+ open "/de/drugs/product/uid/#{uid}"
529
+ assert_equal "CH - ODDB.org | Medikamente | Produkt | #{uid} | Open Drug Database", get_title
530
+
531
+ click "new_sequence"
532
+ wait_for_page_to_load 30
533
+ assert_equal "CH - ODDB.org | Medikamente | Neue Sequenz | Open Drug Database", get_title
534
+
535
+ click "delete"
536
+ wait_for_page_to_load 30
537
+ assert_equal "CH - ODDB.org | Medikamente | Produkt | #{uid} | Open Drug Database", get_title
538
+
539
+ assert_equal 1, sequence.product.sequences.size
540
+ end
541
+ end
542
+ end
543
+ end