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,15 @@
1
+ #!/usr/bin/env ruby
2
+ # suite.rb -- oddb -- 08.09.2006 -- hwyss@ywesee.com
3
+
4
+ require 'find'
5
+
6
+ here = File.dirname(__FILE__)
7
+
8
+ $: << here
9
+ require 'selenium/unit'
10
+
11
+ Find.find(here) { |file|
12
+ if /test_.*\.rb$/o.match(file)
13
+ require file
14
+ end
15
+ }
@@ -0,0 +1,83 @@
1
+ #!/usr/bin/env ruby
2
+ # TestModel -- de.oddb.org -- 12.09.2006 -- hwyss@ywesee.com
3
+
4
+ $: << File.expand_path('../lib', File.dirname(__FILE__))
5
+
6
+ require 'flexmock'
7
+ require 'test/unit'
8
+ require 'oddb/model'
9
+
10
+ module ODDB
11
+ class TestModel < Test::Unit::TestCase
12
+ include FlexMock::TestCase
13
+ class Foo < Model
14
+ multilingual :name
15
+ has_many :difficulties, on_delete(:cascade)
16
+ end
17
+ class Bar < Model
18
+ has_many :not_in_foos
19
+ end
20
+ class Baz < Model
21
+ belongs_to :foo, on_save(:cascade)
22
+ end
23
+ class SelfName < Model
24
+ end
25
+ def setup
26
+ @foo = Foo.new
27
+ end
28
+ def test_multilingual
29
+ assert_respond_to(@foo, :name)
30
+ assert_instance_of(Util::Multilingual, @foo.name)
31
+ end
32
+ def test_has_many
33
+ assert_equal([:@difficulties], Foo.connectors)
34
+ assert_respond_to(@foo, :difficulties)
35
+ assert_equal([], @foo.difficulties)
36
+ assert_respond_to(@foo, :add_difficulty)
37
+ @foo.add_difficulty('a difficult String')
38
+ assert_equal(['a difficult String'], @foo.difficulties)
39
+ assert_respond_to(@foo, :remove_difficulty)
40
+ @foo.remove_difficulty('a difficult String')
41
+ assert_equal([], @foo.difficulties)
42
+ end
43
+ def test_belongs_to
44
+ baz = Baz.new
45
+ assert_respond_to(baz, :foo)
46
+ assert_respond_to(baz, :foo=)
47
+ assert_nil(baz.foo)
48
+ foo = flexmock('foo')
49
+ foo.should_receive(:add_baz).times(1).with(baz)
50
+ foo.should_receive(:save).times(2)
51
+ baz.foo = foo
52
+ assert_equal(foo, baz.foo)
53
+ baz.foo = foo
54
+ assert_equal(foo, baz.foo)
55
+ other = flexmock('other')
56
+ foo.should_receive(:remove_baz).times(1).with(baz)
57
+ other.should_receive(:add_baz).times(1).with(baz)
58
+ other.should_receive(:save).times(2)
59
+ baz.foo = other
60
+ assert_equal(other, baz.foo)
61
+ other.should_receive(:remove_baz).times(1).with(baz)
62
+ baz.foo = nil
63
+ assert_nil(baz.foo)
64
+ end
65
+ def test_singular
66
+ assert_equal('self_name', SelfName.singular)
67
+ end
68
+ def test_predicates__on_delete__cascade
69
+ diff = flexmock('Difficulty')
70
+ @foo.add_difficulty(diff)
71
+ diff.should_receive(:delete).times(1).and_return { assert(true) }
72
+ @foo.delete
73
+ end
74
+ def test_predicates__on_save__cascade
75
+ baz = Baz.new
76
+ foo = flexmock('foo')
77
+ foo.should_receive(:add_baz)
78
+ foo.should_receive(:save).times(2).and_return { assert(true) }
79
+ baz.foo = foo
80
+ baz.save
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,74 @@
1
+ #!/usr/bin/env ruby
2
+ # Util::TestCode -- de.oddb.org -- 12.09.2006 -- hwyss@ywesee.com
3
+
4
+
5
+ $: << File.expand_path('../../lib', File.dirname(__FILE__))
6
+
7
+ require 'test/unit'
8
+ require 'oddb/util/code'
9
+
10
+ module ODDB
11
+ module Util
12
+ class TestCode < Test::Unit::TestCase
13
+ def test_registration_ch
14
+ code = Code.new(:registration, 245, 'ch')
15
+ assert_equal("CH", code.country)
16
+ assert_equal("%05i", code.format)
17
+ assert_equal("00245", code.to_s)
18
+ end
19
+ def test_equal
20
+ code1 = Code.new(:registration, 245, 'ch')
21
+ code2 = Code.new(:registration, 245, 'ch')
22
+ code3 = Code.new(:registration, 245, 'de')
23
+ code4 = Code.new(:registration, 246, 'ch')
24
+ code5 = Code.new(:substance, 245, 'ch')
25
+ assert_equal(true, code1 == code2)
26
+ assert_equal(true, code2 == code1)
27
+ assert_equal(false, code1 == code3)
28
+ assert_equal(false, code3 == code1)
29
+ assert_equal(false, code1 == code4)
30
+ assert_equal(false, code4 == code1)
31
+ assert_equal(false, code1 == code5)
32
+ assert_equal(false, code5 == code1)
33
+ assert_equal(true, [code1].include?(code2))
34
+ assert_equal(false, [code1].include?(code3))
35
+ assert_equal(false, [code1].include?(code4))
36
+ assert_equal(false, [code1].include?(code5))
37
+ assert_equal(true, code5 == 245)
38
+ end
39
+ def test_format
40
+ code1 = Code.new(:registration, 245, 'ch')
41
+ code1.format = "code:%05i"
42
+ assert_equal("code:00245", code1.to_s)
43
+ end
44
+ def test_hash_key
45
+ code1 = Code.new(:registration, 245, 'ch')
46
+ code2 = Code.new(:registration, 245, 'ch')
47
+ code3 = Code.new(:registration, 245, 'de')
48
+ assert_equal("found", {code1 => "found"}[code2])
49
+ assert_nil({code1 => "found"}[code3])
50
+ end
51
+ def test_dated_values
52
+ code = Code.new(:registration, 245, 'ch')
53
+ assert_equal("00245", code.to_s)
54
+ code.value = 244, Date.today - 10
55
+ assert_equal(245, code.value)
56
+ assert_equal(244, code.value(Date.today - 1))
57
+ code.value = 246, Date.today + 10
58
+ assert_equal(245, code.value)
59
+ assert_equal(244, code.value(Date.today - 1))
60
+ assert_equal(245, code.value(Date.today + 1))
61
+ assert_equal(246, code.value(Date.today + 10))
62
+ end
63
+ def test_include
64
+ code1 = Code.new(:registration, 245, 'ch')
65
+ code2 = Code.new(:registration, 245, 'de')
66
+ code = Code.new(:registration, 245, 'ch')
67
+ assert_equal(true, [code1].include?(code))
68
+ assert_equal(false, [code2].include?(code))
69
+ assert_equal(true, {code1 => true}.include?(code))
70
+ assert_equal(false, {code2 => true}.include?(code))
71
+ end
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,117 @@
1
+ #!/usr/bin/env ruby
2
+ # Util::TestIpn -- de.oddb.org -- 01.02.2008 -- hwyss@ywesee.com
3
+
4
+ $: << File.expand_path('../../lib', File.dirname(__FILE__))
5
+ $: << File.expand_path('..', File.dirname(__FILE__))
6
+
7
+ require 'flexmock'
8
+ require 'oddb/util/ipn'
9
+ require 'stub/model'
10
+ require 'test/unit'
11
+
12
+ module ODDB
13
+ module Util
14
+ class TestIpn < Test::Unit::TestCase
15
+ include FlexMock::TestCase
16
+ def setup
17
+ Drugs::Package.instances.clear
18
+ Drugs::Product.instances.clear
19
+ Business::Company.instances.clear
20
+ super
21
+ end
22
+ def test_process__incomplete
23
+ email = 'test@invoice.ch'
24
+ invoice = Business::Invoice.new
25
+ invoice.yus_name = email
26
+ item = invoice.add :poweruser, "unlimited access", 365, "Tage", 2
27
+ invoice.save
28
+
29
+ note = flexmock('notification')
30
+ note.should_receive(:params).and_return({"invoice" => invoice.id})
31
+ note.should_receive(:status).and_return('Error')
32
+ note.should_receive(:complete?).and_return false
33
+ flexmock(invoice).should_receive(:save)
34
+ Ipn.process(note)
35
+ assert_equal(note, invoice.ipn)
36
+ end
37
+ def test_process
38
+ email = 'test@invoice.ch'
39
+ invoice = Business::Invoice.new
40
+ invoice.yus_name = email
41
+ item = invoice.add :poweruser, "unlimited access", 365, "Tage", 2
42
+ invoice.save
43
+
44
+ note = flexmock('notification')
45
+ note.should_receive(:params).and_return({"invoice" => invoice.id})
46
+ note.should_receive(:status).and_return('Completed')
47
+ note.should_receive(:complete?).and_return true
48
+
49
+ flexmock(Ydim).should_receive(:inject)\
50
+ .with(invoice, {:payment_received => true})
51
+ flexmock(Mail).should_receive(:notify_invoice).with(invoice)
52
+ ODDB.config.auth_domain = 'org.oddb.de'
53
+ yus = flexmock(Util::Yus)
54
+ yus.should_receive(:set_preference)\
55
+ .with(email, 'poweruser_duration', 365)
56
+ yus.should_receive(:grant).with(email, 'login', 'org.oddb.de.PowerUser')
57
+ yus.should_receive(:grant).and_return { |yus_name, action, area, time|
58
+ assert_equal email, yus_name
59
+ assert_equal 'view', action
60
+ assert_equal 'org.oddb.de', area
61
+ day = Time.now + (60 * 60 * 24 * 365)
62
+ assert_equal day.year, time.year
63
+ assert_equal day.month, time.month
64
+ assert_equal day.day, time.day, 'test always fails around midnight'
65
+ }
66
+ flexmock(invoice).should_receive(:save)
67
+ Ipn.process(note)
68
+ assert_equal('completed', invoice.status)
69
+ end
70
+ def test_process_invoice
71
+ email = 'test@invoice.ch'
72
+ invoice = Business::Invoice.new
73
+ invoice.yus_name = email
74
+ item = invoice.add :poweruser, "unlimited access", 365, "Tage", 2
75
+ flexmock(Ydim).should_receive(:inject)\
76
+ .with(invoice, {:payment_received => true})
77
+ flexmock(Mail).should_receive(:notify_invoice).with(invoice)
78
+ ODDB.config.auth_domain = 'org.oddb.de'
79
+ yus = flexmock(Util::Yus)
80
+ yus.should_receive(:set_preference)\
81
+ .with(email, 'poweruser_duration', 365)
82
+ yus.should_receive(:grant).with(email, 'login', 'org.oddb.de.PowerUser')
83
+ yus.should_receive(:grant).and_return { |yus_name, action, area, time|
84
+ assert_equal email, yus_name
85
+ assert_equal 'view', action
86
+ assert_equal 'org.oddb.de', area
87
+ day = Time.now + (60 * 60 * 24 * 365)
88
+ assert_equal day.year, time.year
89
+ assert_equal day.month, time.month
90
+ assert_equal day.day, time.day, 'test always fails around midnight'
91
+ }
92
+ Ipn.process_invoice(invoice)
93
+ end
94
+ def test_process_item__poweruser
95
+ email = 'test@invoice.ch'
96
+ invoice = Business::Invoice.new
97
+ invoice.yus_name = email
98
+ item = invoice.add :poweruser, "unlimited access", 365, "Tage", 2
99
+ ODDB.config.auth_domain = 'org.oddb.de'
100
+ yus = flexmock(Util::Yus)
101
+ yus.should_receive(:set_preference)\
102
+ .with(email, 'poweruser_duration', 365)
103
+ yus.should_receive(:grant).with(email, 'login', 'org.oddb.de.PowerUser')
104
+ yus.should_receive(:grant).and_return { |yus_name, action, area, time|
105
+ assert_equal email, yus_name
106
+ assert_equal 'view', action
107
+ assert_equal 'org.oddb.de', area
108
+ day = Time.now + (60 * 60 * 24 * 365)
109
+ assert_equal day.year, time.year
110
+ assert_equal day.month, time.month
111
+ assert_equal day.day, time.day, 'test always fails around midnight'
112
+ }
113
+ Ipn.process_item(invoice, item)
114
+ end
115
+ end
116
+ end
117
+ end
@@ -0,0 +1,86 @@
1
+ #!/usr/bin/env ruby
2
+ # encoding: utf-8
3
+ # Util::TestMail -- de.oddb.org -- 06.02.2007 -- hwyss@ywesee.com
4
+
5
+ $: << File.expand_path('../../lib', File.dirname(__FILE__))
6
+
7
+ require 'test/unit'
8
+ require 'oddb/business/invoice'
9
+ require 'oddb/util/mail'
10
+ require 'flexmock'
11
+
12
+ module ODDB
13
+ module Util
14
+ class TestMail < Test::Unit::TestCase
15
+ include FlexMock::TestCase
16
+ def setup
17
+ @config = ODDB.config
18
+ @config.mail_invoice_from = "IPN <ipn@oddb.org>"
19
+ @config.mail_invoice_smtp = "ipn@oddb.org"
20
+ end
21
+ def test_notify_admins
22
+ @config.admins = ['admin1@ywesee.com', 'admin2@ywesee.com']
23
+ smtp = flexmock('SMTP')
24
+ flexstub(Net::SMTP).should_receive(:new).with('localhost')\
25
+ .times(1).and_return(smtp)
26
+ smtp.should_receive(:start).times(1).and_return { |blk|
27
+ smtp.should_receive(:sendmail)\
28
+ .with(String, 'update@oddb.org', 'admin1@ywesee.com')\
29
+ .times(1).and_return { assert(true) }
30
+ smtp.should_receive(:sendmail)\
31
+ .with(String, 'update@oddb.org', 'admin2@ywesee.com')\
32
+ .times(1).and_return { assert(true) }
33
+ blk.call
34
+ }
35
+ Mail.notify_admins('Test-Mail',
36
+ [ "This test-mail was sent from",
37
+ sprintf("%s:%s", __FILE__, __LINE__),
38
+ "TestMail#test_notify_admins"])
39
+ end
40
+ def test_notify_invoice
41
+ invoice = Business::Invoice.new
42
+ invoice.yus_name = 'test@invoice.com'
43
+ invoice.add(:poweruser, "unlimited access", 365, "Tage", 2)
44
+ yus = flexmock(Util::Yus)
45
+ yus.should_receive(:get_preferences)\
46
+ .with('test@invoice.com', :salutation, :name_last).and_return {
47
+ { :salutation => "salutation_m", :name_last => "Tester" }
48
+ }
49
+ @config.debug_recipients = [
50
+ 'admin1@ywesee.com', 'admin2@ywesee.com']
51
+ expected = <<-EOS
52
+ To: test@invoice.com
53
+ From: IPN <ipn@oddb.org>
54
+ Subject: Power-User bei ODDB.org
55
+ Content-Type: text/plain; charset=utf8
56
+
57
+ Guten Tag Herr Tester
58
+
59
+ Die Bezahlung für Ihren Power-User-Account konnte erfolgreich abgewickelt werden.
60
+
61
+ Um während 365 Tagen uneingeschränkt Abfragen tätigen zu können, melden sie sich bitte unter http://ch.oddb.org/de/drugs/login/ an.
62
+ EOS
63
+ smtp = flexmock('SMTP')
64
+ flexstub(Net::SMTP).should_receive(:new).with('localhost')\
65
+ .times(1).and_return(smtp)
66
+ smtp.should_receive(:start).times(1).and_return { |blk|
67
+ smtp.should_receive(:sendmail)\
68
+ .with(String, 'ipn@oddb.org', 'test@invoice.com')\
69
+ .times(1).and_return { |body, _, _|
70
+ assert_match(/^Date: (Mon|Tue|Wed|Thu|Fri|Sat|Sun)/, body)
71
+ body.sub!(/^Date:.*$\n/, '')
72
+ assert_equal expected, body
73
+ }
74
+ smtp.should_receive(:sendmail)\
75
+ .with(String, 'ipn@oddb.org', 'admin1@ywesee.com')\
76
+ .times(1).and_return { assert(true) }
77
+ smtp.should_receive(:sendmail)\
78
+ .with(String, 'ipn@oddb.org', 'admin2@ywesee.com')\
79
+ .times(1).and_return { assert(true) }
80
+ blk.call
81
+ }
82
+ Mail.notify_invoice(invoice)
83
+ end
84
+ end
85
+ end
86
+ end
@@ -0,0 +1,97 @@
1
+ #!/usr/bin/env ruby
2
+ # TestMultilingual -- de.oddb.org -- 05.09.2006 -- hwyss@ywesee.com
3
+
4
+ $: << File.expand_path('../../lib', File.dirname(__FILE__))
5
+
6
+ require 'test/unit'
7
+ require 'oddb/util/multilingual'
8
+ require 'encoding/character/utf-8'
9
+
10
+ module ODDB
11
+ module Util
12
+ class TestMultiLingual < Test::Unit::TestCase
13
+ def setup
14
+ @ml = Multilingual.new
15
+ end
16
+ def test_canonical_reader
17
+ assert_equal(nil, @ml.de)
18
+ assert_equal(nil, @ml.fr)
19
+ @ml.canonical.store(:de, 'Ein Test')
20
+ assert_equal('Ein Test', @ml.de)
21
+ assert_equal(nil, @ml.fr)
22
+ @ml.canonical.store(:fr, 'Un Test')
23
+ assert_equal('Ein Test', @ml.de)
24
+ assert_equal('Un Test', @ml.fr)
25
+ end
26
+ def test_canonical_writer
27
+ assert_equal({}, @ml.canonical)
28
+ @ml.de = 'Ein Test'
29
+ assert_equal({:de => 'Ein Test'}, @ml.canonical)
30
+ @ml.fr = 'Un Test'
31
+ assert_equal({:de => 'Ein Test', :fr => 'Un Test'}, @ml.canonical)
32
+ end
33
+ def test_method_missing
34
+ assert_raises(NoMethodError) { @ml.foo }
35
+ end
36
+ def test_equals__canonical
37
+ assert_equal(false, @ml == nil)
38
+ assert_equal(false, @ml == 'test')
39
+ assert_equal(false, @ml == 'tset')
40
+ @ml.de = "test"
41
+ assert_equal(false, @ml == nil)
42
+ assert_equal(true, @ml == 'test')
43
+ assert_equal(false, @ml == 'tset')
44
+ end
45
+ def test_equals__canonical__ustr
46
+ assert_equal(false, @ml == nil)
47
+ assert_equal(false, @ml == u('test'))
48
+ assert_equal(false, @ml == u('tset'))
49
+ @ml.de = "test"
50
+ assert_equal(false, @ml == nil)
51
+ assert_equal(true, @ml == u('test'))
52
+ assert_equal(false, @ml == u('tset'))
53
+ @ml.de = u("test")
54
+ assert_equal(false, @ml == nil)
55
+ assert_equal(true, @ml == u('test'))
56
+ assert_equal(false, @ml == u('tset'))
57
+ end
58
+ def test_equals__canonical__other_ml
59
+ ml = Multilingual.new
60
+ assert_equal(true, @ml == ml)
61
+ ml.de = 'test'
62
+ assert_equal(false, @ml == ml)
63
+ ml.de = 'tset'
64
+ assert_equal(false, @ml == ml)
65
+ ml = Multilingual.new
66
+ @ml.de = "test"
67
+ assert_equal(false, @ml == ml)
68
+ ml.de = 'test'
69
+ assert_equal(true, @ml == ml)
70
+ ml.de = 'tset'
71
+ assert_equal(false, @ml == ml)
72
+ @ml.de = "test"
73
+ end
74
+ def test_equals__synonym
75
+ assert_equal(false, @ml == nil)
76
+ assert_equal(false, @ml == 'test')
77
+ assert_equal(false, @ml == 'tset')
78
+ @ml.synonyms.push("test")
79
+ assert_equal(false, @ml == nil)
80
+ assert_equal(true, @ml == 'test')
81
+ assert_equal(false, @ml == 'tset')
82
+ end
83
+ def test_all
84
+ @ml.de = "de-value"
85
+ assert_equal(['de-value', 'devalue'], @ml.all)
86
+ @ml.fr = "fr-value"
87
+ assert_equal(['de-value', 'devalue', 'fr-value', 'frvalue'], @ml.all.sort)
88
+ @ml.synonyms.push('synonym')
89
+ assert_equal(['de-value', 'devalue', 'fr-value', 'frvalue', 'synonym'], @ml.all.sort)
90
+ end
91
+ def test_find
92
+ @ml.de = 'test'
93
+ assert_equal(@ml, [@ml].find { |elm| elm == 'test'})
94
+ end
95
+ end
96
+ end
97
+ end