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,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