ramaze.ch.oddb.org 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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,32 @@
1
+ #!/usr/bin/env ruby
2
+ # Drugs::TestPart -- de.oddb.org -- 22.11.2006 -- hwyss@ywesee.com
3
+
4
+ $: << File.expand_path('../../lib', File.dirname(__FILE__))
5
+
6
+ require 'test/unit'
7
+ require 'oddb/drugs/part'
8
+
9
+ module ODDB
10
+ module Drugs
11
+ class TestPart < Test::Unit::TestCase
12
+ def setup
13
+ @part = Part.new
14
+ end
15
+ def test_size_writer
16
+ @part.size = 1.5
17
+ assert_instance_of(Float, @part.size)
18
+ assert_equal(1.5, @part.size)
19
+ @part.size = 5
20
+ assert_instance_of(Fixnum, @part.size)
21
+ assert_equal(5, @part.size)
22
+ end
23
+ def test_comparable_size
24
+ assert_equal(Dose.new(1), @part.comparable_size)
25
+ @part.size = "4.5"
26
+ assert_equal(Dose.new(4.5), @part.comparable_size)
27
+ @part.quantity = Dose.new(20, 'ml')
28
+ assert_equal(Dose.new(90, 'ml'), @part.comparable_size)
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,31 @@
1
+ #!/usr/bin/env ruby
2
+ # Drugs::TestProduct -- de.oddb.org -- 09.08.2006 -- hwyss@ywesee.com
3
+
4
+ $: << File.expand_path('../../lib', File.dirname(__FILE__))
5
+
6
+ require 'flexmock'
7
+ require 'test/unit'
8
+ require 'oddb/drugs/product'
9
+
10
+ module ODDB
11
+ module Drugs
12
+ class TestProduct < Test::Unit::TestCase
13
+ include FlexMock::TestCase
14
+ def setup
15
+ @product = Product.new
16
+ end
17
+ def test_name
18
+ assert_instance_of(Util::Multilingual, @product.name)
19
+ end
20
+ def test_packages
21
+ seq1 = flexmock('sequence')
22
+ seq2 = flexmock('sequence')
23
+ seq1.should_receive(:packages).and_return(%w{foo bar})
24
+ seq2.should_receive(:packages).and_return(%w{baz})
25
+ @product.add_sequence(seq1)
26
+ @product.add_sequence(seq2)
27
+ assert_equal(%w{foo bar baz}, @product.packages)
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,140 @@
1
+ #!/usr/bin/env ruby
2
+ # Drugs::TestSequence -- de.oddb.org -- 10.11.2006 -- hwyss@ywesee.com
3
+
4
+ $: << File.expand_path('../../lib', File.dirname(__FILE__))
5
+
6
+ require 'flexmock'
7
+ require 'test/unit'
8
+ require 'oddb/drugs/ddd'
9
+ require 'oddb/drugs/sequence'
10
+
11
+ module ODDB
12
+ module Drugs
13
+ class TestSequence < Test::Unit::TestCase
14
+ include FlexMock::TestCase
15
+ def setup
16
+ @sequence = Sequence.new
17
+ end
18
+ def test_comparable
19
+ other = Sequence.new
20
+ third = Sequence.new
21
+ assert_equal(true, @sequence.comparable?(other))
22
+ assert_equal(true, other.comparable?(@sequence))
23
+ assert_equal(true, @sequence.comparable?(third))
24
+ assert_equal(true, third.comparable?(@sequence))
25
+
26
+ comp1 = flexmock('composition')
27
+ @sequence.add_composition(comp1)
28
+ assert_equal(false, @sequence.comparable?(other))
29
+ assert_equal(false, other.comparable?(@sequence))
30
+
31
+ other.add_composition(comp1)
32
+ assert_equal(true, @sequence.comparable?(other))
33
+ assert_equal(true, other.comparable?(@sequence))
34
+
35
+ comp2 = flexmock('other composition')
36
+ third.add_composition(comp2)
37
+ assert_equal(false, @sequence.comparable?(third))
38
+ assert_equal(false, third.comparable?(@sequence))
39
+
40
+ @sequence.add_composition(comp2)
41
+ other.add_composition(comp2)
42
+ third.add_composition(comp1)
43
+ assert_equal(true, @sequence.comparable?(other))
44
+ assert_equal(true, other.comparable?(@sequence))
45
+ assert_equal(false, @sequence.comparable?(third))
46
+ assert_equal(false, third.comparable?(@sequence))
47
+ end
48
+ def test_comparables
49
+ seq1 = Sequence.new
50
+ seq2 = Sequence.new
51
+ atc = flexmock('atc')
52
+ atc.should_receive(:sequences)\
53
+ .and_return([seq1, @sequence, seq2])
54
+ atc.should_ignore_missing
55
+ @sequence.atc = atc
56
+
57
+ comp1 = flexmock('composition')
58
+ @sequence.add_composition(comp1)
59
+ seq1.add_composition(comp1)
60
+ comp2 = flexmock('composition')
61
+ seq2.add_composition(comp2)
62
+
63
+ assert_equal([seq1, @sequence], @sequence.comparables)
64
+ end
65
+ def test_ddds
66
+ ddd1 = Drugs::Ddd.new('O')
67
+ ddd2 = Drugs::Ddd.new('P')
68
+ atc = flexmock('atc')
69
+ atc.should_ignore_missing
70
+ atc.should_receive(:ddds).and_return([ddd1, ddd2])
71
+ @sequence.atc = atc
72
+
73
+ comp1 = flexmock('composition')
74
+ comp1.should_ignore_missing
75
+ @sequence.add_composition(comp1)
76
+ assert_equal([], @sequence.ddds)
77
+
78
+ form1 = flexmock('galenic_form')
79
+ form1.should_ignore_missing
80
+ comp1.should_receive(:galenic_form).and_return(form1)
81
+ assert_equal([], @sequence.ddds)
82
+
83
+ group1 = flexmock('galenic_group')
84
+ group1.should_ignore_missing
85
+ form1.should_receive(:group).and_return(group1)
86
+ assert_equal([], @sequence.ddds)
87
+
88
+ group1.should_receive(:administration).and_return('O')
89
+ assert_equal([ddd1], @sequence.ddds)
90
+ end
91
+ def test_include
92
+ sub1 = flexmock('substance')
93
+ sub2 = flexmock('substance')
94
+ assert_equal(false, @sequence.include?(sub1, 10, 'mg'))
95
+ assert_equal(false, @sequence.include?(sub2, 10, 'mg'))
96
+ comp = flexmock('composition')
97
+ @sequence.add_composition(comp)
98
+ comp.should_receive(:include?).and_return { |sub, dose, unit|
99
+ assert_equal(10, dose)
100
+ assert_equal('mg', unit)
101
+ sub == sub1
102
+ }
103
+ assert_equal(true, @sequence.include?(sub1, 10, 'mg'))
104
+ assert_equal(false, @sequence.include?(sub2, 10, 'mg'))
105
+ end
106
+ def test_identical
107
+ other = Sequence.new
108
+ third = Sequence.new
109
+ assert_equal(true, @sequence.identical?(other))
110
+ assert_equal(true, other.identical?(@sequence))
111
+ assert_equal(true, @sequence.identical?(third))
112
+ assert_equal(true, third.identical?(@sequence))
113
+
114
+ comp1 = flexmock('composition')
115
+ comp1.should_ignore_missing
116
+ @sequence.add_composition(comp1)
117
+ assert_equal(false, @sequence.identical?(other))
118
+ assert_equal(false, other.identical?(@sequence))
119
+
120
+ other.add_composition(comp1)
121
+ assert_equal(true, @sequence.identical?(other))
122
+ assert_equal(true, other.identical?(@sequence))
123
+
124
+ comp2 = flexmock('other composition')
125
+ comp2.should_ignore_missing
126
+ third.add_composition(comp2)
127
+ assert_equal(false, @sequence.identical?(third))
128
+ assert_equal(false, third.identical?(@sequence))
129
+
130
+ @sequence.add_composition(comp2)
131
+ other.add_composition(comp2)
132
+ third.add_composition(comp1)
133
+ assert_equal(true, @sequence.identical?(other))
134
+ assert_equal(true, other.identical?(@sequence))
135
+ assert_equal(false, @sequence.identical?(third))
136
+ assert_equal(false, third.identical?(@sequence))
137
+ end
138
+ end
139
+ end
140
+ end
@@ -0,0 +1,51 @@
1
+ #!/usr/bin/env ruby
2
+ # Drugs::TestSubstance -- de.oddb.org -- 13.11.2006 -- hwyss@ywesee.com
3
+
4
+ $: << File.expand_path('../../lib', File.dirname(__FILE__))
5
+
6
+ require 'flexmock'
7
+ require 'test/unit'
8
+ require 'oddb/drugs/substance'
9
+
10
+ module ODDB
11
+ module Drugs
12
+ class TestSubstance < Test::Unit::TestCase
13
+ include FlexMock::TestCase
14
+ def setup
15
+ @substance = Substance.new
16
+ end
17
+ def test_group_writer
18
+ group = flexmock('group')
19
+ group.should_receive(:add_substance).times(1).with(@substance)
20
+ group.should_receive(:save).times(2)
21
+ assert_nil(@substance.group)
22
+ @substance.group = group
23
+ assert_equal(group, @substance.group)
24
+ @substance.group = group
25
+ assert_equal(group, @substance.group)
26
+ other = flexmock('other group')
27
+ group.should_receive(:remove_substance).times(1).with(@substance)
28
+ other.should_receive(:add_substance).times(1).with(@substance)
29
+ other.should_receive(:save).times(2)
30
+ @substance.group = other
31
+ assert_equal(other, @substance.group)
32
+ other.should_receive(:remove_substance).times(1).with(@substance)
33
+ @substance.group = nil
34
+ assert_nil(@substance.group)
35
+ end
36
+ def test_merge
37
+ @substance.name.de = 'Original'
38
+ other = Substance.new
39
+ other.name.de = 'Merged'
40
+ agent = flexmock('ActiveAgent')
41
+ other.instance_variable_set('@active_agents', [agent])
42
+ agent.should_receive(:substance=).with(@substance).times(1)
43
+ agent.should_receive(:save).times(1)
44
+ agent.should_ignore_missing
45
+ @substance.merge(other)
46
+ assert_equal 'Original', @substance.name.de
47
+ assert_equal ['Original', 'Merged'], @substance.name.all
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,27 @@
1
+ #!/usr/bin/env ruby
2
+ # Drugs::TestSubstanceGroup -- de.oddb.org -- 13.11.2006 -- hwyss@ywesee.com
3
+
4
+ $: << File.expand_path('../../lib', File.dirname(__FILE__))
5
+
6
+ require 'flexmock'
7
+ require 'test/unit'
8
+ require 'oddb/drugs/substance_group'
9
+
10
+ module ODDB
11
+ module Drugs
12
+ class TestSubstanceGroup < Test::Unit::TestCase
13
+ include FlexMock::TestCase
14
+ def setup
15
+ @group = SubstanceGroup.new
16
+ end
17
+ def test_add_substance
18
+ assert_equal([], @group.substances)
19
+ sub = flexmock('substance')
20
+ @group.add_substance(sub)
21
+ assert_equal([sub], @group.substances)
22
+ @group.add_substance(sub)
23
+ assert_equal([sub], @group.substances)
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,94 @@
1
+ #!/usr/bin/env ruby
2
+ # encoding: utf-8
3
+ # Export::TestRss -- de.oddb.org -- 10.12.2007 -- hwyss@ywesee.com
4
+
5
+ $: << File.expand_path('..', File.dirname(__FILE__))
6
+ $: << File.expand_path('../../lib', File.dirname(__FILE__))
7
+
8
+ require 'flexmock'
9
+ require 'oddb/export/rss'
10
+ require 'oddb/util/code'
11
+ require 'stub/model'
12
+ require 'test/unit'
13
+ require 'rss/rss'
14
+
15
+ module ODDB
16
+ module Export
17
+ module Rss
18
+ class TestFeedback < Test::Unit::TestCase
19
+ include FlexMock::TestCase
20
+ def setup
21
+ ARGV.push ''
22
+ @exporter = Feedback.new
23
+ @f1 = Util::Feedback.new
24
+ @f1.time = Time.now
25
+ @f1.name = "Test User"
26
+ @f1.message = "Test Message"
27
+ @f1.email = "test@email.com"
28
+ @f1.item_good_impression = true
29
+ @f1.save
30
+ @i1 = flexmock('package')
31
+ @i1.should_receive(:code).with(:cid).and_return {
32
+ Util::Code.new(:cid, 12345, 'CH') }
33
+ @i1.should_receive(:name).and_return('Product')
34
+ @i1.should_ignore_missing
35
+ u1 = Drugs::Unit.new
36
+ u1.name.de = 'Tabletten'
37
+ p1 = flexmock('part')
38
+ p1.should_receive(:size).and_return(10)
39
+ p1.should_receive(:unit).and_return(u1)
40
+ p1.should_receive(:multi).and_return nil
41
+ p1.should_receive(:quantity).and_return nil
42
+ p1.should_ignore_missing
43
+ @i1.should_receive(:parts).and_return([p1])
44
+ @f1.item = @i1
45
+ @f2 = Util::Feedback.new
46
+ @f2.time = Time.now
47
+ @f2.save
48
+ super
49
+ end
50
+ def teardown
51
+ Util::Feedback.instances.clear
52
+ super
53
+ end
54
+ def test_sorted_feedbacks
55
+ assert_equal([@f2, @f1], @exporter.sorted_items)
56
+ end
57
+ def test_rss
58
+ # note: only one feedback should be reported, because @f2.item is nil.
59
+ expected = <<-EOS
60
+ <?xml version=\"1.0\" encoding=\"UTF-8\"?>
61
+ <?xml-stylesheet href=\"http://ch.oddb.org/resources/oddb/oddb.css\" type=\"text/css\"?>
62
+ <rss version=\"2.0\"
63
+ xmlns:content=\"http://purl.org/rss/1.0/modules/content/\"
64
+ xmlns:dc=\"http://purl.org/dc/elements/1.1/\"
65
+ xmlns:trackback=\"http://madskills.com/public/xml/rss/module/trackback/\"
66
+ xmlns:itunes=\"http://www.itunes.com/dtds/podcast-1.0.dtd\">
67
+ <channel>
68
+ <title>Patienten- und Ärztefeedback zu Medikamenten</title>
69
+ <link>http://ch.oddb.org/de/home/</link>
70
+ <description>Patienten- und Ärztefeedback zu Medikamenten im Schweizer Gesundheitsmarkt</description>
71
+ <language>de</language>
72
+ <item>
73
+ <title>Feedback zu Product in der Handelsform: 10 Tabletten</title>
74
+ <link>http://ch.oddb.org/de/feedback/cid/12345/index/1</link>
75
+ <description>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.01//EN&quot; &quot;http://www.w3.org/TR/html4/strict.dtd&quot;&gt;&lt;HTML&gt;&lt;HEAD&gt;&lt;TITLE&gt;CH - ODDB.org&lt;/TITLE&gt;&lt;LINK rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;http://ch.oddb.org/resources/oddb/oddb.css&quot;&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;&lt;TABLE cellspacing=&quot;0&quot;&gt;&lt;TR&gt;&lt;TD colspan=&quot;2&quot;&gt;Feedback von Test User&lt;br/&gt;erstellt am: #{@f1.time.strftime("%A, %d. %B %Y - %H:%M")}&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;LABEL for=&quot;email&quot;&gt;E-Mail&lt;/LABEL&gt;&lt;/TD&gt;&lt;TD&gt;E-Mail wird nicht angezeigt.&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD class=&quot;top&quot;&gt;&lt;LABEL for=&quot;message&quot;&gt;Feedback&lt;/LABEL&gt;&lt;/TD&gt;&lt;TD&gt;Test Message&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;LABEL&gt;Persönliche Erfahrung&lt;/LABEL&gt;&lt;/TD&gt;&lt;TD&gt;&lt;DIV class=&quot;square minus&quot;&gt;-&lt;/DIV&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;LABEL&gt;Empfehlung&lt;/LABEL&gt;&lt;/TD&gt;&lt;TD&gt;&lt;DIV class=&quot;square minus&quot;&gt;-&lt;/DIV&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;LABEL&gt;Persönlicher Eindruck&lt;/LABEL&gt;&lt;/TD&gt;&lt;TD&gt;&lt;DIV class=&quot;square plus&quot;&gt;+&lt;/DIV&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;LABEL&gt;Wirkung&lt;/LABEL&gt;&lt;/TD&gt;&lt;TD&gt;&lt;DIV class=&quot;square minus&quot;&gt;-&lt;/DIV&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;A name=&quot;feedback_feed_link&quot; href=&quot;http://ch.oddb.org/de/feedbacks/cid/12345&quot;&gt;&lt;/A&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
76
+ <author>ch.oddb.org</author>
77
+ <pubDate>#{@f1.time.rfc2822}</pubDate>
78
+ <guid isPermaLink=\"true\">http://ch.oddb.org/de/feedback/cid/12345/index/1</guid>
79
+ <dc:date>#{@f1.time.w3cdtf}</dc:date>
80
+ </item>
81
+ </channel>
82
+ </rss>
83
+ EOS
84
+ # 2009-06-29 17:01:28 +0200
85
+ session = Export::SessionStub.new
86
+ session.language = 'de'
87
+ session.lookandfeel = Html::Util::Lookandfeel.new(session)
88
+ result = @exporter.rss [@f2, @f1], session
89
+ assert_equal expected.strip, result
90
+ end
91
+ end
92
+ end
93
+ end
94
+ end
@@ -0,0 +1,117 @@
1
+ #!/usr/bin/env ruby
2
+ # Export::TestServer -- de.oddb.org -- 03.10.2007 -- hwyss@ywesee.com
3
+
4
+
5
+ $: << File.expand_path('../../lib', File.dirname(__FILE__))
6
+
7
+ require 'oddb/config'
8
+ require 'test/unit'
9
+ require 'oddb/export/server'
10
+ require 'flexmock'
11
+
12
+ module ODDB
13
+ module Export
14
+ class TestServer < Test::Unit::TestCase
15
+ include FlexMock::TestCase
16
+ def setup
17
+ @data_dir = File.expand_path('var/xls', File.dirname(__FILE__))
18
+ FileUtils.mkdir_p(@data_dir)
19
+ end
20
+ def test_run
21
+ flexmock(Util::Mail).should_receive(:notify_admins)\
22
+ .and_return { |subj, body| flunk(body.join("\n")) }
23
+ klass = flexmock(Export::Xls::ComparisonDeCh)
24
+ ODDB.config.remote_databases = []
25
+ assert_nothing_raised {
26
+ Server.run(Date.new(2007))
27
+ }
28
+ exp = flexmock('exp')
29
+ path = File.join(@data_dir, 'chde.xls')
30
+ remote = flexmock('remote')
31
+ drb = DRb.start_service('druby://localhost:0', remote)
32
+ klass.should_receive(:new).and_return(exp)
33
+ exp.should_receive(:export).and_return { |uri, file|
34
+ assert_equal(drb.uri, uri)
35
+ assert_instance_of(File, file)
36
+ assert_equal(path, file.path)
37
+ }
38
+ ODDB.config.remote_databases = [drb.uri]
39
+ remote.should_receive(:remote_export).and_return { |file, block|
40
+ assert_equal("chde.xls", file)
41
+ block.call(path) }
42
+ Server.run(Date.new(2007))
43
+ end
44
+ def test_remote_export_chde
45
+ flexmock(Util::Mail).should_receive(:notify_admins)\
46
+ .and_return { |subj, body| flunk(body.join("\n")) }
47
+ klass = flexmock(Export::Xls::ComparisonDeCh)
48
+ ODDB.config.remote_databases = []
49
+ assert_nothing_raised {
50
+ Server.remote_export_chde
51
+ }
52
+ exp = flexmock('exp')
53
+ path = File.join(@data_dir, 'chde.xls')
54
+ remote = flexmock('remote')
55
+ drb = DRb.start_service('druby://localhost:0', remote)
56
+ klass.should_receive(:new).and_return(exp)
57
+ exp.should_receive(:export).and_return { |uri, file|
58
+ assert_equal(drb.uri, uri)
59
+ assert_instance_of(File, file)
60
+ assert_equal(path, file.path)
61
+ }
62
+ ODDB.config.remote_databases = [drb.uri]
63
+ remote.should_receive(:remote_export).and_return { |file, block|
64
+ assert_equal("chde.xls", file)
65
+ block.call(path) }
66
+ Server.remote_export_chde
67
+ end
68
+ def test_remote_export_yaml
69
+ flexmock(Util::Mail).should_receive(:notify_admins)\
70
+ .and_return { |subj, body| flunk(body.join("\n")) }
71
+ klass = flexmock(Export::Yaml::Drugs)
72
+ ODDB.config.remote_databases = []
73
+ assert_nothing_raised {
74
+ Server.remote_export_yaml
75
+ }
76
+ exp = flexmock('exp')
77
+ path = File.join(@data_dir, 'de.oddb.yaml')
78
+ remote = flexmock('remote')
79
+ drb = DRb.start_service('druby://localhost:0', remote)
80
+ klass.should_receive(:new).and_return(exp)
81
+ exp.should_receive(:export).and_return { |file|
82
+ assert_instance_of(File, file)
83
+ assert_equal(path, file.path)
84
+ }
85
+ ODDB.config.remote_databases = [drb.uri]
86
+ remote.should_receive(:remote_export).and_return { |file, block|
87
+ assert_equal("de.oddb.yaml", file)
88
+ block.call(path) }
89
+ Server.remote_export_yaml
90
+ end
91
+ def test_on_monthday
92
+ called = false
93
+ Server.on_monthday(3, Date.new(2007,10)) {
94
+ called = true
95
+ }
96
+ assert_equal(false, called, "Should not have called the block: 3 != 1")
97
+ Server.on_monthday(3, Date.new(2007,10,3)) {
98
+ called = true
99
+ }
100
+ assert_equal(true, called, "Should have called the block: 3 == 3")
101
+ called = false
102
+ Server.on_monthday(Date.today.day) {
103
+ called = true
104
+ }
105
+ assert_equal(true, called,
106
+ "Should have called the block: defaults to today")
107
+ end
108
+ def test_safe_export
109
+ flexmock(Util::Mail).should_receive(:notify_admins).times(1)
110
+ klass = Struct.new(:foo, :bar)
111
+ Server.safe_export(klass) { |exporter|
112
+ assert_instance_of(klass, exporter)
113
+ raise "exception - admins should be notified" }
114
+ end
115
+ end
116
+ end
117
+ end