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,52 @@
1
+ require "test_helper"
2
+
3
+ =begin
4
+
5
+ What's being tested here?
6
+
7
+ - HasManyThrough
8
+
9
+ =end
10
+
11
+ class Admin::ProjectsControllerTest < ActionController::TestCase
12
+
13
+ setup do
14
+ @typus_user = Factory(:typus_user)
15
+ @request.session[:typus_user_id] = @typus_user.id
16
+
17
+ @project = Factory(:project)
18
+ @user = @project.user
19
+ end
20
+
21
+ should_eventually "be able to destroy items" do
22
+ get :destroy, { :id => @user.id, :method => :delete }
23
+
24
+ assert_response :redirect
25
+ assert_equal "User successfully removed.", flash[:notice]
26
+ assert_redirected_to :action => :index
27
+ end
28
+
29
+ context "relate colaborators to project" do
30
+
31
+ setup do
32
+ @request.env['HTTP_REFERER'] = "/admin/projects/edit/#{@project.id}"
33
+ end
34
+
35
+ should "work" do
36
+ user = Factory(:user)
37
+
38
+ assert_difference('@project.collaborators.count') do
39
+ post :relate, { :id => @project.id,
40
+ :related => { :model => 'User', :id => user.id, :association_name => 'collaborators' } }
41
+ end
42
+
43
+ assert_response :redirect
44
+ assert_redirected_to @request.env['HTTP_REFERER']
45
+ assert_equal "Project successfully updated.", flash[:notice]
46
+ end
47
+
48
+ should_eventually "not allow to add collaborator twice"
49
+
50
+ end
51
+
52
+ end
@@ -0,0 +1,92 @@
1
+ require "test_helper"
2
+
3
+ =begin
4
+
5
+ What's being tested here?
6
+
7
+ - Sessions
8
+
9
+ =end
10
+
11
+ class Admin::SessionControllerTest < ActionController::TestCase
12
+
13
+ context "Setup" do
14
+
15
+ should "redirect_to_new_admin_account_when_no_admin_users" do
16
+ get :new
17
+ assert_response :redirect
18
+ assert_redirected_to new_admin_account_path
19
+ end
20
+
21
+ end
22
+
23
+ context "With users" do
24
+
25
+ setup do
26
+ @typus_user = Factory(:typus_user)
27
+ end
28
+
29
+ should "render new" do
30
+ get :new
31
+ assert_response :success
32
+ end
33
+
34
+ should "render new and verify title and header" do
35
+ get :new
36
+ assert_select "title", "Typus &mdash; Sign in"
37
+ assert_select "h1", "Typus"
38
+ end
39
+
40
+ should "render session layout" do
41
+ get :new
42
+ assert_template "new"
43
+ assert_template "layouts/admin/session"
44
+ end
45
+
46
+ should "verify_typus_sign_in_layout_does_not_include_recover_password_link" do
47
+ get :new
48
+ assert !@response.body.include?("Recover password")
49
+ end
50
+
51
+ should "verify new includes recover_password_link when mailer_sender is set" do
52
+ Typus.expects(:mailer_sender).returns("john@example.com")
53
+ get :new
54
+ assert @response.body.include?("Recover password")
55
+ end
56
+
57
+ should "not_create_session_for_invalid_users" do
58
+ post :create, { :typus_user => { :email => "john@example.com", :password => "XXXXXXXX" } }
59
+ assert_response :redirect
60
+ assert_redirected_to new_admin_session_path
61
+ end
62
+
63
+ should "not_create_session_for_a_disabled_user" do
64
+ typus_user = Factory(:typus_user, :email => "disabled@example.com", :status => false)
65
+
66
+ post :create, { :typus_user => { :email => typus_user.email, :password => "12345678" } }
67
+
68
+ assert_nil @request.session[:typus_user_id]
69
+ assert_response :redirect
70
+ assert_redirected_to new_admin_session_path
71
+ end
72
+
73
+ should "create_session_for_an_enabled_user" do
74
+ post :create, { :typus_user => { :email => @typus_user.email, :password => "12345678" } }
75
+
76
+ assert_equal @typus_user.id, @request.session[:typus_user_id]
77
+ assert_response :redirect
78
+ assert_redirected_to admin_dashboard_path
79
+ end
80
+
81
+ should "destroy" do
82
+ delete :destroy
83
+
84
+ assert_nil @request.session[:typus_user_id]
85
+ assert_response :redirect
86
+ assert_redirected_to new_admin_session_path
87
+ assert flash.empty?
88
+ end
89
+
90
+ end
91
+
92
+ end
@@ -0,0 +1,54 @@
1
+ require "test_helper"
2
+
3
+ =begin
4
+
5
+ What's being tested here?
6
+
7
+ - Resource controller (which is not associated with a model).
8
+
9
+ =end
10
+
11
+ class Admin::StatusControllerTest < ActionController::TestCase
12
+
13
+ context "Admin" do
14
+
15
+ setup do
16
+ @request.session[:typus_user_id] = Factory(:typus_user).id
17
+ end
18
+
19
+ should "render index" do
20
+ get :index
21
+ assert_response :success
22
+ assert_template 'index'
23
+ end
24
+
25
+ end
26
+
27
+ context "Editor" do
28
+
29
+ setup do
30
+ @request.session[:typus_user_id] = Factory(:typus_user, :role => "editor").id
31
+ end
32
+
33
+ should "not render index" do
34
+ get :index
35
+ assert_response :unprocessable_entity
36
+ end
37
+
38
+ end
39
+
40
+ context "Not logged user" do
41
+
42
+ setup do
43
+ @request.session[:typus_user_id] = nil
44
+ end
45
+
46
+ should "not render index and redirect to new_admin_session_path with back_to" do
47
+ get :index
48
+ assert_response :redirect
49
+ assert_redirected_to new_admin_session_path(:back_to => '/admin/status')
50
+ end
51
+
52
+ end
53
+
54
+ end
@@ -0,0 +1,160 @@
1
+ require "test_helper"
2
+
3
+ =begin
4
+
5
+ What's being tested here?
6
+
7
+ - Stuff related to Admin users. (a.k.a. Profile Stuff)
8
+
9
+ =end
10
+
11
+ class Admin::TypusUsersControllerTest < ActionController::TestCase
12
+
13
+ context "Admin" do
14
+
15
+ setup do
16
+ @typus_user = Factory(:typus_user)
17
+ @typus_user_editor = Factory(:typus_user, :email => "editor@example.com", :role => "editor")
18
+ @request.session[:typus_user_id] = @typus_user.id
19
+ @request.env['HTTP_REFERER'] = '/admin/typus_users'
20
+ end
21
+
22
+ should "be able to render new" do
23
+ get :new
24
+ assert_response :success
25
+ end
26
+
27
+ should "not be able to toogle his status" do
28
+ get :toggle, { :id => @typus_user.id, :field => 'status' }
29
+ assert_response :unprocessable_entity
30
+ end
31
+
32
+ should "be able to toggle other users status" do
33
+ get :toggle, { :id => @typus_user_editor.id, :field => 'status' }
34
+ assert_response :redirect
35
+ assert_redirected_to @request.env['HTTP_REFERER']
36
+ assert_equal "Typus user successfully updated.", flash[:notice]
37
+ end
38
+
39
+ should "not be able to destroy himself" do
40
+ delete :destroy, :id => @typus_user.id
41
+ assert_response :unprocessable_entity
42
+ end
43
+
44
+ should "be able to destroy other users" do
45
+ assert_difference('TypusUser.count', -1) do
46
+ delete :destroy, :id => @typus_user_editor.id
47
+ end
48
+
49
+ assert_response :redirect
50
+ assert_redirected_to @request.env['HTTP_REFERER']
51
+ assert_equal "Typus user successfully removed.", flash[:notice]
52
+ end
53
+
54
+ should "not be able to change his role" do
55
+ post :update, { :id => @typus_user.id, :typus_user => { :role => 'editor' } }
56
+ assert_response :unprocessable_entity
57
+ end
58
+
59
+ should "be able to update other users role" do
60
+ post :update, { :id => @typus_user_editor.id, :typus_user => { :role => 'admin' } }
61
+ assert_response :redirect
62
+ assert_redirected_to "/admin/typus_users/edit/#{@typus_user_editor.id}"
63
+ assert_equal "Typus user successfully updated.", flash[:notice]
64
+ end
65
+
66
+ end
67
+
68
+ context "Editor" do
69
+
70
+ setup do
71
+ @request.env['HTTP_REFERER'] = '/admin/typus_users'
72
+ @editor = Factory(:typus_user, :email => "editor@example.com", :role => "editor")
73
+ @request.session[:typus_user_id] = @editor.id
74
+ end
75
+
76
+ should "not be able to create typus_users" do
77
+ get :new
78
+ assert_response :unprocessable_entity
79
+ end
80
+
81
+ should "be able to edit his profile" do
82
+ get :edit, { :id => @editor.id }
83
+ assert_response :success
84
+ end
85
+
86
+ should "be able to update his profile" do
87
+ post :update, { :id => @editor.id, :typus_user => { :role => 'editor' } }
88
+ assert_response :redirect
89
+ assert_redirected_to "/admin/typus_users/edit/#{@editor.id}"
90
+ assert_equal "Typus user successfully updated.", flash[:notice]
91
+ end
92
+
93
+ should "not be able to change his role" do
94
+ post :update, { :id => @editor.id, :typus_user => { :role => 'admin' } }
95
+ assert_response :unprocessable_entity
96
+ end
97
+
98
+ should "not be able to destroy his profile" do
99
+ delete :destroy, :id => @editor.id
100
+ assert_response :unprocessable_entity
101
+ end
102
+
103
+ should "not be able to toggle his status" do
104
+ get :toggle, { :id => @editor.id, :field => 'status' }
105
+ assert_response :unprocessable_entity
106
+ end
107
+
108
+ should "not be able to edit other profiles" do
109
+ user = Factory(:typus_user)
110
+ get :edit, { :id => user.id }
111
+ assert_response :unprocessable_entity
112
+ end
113
+
114
+ should "not be able to update other profiles" do
115
+ user = Factory(:typus_user)
116
+ post :update, { :id => user.id, :typus_user => { :role => 'admin' } }
117
+ assert_response :unprocessable_entity
118
+ end
119
+
120
+ should "not be able to destroy other profiles" do
121
+ user = Factory(:typus_user)
122
+ delete :destroy, :id => user.id
123
+ assert_response :unprocessable_entity
124
+ end
125
+
126
+ should "not be able to toggle other profiles status" do
127
+ user = Factory(:typus_user)
128
+ get :toggle, { :id => user.id, :field => 'status' }
129
+ assert_response :unprocessable_entity
130
+ end
131
+
132
+ end
133
+
134
+ ##
135
+ # Designer doesn't have TypusUser permissions BUT can update his profile.
136
+ #
137
+
138
+ context "Designer" do
139
+
140
+ setup do
141
+ @designer = Factory(:typus_user, :email => "designer@example.com", :role => "designer")
142
+ @request.session[:typus_user_id] = @designer.id
143
+ end
144
+
145
+ should "be able to edit his profile" do
146
+ get :edit, { :id => @designer.id }
147
+ assert_response :success
148
+ end
149
+
150
+ should "be able to update his profile" do
151
+ post :update, { :id => @designer.id, :typus_user => { :role => 'designer', :email => 'designer@withafancydomain.com' } }
152
+ assert_response :redirect
153
+ assert_redirected_to "/admin/typus_users/edit/#{@designer.id}"
154
+ assert_equal "Typus user successfully updated.", flash[:notice]
155
+ assert_equal "designer@withafancydomain.com", @designer.reload.email
156
+ end
157
+
158
+ end
159
+
160
+ end
@@ -0,0 +1,106 @@
1
+ require "test_helper"
2
+
3
+ =begin
4
+
5
+ What's being tested here?
6
+
7
+ - HasManyThrough
8
+
9
+ =end
10
+
11
+ class Admin::UsersControllerTest < ActionController::TestCase
12
+
13
+ setup do
14
+ @typus_user = Factory(:typus_user)
15
+ @request.session[:typus_user_id] = @typus_user.id
16
+
17
+ @project = Factory(:project)
18
+ @user = @project.user
19
+ end
20
+
21
+ should_eventually "be able to destroy items" do
22
+ get :destroy, { :id => @user.id, :method => :delete }
23
+
24
+ assert_response :redirect
25
+ assert_equal "User successfully removed.", flash[:notice]
26
+ assert_redirected_to :action => :index
27
+ end
28
+
29
+ context "index" do
30
+
31
+ setup do
32
+ @user_1 = Factory(:user)
33
+ @project_1 = Factory(:project, :user => @user_1)
34
+ Factory(:project, :user => @user_1)
35
+ @project_2 = Factory(:project)
36
+ end
37
+
38
+ should "filter by projects" do
39
+ get :index, { 'projects' => @project_1.id }
40
+ assert_equal [@user_1], assigns(:items)
41
+
42
+ get :index, { 'projects' => @project_2.id }
43
+ assert_not_equal [@user_1], assigns(:items)
44
+ end
45
+
46
+ end
47
+
48
+ context "unrelate collaborators" do
49
+
50
+ ##
51
+ # We have a project with many collaborators (which are users)
52
+ #
53
+
54
+ setup do
55
+ @project = Factory(:project)
56
+ @user = Factory(:user)
57
+ @project.collaborators << @user
58
+
59
+ @request.env['HTTP_REFERER'] = "/admin/projects/edit/#{@project.id}"
60
+ end
61
+
62
+ should "work" do
63
+ assert_difference('@project.collaborators.count', -1) do
64
+ post :unrelate, { :id => @user.id,
65
+ :resource => 'Project',
66
+ :resource_id => @project.id,
67
+ :association_name => "collaborators" }
68
+ end
69
+ assert_response :redirect
70
+ assert_redirected_to @request.env['HTTP_REFERER']
71
+ assert_equal "Project successfully updated.", flash[:notice]
72
+ end
73
+
74
+ end
75
+
76
+ ##
77
+ # THIS IS HERE BECAUSE I FOUND A BIG HOLE IN THE FILTERS STUFF!
78
+ #
79
+ context "autocomplete" do
80
+
81
+ setup do
82
+ 25.times { Factory(:user) }
83
+ end
84
+
85
+ should "work and return a json hash with ten items" do
86
+ get :autocomplete, { :term => "User" }
87
+ assert_response :success
88
+ assert_equal 20, assigns(:items).size
89
+ end
90
+
91
+ should "work and return json hash with one item" do
92
+ post = User.first
93
+ post.update_attributes(:name => "fesplugas")
94
+
95
+ get :autocomplete, { :term => "jmeiss" }
96
+ assert_response :success
97
+ assert_equal 0, assigns(:items).size
98
+
99
+ get :autocomplete, { :term => "fesplugas" }
100
+ assert_response :success
101
+ assert_equal 1, assigns(:items).size
102
+ end
103
+
104
+ end
105
+
106
+ end