typus 3.0.6 → 3.0.7

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 (295) hide show
  1. data/.gemtest +0 -0
  2. data/.gitignore +15 -0
  3. data/Gemfile +9 -5
  4. data/Rakefile +34 -21
  5. data/app/controllers/admin/base_controller.rb +0 -4
  6. data/app/controllers/admin/resources_controller.rb +77 -213
  7. data/app/controllers/admin/session_controller.rb +1 -1
  8. data/app/helpers/admin/base_helper.rb +4 -4
  9. data/app/helpers/admin/dashboard_helper.rb +1 -3
  10. data/app/helpers/admin/display_helper.rb +49 -0
  11. data/app/helpers/admin/file_preview_helper.rb +10 -12
  12. data/app/helpers/admin/filters_helper.rb +1 -1
  13. data/app/helpers/admin/form_helper.rb +2 -13
  14. data/app/helpers/admin/list_helper.rb +14 -3
  15. data/app/helpers/admin/relationships_helper.rb +79 -62
  16. data/app/helpers/admin/resources_helper.rb +17 -16
  17. data/app/helpers/admin/search_helper.rb +1 -1
  18. data/app/helpers/admin/sidebar_helper.rb +1 -2
  19. data/app/helpers/admin/table_helper.rb +9 -4
  20. data/app/views/admin/helpers/_file_preview.html.erb +1 -1
  21. data/app/views/admin/helpers/base/_apps.html.erb +23 -0
  22. data/app/views/admin/helpers/{_flash_message.html.erb → base/_flash_message.html.erb} +0 -0
  23. data/app/views/admin/helpers/{_header.html.erb → base/_header.html.erb} +0 -0
  24. data/app/views/admin/helpers/{_login_info.html.erb → base/_login_info.html.erb} +0 -0
  25. data/app/views/admin/helpers/resources/_display_link_to_previous.html.erb +1 -1
  26. data/app/views/admin/resources/show.html.erb +4 -27
  27. data/app/views/admin/templates/_belongs_to_with_autocomplete.html.erb +11 -0
  28. data/app/views/admin/templates/_has_n.html.erb +1 -1
  29. data/app/views/admin/templates/_has_one.html.erb +3 -3
  30. data/app/views/admin/templates/_relate_form.html.erb +1 -1
  31. data/app/views/admin/templates/_relate_form_with_autocomplete.html.erb +24 -0
  32. data/app/views/layouts/admin/base.html.erb +15 -9
  33. data/app/views/layouts/admin/headless.html.erb +44 -0
  34. data/app/views/layouts/admin/session.html.erb +3 -2
  35. data/doc/hudson_setup.md +19 -0
  36. data/lib/generators/typus/assets_generator.rb +0 -4
  37. data/lib/generators/typus/config_generator.rb +107 -0
  38. data/lib/generators/typus/controller_generator.rb +0 -4
  39. data/lib/generators/typus/initializers_generator.rb +22 -0
  40. data/lib/generators/typus/migration_generator.rb +0 -4
  41. data/lib/generators/typus/typus_generator.rb +8 -101
  42. data/lib/generators/typus/views_generator.rb +0 -4
  43. data/lib/support/active_record.rb +8 -2
  44. data/lib/support/fake_user.rb +2 -0
  45. data/lib/support/hash.rb +1 -1
  46. data/lib/support/string.rb +3 -3
  47. data/lib/tasks/typus.rake +1 -1
  48. data/lib/typus.rb +15 -6
  49. data/lib/typus/controller/actions.rb +69 -0
  50. data/lib/typus/controller/associations.rb +82 -0
  51. data/lib/typus/controller/autocomplete.rb +16 -0
  52. data/lib/typus/controller/filters.rb +24 -0
  53. data/lib/typus/controller/format.rb +70 -0
  54. data/lib/typus/orm/active_record.rb +9 -240
  55. data/lib/typus/orm/active_record/class_methods.rb +227 -0
  56. data/lib/typus/orm/active_record/instance_methods.rb +13 -0
  57. data/lib/typus/orm/active_record/search.rb +17 -5
  58. data/lib/typus/orm/active_record/user.rb +157 -0
  59. data/lib/typus/regex.rb +11 -0
  60. data/lib/typus/version.rb +1 -1
  61. data/test/app/controllers/admin/account_controller_test.rb +104 -0
  62. data/test/app/controllers/admin/assets_controller_test.rb +153 -0
  63. data/test/app/controllers/admin/base_controller_test.rb +41 -0
  64. data/test/app/controllers/admin/birds_controller_test.rb +42 -0
  65. data/test/app/controllers/admin/cases_controller_test.rb +21 -0
  66. data/test/app/controllers/admin/categories_controller_test.rb +141 -0
  67. data/test/app/controllers/admin/comments_controller_test.rb +79 -0
  68. data/test/app/controllers/admin/dashboard_controller_test.rb +162 -0
  69. data/test/app/controllers/admin/image_holders_controller_test.rb +75 -0
  70. data/test/app/controllers/admin/invoices_controller_test.rb +78 -0
  71. data/test/app/controllers/admin/orders_controller_test.rb +18 -0
  72. data/test/app/controllers/admin/pages_controller_test.rb +37 -0
  73. data/test/app/controllers/admin/posts_controller_test.rb +745 -0
  74. data/test/app/controllers/admin/projects_controller_test.rb +52 -0
  75. data/test/app/controllers/admin/session_controller_test.rb +92 -0
  76. data/test/app/controllers/admin/status_controller_test.rb +54 -0
  77. data/test/app/controllers/admin/typus_users_controller_test.rb +160 -0
  78. data/test/app/controllers/admin/users_controller_test.rb +106 -0
  79. data/test/app/helpers/admin/base_helper_test.rb +83 -0
  80. data/test/app/helpers/admin/dashboard_helper_test.rb +32 -0
  81. data/test/app/helpers/admin/file_preview_helper_test.rb +82 -0
  82. data/test/app/helpers/admin/filters_helper_test.rb +161 -0
  83. data/test/app/helpers/admin/form_helper_test.rb +126 -0
  84. data/test/app/helpers/admin/list_helper_test.rb +59 -0
  85. data/test/app/helpers/admin/relationships_helper_test.rb +19 -0
  86. data/test/app/helpers/admin/resources_helper_test.rb +46 -0
  87. data/test/app/helpers/admin/search_helper_test.rb +60 -0
  88. data/test/app/helpers/admin/sidebar_helper_test.rb +34 -0
  89. data/test/app/helpers/admin/table_helper_test.rb +215 -0
  90. data/test/app/mailers/admin/mailer_test.rb +32 -0
  91. data/test/app/models/typus_user_roles_test.rb +124 -0
  92. data/test/app/models/typus_user_test.rb +194 -0
  93. data/test/config/routes_test.rb +29 -0
  94. data/test/factories.rb +111 -0
  95. data/test/fixtures/config/broken/application.yml +68 -0
  96. data/test/fixtures/config/broken/application_roles.yml +20 -0
  97. data/test/fixtures/config/broken/empty.yml +0 -0
  98. data/test/fixtures/config/broken/empty_roles.yml +0 -0
  99. data/test/fixtures/config/broken/undefined.yml +3 -0
  100. data/test/fixtures/config/broken/undefined_roles.yml +6 -0
  101. data/test/fixtures/config/default/typus.yml +13 -0
  102. data/test/fixtures/config/default/typus_roles.yml +2 -0
  103. data/test/fixtures/config/empty/empty_01.yml +0 -0
  104. data/test/fixtures/config/empty/empty_01_roles.yml +0 -0
  105. data/test/fixtures/config/empty/empty_02.yml +0 -0
  106. data/test/fixtures/config/empty/empty_02_roles.yml +0 -0
  107. data/test/fixtures/config/locales/es.yml +10 -0
  108. data/test/fixtures/config/namespaced/application.yml +5 -0
  109. data/test/fixtures/config/namespaced/application_roles.yml +2 -0
  110. data/test/fixtures/config/ordered/001_roles.yml +2 -0
  111. data/test/fixtures/config/ordered/002_roles.yml +2 -0
  112. data/test/fixtures/config/unordered/app_one_roles.yml +2 -0
  113. data/test/fixtures/config/unordered/app_two_roles.yml +2 -0
  114. data/test/fixtures/rails_app/.gitignore +4 -0
  115. data/test/fixtures/rails_app/Capfile +6 -0
  116. data/test/fixtures/rails_app/README +256 -0
  117. data/test/fixtures/rails_app/Rakefile +7 -0
  118. data/test/fixtures/rails_app/app/controllers/admin/animals_controller.rb +2 -0
  119. data/test/fixtures/rails_app/app/controllers/admin/articles_controller.rb +2 -0
  120. data/test/fixtures/rails_app/app/controllers/admin/assets_controller.rb +51 -0
  121. data/test/fixtures/rails_app/app/controllers/admin/birds_controller.rb +2 -0
  122. data/test/fixtures/rails_app/app/controllers/admin/cases_controller.rb +2 -0
  123. data/test/fixtures/rails_app/app/controllers/admin/categories_controller.rb +2 -0
  124. data/test/fixtures/rails_app/app/controllers/admin/comments_controller.rb +2 -0
  125. data/test/fixtures/rails_app/app/controllers/admin/dogs_controller.rb +2 -0
  126. data/test/fixtures/rails_app/app/controllers/admin/entries_controller.rb +2 -0
  127. data/test/fixtures/rails_app/app/controllers/admin/image_holders_controller.rb +2 -0
  128. data/test/fixtures/rails_app/app/controllers/admin/invoices_controller.rb +2 -0
  129. data/test/fixtures/rails_app/app/controllers/admin/orders_controller.rb +2 -0
  130. data/test/fixtures/rails_app/app/controllers/admin/pages_controller.rb +7 -0
  131. data/test/fixtures/rails_app/app/controllers/admin/posts_controller.rb +2 -0
  132. data/test/fixtures/rails_app/app/controllers/admin/project_collaborators_controller.rb +2 -0
  133. data/test/fixtures/rails_app/app/controllers/admin/projects_controller.rb +2 -0
  134. data/test/fixtures/rails_app/app/controllers/admin/status_controller.rb +2 -0
  135. data/test/fixtures/rails_app/app/controllers/admin/typus_users_controller.rb +2 -0
  136. data/test/fixtures/rails_app/app/controllers/admin/users_controller.rb +2 -0
  137. data/test/fixtures/rails_app/app/controllers/admin/views_controller.rb +2 -0
  138. data/test/fixtures/rails_app/app/controllers/admin/watch_dog_controller.rb +2 -0
  139. data/test/fixtures/rails_app/app/controllers/application_controller.rb +3 -0
  140. data/test/fixtures/rails_app/app/helpers/application_helper.rb +2 -0
  141. data/test/fixtures/rails_app/app/helpers/form_helper.rb +3 -0
  142. data/test/fixtures/rails_app/app/models/animal.rb +21 -0
  143. data/test/fixtures/rails_app/app/models/article.rb +10 -0
  144. data/test/fixtures/rails_app/app/models/asset.rb +39 -0
  145. data/test/fixtures/rails_app/app/models/bird.rb +2 -0
  146. data/test/fixtures/rails_app/app/models/case.rb +2 -0
  147. data/test/fixtures/rails_app/app/models/category.rb +31 -0
  148. data/test/fixtures/rails_app/app/models/comment.rb +17 -0
  149. data/test/fixtures/rails_app/app/models/delayed/task.rb +5 -0
  150. data/test/fixtures/rails_app/app/models/dog.rb +2 -0
  151. data/test/fixtures/rails_app/app/models/entry.rb +23 -0
  152. data/test/fixtures/rails_app/app/models/image_holder.rb +21 -0
  153. data/test/fixtures/rails_app/app/models/invoice.rb +10 -0
  154. data/test/fixtures/rails_app/app/models/order.rb +9 -0
  155. data/test/fixtures/rails_app/app/models/page.rb +24 -0
  156. data/test/fixtures/rails_app/app/models/post.rb +32 -0
  157. data/test/fixtures/rails_app/app/models/project.rb +17 -0
  158. data/test/fixtures/rails_app/app/models/project_collaborator.rb +16 -0
  159. data/test/fixtures/rails_app/app/models/typus_user.rb +22 -0
  160. data/test/fixtures/rails_app/app/models/user.rb +10 -0
  161. data/test/fixtures/rails_app/app/models/view.rb +17 -0
  162. data/test/fixtures/rails_app/app/views/admin/assets/_index.html.erb +3 -0
  163. data/test/fixtures/rails_app/app/views/admin/cases/_index.html.erb +3 -0
  164. data/test/fixtures/rails_app/app/views/admin/categories/_index.html.erb +3 -0
  165. data/test/fixtures/rails_app/app/views/admin/dashboard/_sidebar.html.erb +11 -0
  166. data/test/fixtures/rails_app/app/views/admin/entries/_index.html.erb +3 -0
  167. data/test/fixtures/rails_app/app/views/admin/pages/_index.html.erb +3 -0
  168. data/test/fixtures/rails_app/app/views/admin/posts/_edit.html.erb +1 -0
  169. data/test/fixtures/rails_app/app/views/admin/posts/_index.html.erb +5 -0
  170. data/test/fixtures/rails_app/app/views/admin/posts/_new.html.erb +1 -0
  171. data/test/fixtures/rails_app/app/views/admin/posts/_show.html.erb +1 -0
  172. data/test/fixtures/rails_app/app/views/admin/resources/_sidebar.html.erb +1 -0
  173. data/test/fixtures/rails_app/app/views/admin/status/index.html.erb +9 -0
  174. data/test/fixtures/rails_app/app/views/admin/templates/_datepicker.html.erb +1 -0
  175. data/test/fixtures/rails_app/app/views/admin/watch_dog/index.html.erb +9 -0
  176. data/test/fixtures/rails_app/app/views/layouts/admin/headless.html.erb +38 -0
  177. data/test/fixtures/rails_app/config.ru +4 -0
  178. data/test/fixtures/rails_app/config/application.rb +44 -0
  179. data/test/fixtures/rails_app/config/boot.rb +13 -0
  180. data/test/fixtures/rails_app/config/database.yml +34 -0
  181. data/test/fixtures/rails_app/config/deploy.rb +32 -0
  182. data/test/fixtures/rails_app/config/environment.rb +5 -0
  183. data/test/fixtures/rails_app/config/environments/development.rb +32 -0
  184. data/test/fixtures/rails_app/config/environments/production.rb +54 -0
  185. data/test/fixtures/rails_app/config/environments/test.rb +40 -0
  186. data/test/fixtures/rails_app/config/initializers/backtrace_silencers.rb +7 -0
  187. data/test/fixtures/rails_app/config/initializers/dragonfly.rb +1 -0
  188. data/test/fixtures/rails_app/config/initializers/inflections.rb +12 -0
  189. data/test/fixtures/rails_app/config/initializers/mime_types.rb +5 -0
  190. data/test/fixtures/rails_app/config/initializers/secret_token.rb +7 -0
  191. data/test/fixtures/rails_app/config/initializers/session_store.rb +8 -0
  192. data/test/fixtures/rails_app/config/initializers/typus.rb +5 -0
  193. data/test/fixtures/rails_app/config/initializers/typus_resources.rb +27 -0
  194. data/test/fixtures/rails_app/config/locales/en.yml +5 -0
  195. data/test/fixtures/rails_app/config/routes.rb +61 -0
  196. data/test/fixtures/rails_app/config/typus/README +68 -0
  197. data/test/fixtures/rails_app/config/typus/crud_basic.yml +10 -0
  198. data/test/fixtures/rails_app/config/typus/crud_basic_roles.yml +2 -0
  199. data/test/fixtures/rails_app/config/typus/crud_extended.yml +64 -0
  200. data/test/fixtures/rails_app/config/typus/crud_extended_roles.yml +18 -0
  201. data/test/fixtures/rails_app/config/typus/has_many.yml +0 -0
  202. data/test/fixtures/rails_app/config/typus/has_many_roles.yml +0 -0
  203. data/test/fixtures/rails_app/config/typus/has_many_through.yml +23 -0
  204. data/test/fixtures/rails_app/config/typus/has_many_through_roles.yml +4 -0
  205. data/test/fixtures/rails_app/config/typus/has_one.yml +12 -0
  206. data/test/fixtures/rails_app/config/typus/has_one_roles.yml +3 -0
  207. data/test/fixtures/rails_app/config/typus/polymorphic.yml +17 -0
  208. data/test/fixtures/rails_app/config/typus/polymorphic_roles.yml +5 -0
  209. data/test/fixtures/rails_app/config/typus/resource_roles.yml +7 -0
  210. data/test/fixtures/rails_app/config/typus/sti.yml +5 -0
  211. data/test/fixtures/rails_app/config/typus/sti_roles.yml +2 -0
  212. data/test/fixtures/rails_app/config/typus/typus.yml +13 -0
  213. data/test/fixtures/rails_app/config/typus/typus_roles.yml +2 -0
  214. data/test/fixtures/rails_app/config/typus/unknown.yml +3 -0
  215. data/test/fixtures/rails_app/config/typus/unknown_roles.yml +5 -0
  216. data/test/fixtures/rails_app/db/.gitkeep +0 -0
  217. data/test/fixtures/rails_app/db/schema.rb +174 -0
  218. data/test/fixtures/rails_app/db/seeds.rb +54 -0
  219. data/test/fixtures/rails_app/db/seeds/assets/000.jpg +0 -0
  220. data/test/fixtures/rails_app/db/seeds/assets/001.jpg +0 -0
  221. data/test/fixtures/rails_app/db/seeds/assets/002.jpg +0 -0
  222. data/test/fixtures/rails_app/db/seeds/assets/003.jpg +0 -0
  223. data/test/fixtures/rails_app/db/seeds/assets/004.jpg +0 -0
  224. data/test/fixtures/rails_app/public/404.html +26 -0
  225. data/test/fixtures/rails_app/public/422.html +26 -0
  226. data/test/fixtures/rails_app/public/500.html +26 -0
  227. data/test/fixtures/rails_app/public/favicon.ico +0 -0
  228. data/test/fixtures/rails_app/public/images/rails.png +0 -0
  229. data/test/fixtures/rails_app/public/javascripts/application.js +2 -0
  230. data/test/fixtures/rails_app/public/javascripts/controls.js +965 -0
  231. data/test/fixtures/rails_app/public/javascripts/dragdrop.js +974 -0
  232. data/test/fixtures/rails_app/public/javascripts/effects.js +1123 -0
  233. data/test/fixtures/rails_app/public/javascripts/prototype.js +6001 -0
  234. data/test/fixtures/rails_app/public/javascripts/rails.js +175 -0
  235. data/test/fixtures/rails_app/public/robots.txt +5 -0
  236. data/test/fixtures/rails_app/public/stylesheets/.gitkeep +0 -0
  237. data/test/fixtures/rails_app/script/rails +6 -0
  238. data/test/lib/support/active_record_test.rb +150 -0
  239. data/test/lib/support/fake_user_test.rb +59 -0
  240. data/test/lib/support/hash_test.rb +29 -0
  241. data/test/lib/support/object_test.rb +17 -0
  242. data/test/lib/support/string_test.rb +116 -0
  243. data/test/lib/typus/configuration_test.rb +46 -0
  244. data/test/lib/typus/controller/actions_test.rb +141 -0
  245. data/test/lib/typus/controller/associations_test.rb +7 -0
  246. data/test/lib/typus/controller/autocomplete_test.rb +7 -0
  247. data/test/lib/typus/controller/filters_test.rb +73 -0
  248. data/test/lib/typus/controller/format_test.rb +7 -0
  249. data/test/lib/typus/i18n_test.rb +9 -0
  250. data/test/lib/typus/orm/active_record/class_methods_test.rb +378 -0
  251. data/test/lib/typus/orm/active_record/search_test.rb +330 -0
  252. data/test/lib/typus/regex_test.rb +53 -0
  253. data/test/lib/typus/resources_test.rb +41 -0
  254. data/test/lib/typus_test.rb +141 -0
  255. data/test/test_helper.rb +15 -0
  256. data/typus.gemspec +25 -0
  257. metadata +586 -64
  258. data/Gemfile.lock +0 -149
  259. data/app/views/admin/helpers/_apps.html.erb +0 -9
  260. data/lib/generators/templates/public/admin/javascripts/application.js +0 -2
  261. data/lib/generators/templates/public/admin/javascripts/jquery-1.4.4.min.js +0 -167
  262. data/lib/generators/templates/public/admin/javascripts/jquery.application.js +0 -16
  263. data/lib/generators/templates/public/admin/javascripts/jquery.rails.js +0 -160
  264. data/lib/generators/templates/public/admin/javascripts/jquery.searchField.js +0 -91
  265. data/lib/generators/templates/public/admin/stylesheets/application.css +0 -11
  266. data/lib/generators/templates/public/admin/stylesheets/screen.css +0 -367
  267. data/lib/generators/templates/public/admin/vendor/fancybox/blank.gif +0 -0
  268. data/lib/generators/templates/public/admin/vendor/fancybox/fancy_close.png +0 -0
  269. data/lib/generators/templates/public/admin/vendor/fancybox/fancy_loading.png +0 -0
  270. data/lib/generators/templates/public/admin/vendor/fancybox/fancy_nav_left.png +0 -0
  271. data/lib/generators/templates/public/admin/vendor/fancybox/fancy_nav_right.png +0 -0
  272. data/lib/generators/templates/public/admin/vendor/fancybox/fancy_shadow_e.png +0 -0
  273. data/lib/generators/templates/public/admin/vendor/fancybox/fancy_shadow_n.png +0 -0
  274. data/lib/generators/templates/public/admin/vendor/fancybox/fancy_shadow_ne.png +0 -0
  275. data/lib/generators/templates/public/admin/vendor/fancybox/fancy_shadow_nw.png +0 -0
  276. data/lib/generators/templates/public/admin/vendor/fancybox/fancy_shadow_s.png +0 -0
  277. data/lib/generators/templates/public/admin/vendor/fancybox/fancy_shadow_se.png +0 -0
  278. data/lib/generators/templates/public/admin/vendor/fancybox/fancy_shadow_sw.png +0 -0
  279. data/lib/generators/templates/public/admin/vendor/fancybox/fancy_shadow_w.png +0 -0
  280. data/lib/generators/templates/public/admin/vendor/fancybox/fancy_title_left.png +0 -0
  281. data/lib/generators/templates/public/admin/vendor/fancybox/fancy_title_main.png +0 -0
  282. data/lib/generators/templates/public/admin/vendor/fancybox/fancy_title_over.png +0 -0
  283. data/lib/generators/templates/public/admin/vendor/fancybox/fancy_title_right.png +0 -0
  284. data/lib/generators/templates/public/admin/vendor/fancybox/fancybox-x.png +0 -0
  285. data/lib/generators/templates/public/admin/vendor/fancybox/fancybox-y.png +0 -0
  286. data/lib/generators/templates/public/admin/vendor/fancybox/fancybox.png +0 -0
  287. data/lib/generators/templates/public/admin/vendor/fancybox/jquery.easing-1.3.pack.js +0 -72
  288. data/lib/generators/templates/public/admin/vendor/fancybox/jquery.fancybox-1.3.4.css +0 -359
  289. data/lib/generators/templates/public/admin/vendor/fancybox/jquery.fancybox-1.3.4.js +0 -1156
  290. data/lib/generators/templates/public/admin/vendor/fancybox/jquery.fancybox-1.3.4.pack.js +0 -46
  291. data/lib/generators/templates/public/admin/vendor/fancybox/jquery.mousewheel-3.0.4.pack.js +0 -14
  292. data/lib/typus/actions.rb +0 -41
  293. data/lib/typus/filters.rb +0 -12
  294. data/lib/typus/format.rb +0 -70
  295. data/lib/typus/user.rb +0 -157
@@ -0,0 +1,83 @@
1
+ require "test_helper"
2
+
3
+ class Admin::BaseHelperTest < ActiveSupport::TestCase
4
+
5
+ include Admin::BaseHelper
6
+
7
+ include ActionView::Helpers::UrlHelper
8
+ include ActionView::Helpers::TextHelper
9
+
10
+ def render(*args); args; end
11
+
12
+ context "login info" do
13
+
14
+ setup do
15
+ admin_user = mock
16
+ self.stubs(:admin_user).returns(admin_user)
17
+ admin_user.stubs(:name).returns("Admin")
18
+ admin_user.stubs(:id).returns(1)
19
+ end
20
+
21
+ should "skip rendering when we're using a fake user" do
22
+ admin_user.stubs(:is_a?).with(FakeUser).returns(true)
23
+ output = login_info
24
+ assert_nil output
25
+ end
26
+
27
+ context "when the current user is not a FakeUser" do
28
+
29
+ setup do
30
+ admin_user.stubs(:is_a?).with(FakeUser).returns(false)
31
+ end
32
+
33
+ context "when the user cannot edit his informations" do
34
+
35
+ should "render a partial with the user name" do
36
+ admin_user.stubs(:can?).with('edit', 'TypusUser').returns(false)
37
+ assert_equal ["admin/helpers/base/login_info"], login_info
38
+ end
39
+
40
+ end
41
+
42
+ context "when the user can edit his informations" do
43
+
44
+ should "render a partial with a link" do
45
+ link_options = { :action => 'edit', :controller => '/admin/typus_users', :id => 1 }
46
+
47
+ admin_user.stubs(:can?).with('edit', 'TypusUser').returns(true)
48
+ self.stubs(:link_to).with("Admin", link_options).returns(%(<a href="/admin/typus_users/edit/1">Admin</a>))
49
+
50
+ assert_equal ["admin/helpers/base/login_info"], login_info
51
+ end
52
+
53
+ end
54
+
55
+ end
56
+
57
+ end
58
+
59
+ context "header" do
60
+
61
+ should "work returning a partial" do
62
+ assert_equal ["admin/helpers/base/header"], header
63
+ end
64
+
65
+ end
66
+
67
+ context "display_flash_message" do
68
+
69
+ should "be displayed" do
70
+ message = { :test => "This is the message." }
71
+ output = display_flash_message(message)
72
+ expected = ["admin/helpers/base/flash_message",
73
+ { :flash_type => :test, :message => { :test => "This is the message." } }]
74
+ assert_equal expected, output
75
+ end
76
+
77
+ should "not be displayed when message is empty" do
78
+ assert_nil display_flash_message(Hash.new)
79
+ end
80
+
81
+ end
82
+
83
+ end
@@ -0,0 +1,32 @@
1
+ require "test_helper"
2
+
3
+ class Admin::DashboardHelperTest < ActiveSupport::TestCase
4
+
5
+ include Admin::DashboardHelper
6
+
7
+ include ActionView::Helpers::UrlHelper
8
+ include ActionView::Helpers::TextHelper
9
+
10
+ def render(*args); args; end
11
+
12
+ context "resources" do
13
+
14
+ setup do
15
+ @expected = ["admin/helpers/dashboard/resources", { :resources => ["Git", "Status", "WatchDog"] }]
16
+ end
17
+
18
+ should "work for typus_user" do
19
+ admin_user = Factory(:typus_user)
20
+ output = resources(admin_user)
21
+ assert_equal @expected, output
22
+ end
23
+
24
+ should "work for fake_user" do
25
+ admin_user = FakeUser.new
26
+ output = resources(admin_user)
27
+ assert_equal @expected, output
28
+ end
29
+
30
+ end
31
+
32
+ end
@@ -0,0 +1,82 @@
1
+ require "test_helper"
2
+
3
+ class Admin::FilePreviewHelperTest < ActiveSupport::TestCase
4
+
5
+ include Admin::FilePreviewHelper
6
+
7
+ context "get_type_of_attachment" do
8
+
9
+ setup do
10
+ @asset = Factory(:asset)
11
+ end
12
+
13
+ should "return :dragonfly" do
14
+ assert_equal :dragonfly, get_type_of_attachment(@asset.dragonfly)
15
+ end
16
+
17
+ should "return :paperclip" do
18
+ assert_equal :paperclip, get_type_of_attachment(@asset.paperclip)
19
+ end
20
+
21
+ end
22
+
23
+ context "link_to_detach_attribute" do
24
+
25
+ setup do
26
+ @asset = @item = Factory(:asset)
27
+ end
28
+
29
+ should "work for :dragonfly and return nil when attribute is required" do
30
+ assert_nil link_to_detach_attribute('dragonfly_required')
31
+ end
32
+
33
+ should "work for :dragonfly and return link when attribute is not required" do
34
+ assert_match /Remove/, link_to_detach_attribute('dragonfly')
35
+ end
36
+
37
+ end
38
+
39
+ context "typus_file_preview_for_dragonfly" do
40
+
41
+ should "return link for non image files" do
42
+ file = File.new("#{Rails.root}/config/database.yml")
43
+ @asset = Factory(:asset, :dragonfly => file)
44
+ assert_equal @asset.dragonfly.name, typus_file_preview_for_dragonfly(@asset.dragonfly).first
45
+ assert_match /media/, typus_file_preview_for_dragonfly(@asset.dragonfly).last
46
+ end
47
+
48
+ should "return image and link for image files" do
49
+ @asset = Factory(:asset)
50
+ assert_equal "admin/helpers/file_preview", typus_file_preview_for_dragonfly(@asset.dragonfly).first
51
+ assert_match /media/, typus_file_preview_for_dragonfly(@asset.dragonfly).last[:preview]
52
+ assert_match /media/, typus_file_preview_for_dragonfly(@asset.dragonfly).last[:thumb]
53
+ end
54
+
55
+ end
56
+
57
+ context "typus_file_preview_for_paperclip" do
58
+
59
+ setup do
60
+ @asset = Factory(:asset)
61
+ end
62
+
63
+ should "return link for non image files" do
64
+ Typus.expects(:file_preview).at_least_once.returns(nil)
65
+ assert_equal "rails.png", typus_file_preview_for_paperclip(@asset.paperclip).first
66
+ assert_equal "/system/paperclips/#{@asset.id}/original/rails.png", typus_file_preview_for_paperclip(@asset.paperclip).last
67
+ end
68
+
69
+ should "return image and link for image files" do
70
+ expected = ["admin/helpers/file_preview",
71
+ {:preview => "/system/paperclips/#{@asset.id}/medium/rails.png",
72
+ :thumb => "/system/paperclips/#{@asset.id}/thumb/rails.png",
73
+ :options=>{}}]
74
+ assert_equal expected, typus_file_preview_for_paperclip(@asset.paperclip)
75
+ end
76
+
77
+ end
78
+
79
+ def link_to(*args); args; end
80
+ def render(*args); args; end
81
+
82
+ end
@@ -0,0 +1,161 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ require "test_helper"
4
+
5
+ class Admin::FiltersHelperTest < ActiveSupport::TestCase
6
+
7
+ include Admin::FiltersHelper
8
+
9
+ def render(*args); args; end
10
+
11
+ context "build_filters" do
12
+
13
+ # FIXME: Should work without this ...
14
+ setup do
15
+ @resource = Entry
16
+ @expected = ["admin/helpers/filters/filters",
17
+ {:filters=>[{:filter=>"published",
18
+ :items=>[["Show by published", ""], ["Yes", "true"], ["No", "false"]]}],
19
+ :hidden_filters=>{}}]
20
+ end
21
+
22
+ should "reject controller and action params" do
23
+ parameters = {"controller"=>"admin/posts", "action"=>"index"}
24
+ assert_equal @expected, build_filters(Entry, parameters)
25
+ end
26
+
27
+ # TODO: I want to think about it ...
28
+ should "reject locale params" do
29
+ parameters = {"locale"=>"jp"}
30
+ assert_equal @expected, build_filters(Entry, parameters)
31
+ end
32
+
33
+ # TODO: I want to think about it ...
34
+ should "reject to sort_order and order_by" do
35
+ parameters = {"sort_order"=>"asc", "order_by"=>"title"}
36
+ assert_equal @expected, build_filters(Entry, parameters)
37
+ end
38
+
39
+ should "reject the utf8 param because the form already contains it" do
40
+ parameters = {"utf8"=>"✓"}
41
+ assert_equal @expected, build_filters(Entry, parameters)
42
+ end
43
+
44
+ should "not reject the search param" do
45
+ parameters = {"search"=>"Chunky Bacon"}
46
+
47
+ expected = ["admin/helpers/filters/filters",
48
+ {:filters=>[{:filter=>"published",
49
+ :items=>[["Show by published", ""], ["Yes", "true"], ["No", "false"]]}],
50
+ :hidden_filters=>{"search"=>"Chunky Bacon"}}]
51
+
52
+ assert_equal expected, build_filters(Entry, parameters)
53
+ end
54
+
55
+ should "not reject applied filters" do
56
+ parameters = {"user_id"=>"1"}
57
+
58
+ expected = ["admin/helpers/filters/filters",
59
+ {:filters=>[{:filter=>"published",
60
+ :items=>[["Show by published", ""], ["Yes", "true"], ["No", "false"]]}],
61
+ :hidden_filters=>{"user_id"=>"1"}}]
62
+
63
+ assert_equal expected, build_filters(Entry, parameters)
64
+ end
65
+
66
+ should "reject applied filter" do
67
+ parameters = {"published"=>"true"}
68
+
69
+ expected = ["admin/helpers/filters/filters",
70
+ {:filters=>[{:filter=>"published",
71
+ :items=>[["Show by published", ""], ["Yes", "true"], ["No", "false"]]}],
72
+ :hidden_filters=>{}}]
73
+
74
+ assert_equal expected, build_filters(Entry, parameters)
75
+ end
76
+
77
+ end
78
+
79
+ should "relationship_filter"
80
+
81
+ context "date_filter" do
82
+
83
+ should "return an array" do
84
+ output = date_filter("filter")
85
+ expected = [["Show all dates", ""],
86
+ ["Today", "today"],
87
+ ["Last few days", "last_few_days"],
88
+ ["Last 7 days", "last_7_days"],
89
+ ["Last 30 days", "last_30_days"]]
90
+ assert_equal expected, output
91
+ end
92
+
93
+ end
94
+
95
+ context "boolean_filter" do
96
+
97
+ setup do
98
+ @resource = Post
99
+ end
100
+
101
+ should "return an array" do
102
+ output = boolean_filter("filter")
103
+ expected = [["Show by filter", ""],
104
+ ["True", "true"],
105
+ ["False", "false"]]
106
+ assert_equal expected, output
107
+ end
108
+
109
+ end
110
+
111
+ context "string_filter" do
112
+
113
+ setup do
114
+ @resource = Post
115
+ end
116
+
117
+ should "return an array from status which is a Hash" do
118
+ output = string_filter("status")
119
+ expected = [["Show by status", ""],
120
+ ["Unpublished", "unpublished"],
121
+ ["<div class=''>Something special</div>", "special"],
122
+ ["Draft", "draft"],
123
+ ["Published", "published"]]
124
+
125
+ expected.each { |e| assert output.include?(e) }
126
+ end
127
+
128
+ should "return an array from an ARRAY_SELECTOR" do
129
+ output = string_filter("array_selector")
130
+ expected = [["Show by array selector", ""],
131
+ ["item1", "item1"],
132
+ ["item2", "item2"]]
133
+ assert_equal expected, output
134
+ end
135
+
136
+ should "return an array from an ARRAY_HASH_SELECTOR" do
137
+ output = string_filter("array_hash_selector")
138
+ expected = [["Show by array hash selector", ""],
139
+ ["Draft", "draft"],
140
+ ["Custom Status", "custom"]]
141
+ assert_equal expected, output
142
+ end
143
+
144
+ end
145
+
146
+ context "predefined_filters" do
147
+
148
+ should "be empty" do
149
+ assert predefined_filters.empty?
150
+ end
151
+
152
+ should "return my filter" do
153
+ @predefined_filters = "mock"
154
+ assert_equal "mock", predefined_filters
155
+ end
156
+
157
+ end
158
+
159
+ def link_to(*args); args; end
160
+
161
+ end
@@ -0,0 +1,126 @@
1
+ require "test_helper"
2
+
3
+ class Admin::FormHelperTest < ActiveSupport::TestCase
4
+
5
+ include Admin::FormHelper
6
+ include Admin::ResourcesHelper
7
+
8
+ should_eventually "verify_belongs_to_field" do
9
+
10
+ params = { :controller => '/admin/post', :id => 1, :action => :create }
11
+ self.stubs(:params).returns(params)
12
+
13
+ admin_user = mock
14
+ admin_user.stubs(:can?).with('create', Post).returns(false)
15
+ @resource = Comment
16
+
17
+ expected = <<-HTML
18
+ <li><label for="comment_post">Post
19
+ <small></small>
20
+ </label>
21
+ <select id="comment_post_id" name="comment[post_id]"><option value=""></option>
22
+ <option value="3">Post#3</option>
23
+ <option value="4">Post#4</option>
24
+ <option value="1">Post#1</option>
25
+ <option value="2">Post#2</option></select></li>
26
+ HTML
27
+
28
+ assert_equal expected, typus_belongs_to_field('post')
29
+
30
+ end
31
+
32
+ should_eventually "test_typus_belongs_to_field_with_different_attribute_name" do
33
+
34
+ params = { :controller => '/admin/post', :id => 1, :action => :edit }
35
+ self.stubs(:params).returns(params)
36
+
37
+ admin_user = mock
38
+ admin_user.stubs(:can?).with('create', Comment).returns(true)
39
+ @resource = Post
40
+
41
+ expected = <<-HTML
42
+ <li><label for="post_favorite_comment">Favorite comment
43
+ <small><a href="http://test.host/admin/comments/new?back_to=%2Fadmin%2Fpost%2Fedit%2F1&selected=favorite_comment_id" onclick="return confirm('Are you sure you want to leave this page?\\n\\nIf you have made any changes to the fields without clicking the Save/Update entry button, your changes will be lost.\\n\\nClick OK to continue, or click Cancel to stay on this page.');">Add</a></small>
44
+ </label>
45
+ <select id="post_favorite_comment_id" name="post[favorite_comment_id]"><option value=""></option>
46
+ <option value="1">John</option>
47
+ <option value="2">Me</option>
48
+ <option value="3">John</option>
49
+ <option value="4">Me</option></select></li>
50
+ HTML
51
+
52
+ assert_equal expected, typus_belongs_to_field('favorite_comment')
53
+
54
+ end
55
+
56
+ should_eventually "test_typus_tree_field" do
57
+
58
+ self.stubs(:expand_tree_into_select_field).returns('expand_tree_into_select_field')
59
+
60
+ @resource = Page
61
+
62
+ expected = <<-HTML
63
+ <li><label for="page_parent">Parent</label>
64
+ <select id="page_parent" name="page[parent]">
65
+ <option value=""></option>
66
+ expand_tree_into_select_field
67
+ </select></li>
68
+ HTML
69
+
70
+ assert_equal expected, typus_tree_field('parent')
71
+
72
+ end
73
+
74
+ context "attribute_disabled?" do
75
+
76
+ setup do
77
+ @resource = Post
78
+ end
79
+
80
+ should "work for non protected_attributes" do
81
+ assert !attribute_disabled?('test')
82
+ end
83
+
84
+ should "work for protected_attributes" do
85
+ Post.expects(:protected_attributes).returns(['test'])
86
+ assert attribute_disabled?('test')
87
+ end
88
+
89
+ end
90
+
91
+ context "expand_tree_into_select_field" do
92
+
93
+ setup do
94
+ @page = Factory(:page)
95
+ @children = Factory(:page, :parent => @page)
96
+ @subchildren = Factory(:page, :parent => @children)
97
+ @items = Page.roots
98
+ end
99
+
100
+ should "verify it works" do
101
+ @item = Page.first
102
+
103
+ expected = <<-HTML
104
+ <option value="#{@page.id}"> #{@page.to_label}</option>
105
+ <option value="#{@children.id}">&nbsp;&nbsp; #{@children.to_label}</option>
106
+ <option value="#{@subchildren.id}">&nbsp;&nbsp;&nbsp;&nbsp; #{@subchildren.to_label}</option>
107
+ HTML
108
+
109
+ assert_equal expected, expand_tree_into_select_field(@items, 'parent_id')
110
+ end
111
+
112
+ should "verify if selects an item" do
113
+ @item = Page.last
114
+
115
+ expected = <<-HTML
116
+ <option value="#{@page.id}"> #{@page.to_label}</option>
117
+ <option selected value="#{@children.id}">&nbsp;&nbsp; #{@children.to_label}</option>
118
+ <option value="#{@subchildren.id}">&nbsp;&nbsp;&nbsp;&nbsp; #{@subchildren.to_label}</option>
119
+ HTML
120
+
121
+ assert_equal expected, expand_tree_into_select_field(@items, 'parent_id')
122
+ end
123
+
124
+ end
125
+
126
+ end