muck-raker 0.1.37 → 0.1.38

Sign up to get free protection for your applications and to get access to all the features.
Files changed (303) hide show
  1. data/README.rdoc +4 -2
  2. data/VERSION +1 -1
  3. data/app/controllers/muck/aggregation_feeds_controller.rb +43 -0
  4. data/app/controllers/muck/aggregations_controller.rb +150 -260
  5. data/app/controllers/muck/topics_controller.rb +93 -0
  6. data/app/helpers/muck_raker_aggregations_helper.rb +21 -0
  7. data/app/helpers/muck_raker_feeds_helper.rb +0 -12
  8. data/app/helpers/muck_raker_google_helper.rb +70 -80
  9. data/app/models/aggregation.rb +63 -17
  10. data/app/models/aggregation_feed.rb +2 -1
  11. data/app/models/feed.rb +29 -2
  12. data/app/models/google_feed_request.rb +7 -1
  13. data/app/models/identity_feed.rb +2 -2
  14. data/app/models/service.rb +125 -31
  15. data/app/views/aggregations/_aggregation.html.erb +1 -0
  16. data/app/views/aggregations/_data_source.html.erb +2 -2
  17. data/app/views/aggregations/_feeds.html.erb +1 -0
  18. data/app/views/aggregations/_preview_form.html.erb +12 -0
  19. data/app/views/aggregations/edit.html.erb +60 -14
  20. data/app/views/aggregations/index.html.erb +17 -0
  21. data/app/views/aggregations/index.iphone.erb +0 -0
  22. data/app/views/aggregations/new.html.erb +3 -4
  23. data/app/views/aggregations/preview.html.erb +46 -0
  24. data/app/views/aggregations/preview.iphone.erb +0 -0
  25. data/app/views/aggregations/rss_discovery.html.erb +3 -0
  26. data/app/views/feeds/_form.html.erb +1 -1
  27. data/app/views/feeds/new.html.erb +1 -1
  28. data/app/views/feeds/new_extended.html.erb +1 -1
  29. data/app/views/feeds/new_oai_rss.html.erb +1 -1
  30. data/app/views/google/_feed.html.erb +33 -1
  31. data/app/views/google/_feeds_scripts.html.erb +19 -0
  32. data/app/views/raker_mailer/notification_feed_added.text.ar.html.erb +2 -1
  33. data/app/views/raker_mailer/notification_feed_added.text.ar.plain.erb +3 -1
  34. data/app/views/raker_mailer/notification_feed_added.text.bg.html.erb +3 -2
  35. data/app/views/raker_mailer/notification_feed_added.text.bg.plain.erb +4 -2
  36. data/app/views/raker_mailer/notification_feed_added.text.ca.html.erb +1 -0
  37. data/app/views/raker_mailer/notification_feed_added.text.ca.plain.erb +2 -0
  38. data/app/views/raker_mailer/notification_feed_added.text.cs.html.erb +2 -1
  39. data/app/views/raker_mailer/notification_feed_added.text.cs.plain.erb +3 -1
  40. data/app/views/raker_mailer/notification_feed_added.text.da.html.erb +2 -1
  41. data/app/views/raker_mailer/notification_feed_added.text.da.plain.erb +3 -1
  42. data/app/views/raker_mailer/notification_feed_added.text.de.html.erb +1 -0
  43. data/app/views/raker_mailer/notification_feed_added.text.de.plain.erb +2 -0
  44. data/app/views/raker_mailer/notification_feed_added.text.el.html.erb +3 -2
  45. data/app/views/raker_mailer/notification_feed_added.text.el.plain.erb +4 -2
  46. data/app/views/raker_mailer/notification_feed_added.text.es.html.erb +1 -0
  47. data/app/views/raker_mailer/notification_feed_added.text.es.plain.erb +2 -0
  48. data/app/views/raker_mailer/notification_feed_added.text.et.html.erb +2 -1
  49. data/app/views/raker_mailer/notification_feed_added.text.et.plain.erb +3 -1
  50. data/app/views/raker_mailer/notification_feed_added.text.fa.html.erb +2 -1
  51. data/app/views/raker_mailer/notification_feed_added.text.fa.plain.erb +3 -1
  52. data/app/views/raker_mailer/notification_feed_added.text.fi.html.erb +2 -1
  53. data/app/views/raker_mailer/notification_feed_added.text.fi.plain.erb +3 -1
  54. data/app/views/raker_mailer/notification_feed_added.text.fr.html.erb +2 -1
  55. data/app/views/raker_mailer/notification_feed_added.text.fr.plain.erb +3 -1
  56. data/app/views/raker_mailer/notification_feed_added.text.gl.html.erb +3 -2
  57. data/app/views/raker_mailer/notification_feed_added.text.gl.plain.erb +4 -2
  58. data/app/views/raker_mailer/notification_feed_added.text.hi.html.erb +2 -1
  59. data/app/views/raker_mailer/notification_feed_added.text.hi.plain.erb +3 -1
  60. data/app/views/raker_mailer/notification_feed_added.text.hr.html.erb +3 -2
  61. data/app/views/raker_mailer/notification_feed_added.text.hr.plain.erb +4 -2
  62. data/app/views/raker_mailer/notification_feed_added.text.hu.html.erb +3 -2
  63. data/app/views/raker_mailer/notification_feed_added.text.hu.plain.erb +4 -2
  64. data/app/views/raker_mailer/notification_feed_added.text.id.html.erb +2 -1
  65. data/app/views/raker_mailer/notification_feed_added.text.id.plain.erb +3 -1
  66. data/app/views/raker_mailer/notification_feed_added.text.it.html.erb +2 -1
  67. data/app/views/raker_mailer/notification_feed_added.text.it.plain.erb +3 -1
  68. data/app/views/raker_mailer/notification_feed_added.text.iw.html.erb +2 -1
  69. data/app/views/raker_mailer/notification_feed_added.text.iw.plain.erb +3 -1
  70. data/app/views/raker_mailer/notification_feed_added.text.ja.html.erb +4 -3
  71. data/app/views/raker_mailer/notification_feed_added.text.ja.plain.erb +5 -3
  72. data/app/views/raker_mailer/notification_feed_added.text.ko.html.erb +1 -0
  73. data/app/views/raker_mailer/notification_feed_added.text.ko.plain.erb +2 -0
  74. data/app/views/raker_mailer/notification_feed_added.text.lt.html.erb +2 -1
  75. data/app/views/raker_mailer/notification_feed_added.text.lt.plain.erb +3 -1
  76. data/app/views/raker_mailer/notification_feed_added.text.lv.html.erb +3 -2
  77. data/app/views/raker_mailer/notification_feed_added.text.lv.plain.erb +4 -2
  78. data/app/views/raker_mailer/notification_feed_added.text.mt.html.erb +2 -1
  79. data/app/views/raker_mailer/notification_feed_added.text.mt.plain.erb +3 -1
  80. data/app/views/raker_mailer/notification_feed_added.text.nl.html.erb +1 -0
  81. data/app/views/raker_mailer/notification_feed_added.text.nl.plain.erb +2 -0
  82. data/app/views/raker_mailer/notification_feed_added.text.no.html.erb +1 -0
  83. data/app/views/raker_mailer/notification_feed_added.text.no.plain.erb +2 -0
  84. data/app/views/raker_mailer/notification_feed_added.text.pl.html.erb +2 -1
  85. data/app/views/raker_mailer/notification_feed_added.text.pl.plain.erb +3 -1
  86. data/app/views/raker_mailer/notification_feed_added.text.pt-PT.html.erb +3 -2
  87. data/app/views/raker_mailer/notification_feed_added.text.pt-PT.plain.erb +4 -2
  88. data/app/views/raker_mailer/notification_feed_added.text.ro.html.erb +2 -1
  89. data/app/views/raker_mailer/notification_feed_added.text.ro.plain.erb +3 -1
  90. data/app/views/raker_mailer/notification_feed_added.text.ru.html.erb +1 -0
  91. data/app/views/raker_mailer/notification_feed_added.text.ru.plain.erb +2 -0
  92. data/app/views/raker_mailer/notification_feed_added.text.sk.html.erb +2 -1
  93. data/app/views/raker_mailer/notification_feed_added.text.sk.plain.erb +3 -1
  94. data/app/views/raker_mailer/notification_feed_added.text.sl.html.erb +2 -1
  95. data/app/views/raker_mailer/notification_feed_added.text.sl.plain.erb +3 -1
  96. data/app/views/raker_mailer/notification_feed_added.text.sq.html.erb +3 -2
  97. data/app/views/raker_mailer/notification_feed_added.text.sq.plain.erb +4 -2
  98. data/app/views/raker_mailer/notification_feed_added.text.sr.html.erb +3 -2
  99. data/app/views/raker_mailer/notification_feed_added.text.sr.plain.erb +4 -2
  100. data/app/views/raker_mailer/notification_feed_added.text.sv.html.erb +1 -0
  101. data/app/views/raker_mailer/notification_feed_added.text.sv.plain.erb +2 -0
  102. data/app/views/raker_mailer/notification_feed_added.text.th.html.erb +4 -3
  103. data/app/views/raker_mailer/notification_feed_added.text.th.plain.erb +5 -3
  104. data/app/views/raker_mailer/notification_feed_added.text.tl.html.erb +2 -1
  105. data/app/views/raker_mailer/notification_feed_added.text.tl.plain.erb +3 -1
  106. data/app/views/raker_mailer/notification_feed_added.text.tr.html.erb +3 -2
  107. data/app/views/raker_mailer/notification_feed_added.text.tr.plain.erb +4 -2
  108. data/app/views/raker_mailer/notification_feed_added.text.uk.html.erb +2 -1
  109. data/app/views/raker_mailer/notification_feed_added.text.uk.plain.erb +3 -1
  110. data/app/views/raker_mailer/notification_feed_added.text.vi.html.erb +2 -1
  111. data/app/views/raker_mailer/notification_feed_added.text.vi.plain.erb +3 -1
  112. data/app/views/raker_mailer/notification_feed_added.text.zh-CN.html.erb +4 -3
  113. data/app/views/raker_mailer/notification_feed_added.text.zh-CN.plain.erb +5 -3
  114. data/app/views/raker_mailer/notification_feed_added.text.zh-TW.html.erb +4 -3
  115. data/app/views/raker_mailer/notification_feed_added.text.zh-TW.plain.erb +5 -3
  116. data/app/views/raker_mailer/notification_feed_added.text.zh.html.erb +4 -3
  117. data/app/views/raker_mailer/notification_feed_added.text.zh.plain.erb +5 -3
  118. data/app/views/raker_mailer/notification_oai_endpoint_added.text.ar.html.erb +4 -0
  119. data/app/views/raker_mailer/notification_oai_endpoint_added.text.ar.plain.erb +4 -0
  120. data/app/views/raker_mailer/notification_oai_endpoint_added.text.bg.html.erb +4 -0
  121. data/app/views/raker_mailer/notification_oai_endpoint_added.text.bg.plain.erb +4 -0
  122. data/app/views/raker_mailer/notification_oai_endpoint_added.text.ca.html.erb +4 -0
  123. data/app/views/raker_mailer/notification_oai_endpoint_added.text.ca.plain.erb +4 -0
  124. data/app/views/raker_mailer/notification_oai_endpoint_added.text.cs.html.erb +4 -0
  125. data/app/views/raker_mailer/notification_oai_endpoint_added.text.cs.plain.erb +4 -0
  126. data/app/views/raker_mailer/notification_oai_endpoint_added.text.da.html.erb +4 -0
  127. data/app/views/raker_mailer/notification_oai_endpoint_added.text.da.plain.erb +4 -0
  128. data/app/views/raker_mailer/notification_oai_endpoint_added.text.de.html.erb +4 -0
  129. data/app/views/raker_mailer/notification_oai_endpoint_added.text.de.plain.erb +4 -0
  130. data/app/views/raker_mailer/notification_oai_endpoint_added.text.el.html.erb +4 -0
  131. data/app/views/raker_mailer/notification_oai_endpoint_added.text.el.plain.erb +4 -0
  132. data/app/views/raker_mailer/notification_oai_endpoint_added.text.es.html.erb +4 -0
  133. data/app/views/raker_mailer/notification_oai_endpoint_added.text.es.plain.erb +4 -0
  134. data/app/views/raker_mailer/notification_oai_endpoint_added.text.et.html.erb +4 -0
  135. data/app/views/raker_mailer/notification_oai_endpoint_added.text.et.plain.erb +4 -0
  136. data/app/views/raker_mailer/notification_oai_endpoint_added.text.fa.html.erb +4 -0
  137. data/app/views/raker_mailer/notification_oai_endpoint_added.text.fa.plain.erb +4 -0
  138. data/app/views/raker_mailer/notification_oai_endpoint_added.text.fi.html.erb +4 -0
  139. data/app/views/raker_mailer/notification_oai_endpoint_added.text.fi.plain.erb +4 -0
  140. data/app/views/raker_mailer/notification_oai_endpoint_added.text.fr.html.erb +4 -0
  141. data/app/views/raker_mailer/notification_oai_endpoint_added.text.fr.plain.erb +4 -0
  142. data/app/views/raker_mailer/notification_oai_endpoint_added.text.gl.html.erb +4 -0
  143. data/app/views/raker_mailer/notification_oai_endpoint_added.text.gl.plain.erb +4 -0
  144. data/app/views/raker_mailer/notification_oai_endpoint_added.text.hi.html.erb +4 -0
  145. data/app/views/raker_mailer/notification_oai_endpoint_added.text.hi.plain.erb +4 -0
  146. data/app/views/raker_mailer/notification_oai_endpoint_added.text.hr.html.erb +4 -0
  147. data/app/views/raker_mailer/notification_oai_endpoint_added.text.hr.plain.erb +4 -0
  148. data/app/views/raker_mailer/notification_oai_endpoint_added.text.hu.html.erb +4 -0
  149. data/app/views/raker_mailer/notification_oai_endpoint_added.text.hu.plain.erb +4 -0
  150. data/app/views/raker_mailer/notification_oai_endpoint_added.text.id.html.erb +4 -0
  151. data/app/views/raker_mailer/notification_oai_endpoint_added.text.id.plain.erb +4 -0
  152. data/app/views/raker_mailer/notification_oai_endpoint_added.text.it.html.erb +4 -0
  153. data/app/views/raker_mailer/notification_oai_endpoint_added.text.it.plain.erb +4 -0
  154. data/app/views/raker_mailer/notification_oai_endpoint_added.text.iw.html.erb +4 -0
  155. data/app/views/raker_mailer/notification_oai_endpoint_added.text.iw.plain.erb +4 -0
  156. data/app/views/raker_mailer/notification_oai_endpoint_added.text.ja.html.erb +4 -0
  157. data/app/views/raker_mailer/notification_oai_endpoint_added.text.ja.plain.erb +4 -0
  158. data/app/views/raker_mailer/notification_oai_endpoint_added.text.ko.html.erb +4 -0
  159. data/app/views/raker_mailer/notification_oai_endpoint_added.text.ko.plain.erb +4 -0
  160. data/app/views/raker_mailer/notification_oai_endpoint_added.text.lt.html.erb +4 -0
  161. data/app/views/raker_mailer/notification_oai_endpoint_added.text.lt.plain.erb +4 -0
  162. data/app/views/raker_mailer/notification_oai_endpoint_added.text.lv.html.erb +4 -0
  163. data/app/views/raker_mailer/notification_oai_endpoint_added.text.lv.plain.erb +4 -0
  164. data/app/views/raker_mailer/notification_oai_endpoint_added.text.mt.html.erb +4 -0
  165. data/app/views/raker_mailer/notification_oai_endpoint_added.text.mt.plain.erb +4 -0
  166. data/app/views/raker_mailer/notification_oai_endpoint_added.text.nl.html.erb +4 -0
  167. data/app/views/raker_mailer/notification_oai_endpoint_added.text.nl.plain.erb +4 -0
  168. data/app/views/raker_mailer/notification_oai_endpoint_added.text.no.html.erb +4 -0
  169. data/app/views/raker_mailer/notification_oai_endpoint_added.text.no.plain.erb +4 -0
  170. data/app/views/raker_mailer/notification_oai_endpoint_added.text.pl.html.erb +4 -0
  171. data/app/views/raker_mailer/notification_oai_endpoint_added.text.pl.plain.erb +4 -0
  172. data/app/views/raker_mailer/notification_oai_endpoint_added.text.pt-PT.html.erb +4 -0
  173. data/app/views/raker_mailer/notification_oai_endpoint_added.text.pt-PT.plain.erb +4 -0
  174. data/app/views/raker_mailer/notification_oai_endpoint_added.text.ro.html.erb +4 -0
  175. data/app/views/raker_mailer/notification_oai_endpoint_added.text.ro.plain.erb +4 -0
  176. data/app/views/raker_mailer/notification_oai_endpoint_added.text.ru.html.erb +4 -0
  177. data/app/views/raker_mailer/notification_oai_endpoint_added.text.ru.plain.erb +4 -0
  178. data/app/views/raker_mailer/notification_oai_endpoint_added.text.sk.html.erb +4 -0
  179. data/app/views/raker_mailer/notification_oai_endpoint_added.text.sk.plain.erb +4 -0
  180. data/app/views/raker_mailer/notification_oai_endpoint_added.text.sl.html.erb +4 -0
  181. data/app/views/raker_mailer/notification_oai_endpoint_added.text.sl.plain.erb +4 -0
  182. data/app/views/raker_mailer/notification_oai_endpoint_added.text.sq.html.erb +4 -0
  183. data/app/views/raker_mailer/notification_oai_endpoint_added.text.sq.plain.erb +4 -0
  184. data/app/views/raker_mailer/notification_oai_endpoint_added.text.sr.html.erb +4 -0
  185. data/app/views/raker_mailer/notification_oai_endpoint_added.text.sr.plain.erb +4 -0
  186. data/app/views/raker_mailer/notification_oai_endpoint_added.text.sv.html.erb +4 -0
  187. data/app/views/raker_mailer/notification_oai_endpoint_added.text.sv.plain.erb +4 -0
  188. data/app/views/raker_mailer/notification_oai_endpoint_added.text.th.html.erb +4 -0
  189. data/app/views/raker_mailer/notification_oai_endpoint_added.text.th.plain.erb +4 -0
  190. data/app/views/raker_mailer/notification_oai_endpoint_added.text.tl.html.erb +4 -0
  191. data/app/views/raker_mailer/notification_oai_endpoint_added.text.tl.plain.erb +4 -0
  192. data/app/views/raker_mailer/notification_oai_endpoint_added.text.tr.html.erb +4 -0
  193. data/app/views/raker_mailer/notification_oai_endpoint_added.text.tr.plain.erb +4 -0
  194. data/app/views/raker_mailer/notification_oai_endpoint_added.text.uk.html.erb +4 -0
  195. data/app/views/raker_mailer/notification_oai_endpoint_added.text.uk.plain.erb +4 -0
  196. data/app/views/raker_mailer/notification_oai_endpoint_added.text.vi.html.erb +4 -0
  197. data/app/views/raker_mailer/notification_oai_endpoint_added.text.vi.plain.erb +4 -0
  198. data/app/views/raker_mailer/notification_oai_endpoint_added.text.zh-CN.html.erb +4 -0
  199. data/app/views/raker_mailer/notification_oai_endpoint_added.text.zh-CN.plain.erb +4 -0
  200. data/app/views/raker_mailer/notification_oai_endpoint_added.text.zh-TW.html.erb +4 -0
  201. data/app/views/raker_mailer/notification_oai_endpoint_added.text.zh-TW.plain.erb +4 -0
  202. data/app/views/raker_mailer/notification_oai_endpoint_added.text.zh.html.erb +4 -0
  203. data/app/views/raker_mailer/notification_oai_endpoint_added.text.zh.plain.erb +4 -0
  204. data/app/views/topics/_feed_preview.html.erb +18 -0
  205. data/app/views/topics/_form.html.erb +15 -0
  206. data/app/views/{opmls → topics}/_rss_discover.html.erb +0 -0
  207. data/app/views/{opmls → topics}/new.html.erb +7 -7
  208. data/app/views/topics/photos.html.erb +14 -0
  209. data/app/views/topics/show.html.erb +47 -0
  210. data/app/views/{opmls/index.opml.builder → topics/show.opml.builder} +0 -0
  211. data/app/views/topics/videos.html.erb +14 -0
  212. data/config/muck_raker_routes.rb +4 -3
  213. data/db/bootstrap/service_categories.yml +1 -1
  214. data/db/bootstrap/services.yml +15 -1
  215. data/db/migrate/20091006183742_add_feed_count_to_aggregation.rb +9 -0
  216. data/lib/muck_raker.rb +0 -4
  217. data/locales/ar.yml +27 -6
  218. data/locales/bg.yml +28 -7
  219. data/locales/ca.yml +30 -9
  220. data/locales/cs.yml +27 -6
  221. data/locales/da.yml +27 -6
  222. data/locales/de.yml +28 -7
  223. data/locales/el.yml +27 -6
  224. data/locales/en.yml +27 -6
  225. data/locales/es.yml +28 -7
  226. data/locales/et.yml +28 -7
  227. data/locales/fa.yml +27 -6
  228. data/locales/fi.yml +27 -6
  229. data/locales/fr.yml +27 -6
  230. data/locales/gl.yml +31 -10
  231. data/locales/hi.yml +27 -6
  232. data/locales/hr.yml +29 -8
  233. data/locales/hu.yml +29 -8
  234. data/locales/id.yml +27 -6
  235. data/locales/it.yml +29 -8
  236. data/locales/iw.yml +29 -8
  237. data/locales/ja.yml +29 -8
  238. data/locales/ko.yml +29 -8
  239. data/locales/lt.yml +30 -9
  240. data/locales/lv.yml +30 -9
  241. data/locales/mt.yml +32 -11
  242. data/locales/nl.yml +28 -7
  243. data/locales/no.yml +30 -9
  244. data/locales/pl.yml +27 -6
  245. data/locales/pt-PT.yml +27 -6
  246. data/locales/ro.yml +28 -7
  247. data/locales/ru.yml +27 -6
  248. data/locales/sk.yml +27 -6
  249. data/locales/sl.yml +30 -9
  250. data/locales/sq.yml +28 -7
  251. data/locales/sr.yml +27 -6
  252. data/locales/sv.yml +27 -6
  253. data/locales/th.yml +28 -7
  254. data/locales/tl.yml +27 -6
  255. data/locales/tr.yml +27 -6
  256. data/locales/uk.yml +27 -6
  257. data/locales/vi.yml +27 -6
  258. data/locales/zh-CN.yml +28 -7
  259. data/locales/zh-TW.yml +28 -7
  260. data/locales/zh.yml +28 -7
  261. data/muck-raker.gemspec +126 -13
  262. data/public/images/service_icons/16/metacafe.png +0 -0
  263. data/public/images/service_icons/24/metacafe.png +0 -0
  264. data/public/images/service_icons/48/metacafe.png +0 -0
  265. data/public/images/service_icons/60/metacafe.png +0 -0
  266. data/public/images/service_icons/source/bibsonomy.psd +0 -0
  267. data/public/images/service_icons/source/metacafe.psd +0 -0
  268. data/public/stylesheets/frame.css +10 -6
  269. data/public/stylesheets/muck-raker.css +77 -0
  270. data/test/rails_root/app/views/layouts/default.html.erb +1 -1
  271. data/test/rails_root/db/bootstrap/service_categories.yml +1 -1
  272. data/test/rails_root/db/bootstrap/services.yml +18 -2
  273. data/test/rails_root/db/migrate/20091006183742_add_feed_count_to_aggregation.rb +9 -0
  274. data/test/rails_root/public/images/service_icons/16/metacafe.png +0 -0
  275. data/test/rails_root/public/images/service_icons/24/metacafe.png +0 -0
  276. data/test/rails_root/public/images/service_icons/48/metacafe.png +0 -0
  277. data/test/rails_root/public/images/service_icons/60/metacafe.png +0 -0
  278. data/test/rails_root/public/images/service_icons/source/bibsonomy.psd +0 -0
  279. data/test/rails_root/public/images/service_icons/source/metacafe.psd +0 -0
  280. data/test/rails_root/public/javascripts/muck_activities.js +1 -2
  281. data/test/rails_root/public/stylesheets/application.css +0 -117
  282. data/test/rails_root/public/stylesheets/frame.css +10 -6
  283. data/test/rails_root/public/stylesheets/muck-activities.css +39 -0
  284. data/test/rails_root/public/stylesheets/muck-raker.css +77 -0
  285. data/test/rails_root/test/factories.rb +5 -0
  286. data/test/rails_root/test/functional/aggregation_feeds_controller_test.rb +67 -0
  287. data/test/rails_root/test/functional/aggregations_controller_test.rb +37 -3
  288. data/test/rails_root/test/functional/topics_controller_test.rb +46 -0
  289. data/test/rails_root/test/unit/aggregation_feed_test.rb +8 -0
  290. data/test/rails_root/test/unit/aggregation_test.rb +95 -0
  291. data/test/rails_root/test/unit/comment_test.rb +1 -1
  292. data/test/rails_root/test/unit/entry_test.rb +3 -0
  293. data/test/rails_root/test/unit/feed_test.rb +3 -0
  294. data/test/rails_root/test/unit/oai_endpoint_test.rb +3 -0
  295. data/test/rails_root/test/unit/service_test.rb +81 -11
  296. metadata +126 -13
  297. data/app/controllers/muck/opmls_controller.rb +0 -28
  298. data/app/views/google/_feed_bookmarks.html.erb +0 -13
  299. data/app/views/google/_feed_display.html.erb +0 -13
  300. data/app/views/google/_feed_photos.html.erb +0 -13
  301. data/app/views/google/_feeds_display.html.erb +0 -2
  302. data/app/views/opmls/index.html.erb +0 -19
  303. data/test/rails_root/test/functional/opmls_controller_test.rb +0 -37
@@ -1,117 +0,0 @@
1
- #fancy_outer{width:80%;height:80%;margin:auto auto;}
2
-
3
- /* iFrame */
4
- .framed_content{height:100%;margin-bottom:-1px;width:100%;}
5
- #content_iframe{display:block;display:block;}
6
- #toolbar{height:30px;background:#EFF1E5;border-bottom:1px solid #999;}
7
- #toolbar .section{padding:5px 20px;}
8
- #toolbar #profile{float:left;}
9
- #toolbar #search{float:right;}
10
- #toolbar #search input{font-size:1em;}
11
- #toolbar #tools{float:right;}
12
- #toolbar #tools a{margin-right:5px;padding-left:18px;font-weight:bolder;font-size:1em;color:#54493F;}
13
- #toolbar #tools a:hover{text-decoration:underline;}
14
- #toolbar #tools #share_login a{padding:0px;margin:0px;}
15
- #toolbar #close{float:right;padding-right:5px;}
16
- #toolbar .section a{text-decoration:none;}
17
- a#close_frame{-moz-background-clip:border;-moz-background-inline-policy:continuous;-moz-background-origin:padding;background:transparent url('/images/icons/close.png') no-repeat scroll left top;display:block;height:19px;width:19px;}
18
- a#close_frame:hover{background-position:left bottom;}
19
- a#close_frame_text{display:none;}
20
- a#comment{background:transparent url('/images/icons/comment.png') no-repeat scroll left top;}
21
- a#share{background:transparent url('/images/icons/add.png') no-repeat scroll left top;}
22
- #toolbar #search #search_go{display:none;}
23
- #toolbar #search #search_box{width:150px;height:21px;background:transparent url('/images/icons/search_box.png') no-repeat scroll left bottom;}
24
- #toolbar #search #search_box:hover{background:transparent url('/images/icons/search_box.png') no-repeat scroll left top;}
25
- #toolbar #search #search_box input {-moz-background-clip:border;-moz-background-inline-policy:continuous;-moz-background-origin:padding;background:transparent none repeat scroll 0 0;border:0 none;width:125px;}
26
-
27
- /* tools in frame */
28
- .tool{width:25%;float:right;}
29
- .tools_container{overflow:auto;width:100%;}
30
- a.close_link{text-decoration:none;float:right;margin:5px;display:block;padding:0px 23px 1px 6px;color:#fff;font-weight:bold;background:transparent url('/images/icons/hide.png') no-repeat scroll left top;}
31
- a.close_link:hover{background:transparent url('/images/icons/hide.png') no-repeat scroll left bottom;}
32
- .close_link_wrapper{height:28px;}
33
- .tool textarea{width:97%;height:75px;margin:5px auto;}
34
- .tool input{font-size:1em;}
35
- .tool label{font-size:1em;}
36
- /* shares tool in frame */
37
- #share_tool #shares_control{border:1px solid #ccc;margin:2px auto;padding:.5em;background-color:#eee;width:90%;}
38
- /* comments tool in frame */
39
- #comments_tool .comment_holder p{margin:0;}
40
- #comments_tool .comment_holder .commentor-icon{width:40px;float:left;margin:0 5px 0 0;}
41
- #comments_tool .comment_holder .commentor-icon img{width:40px;height:40px;}
42
- #comments_tool .comment_holder .commentor a{font-size:.8em;}
43
- #comments_tool .comment_holder .comment-time{color:#777777;font-size:.9em;}
44
- #comments_tool .comment-form-wrapper, #comments_tool .comment_holder{border:1px solid #ccc;margin:2px auto;padding:.5em;background-color:#eee;width:90%;}
45
- #comments_tool .comment-form-wrapper{height:116px;}
46
- #comments_tool .comment-form input{float:right;}
47
- #comments_tool form.comment-delete {position:relative;display:inline;float:right;}
48
- #comments_tool form.comment-delete input{padding:0;margin:0;width:15px;height:15px;position:absolute;right:0px;top:0px;}
49
- #comments_tool form.comment-delete{display:none;}
50
- #comments_tool .comment-hover form.comment-delete{display:block;}
51
-
52
- /* activity feed */
53
- .activity{clear:both;display:block;}
54
- #activity-feed{margin:15px 0 0 0;}
55
- #activity-feed-content .activity{margin:8px 0 4px 0;}
56
- #activity-feed-content .activity-time{font-size:1em;font-color:#eee;clear:left;}
57
- #activity-icon, .actor-icon{width:50px;float:left;margin:0 10px 10px 0;}
58
- #activity-feed-content .actor, #current-status-name{font-weight:bolder;font-size:1.3em;}
59
- .activity-time, .status-time{color:#777777;font-size:.9em;}
60
- p#current-status-text, .activity-content p{margin:0;}
61
- form.activity-delete {position:relative;display:inline;float:right;display:none;}
62
- form.activity-delete input{padding:0;margin:0;width:15px;height:15px;position:absolute;right:0px;bottom:0px;}
63
- .activity .activity-hover form.activity-delete{display:block;}
64
- .welcome_activity{font-size:14px;}
65
- /* comments under activity feed */
66
- .activity-comment{border:1px solid #ccc;margin:2px 50px 2px 60px;padding:.5em;background-color:#eee;}
67
- .activity-comment .actor-icon{width:40px;}
68
- .activity-comment .actor-icon img{width:40px;height:40px;}
69
- .activity-comment textarea.max{width:80%;height:30px;}
70
- .activity-comment textarea.min{height:15px;width:50%;}
71
- .activity-comment p{margin:0;}
72
- .activity-comment .actor a{font-size:.8em;}
73
- .activity form.comment-delete {position:relative;display:inline;float:right;}
74
- .activity form.comment-delete input{padding:0;margin:0;width:15px;height:15px;position:absolute;right:0px;top:0px;}
75
- .activity form.comment-delete{display:none;}
76
- .activity .comment-hover form.comment-delete{display:block;}
77
-
78
- /* services */
79
- #available-services{border:solid 1px #ccc;background-color:#eee;}
80
- .services-main {float:left;display:inline-block;padding:10px;margin:10px;}
81
- .services-main h3{margin:0;}
82
- .services-main .service-category{margin:0 20px 20px 0;display:inline-block;float:left;height:190px;}
83
- .services-main ul.services-list{margin:0;padding:0;list-style:none;}
84
- .services-main a.service-link{display:inline-block;margin:2px 0;padding:2px 0 5px 28px;text-decoration:none;}
85
- .services-main a:hover.service-link{text-decoration:underline;}
86
- .identity-service{font-size:1em;font-weight:bold;}
87
- .identity-service-title{font-size:1.2em;font-weight:bold;padding:2px 0 5px 28px;}
88
- #identity-feed{margin:auto;}
89
- #identity-feed input[type="text"] {width:380px;}
90
- ul#my-services-list li {position:relative;}
91
- ul#my-services-list li form {right:-25px;position:absolute;top:3px;}
92
- ul.service-summary{margin:0;padding:0;list-style:none;}
93
- ul.service-summary a.service-link{display:inline-block;margin:2px 0;padding:2px 0 5px 28px;text-decoration:none;}
94
- .waiting{margin:3px 0;padding-left:20px;background:transparent url('/images/spinner.gif') no-repeat scroll left bottom;}
95
- #sources-list ul {float:left;display:inline-block;height:170px;margin:0 20px;width:150px;}
96
- #sources-list ul li{padding:2px 0 5px 25px;}
97
- #sources-list ul li input{margin:0;}
98
- #sources-list ul li.source-title{font-weight:bolder;font-size:1.4em;margin:10px 0 0 0;padding:0;}
99
-
100
- /* css for google widgets */
101
- .slide_show_content {width:250px;height:200px;margin-bottom:40px;padding:5px;}
102
-
103
- #opml #opml-feeds{border:solid 1px #eee;}
104
- #opml .feed{padding:0px 4px;}
105
- #opml .feed-header{background-color:#eee;padding:3px;margin-top:20px;}
106
- #opml .feed-header h3{margin:0;padding:2px 0 5px 25px;}
107
- #opml .feed-header h3 a{text-decoration:none;color:#333;}
108
- #opml .feed-header h3 a:hover{color:#000;}
109
- #opml .feed-item{margin:0 15px 0 20px;}
110
- #opml .feed-item h4{margin:0;padding:2px;}
111
- #opml .feed-item h4 a{text-decoration:none;color:#555;}
112
- #opml .feed-item h4 a:hover{color:#000;}
113
- #opml .feed-item .hentry .entry{display:none;}
114
- #opml .even{background-color:#f6f8f9;}
115
- #opml .odd{background-color:#fff;}
116
- #opml .feed-photos img{width:100px;height:100px;}
117
- .entry-close{float:right;font-size:.8em;}
@@ -1,11 +1,12 @@
1
1
  /* iFrame */
2
2
  .framed_content{height:100%;margin-bottom:-1px;width:100%;}
3
3
  #content_iframe{display:block;display:block;}
4
- #toolbar{height:30px;border-bottom:1px solid #999;background-image:url('/images/folksemantic/bg-toolbar.jpg');}
5
- #toolbar .section{padding:4px 20px;}
6
- #toolbar-logo {float:left;margin-left:30px;}
4
+ #toolbar{height:30px;background:#EFF1E5;border-bottom:1px solid #999;}
5
+ #toolbar .section{padding:5px 20px;}
6
+ #toolbar #profile{float:left;}
7
7
  #toolbar #search{float:right;padding:5px 0px;}
8
8
  #toolbar #search input{font-size:1em;}
9
+ #toolbar-logo {float:left;margin-left:30px;}
9
10
  #toolbar #tools{float:right;}
10
11
  #toolbar #tools img{vertical-align:bottom;padding-right:4px;}
11
12
  #toolbar #tools a{margin-right:5px;padding-left:18px;font-weight:bolder;font-size:1em;color:#54493F;}
@@ -16,6 +17,8 @@
16
17
  a#close_frame{-moz-background-clip:border;-moz-background-inline-policy:continuous;-moz-background-origin:padding;background:transparent url('/images/icons/close.png') no-repeat scroll left top;display:block;height:19px;width:19px;}
17
18
  a#close_frame:hover{background-position:left bottom;}
18
19
  a#close_frame_text{display:none;}
20
+ a#comment{background:transparent url('/images/icons/comment.png') no-repeat scroll left top;}
21
+ a#share{background:transparent url('/images/icons/add.png') no-repeat scroll left top;}
19
22
  #toolbar #search #search_go{display:none;}
20
23
  #toolbar #search #search_box{width:150px;height:21px;background:transparent url('/images/icons/search_box.png') no-repeat scroll left bottom;}
21
24
  #toolbar #search #search_box:hover{background:transparent url('/images/icons/search_box.png') no-repeat scroll left top;}
@@ -30,10 +33,10 @@ a.close_link:hover{background:transparent url('/images/icons/hide.png') no-repea
30
33
  .tool input{font-size:1em;}
31
34
  .tool label{font-size:1em;}
32
35
  /* shares tool in frame */
33
- #share_tool .share-form-wrapper{border:1px solid #ccc;margin:2px auto;padding:.5em;background-color:#eee;width:90%;}
36
+ #share_tool .share-form-wrapper, #share_tool #shares_control{border:1px solid #ccc;margin:2px auto;padding:.5em;background-color:#eee;width:90%;}
34
37
  /* comments tool in frame */
35
38
  #comments_tool #activity-icon, .actor-icon {margin:0 10px 0 0;}
36
- #comments_tool .comment_holder{border:1px solid #ccc;margin:30px 10px 0 5px;padding:.5em;background-color:#eee;width:90%;}
39
+ #comments_tool .comment-form-wrapper, #comments_tool .comment_holder{border:1px solid #ccc;margin:2px auto;padding:.5em;background-color:#eee;width:90%;}
37
40
  #comments_tool .comment_holder p{margin:0;}
38
41
  #comments_tool .comment_holder .commentor-icon{width:40px;float:left;margin:0 5px 0 0;}
39
42
  #comments_tool .comment_holder .commentor-icon img{width:40px;height:40px;}
@@ -41,6 +44,7 @@ a.close_link:hover{background:transparent url('/images/icons/hide.png') no-repea
41
44
  #comments_tool .comment_holder .comment-time{color:#777777;font-size:.9em;}
42
45
  #comments_tool #comments_control{border:1px solid #ccc;margin:2px auto;padding:.5em;background-color:#eee;width:90%;}
43
46
  #comments_tool .comment-form-wrapper{height:116px;display:inline;}
47
+ #comments_tool .comment-form input{float:right;}
44
48
  #comments_tool .activity-comment .comment-form textarea.max {height:50px;width:200px;margin:0px;}
45
49
  #comments_tool .activity-comment .comment-form textarea.min {height:15px;width:90%;}
46
50
  #comments_tool form.comment-delete {position:relative;display:inline;float:right;}
@@ -49,4 +53,4 @@ a.close_link:hover{background:transparent url('/images/icons/hide.png') no-repea
49
53
  #comments_tool .comment-hover form.comment-delete{display:block;}
50
54
  #comments_tool .activity-comment{margin:5px 10px 2px 60px;}
51
55
  #comments_tool .activity{margin:8px 10px 2px 10px;}
52
- #comments_tool #comments_control{margin:20px 5px;}
56
+ #comments_tool #comments_control{margin:20px 5px;}
@@ -0,0 +1,39 @@
1
+ /* activity feed */
2
+ #activity-status-control{border:solid 1px #ccc;padding:10px 7px;background-color:#eee;}
3
+ #status-update-field{}
4
+ ul#status-menu{list-style:none;}
5
+ ul#status-menu li{float:left;display:inline;margin:0 5px;}
6
+ #status-update-button input{padding:0;}
7
+ .status-update-dim{}
8
+ .status-update-lit{}
9
+ ul#activity-filter{list-style:none;}
10
+ ul#activity-filter li{border-bottom:solid 1px #ccc;}
11
+ ul#activity-filter li a{text-decoration:none;}
12
+ ul#activity-filter li a:hover;{text-decoration:underline;}
13
+ ul#activity-filter li.current a{color:#5EAC18;}
14
+ .activity{clear:both;display:block;}
15
+ #activity-feed{margin:15px 0 0 0;}
16
+ #activity-feed-content .activity{margin:8px 0 4px 0;}
17
+ #activity-feed-content .activity-time{font-size:1em;font-color:#eee;clear:left;}
18
+ #activity-icon, .actor-icon{width:50px;float:left;margin:0 10px 10px 0;}
19
+ #activity-feed-content .actor, #current-status-name{font-weight:bolder;font-size:1.3em;}
20
+ .activity-time, .status-time{color:#777777;font-size:.9em;}
21
+ p#current-status-text, .activity-content p{margin:0;}
22
+ form.activity-delete {position:relative;display:inline;float:right;display:none;}
23
+ form.activity-delete input{padding:0;margin:0;width:15px;height:15px;position:absolute;right:0px;bottom:0px;}
24
+ .activity .activity-hover form.activity-delete{display:block;}
25
+ .welcome_activity{font-size:14px;}
26
+ a.upload-button{background:transparent url('/images/icons/button_background.png') no-repeat scroll left top;text-decoration:none;padding:0px 23px 1px 6px;color:#fff;font-weight:bold;}
27
+ a.upload-button:hover{background:transparent url('/images/icons/button_background.png') no-repeat scroll left bottom;}
28
+ /* comments under activity feed */
29
+ .activity-comment{border:1px solid #ccc;margin:2px 50px 2px 60px;padding:.5em;background-color:#eee;}
30
+ .activity-comment .actor-icon{width:40px;}
31
+ .activity-comment .actor-icon img{width:40px;height:40px;}
32
+ .activity-comment textarea.max{width:80%;height:30px;}
33
+ .activity-comment textarea.min{height:15px;width:50%;}
34
+ .activity-comment p{margin:0;}
35
+ .activity-comment .actor a{font-size:.8em;}
36
+ .activity form.comment-delete {position:relative;display:inline;float:right;}
37
+ .activity form.comment-delete input{padding:0;margin:0;width:15px;height:15px;position:absolute;right:0px;top:0px;}
38
+ .activity form.comment-delete{display:none;}
39
+ .activity .comment-hover form.comment-delete{display:block;}
@@ -0,0 +1,77 @@
1
+ #fancy_outer{width:80%;height:80%;margin:auto auto;}
2
+ /* services */
3
+ #available-services{border:solid 1px #ccc;background-color:#eee;}
4
+ .services-main {float:left;display:inline-block;padding:10px;margin:10px;}
5
+ .services-main h3{margin:0;}
6
+ .services-main .service-category{margin:0 20px 20px 0;display:inline-block;float:left;height:160px;width:130px;}
7
+ .services-main ul.services-list{margin:0;padding:0;list-style:none;}
8
+ .services-main a.service-link{display:inline-block;margin:2px 0;padding:2px 0 5px 28px;text-decoration:none;}
9
+ .services-main a:hover.service-link{text-decoration:underline;}
10
+ .identity-service{font-size:1em;font-weight:bold;}
11
+ .identity-service-title{font-size:1.2em;font-weight:bold;padding:2px 0 5px 28px;}
12
+ #identity-feed{margin:auto;}
13
+ #identity-feed input[type="text"] {width:380px;}
14
+ ul#my-services-list li {position:relative;}
15
+ ul#my-services-list li form {right:-25px;position:absolute;top:3px;}
16
+ ul.service-summary{margin:0;padding:0;list-style:none;}
17
+ ul.service-summary a.service-link{display:inline-block;margin:2px 0;padding:2px 0 5px 28px;text-decoration:none;}
18
+ #data-sources #sources-list ul {float:left;display:inline-block;height:170px;margin:0 20px;width:150px;}
19
+ #edit-data-sources ul{}
20
+ #sources-list ul li{padding:2px 0 5px 25px;}
21
+ #sources-list ul li input{margin:0;}
22
+ #sources-list ul li.source-title{font-weight:bolder;font-size:1.4em;margin:10px 0 0 0;padding:0;}
23
+ /* feed formating */
24
+ .feed{padding:0px 4px;}
25
+ .feed-header{background-color:#f4f8fb;padding:3px;margin-top:20px;}
26
+ .feed-header h3{margin:0;padding:2px 0 10px 25px;}
27
+ .feed-header h3 a{text-decoration:none;color:#333;}
28
+ .feed-header h3 a:hover{color:#000;}
29
+ .feed-item{margin:0 15px 0 20px;}
30
+ .feed-item h4{margin:0;padding:2px;}
31
+ .feed-item h4 a{text-decoration:none;color:#555;}
32
+ .feed-item h4 a:hover{color:#000;}
33
+ .feed-item .hentry .entry{display:none;}
34
+ .even{background-color:#f6f8f9;}
35
+ .odd{background-color:#fff;}
36
+ .entry-close{float:right;font-size:.8em;}
37
+ .hentry{padding:0 10px;}
38
+ /* entry comment in activity feed */
39
+ .entry-comment-contents{font-weight:bolder;}
40
+ /* entries tag browsing */
41
+ fieldset{border:solid 1px #CCC;margin:0px;padding:10px;}
42
+ #tag-cloud{margin-top:0px;line-height:28px;}
43
+ #tag-cloud a{padding:6px;text-decoration:none;}
44
+ #tag-cloud a:visited{text-decoration:none;}
45
+ #tag-cloud a:hover{text-decoration:underline;}
46
+ .cloud1{font-size:15px;}
47
+ .cloud2{font-size:19px;}
48
+ .cloud3{font-size:23px;}
49
+ .cloud4{font-size:27px;}
50
+ .cloud5{font-size:31px;}
51
+ .cloud6{font-size:35px;}
52
+ .cloud7{font-size:39px;}
53
+ .cloud8{font-size:43px;}
54
+ .cloud9{font-size:47px;}
55
+ /* css for google widgets */
56
+ .slide_show_content {width:250px;height:200px;margin-bottom:40px;padding:5px;}
57
+ .datafeeds .calculated-feeds{border:solid 1px #eee;}
58
+ .datafeeds .feed{padding:0px 4px;}
59
+ .datafeeds .feed-header{background-color:#eee;padding:3px;margin-top:20px;}
60
+ .datafeeds .feed-header h3{margin:0;padding:2px 0 5px 25px;}
61
+ .datafeeds .feed-header h3 a{text-decoration:none;color:#333;}
62
+ .datafeeds .feed-header h3 a:hover{color:#000;}
63
+ .datafeeds .feed-item{margin:0 15px 0 20px;}
64
+ .datafeeds .feed-item h4{margin:0;padding:2px;}
65
+ .datafeeds .feed-item h4 a{text-decoration:none;color:#555;}
66
+ .datafeeds .feed-item h4 a:hover{color:#000;}
67
+ .datafeeds .feed-item .hentry .entry{display:none;}
68
+ .datafeeds .even{background-color:#f6f8f9;}
69
+ .datafeeds .odd{background-color:#fff;}
70
+ .datafeeds .feed-photos a, .datafeeds .feed-photos img{width:100px;height:100px;overflow:hidden;display:inline-block;}
71
+ .datafeeds .feed-photos {margin:0;}
72
+ .datafeeds .feed-videos img{width:100px;height:100px;}
73
+ .datafeeds .feed-videos {margin:0;}
74
+ .remove-feed{float:right;}
75
+ .entry-close{float:right;font-size:.8em;}
76
+ /* edit aggregation */
77
+ #edit-aggregation-controls .box{margin:10px 0;}
@@ -81,6 +81,11 @@ Factory.define :aggregation do |f|
81
81
  f.ownable {|a| a.association(:user)}
82
82
  end
83
83
 
84
+ Factory.define :aggregation_feed do |f|
85
+ f.feed {|a| a.association(:feed)}
86
+ f.aggregation {|a| a.association(:aggregation)}
87
+ end
88
+
84
89
  Factory.define :oai_endpoint do |f|
85
90
  f.contributor { |a| a.association(:user) }
86
91
  f.uri { Factory.next(:uri) }
@@ -0,0 +1,67 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+
3
+ class Muck::AggregationFeedsControllerTest < ActionController::TestCase
4
+
5
+ tests Muck::AggregationFeedsController
6
+
7
+ context "aggregation feeds controller" do
8
+ setup do
9
+ @aggregation = Factory(:aggregation)
10
+ @feed = Factory(:feed)
11
+ @aggregation.feeds << @feed
12
+ end
13
+
14
+ context "not logged in" do
15
+ context "DELETE destroy" do
16
+ setup do
17
+ delete :destroy, :id => -1, :aggregation_id => @aggregation.id, :feed_id => @feed.id
18
+ end
19
+ should_redirect_to("login") { login_path }
20
+ should "set the flash to can't delete" do
21
+ ensure_flash_contains(I18n.t('muck.raker.cant_modify_aggregation'))
22
+ end
23
+ end
24
+
25
+ context "DELETE destroy json" do
26
+ setup do
27
+ delete :destroy, :id => -1, :aggregation_id => @aggregation.id, :feed_id => @feed.id, :format => 'json'
28
+ end
29
+ should_redirect_to("login") { login_path }
30
+ end
31
+
32
+ end
33
+
34
+ context "logged in with permissions" do
35
+ setup do
36
+ @admin = Factory(:user)
37
+ @admin_role = Factory(:role, :rolename => 'administrator')
38
+ @admin.roles << @admin_role
39
+ activate_authlogic
40
+ login_as @admin
41
+ end
42
+
43
+ context "DELETE destroy" do
44
+ setup do
45
+ delete :destroy, :id => -1, :aggregation_id => @aggregation.id, :feed_id => @feed.id
46
+ end
47
+ should_redirect_to("aggregations path") { user_aggregation_path(@aggregation.ownable, @aggregation) }
48
+ should "set the flash to deleted" do
49
+ ensure_flash_contains(I18n.t('muck.raker.feed_remove'))
50
+ end
51
+ end
52
+
53
+ context "DELETE destroy json" do
54
+ setup do
55
+ delete :destroy, :id => -1, :aggregation_id => @aggregation.id, :feed_id => @feed.id, :format => 'json'
56
+ end
57
+ should_respond_with :success
58
+ should "contain success:false in the result" do
59
+ JSON.parse(@response.body)['success'] == true
60
+ end
61
+ end
62
+
63
+ end
64
+
65
+ end
66
+
67
+ end
@@ -12,7 +12,16 @@ class Muck::AggregationsControllerTest < ActionController::TestCase
12
12
  activate_authlogic
13
13
  login_as @admin
14
14
  end
15
-
15
+
16
+ context "GET index" do
17
+ setup do
18
+ get :index
19
+ end
20
+ should_not_set_the_flash
21
+ should_respond_with :success
22
+ should_render_template :index
23
+ end
24
+
16
25
  context "GET new" do
17
26
  setup do
18
27
  get :new
@@ -44,10 +53,35 @@ class Muck::AggregationsControllerTest < ActionController::TestCase
44
53
 
45
54
  context "POST create" do
46
55
  setup do
47
- post :create, :aggregation => { :terms => 'example' }
56
+ @term = 'example'
57
+ post :create, :aggregation => { :terms => @term }
48
58
  end
49
59
  should_redirect_to("aggregation") { edit_aggregation_path(assigns(:aggregation)) }
50
- should_set_the_flash_to(I18n.t('muck.raker.no_feeds_at_uri'))
60
+ should "set the flash to add feeds" do
61
+ ensure_flash_contains(I18n.t('muck.raker.add_feeds_to_aggregation', :title => @term))
62
+ end
63
+ end
64
+
65
+ context "PUT update" do
66
+ setup do
67
+ @aggregation = Factory(:aggregation)
68
+ put :update, :id => @aggregation.to_param, :aggregation => { :terms => 'fish' }
69
+ end
70
+ should_redirect_to("aggregation") { edit_user_aggregation_path(@aggregation.ownable, assigns(:aggregation)) }
71
+ should "set the flash to updated aggregation" do
72
+ ensure_flash_contains(I18n.t('muck.raker.aggregation_updated'))
73
+ end
74
+ end
75
+
76
+ context "DELETE destroy" do
77
+ setup do
78
+ @aggregation = Factory(:aggregation)
79
+ delete :destroy, :id => @aggregation.to_param
80
+ end
81
+ should_redirect_to("aggregations") { user_aggregations_path(@aggregation.ownable) }
82
+ should "set the flash to deleted" do
83
+ ensure_flash_contains(I18n.t('muck.raker.aggregation_deleted', :title => ''))
84
+ end
51
85
  end
52
86
 
53
87
  end
@@ -0,0 +1,46 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+
3
+ class Muck::TopicsControllerTest < ActionController::TestCase
4
+
5
+ tests Muck::TopicsController
6
+
7
+ context "topics controller" do
8
+
9
+ context "GET new" do
10
+ setup do
11
+ get :new
12
+ end
13
+ should_not_set_the_flash
14
+ should_respond_with :success
15
+ should_render_template :new
16
+ end
17
+
18
+ context "GET rss_discovery with term defined" do
19
+ setup do
20
+ get :rss_discovery, :id => 'ruby,rails'
21
+ end
22
+ should_not_set_the_flash
23
+ should_respond_with :success
24
+ should_render_template :rss_discovery
25
+ end
26
+
27
+ context "GET show with term defined" do
28
+ setup do
29
+ get :show, :id => 'ruby,rails'
30
+ end
31
+ should_not_set_the_flash
32
+ should_respond_with :success
33
+ should_render_template :show
34
+ end
35
+
36
+ context "GET show without terms" do
37
+ setup do
38
+ get :show, :id => ''
39
+ end
40
+ should_set_the_flash_to(I18n.t('muck.raker.no_terms_error'))
41
+ should_redirect_to("new topic") { new_topic_path }
42
+ end
43
+
44
+ end
45
+
46
+ end
@@ -10,8 +10,16 @@
10
10
  require File.dirname(__FILE__) + '/../test_helper'
11
11
 
12
12
  class AggregationFeedTest < ActiveSupport::TestCase
13
+
13
14
  context "aggregation feed" do
15
+ setup do
16
+ @aggregation_feed = Factory(:aggregation_feed)
17
+ end
18
+
19
+ subject { @aggregation_feed }
20
+
14
21
  should_belong_to :aggregation
15
22
  should_belong_to :feed
16
23
  end
24
+
17
25
  end
@@ -16,9 +16,104 @@
16
16
  require File.dirname(__FILE__) + '/../test_helper'
17
17
 
18
18
  class AggregationTest < ActiveSupport::TestCase
19
+
19
20
  context "aggregation" do
21
+ setup do
22
+ @aggregation = Factory(:aggregation)
23
+ end
24
+
25
+ subject { @aggregation }
26
+
20
27
  should_belong_to :ownable
21
28
  should_have_many :aggregation_feeds
22
29
  should_have_many :feeds
30
+
31
+ context "named scope" do
32
+ context "by_title" do
33
+ setup do
34
+ Aggregation.delete_all
35
+ @first = Factory(:aggregation, :title => 'a')
36
+ @second = Factory(:aggregation, :title => 'b')
37
+ end
38
+ should "sort by title" do
39
+ assert_equal @first, Aggregation.by_title[0]
40
+ assert_equal @second, Aggregation.by_title[1]
41
+ end
42
+ end
43
+ context "recent" do
44
+ setup do
45
+ Aggregation.delete_all
46
+ @recent = Factory(:aggregation)
47
+ @not_recent = Factory(:aggregation, :created_at => 10.weeks.ago)
48
+ end
49
+ should "get recent aggregations" do
50
+ assert Aggregation.recent.include?(@recent)
51
+ end
52
+ should "not get recent aggregations" do
53
+ assert !Aggregation.recent.include?(@not_recent)
54
+ end
55
+ end
56
+ context "newest" do
57
+ setup do
58
+ Aggregation.delete_all
59
+ @first = Factory(:aggregation, :created_at => 1.day.ago)
60
+ @second = Factory(:aggregation, :created_at => 1.week.ago)
61
+ end
62
+ should "sort by created_at" do
63
+ assert_equal @first, Aggregation.newest[0]
64
+ assert_equal @second, Aggregation.newest[1]
65
+ end
66
+ end
67
+ end
68
+
69
+ context "filter feed types" do
70
+ setup do
71
+ Aggregation.delete_all
72
+ @aggregation = Factory(:aggregation, :terms => 'autumn')
73
+ @aggregation.add_feeds # Generate all feeds
74
+ end
75
+ should "get all feeds" do
76
+ assert @aggregation.all_feeds.length > 0
77
+ assert @aggregation.all_feeds.any?{ |feed| feed.service.photo? }
78
+ assert @aggregation.all_feeds.any?{ |feed| feed.service.video? }
79
+ assert @aggregation.all_feeds.any?{ |feed| feed.service.bookmark? }
80
+ assert @aggregation.all_feeds.any?{ |feed| feed.service.general? }
81
+ end
82
+ should "only get photo feeds" do
83
+ assert @aggregation.photo_feeds.length > 0
84
+ assert @aggregation.photo_feeds.all?{ |feed| feed.service.photo? }
85
+ end
86
+ should "only get video feeds" do
87
+ assert @aggregation.video_feeds.length > 0
88
+ assert @aggregation.video_feeds.all?{ |feed| feed.service.video? }
89
+ end
90
+ should "only get bookmark feeds" do
91
+ assert @aggregation.bookmark_feeds.length > 0
92
+ assert @aggregation.bookmark_feeds.all?{ |feed| feed.service.bookmark? }
93
+ end
94
+ should "only get music feeds" do
95
+ assert @aggregation.music_feeds.length > 0
96
+ assert @aggregation.music_feeds.all?{ |feed| feed.service.music? }
97
+ end
98
+ should "only get general feeds" do
99
+ assert @aggregation.general_feeds.length > 0
100
+ assert @aggregation.general_feeds.all?{ |feed| feed.service.general? }
101
+ end
102
+
103
+ end
104
+
105
+ context "add_feeds_by_uri" do
106
+ setup do
107
+ @uris = ['http://www.example.com', 'http://www.justinball.com']
108
+ @aggregation = Factory(:aggregation)
109
+ @aggregation.add_feeds_by_uri(nil, uris)
110
+ @aggregation.reload
111
+ end
112
+ should "add feeds" do
113
+ assert_equal @uris.length, @aggregation.feeds.length
114
+ end
115
+ end
116
+
23
117
  end
118
+
24
119
  end
@@ -21,7 +21,7 @@ require File.dirname(__FILE__) + '/../test_helper'
21
21
  class CommentTest < ActiveSupport::TestCase
22
22
 
23
23
  context "comment instance" do
24
-
24
+
25
25
  context "activities" do
26
26
  setup do
27
27
  @entry = Factory(:entry)
@@ -44,6 +44,9 @@ class EntryTest < ActiveSupport::TestCase
44
44
  setup do
45
45
  @entry = Factory(:entry)
46
46
  end
47
+
48
+ subject { @entry }
49
+
47
50
  should_belong_to :feed
48
51
  end
49
52
 
@@ -42,6 +42,9 @@ class FeedTest < ActiveSupport::TestCase
42
42
  setup do
43
43
  @feed = Factory(:feed)
44
44
  end
45
+
46
+ subject { @feed }
47
+
45
48
  should_have_many :feed_parents
46
49
  should_have_many :entries
47
50
  should_belong_to :contributor
@@ -7,6 +7,9 @@ class OaiEndpointTest < ActiveSupport::TestCase
7
7
  setup do
8
8
  @oai_endpoint = Factory(:oai_endpoint)
9
9
  end
10
+
11
+ subject { @oai_endpoint }
12
+
10
13
  should_belong_to :contributor
11
14
  should_belong_to :default_language
12
15