typus 0.9.39 → 1.0.0.pre

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 (424) hide show
  1. data/CHANGELOG +104 -0
  2. data/Gemfile +17 -0
  3. data/Gemfile.lock +96 -0
  4. data/MIT-LICENSE +1 -1
  5. data/README.rdoc +45 -0
  6. data/Rakefile +19 -48
  7. data/app/controllers/admin/account_controller.rb +54 -0
  8. data/app/controllers/admin/dashboard_controller.rb +7 -0
  9. data/app/controllers/admin/resource_controller.rb +8 -0
  10. data/app/controllers/admin/resources_controller.rb +307 -0
  11. data/app/controllers/admin/session_controller.rb +38 -0
  12. data/app/controllers/admin_controller.rb +26 -0
  13. data/app/helpers/admin/dashboard_helper.rb +38 -0
  14. data/app/helpers/admin/filters_helper.rb +81 -0
  15. data/app/helpers/admin/form_helper.rb +68 -261
  16. data/app/helpers/admin/preview_helper.rb +48 -0
  17. data/app/helpers/admin/relationships_helper.rb +192 -0
  18. data/app/helpers/admin/resources_helper.rb +80 -0
  19. data/app/helpers/admin/search_helper.rb +19 -0
  20. data/app/helpers/admin/sidebar_helper.rb +32 -210
  21. data/app/helpers/admin/table_helper.rb +207 -200
  22. data/app/helpers/admin_helper.rb +56 -0
  23. data/app/mailers/admin/mailer.rb +13 -0
  24. data/app/models/admin/fake_user.rb +38 -0
  25. data/app/views/admin/account/forgot_password.html.erb +21 -0
  26. data/app/views/admin/account/new.html.erb +21 -0
  27. data/app/views/admin/dashboard/_sidebar.html.erb +3 -3
  28. data/app/views/admin/dashboard/show.html.erb +16 -0
  29. data/app/views/admin/dashboard/styles.html.erb +154 -0
  30. data/app/views/admin/helpers/_apps.html.erb +6 -0
  31. data/app/views/admin/helpers/_flash_message.html.erb +3 -0
  32. data/app/views/admin/helpers/_header.html.erb +7 -0
  33. data/app/views/admin/helpers/_login_info.html.erb +4 -0
  34. data/app/views/admin/helpers/_preview.html.erb +13 -0
  35. data/app/views/admin/helpers/dashboard/_applications.html.erb +32 -0
  36. data/app/views/admin/helpers/dashboard/_resources.html.erb +16 -0
  37. data/app/views/admin/helpers/filters/_filters.html.erb +31 -0
  38. data/app/views/admin/helpers/resources/_display_link_to_previous.html.erb +3 -0
  39. data/app/views/admin/helpers/resources/_pagination.html.erb +28 -0
  40. data/app/views/admin/helpers/search/_search.html.erb +12 -0
  41. data/app/views/admin/helpers/sidebar/_sidebar.html.erb +17 -0
  42. data/app/views/admin/helpers/table/_table.html.erb +22 -0
  43. data/app/views/{typus_mailer/reset_password_link.erb → admin/mailer/reset_password_link.text.erb} +2 -2
  44. data/{test/config/broken/empty.yml → app/views/admin/resources/_edit.html.erb} +0 -0
  45. data/app/views/admin/resources/_form.html.erb +26 -0
  46. data/{test/config/broken/empty_roles.yml → app/views/admin/resources/_index.html.erb} +0 -0
  47. data/{test/config/empty/empty_01.yml → app/views/admin/resources/_new.html.erb} +0 -0
  48. data/{test/config/empty/empty_01_roles.yml → app/views/admin/resources/_show.html.erb} +0 -0
  49. data/app/views/admin/resources/edit.html.erb +23 -21
  50. data/app/views/admin/resources/index.html.erb +31 -18
  51. data/app/views/admin/resources/new.html.erb +20 -18
  52. data/app/views/admin/resources/show.html.erb +29 -20
  53. data/app/views/admin/session/new.html.erb +26 -0
  54. data/app/views/admin/templates/_belongs_to.html.erb +4 -0
  55. data/app/views/admin/templates/_boolean.html.erb +4 -8
  56. data/app/views/admin/templates/_date.html.erb +9 -2
  57. data/app/views/admin/templates/_datetime.html.erb +9 -2
  58. data/app/views/admin/templates/_file.html.erb +20 -5
  59. data/app/views/admin/templates/_has_many.html.erb +24 -0
  60. data/app/views/admin/templates/_has_n.html.erb +17 -0
  61. data/{test/config/empty/empty_02.yml → app/views/admin/templates/_has_one.html.erb} +0 -0
  62. data/app/views/admin/templates/_password.html.erb +4 -2
  63. data/app/views/admin/templates/_relate_form.html.erb +4 -0
  64. data/app/views/admin/templates/_selector.html.erb +6 -18
  65. data/app/views/admin/templates/_string.html.erb +11 -10
  66. data/app/views/admin/templates/_text.html.erb +9 -2
  67. data/app/views/admin/templates/_time.html.erb +9 -2
  68. data/app/views/admin/templates/_tree.html.erb +4 -0
  69. data/app/views/layouts/admin/session.html.erb +44 -0
  70. data/app/views/layouts/admin.html.erb +45 -39
  71. data/config/available_locales/ca.yml +124 -0
  72. data/config/available_locales/ca_models.yml +16 -0
  73. data/config/{locales → available_locales}/de.yml +108 -89
  74. data/config/available_locales/de_models.yml +13 -0
  75. data/config/available_locales/es.yml +124 -0
  76. data/config/available_locales/es_models.yml +13 -0
  77. data/config/available_locales/fr.yml +124 -0
  78. data/config/available_locales/fr_models.yml +13 -0
  79. data/config/available_locales/hu.yml +124 -0
  80. data/config/available_locales/hu_models.yml +13 -0
  81. data/config/available_locales/it.yml +136 -0
  82. data/config/available_locales/it_models.yml +15 -0
  83. data/config/available_locales/language.yml.template +122 -0
  84. data/config/available_locales/language_models.yml.template +13 -0
  85. data/config/{locales → available_locales}/pt-BR.yml +97 -74
  86. data/config/available_locales/pt-BR_models.yml +13 -0
  87. data/config/{locales → available_locales}/ru.yml +107 -85
  88. data/config/available_locales/ru_models.yml +13 -0
  89. data/config/routes.rb +18 -11
  90. data/lib/generators/templates/config/initializers/typus.rb +26 -0
  91. data/lib/generators/templates/config/initializers/typus_authentication.rb +18 -0
  92. data/lib/generators/templates/config/initializers/typus_resources.rb +30 -0
  93. data/{generators/typus → lib/generators}/templates/config/typus/README +34 -16
  94. data/lib/generators/templates/config/typus/application.yml +5 -0
  95. data/lib/generators/templates/config/typus/application_roles.yml +6 -0
  96. data/lib/generators/templates/config/typus/typus.yml +17 -0
  97. data/lib/generators/templates/config/typus/typus_roles.yml +6 -0
  98. data/lib/generators/templates/controller.rb +4 -0
  99. data/lib/generators/templates/functional_test.rb +21 -0
  100. data/{generators/typus/templates/db/create_typus_users.rb → lib/generators/templates/migration.rb} +4 -4
  101. data/lib/generators/templates/model.rb +8 -0
  102. data/lib/generators/templates/model.yml +10 -0
  103. data/{generators/typus/templates/public/images/admin → lib/generators/templates/public/admin/images}/ui-icons.png +0 -0
  104. data/lib/generators/templates/public/admin/javascripts/application.js +6 -0
  105. data/lib/generators/templates/public/admin/javascripts/jquery-1.4.2.min.js +154 -0
  106. data/lib/generators/templates/public/admin/javascripts/jquery.rails.js +126 -0
  107. data/lib/generators/templates/public/admin/javascripts/jquery.searchField.js +91 -0
  108. data/lib/generators/templates/public/admin/stylesheets/application.css +11 -0
  109. data/lib/generators/templates/public/admin/stylesheets/screen.css +356 -0
  110. data/lib/generators/templates/public/admin/vendor/fancybox/blank.gif +0 -0
  111. data/lib/generators/templates/public/admin/vendor/fancybox/fancy_close.png +0 -0
  112. data/lib/generators/templates/public/admin/vendor/fancybox/fancy_loading.png +0 -0
  113. data/lib/generators/templates/public/admin/vendor/fancybox/fancy_nav_left.png +0 -0
  114. data/lib/generators/templates/public/admin/vendor/fancybox/fancy_nav_right.png +0 -0
  115. data/lib/generators/templates/public/admin/vendor/fancybox/fancy_shadow_e.png +0 -0
  116. data/lib/generators/templates/public/admin/vendor/fancybox/fancy_shadow_n.png +0 -0
  117. data/lib/generators/templates/public/admin/vendor/fancybox/fancy_shadow_ne.png +0 -0
  118. data/lib/generators/templates/public/admin/vendor/fancybox/fancy_shadow_nw.png +0 -0
  119. data/lib/generators/templates/public/admin/vendor/fancybox/fancy_shadow_s.png +0 -0
  120. data/lib/generators/templates/public/admin/vendor/fancybox/fancy_shadow_se.png +0 -0
  121. data/lib/generators/templates/public/admin/vendor/fancybox/fancy_shadow_sw.png +0 -0
  122. data/lib/generators/templates/public/admin/vendor/fancybox/fancy_shadow_w.png +0 -0
  123. data/lib/generators/templates/public/admin/vendor/fancybox/fancy_title_left.png +0 -0
  124. data/lib/generators/templates/public/admin/vendor/fancybox/fancy_title_main.png +0 -0
  125. data/lib/generators/templates/public/admin/vendor/fancybox/fancy_title_over.png +0 -0
  126. data/{generators/typus/templates/public/images/admin → lib/generators/templates/public/admin/vendor}/fancybox/fancy_title_right.png +0 -0
  127. data/lib/generators/templates/public/admin/vendor/fancybox/fancybox-x.png +0 -0
  128. data/lib/generators/templates/public/admin/vendor/fancybox/fancybox-y.png +0 -0
  129. data/lib/generators/templates/public/admin/vendor/fancybox/fancybox.png +0 -0
  130. data/lib/generators/templates/public/admin/vendor/fancybox/jquery.easing-1.3.pack.js +72 -0
  131. data/lib/generators/templates/public/admin/vendor/fancybox/jquery.fancybox-1.3.1.css +363 -0
  132. data/lib/generators/templates/public/admin/vendor/fancybox/jquery.fancybox-1.3.1.js +1077 -0
  133. data/lib/generators/templates/public/admin/vendor/fancybox/jquery.fancybox-1.3.1.pack.js +44 -0
  134. data/lib/generators/templates/public/admin/vendor/fancybox/jquery.mousewheel-3.0.2.pack.js +13 -0
  135. data/lib/generators/templates/view.html.erb +9 -0
  136. data/lib/generators/typus/migration_generator.rb +85 -0
  137. data/lib/generators/typus/typus_generator.rb +190 -0
  138. data/lib/generators/typus/views_generator.rb +27 -0
  139. data/lib/support/active_record.rb +60 -0
  140. data/lib/support/array.rb +13 -0
  141. data/lib/{typus → support}/hash.rb +2 -2
  142. data/lib/{typus → support}/object.rb +2 -2
  143. data/lib/support/string.rb +47 -0
  144. data/lib/tasks/typus.rake +19 -0
  145. data/lib/typus/authentication.rb +146 -40
  146. data/lib/typus/configuration.rb +14 -49
  147. data/lib/typus/engine.rb +6 -0
  148. data/lib/typus/format.rb +41 -18
  149. data/lib/typus/orm/active_record.rb +378 -0
  150. data/lib/typus/resources.rb +57 -0
  151. data/lib/typus/user.rb +54 -37
  152. data/lib/typus/version.rb +3 -0
  153. data/lib/typus.rb +118 -80
  154. data/lib/vendor/paginator.rb +2 -2
  155. data/test/factories/assets.rb +5 -0
  156. data/test/factories/categories.rb +3 -0
  157. data/test/factories/comments.rb +6 -0
  158. data/test/factories/pages.rb +5 -0
  159. data/test/factories/pictures.rb +7 -0
  160. data/test/factories/posts.rb +6 -0
  161. data/test/factories/typus_users.rb +8 -0
  162. data/test/{config → fixtures/config}/broken/application.yml +0 -0
  163. data/test/{config → fixtures/config}/broken/application_roles.yml +0 -0
  164. data/test/{config/empty/empty_02_roles.yml → fixtures/config/broken/empty.yml} +0 -0
  165. data/test/fixtures/config/broken/empty_roles.yml +0 -0
  166. data/test/{config → fixtures/config}/broken/undefined.yml +0 -0
  167. data/test/{config → fixtures/config}/broken/undefined_roles.yml +0 -0
  168. data/test/{config → fixtures/config}/default/typus.yml +2 -1
  169. data/{generators/typus/templates/config/typus → test/fixtures/config/default}/typus_roles.yml +0 -0
  170. data/test/fixtures/config/empty/empty_01.yml +0 -0
  171. data/test/fixtures/config/empty/empty_01_roles.yml +0 -0
  172. data/test/fixtures/config/empty/empty_02.yml +0 -0
  173. data/test/fixtures/config/empty/empty_02_roles.yml +0 -0
  174. data/test/{config → fixtures/config}/locales/es.yml +0 -0
  175. data/test/fixtures/config/namespaced/application.yml +5 -0
  176. data/test/fixtures/config/namespaced/application_roles.yml +2 -0
  177. data/test/{config → fixtures/config}/ordered/001_roles.yml +0 -0
  178. data/test/{config → fixtures/config}/ordered/002_roles.yml +0 -0
  179. data/test/{config → fixtures/config}/unordered/app_one_roles.yml +0 -0
  180. data/test/{config → fixtures/config}/unordered/app_two_roles.yml +0 -0
  181. data/test/fixtures/config/working/application.yml +73 -0
  182. data/test/fixtures/config/working/application_roles.yml +24 -0
  183. data/{generators/typus/templates/config/typus → test/fixtures/config/working}/typus.yml +2 -1
  184. data/test/{config/default → fixtures/config/working}/typus_roles.yml +0 -0
  185. data/test/fixtures/rails_app/README +244 -0
  186. data/test/fixtures/rails_app/Rakefile +7 -0
  187. data/test/fixtures/rails_app/app/controllers/admin/assets_controller.rb +2 -0
  188. data/test/fixtures/rails_app/app/controllers/admin/categories_controller.rb +2 -0
  189. data/test/fixtures/rails_app/app/controllers/admin/comments_controller.rb +2 -0
  190. data/test/fixtures/rails_app/app/controllers/admin/pages_controller.rb +2 -0
  191. data/test/fixtures/rails_app/app/controllers/admin/pictures_controller.rb +2 -0
  192. data/test/fixtures/rails_app/app/controllers/admin/posts_controller.rb +2 -0
  193. data/test/fixtures/rails_app/app/controllers/admin/status_controller.rb +2 -0
  194. data/test/fixtures/rails_app/app/controllers/admin/typus_users_controller.rb +2 -0
  195. data/test/fixtures/rails_app/app/controllers/admin/watch_dog_controller.rb +2 -0
  196. data/test/fixtures/rails_app/app/controllers/application_controller.rb +4 -0
  197. data/test/fixtures/rails_app/app/helpers/application_helper.rb +2 -0
  198. data/test/fixtures/{app → rails_app/app}/models/asset.rb +1 -1
  199. data/test/fixtures/{app → rails_app/app}/models/category.rb +2 -2
  200. data/test/fixtures/{app → rails_app/app}/models/comment.rb +1 -1
  201. data/test/fixtures/{app → rails_app/app}/models/custom_user.rb +1 -1
  202. data/test/fixtures/{app → rails_app/app}/models/delayed/task.rb +2 -2
  203. data/test/fixtures/rails_app/app/models/page.rb +9 -0
  204. data/test/fixtures/rails_app/app/models/picture.rb +6 -0
  205. data/test/fixtures/{app → rails_app/app}/models/post.rb +6 -6
  206. data/test/fixtures/rails_app/app/models/typus_user.rb +8 -0
  207. data/test/fixtures/{app → rails_app/app}/models/view.rb +1 -1
  208. data/test/fixtures/rails_app/app/views/admin/categories/_form.html.erb +1 -0
  209. data/test/fixtures/rails_app/app/views/admin/dashboard/_sidebar.html.erb +1 -0
  210. data/test/fixtures/rails_app/app/views/admin/mailer/reset_password_link.text.erb +6 -0
  211. data/test/fixtures/rails_app/app/views/admin/posts/_edit.html.erb +1 -0
  212. data/test/fixtures/rails_app/app/views/admin/posts/_index.html.erb +1 -0
  213. data/test/fixtures/rails_app/app/views/admin/posts/_new.html.erb +1 -0
  214. data/test/fixtures/rails_app/app/views/admin/posts/_show.html.erb +1 -0
  215. data/test/fixtures/rails_app/app/views/admin/posts/_sidebar.html.erb +1 -0
  216. data/test/fixtures/rails_app/app/views/admin/resources/_sidebar.html.erb +1 -0
  217. data/test/fixtures/rails_app/app/views/admin/status/index.html.erb +1 -0
  218. data/test/fixtures/rails_app/app/views/admin/templates/_datepicker.html.erb +1 -0
  219. data/test/fixtures/rails_app/app/views/layouts/application.html.erb +14 -0
  220. data/test/fixtures/rails_app/config/application.rb +50 -0
  221. data/test/fixtures/rails_app/config/boot.rb +13 -0
  222. data/test/fixtures/rails_app/config/database.yml +22 -0
  223. data/test/fixtures/rails_app/config/environment.rb +5 -0
  224. data/test/fixtures/rails_app/config/environments/development.rb +19 -0
  225. data/test/fixtures/rails_app/config/environments/production.rb +42 -0
  226. data/test/fixtures/rails_app/config/environments/test.rb +34 -0
  227. data/test/fixtures/rails_app/config/initializers/acts_as_list.rb +258 -0
  228. data/test/fixtures/rails_app/config/initializers/acts_as_tree.rb +98 -0
  229. data/test/fixtures/rails_app/config/initializers/backtrace_silencers.rb +7 -0
  230. data/test/fixtures/rails_app/config/initializers/inflections.rb +10 -0
  231. data/test/fixtures/rails_app/config/initializers/mime_types.rb +5 -0
  232. data/test/fixtures/rails_app/config/initializers/secret_token.rb +7 -0
  233. data/test/fixtures/rails_app/config/initializers/session_store.rb +8 -0
  234. data/test/fixtures/rails_app/config/initializers/typus.rb +6 -0
  235. data/test/fixtures/rails_app/config/locales/en.yml +5 -0
  236. data/test/fixtures/rails_app/config/routes.rb +8 -0
  237. data/test/{config/working → fixtures/rails_app/config/typus}/application.yml +11 -9
  238. data/test/{config/working → fixtures/rails_app/config/typus}/application_roles.yml +0 -0
  239. data/{generators/typus_update_schema_to_01/templates/config → test/fixtures/rails_app/config/typus}/typus.yml +0 -0
  240. data/test/{config/working → fixtures/rails_app/config/typus}/typus_roles.yml +0 -0
  241. data/test/fixtures/rails_app/config.ru +4 -0
  242. data/test/fixtures/rails_app/db/seeds.rb +7 -0
  243. data/test/fixtures/rails_app/db/test.sqlite3 +0 -0
  244. data/test/fixtures/rails_app/log/test.log +4268 -0
  245. data/test/fixtures/rails_app/public/404.html +26 -0
  246. data/test/fixtures/rails_app/public/422.html +26 -0
  247. data/test/fixtures/rails_app/public/500.html +26 -0
  248. data/test/fixtures/rails_app/public/favicon.ico +0 -0
  249. data/test/fixtures/rails_app/public/images/rails.png +0 -0
  250. data/test/fixtures/rails_app/public/index.html +279 -0
  251. data/test/fixtures/rails_app/public/javascripts/application.js +2 -0
  252. data/test/fixtures/rails_app/public/javascripts/controls.js +965 -0
  253. data/test/fixtures/rails_app/public/javascripts/dragdrop.js +974 -0
  254. data/test/fixtures/rails_app/public/javascripts/effects.js +1123 -0
  255. data/test/fixtures/rails_app/public/javascripts/prototype.js +4874 -0
  256. data/test/fixtures/rails_app/public/javascripts/rails.js +118 -0
  257. data/test/fixtures/rails_app/public/robots.txt +5 -0
  258. data/test/fixtures/rails_app/script/rails +9 -0
  259. data/test/fixtures/rails_app/tmp/export-posts-20100902120447.csv +2 -0
  260. data/test/fixtures/rails_app/tmp/export-posts-20100902120700.csv +2 -0
  261. data/test/functional/admin/account_controller_test.rb +90 -0
  262. data/test/functional/admin/dashboard_controller_http_basic_test.rb +24 -0
  263. data/test/functional/admin/dashboard_controller_none_test.rb +18 -0
  264. data/test/functional/admin/dashboard_controller_test.rb +106 -0
  265. data/test/functional/admin/resources_controller_assets_relationships.rb +59 -0
  266. data/test/functional/admin/resources_controller_categories_before_test.rb +10 -0
  267. data/test/functional/admin/resources_controller_categories_lists_test.rb +44 -0
  268. data/test/functional/admin/resources_controller_categories_views_test.rb +10 -0
  269. data/test/functional/admin/resources_controller_comments_toggle_test.rb +21 -0
  270. data/test/functional/admin/{master_controller_posts_before_test.rb → resources_controller_posts_before_test.rb} +3 -3
  271. data/test/functional/admin/resources_controller_posts_crud_custom_test.rb +27 -0
  272. data/test/functional/admin/resources_controller_posts_crud_test.rb +44 -0
  273. data/test/functional/admin/resources_controller_posts_formats_test.rb +39 -0
  274. data/test/functional/admin/resources_controller_posts_forms_test.rb +58 -0
  275. data/test/functional/admin/resources_controller_posts_permissions_test.rb +100 -0
  276. data/test/functional/admin/{master_controller_posts_relationships_test.rb → resources_controller_posts_relationships_test.rb} +25 -20
  277. data/test/functional/admin/resources_controller_posts_roles.rb +52 -0
  278. data/test/functional/admin/resources_controller_posts_views_test.rb +143 -0
  279. data/test/functional/admin/resources_controller_tableless_resource_test.rb +51 -0
  280. data/test/functional/admin/resources_controller_typus_users_test.rb +159 -0
  281. data/test/functional/admin/session_controller_test.rb +85 -0
  282. data/test/helpers/admin/dashboard_helper_test.rb +42 -0
  283. data/test/helpers/admin/form_helper_test.rb +52 -276
  284. data/test/helpers/admin/resources_helper_test.rb +52 -0
  285. data/test/helpers/admin/sidebar_helper_test.rb +133 -224
  286. data/test/helpers/admin/table_helper_test.rb +136 -144
  287. data/test/helpers/admin_helper_test.rb +69 -0
  288. data/test/lib/support/active_record_test.rb +35 -0
  289. data/test/lib/support/array_test.rb +15 -0
  290. data/test/lib/support/hash_test.rb +11 -0
  291. data/test/lib/support/string_test.rb +48 -0
  292. data/test/lib/typus/active_record_test.rb +385 -0
  293. data/test/lib/typus/configuration_test.rb +52 -0
  294. data/test/lib/typus/resource_test.rb +17 -0
  295. data/test/lib/typus/routes_test.rb +29 -0
  296. data/test/lib/typus_test.rb +72 -40
  297. data/test/{vendor → lib/vendor}/paginator_test.rb +7 -4
  298. data/test/schema.rb +28 -3
  299. data/test/test_helper.rb +29 -0
  300. data/test/unit/admin/mailer_test.rb +32 -0
  301. data/test/unit/typus_user_roles_test.rb +69 -61
  302. data/test/unit/typus_user_test.rb +56 -143
  303. data/typus.gemspec +18 -276
  304. metadata +305 -231
  305. data/.gitignore +0 -1
  306. data/AUTHORS.md +0 -34
  307. data/CHANGES +0 -3
  308. data/README.md +0 -75
  309. data/VERSION +0 -1
  310. data/app/controllers/admin/master_controller.rb +0 -394
  311. data/app/controllers/typus_controller.rb +0 -152
  312. data/app/helpers/admin/master_helper.rb +0 -104
  313. data/app/helpers/admin/public_helper.rb +0 -27
  314. data/app/helpers/typus_helper.rb +0 -181
  315. data/app/models/typus_mailer.rb +0 -14
  316. data/app/models/typus_user.rb +0 -5
  317. data/app/views/admin/shared/_feedback.html.erb +0 -6
  318. data/app/views/admin/shared/_footer.html.erb +0 -2
  319. data/app/views/admin/shared/_pagination.html.erb +0 -28
  320. data/app/views/admin/templates/_tiny_mce.html.erb +0 -2
  321. data/app/views/layouts/typus.html.erb +0 -29
  322. data/app/views/typus/dashboard.html.erb +0 -9
  323. data/app/views/typus/recover_password.html.erb +0 -7
  324. data/app/views/typus/reset_password.html.erb +0 -15
  325. data/app/views/typus/sign_in.html.erb +0 -9
  326. data/app/views/typus/sign_up.html.erb +0 -7
  327. data/config/locales/es.yml +0 -105
  328. data/config/locales/fr.yml +0 -98
  329. data/config/locales/language.yml.template +0 -106
  330. data/generators/typus/templates/auto/index.html.erb +0 -11
  331. data/generators/typus/templates/auto/resource_controller.rb.erb +0 -15
  332. data/generators/typus/templates/auto/resource_controller_test.rb.erb +0 -11
  333. data/generators/typus/templates/auto/resources_controller.rb.erb +0 -37
  334. data/generators/typus/templates/config/initializers/typus.rb +0 -34
  335. data/generators/typus/templates/config/typus/application.yml +0 -6
  336. data/generators/typus/templates/config/typus/application_roles.yml +0 -23
  337. data/generators/typus/templates/lib/tasks/typus_tasks.rake +0 -32
  338. data/generators/typus/templates/public/images/admin/fancybox/fancy_closebox.png +0 -0
  339. data/generators/typus/templates/public/images/admin/fancybox/fancy_left.png +0 -0
  340. data/generators/typus/templates/public/images/admin/fancybox/fancy_progress.png +0 -0
  341. data/generators/typus/templates/public/images/admin/fancybox/fancy_right.png +0 -0
  342. data/generators/typus/templates/public/images/admin/fancybox/fancy_shadow_e.png +0 -0
  343. data/generators/typus/templates/public/images/admin/fancybox/fancy_shadow_n.png +0 -0
  344. data/generators/typus/templates/public/images/admin/fancybox/fancy_shadow_ne.png +0 -0
  345. data/generators/typus/templates/public/images/admin/fancybox/fancy_shadow_nw.png +0 -0
  346. data/generators/typus/templates/public/images/admin/fancybox/fancy_shadow_s.png +0 -0
  347. data/generators/typus/templates/public/images/admin/fancybox/fancy_shadow_se.png +0 -0
  348. data/generators/typus/templates/public/images/admin/fancybox/fancy_shadow_sw.png +0 -0
  349. data/generators/typus/templates/public/images/admin/fancybox/fancy_shadow_w.png +0 -0
  350. data/generators/typus/templates/public/images/admin/fancybox/fancy_title_left.png +0 -0
  351. data/generators/typus/templates/public/images/admin/fancybox/fancy_title_main.png +0 -0
  352. data/generators/typus/templates/public/javascripts/admin/application.js +0 -14
  353. data/generators/typus/templates/public/javascripts/admin/jquery-1.3.2.min.js +0 -19
  354. data/generators/typus/templates/public/javascripts/admin/jquery.fancybox-1.2.1.min.js +0 -9
  355. data/generators/typus/templates/public/stylesheets/admin/jquery.fancybox.css +0 -315
  356. data/generators/typus/templates/public/stylesheets/admin/reset.css +0 -68
  357. data/generators/typus/templates/public/stylesheets/admin/screen.css +0 -361
  358. data/generators/typus/typus_generator.rb +0 -191
  359. data/generators/typus_update_schema_to_01/templates/migration.rb +0 -11
  360. data/generators/typus_update_schema_to_01/typus_update_schema_to_01_generator.rb +0 -19
  361. data/generators/typus_update_schema_to_02/templates/migration.rb +0 -11
  362. data/generators/typus_update_schema_to_02/typus_update_schema_to_02_generator.rb +0 -11
  363. data/lib/typus/active_record.rb +0 -323
  364. data/lib/typus/extensions/routes.rb +0 -15
  365. data/lib/typus/extensions/routes_hack.rb +0 -15
  366. data/lib/typus/preferences.rb +0 -11
  367. data/lib/typus/preview.rb +0 -76
  368. data/lib/typus/quick_edit.rb +0 -40
  369. data/lib/typus/reloader.rb +0 -14
  370. data/lib/typus/string.rb +0 -27
  371. data/lib/vendor/active_record.rb +0 -15
  372. data/lib/vendor/rss_parser.rb +0 -20
  373. data/rails/init.rb +0 -3
  374. data/tasks/typus_tasks.rake +0 -32
  375. data/test/config/working/typus.yml +0 -12
  376. data/test/fixtures/app/controllers/admin/assets_controller.rb +0 -2
  377. data/test/fixtures/app/controllers/admin/categories_controller.rb +0 -2
  378. data/test/fixtures/app/controllers/admin/comments_controller.rb +0 -2
  379. data/test/fixtures/app/controllers/admin/pages_controller.rb +0 -2
  380. data/test/fixtures/app/controllers/admin/posts_controller.rb +0 -2
  381. data/test/fixtures/app/controllers/admin/status_controller.rb +0 -6
  382. data/test/fixtures/app/controllers/admin/typus_users_controller.rb +0 -2
  383. data/test/fixtures/app/controllers/admin/watch_dog_controller.rb +0 -6
  384. data/test/fixtures/app/models/page.rb +0 -5
  385. data/test/fixtures/app/views/admin/dashboard/_content.html.erb +0 -1
  386. data/test/fixtures/app/views/admin/dashboard/_sidebar.html.erb +0 -1
  387. data/test/fixtures/app/views/admin/posts/_edit.html.erb +0 -1
  388. data/test/fixtures/app/views/admin/posts/_index.html.erb +0 -1
  389. data/test/fixtures/app/views/admin/posts/_new.html.erb +0 -1
  390. data/test/fixtures/app/views/admin/posts/_show.html.erb +0 -1
  391. data/test/fixtures/app/views/admin/posts/_sidebar.html.erb +0 -1
  392. data/test/fixtures/app/views/admin/resources/_sidebar.html.erb +0 -1
  393. data/test/fixtures/app/views/admin/shared/_footer.html.erb +0 -1
  394. data/test/fixtures/app/views/admin/status/index.html.erb +0 -1
  395. data/test/fixtures/app/views/admin/templates/_datepicker.html.erb +0 -1
  396. data/test/fixtures/assets.yml +0 -11
  397. data/test/fixtures/categories.yml +0 -14
  398. data/test/fixtures/comments.yml +0 -27
  399. data/test/fixtures/pages.yml +0 -41
  400. data/test/fixtures/posts.yml +0 -37
  401. data/test/fixtures/typus_users.yml +0 -59
  402. data/test/functional/admin/master_controller_assets_relationships.rb +0 -66
  403. data/test/functional/admin/master_controller_categories_lists_test.rb +0 -64
  404. data/test/functional/admin/master_controller_posts_crud_test.rb +0 -97
  405. data/test/functional/admin/master_controller_posts_formats_test.rb +0 -53
  406. data/test/functional/admin/master_controller_posts_permissions_test.rb +0 -127
  407. data/test/functional/admin/master_controller_posts_roles.rb +0 -50
  408. data/test/functional/admin/master_controller_posts_toggle_test.rb +0 -35
  409. data/test/functional/admin/master_controller_posts_views_test.rb +0 -209
  410. data/test/functional/admin/master_controller_tableless_resource_test.rb +0 -36
  411. data/test/functional/admin/master_controller_typus_users_test.rb +0 -211
  412. data/test/functional/typus_controller_test.rb +0 -342
  413. data/test/helper.rb +0 -51
  414. data/test/helpers/admin/master_helper_test.rb +0 -70
  415. data/test/helpers/admin/public_helper_test.rb +0 -26
  416. data/test/helpers/typus_helper_test.rb +0 -96
  417. data/test/lib/active_record_test.rb +0 -377
  418. data/test/lib/configuration_test.rb +0 -95
  419. data/test/lib/hash_test.rb +0 -11
  420. data/test/lib/routes_test.rb +0 -71
  421. data/test/lib/string_test.rb +0 -55
  422. data/test/unit/typus_mailer_test.rb +0 -29
  423. data/test/unit/typus_test.rb +0 -17
  424. data/test/vendor/active_record_test.rb +0 -18
data/test/schema.rb CHANGED
@@ -9,6 +9,8 @@ ActiveRecord::Schema.define do
9
9
  t.integer :position
10
10
  end
11
11
 
12
+ add_index :assets, :resource_id
13
+
12
14
  create_table :categories, :force => true do |t|
13
15
  t.string :name
14
16
  t.string :permalink
@@ -20,6 +22,7 @@ ActiveRecord::Schema.define do
20
22
  t.string :email, :name
21
23
  t.text :body
22
24
  t.integer :post_id
25
+ t.boolean :spam, :default => false
23
26
  end
24
27
 
25
28
  add_index :comments, :post_id
@@ -31,20 +34,38 @@ ActiveRecord::Schema.define do
31
34
  create_table :pages, :force => true do |t|
32
35
  t.string :title
33
36
  t.text :body
34
- t.boolean :is_published
37
+ t.string :status
35
38
  t.integer :parent_id
36
39
  end
37
40
 
41
+ add_index :pages, :parent_id
42
+
38
43
  create_table :posts, :force => true do |t|
39
44
  t.string :title
40
45
  t.text :body
41
- t.boolean :status
46
+ t.string :status
42
47
  t.integer :favorite_comment_id
43
48
  t.timestamps
44
49
  t.datetime :published_at
45
50
  t.integer :typus_user_id
46
51
  end
47
52
 
53
+ add_index :posts, :favorite_comment_id
54
+ add_index :posts, :typus_user_id
55
+
56
+ create_table :pictures, :force => true do |t|
57
+ t.string :title
58
+ t.string :picture_file_name
59
+ t.string :picture_content_type
60
+ t.integer :picture_file_size
61
+ t.datetime :picture_updated_at
62
+ t.datetime :created_at
63
+ t.datetime :updated_at
64
+ t.integer :typus_user_id
65
+ end
66
+
67
+ add_index :pictures, :typus_user_id
68
+
48
69
  create_table :typus_users, :force => true do |t|
49
70
  t.string :first_name, :default => "", :null => false
50
71
  t.string :last_name, :default => "", :null => false
@@ -58,12 +79,16 @@ ActiveRecord::Schema.define do
58
79
  t.timestamps
59
80
  end
60
81
 
82
+ add_index :typus_users, :token
83
+
61
84
  create_table :views, :force => true do |t|
62
85
  t.string :ip, :default => '127.0.0.1'
63
86
  t.integer :post_id
64
87
  t.timestamps
65
88
  end
66
89
 
90
+ add_index :views, :post_id
91
+
67
92
  create_table :categories_posts, :force => true, :id => false do |t|
68
93
  t.column :category_id, :integer
69
94
  t.column :post_id, :integer
@@ -72,4 +97,4 @@ ActiveRecord::Schema.define do
72
97
  add_index :categories_posts, :category_id
73
98
  add_index :categories_posts, :post_id
74
99
 
75
- end
100
+ end
@@ -0,0 +1,29 @@
1
+
2
+ ENV["RAILS_ENV"] = "test"
3
+
4
+ # Boot rails application and testing parts ...
5
+ require "fixtures/rails_app/config/environment"
6
+ require "rails/test_help"
7
+
8
+ # As we are simulating the application we need to reload the
9
+ # configurations to get the custom paths.
10
+ Typus.reload!
11
+
12
+ # Different DB settings and load our schema.
13
+ connection = case ENV["DB"]
14
+ when "mysql"
15
+ { :adapter => "mysql", :database => "typus_test" }
16
+ when "pg"
17
+ { :adapter => "postgresql", :database => "typus_test", :encoding => "unicode" }
18
+ else
19
+ { :adapter => "sqlite3", :database => ":memory:" }
20
+ end
21
+
22
+ ActiveRecord::Base.establish_connection(connection)
23
+ load File.join(File.dirname(__FILE__), "schema.rb")
24
+ Dir[File.join(File.dirname(__FILE__), "factories", "**","*.rb")].each { |factory| require factory }
25
+
26
+ class ActiveSupport::TestCase
27
+ self.use_transactional_fixtures = true
28
+ self.use_instantiated_fixtures = false
29
+ end
@@ -0,0 +1,32 @@
1
+ require "test_helper"
2
+
3
+ class Admin::MailerTest < ActiveSupport::TestCase
4
+
5
+ setup do
6
+ @typus_user = Factory(:typus_user)
7
+ @url = "http://test.host/admin/account/#{@typus_user.token}"
8
+ @email = Admin::Mailer.reset_password_link(@typus_user, @url)
9
+ end
10
+
11
+ should "verify email from is nil by default" do
12
+ assert Admin::Mailer.default[:from].nil?
13
+ end
14
+
15
+ should "verify email to is typus user email" do
16
+ assert @email.to.include?(@typus_user.email)
17
+ end
18
+
19
+ should "verify email subject" do
20
+ expected = "[#{Typus.admin_title}] Reset password"
21
+ assert_equal expected, @email.subject
22
+ end
23
+
24
+ should "verify default email mime type" do
25
+ assert_equal "text/plain", @email.mime_type
26
+ end
27
+
28
+ should "verify email contains reset password link with token" do
29
+ assert_match @url, @email.body.encoded
30
+ end
31
+
32
+ end
@@ -1,97 +1,105 @@
1
- require 'test/helper'
1
+ require "test_helper"
2
2
 
3
3
  class TypusUserRolesTest < ActiveSupport::TestCase
4
4
 
5
- def test_should_get_list_of_roles
5
+ should "get a list of roles" do
6
6
  roles = %w( admin designer editor )
7
7
  assert_equal roles, Typus::Configuration.roles.map(&:first).sort
8
8
  end
9
9
 
10
- def test_admin_role_settings
10
+ context "A TypusUser with role admin" do
11
11
 
12
- typus_user = typus_users(:admin)
13
- assert_equal 'admin', typus_user.role
12
+ setup do
13
+ @typus_user = Factory(:typus_user)
14
+ @models = %w( Asset Category Comment Git Page Post Status TypusUser View WatchDog )
15
+ end
14
16
 
15
- models = %w( Asset Category Comment Delayed::Task Git Page Post Status TypusUser View WatchDog )
16
- assert_equal models, typus_user.resources.map(&:first).sort
17
+ should "verify models access" do
18
+ assert_equal @models, @typus_user.resources.map(&:first).sort
19
+ end
17
20
 
18
- # Order exists on the roles, but, as we compact the hash, the
19
- # resource is removed.
20
- assert !typus_user.resources.map(&:first).include?('Order')
21
+ should "verify resources without actions related are removed" do
22
+ assert !@typus_user.resources.map(&:first).include?('Order')
23
+ end
21
24
 
22
- resources = %w( Git Status WatchDog )
23
- models.delete_if { |m| resources.include?(m) }
25
+ should "have access to all actions on models" do
26
+ models = %w( Asset Category Comment Page Post TypusUser View )
27
+ %w( create read update destroy ).each { |a| models.each { |m| assert @typus_user.can?(a, m) } }
28
+ end
24
29
 
25
- %w( create read update destroy ).each do |action|
26
- models.each { |model| assert typus_user.can_perform?(model, action), "Error on #{model} #{action}" }
30
+ should "verify we can perform action on resource" do
31
+ assert @typus_user.can?('index', 'Status', { :special => true })
27
32
  end
28
33
 
29
- # Order resource doesn't have an index action, so we current user
30
- # cannot perform the action.
31
- assert !typus_user.can_perform?('Order', 'index')
34
+ should "verify we cannot perform action on resource" do
35
+ assert @typus_user.cannot?('show', 'Status', { :special => true })
36
+ end
32
37
 
33
- # Status resource has an index action, but not a show one.
34
- # We add the { :special => true } option to by-pass the action
35
- # renaming performed in the TypusUser#can_perform? method.
36
- assert typus_user.can_perform?('Status', 'index', { :special => true })
37
- assert !typus_user.can_perform?('Status', 'show', { :special => true })
38
+ should "verify we cannot perform actions on resources which don't have that action defined" do
39
+ assert @typus_user.cannot?('index', 'Order')
40
+ end
38
41
 
39
42
  end
40
43
 
41
- def test_editor_role_settings
44
+ context "A TypusUser with role editor" do
42
45
 
43
- typus_user = typus_users(:editor)
44
- assert_equal 'editor', typus_user.role
46
+ setup do
47
+ @typus_user = Factory(:typus_user, :role => "editor")
48
+ end
45
49
 
46
- %w( Category Comment Git Post TypusUser ).each do |model|
47
- assert typus_user.resources.map(&:first).include?(model)
50
+ should "verify models access" do
51
+ models = %w( Category Comment Git Post TypusUser View )
52
+ assert_equal models, @typus_user.resources.map(&:first).sort
48
53
  end
49
54
 
50
- # Category: create, read, update
51
- %w( create read update ).each { |action| assert typus_user.can_perform?('Category', action) }
52
- %w( delete ).each { |action| assert !typus_user.can_perform?('Category', action) }
55
+ should "only create, read and update categories" do
56
+ %w( create read update ).each { |a| assert @typus_user.can?(a, 'Category') }
57
+ %w( delete ).each { |a| assert @typus_user.cannot?(a, 'Category') }
58
+ end
53
59
 
54
- # Post: create, read, update
55
- %w( create read update ).each { |action| assert typus_user.can_perform?('Post', action) }
56
- %w( delete ).each { |action| assert !typus_user.can_perform?('Post', action) }
60
+ should "only create, read and update posts" do
61
+ %w( create read update ).each { |a| assert @typus_user.can?(a, 'Post') }
62
+ %w( delete ).each { |a| assert @typus_user.cannot?(a, 'Post') }
63
+ end
57
64
 
58
- # Comment: read, update, delete
59
- %w( read update delete ).each { |action| assert typus_user.can_perform?('Comment', action) }
60
- %w( create ).each { |action| assert !typus_user.can_perform?('Comment', action) }
65
+ should "only read, update and delete comments" do
66
+ %w( read update delete ).each { |a| assert @typus_user.can?(a, 'Comment') }
67
+ %w( create ).each { |a| assert @typus_user.cannot?(a, 'Comment') }
68
+ end
61
69
 
62
- # TypusUser: read, update
63
- %w( read update ).each { |action| assert typus_user.can_perform?('TypusUser', action) }
64
- %w( create delete ).each { |action| assert !typus_user.can_perform?('TypusUser', action) }
70
+ should "only read and update typus_users" do
71
+ %w( read update ).each { |a| assert @typus_user.can?(a, 'TypusUser') }
72
+ %w( create delete ).each { |a| assert @typus_user.cannot?(a, 'TypusUser') }
73
+ end
65
74
 
66
75
  end
67
76
 
68
- def test_designer_role_settings
69
-
70
- typus_user = typus_users(:designer)
71
- assert_equal 'designer', typus_user.role
77
+ context "A TypusUser with role designer" do
72
78
 
73
- models = %w( Category Comment Post )
74
- assert_equal models, typus_user.resources.map(&:first).sort
79
+ setup do
80
+ @typus_user = Factory(:typus_user, :role => "designer")
81
+ end
75
82
 
76
- # Category: read, update
77
- %w( read update ).each { |action| assert typus_user.can_perform?('Category', action) }
78
- %w( create delete ).each { |action| assert !typus_user.can_perform?('Category', action) }
83
+ should "verify models access" do
84
+ models = %w( Category Comment Post )
85
+ assert_equal models, @typus_user.resources.map(&:first).sort
86
+ end
79
87
 
80
- # Comment: read
81
- %w( read ).each { |action| assert typus_user.can_perform?('Comment', action) }
82
- %w( create update delete ).each { |action| assert !typus_user.can_perform?('Comment', action) }
88
+ should "only read and update categories" do
89
+ %w( read update ).each { |a| assert @typus_user.can?(a, 'Category') }
90
+ %w( create delete ).each { |a| assert @typus_user.cannot?(a, 'Category') }
91
+ end
83
92
 
84
- # Post: read, update
85
- %w( read update ).each { |action| assert typus_user.can_perform?('Post', action) }
86
- %w( create delete ).each { |action| assert !typus_user.can_perform?('Post', action) }
93
+ should "only read comments" do
94
+ %w( read ).each { |a| assert @typus_user.can?(a, 'Comment') }
95
+ %w( create update delete ).each { |a| assert @typus_user.cannot?(a, 'Comment') }
96
+ end
87
97
 
88
- end
98
+ should "only read and update posts" do
99
+ %w( read update ).each { |a| assert @typus_user.can?(a, 'Post') }
100
+ %w( create delete ).each { |a| assert @typus_user.cannot?(a, 'Post') }
101
+ end
89
102
 
90
- def test_admin_can_perform_any_action_on_delayed_task_model
91
- typus_user = typus_users(:admin)
92
- action = 'whatever_i_want_to'
93
- klass = Delayed::Task
94
- assert typus_user.can_perform?(klass, action), "Admin can't perform `#{action}` on `#{klass}`."
95
103
  end
96
104
 
97
- end
105
+ end
@@ -1,178 +1,91 @@
1
- require 'test/helper'
1
+ require "test_helper"
2
2
 
3
3
  class TypusUserTest < ActiveSupport::TestCase
4
4
 
5
- def setup
6
- @data = { :first_name => '',
7
- :last_name => '',
8
- :email => 'test@example.com',
9
- :password => '12345678',
10
- :password_confirmation => '12345678',
11
- :role => Typus::Configuration.options[:root],
12
- :preferences => { :locale => :en } }
13
- @typus_user = TypusUser.new(@data)
5
+ [ %Q(this_is_chelm@example.com\n<script>location.href="http://spammersite.com"</script>),
6
+ 'admin', 'TEST@EXAMPLE.COM', 'test@example', 'test@example.c', 'testexample.com' ].each do |value|
7
+ should_not allow_value(value).for(:email)
14
8
  end
15
9
 
16
- def test_should_verify_typus_user_attributes
17
- [ :first_name, :last_name, :email, :role, :salt, :crypted_password ].each do |attribute|
18
- assert TypusUser.instance_methods.map { |i| i.to_sym }.include?(attribute)
19
- end
10
+ [ 'test+filter@example.com', 'test.filter@example.com', 'test@example.co.uk', 'test@example.es' ].each do |value|
11
+ should allow_value(value).for(:email)
20
12
  end
21
13
 
22
- def test_should_verify_definition_on_instance_methods
23
- [ :is_root?, :authenticated? ].each do |instance_method|
24
- assert TypusUser.instance_methods.map { |i| i.to_sym }.include?(instance_method)
25
- end
26
- end
14
+ should validate_presence_of :role
27
15
 
28
- def test_should_verify_email_format
29
- @typus_user.email = 'admin'
30
- assert @typus_user.invalid?
31
- assert @typus_user.errors.invalid?(:email)
32
- end
16
+ should_not allow_mass_assignment_of :status
33
17
 
34
- def test_should_verify_email_is_not_valid
35
- email = <<-RAW
36
- this_is_chelm@example.com
37
- <script>location.href="http://spammersite.com"</script>
38
- RAW
39
- @typus_user.email = email
40
- assert @typus_user.invalid?
41
- assert @typus_user.errors.invalid?(:email)
42
- end
18
+ should ensure_length_of(:password).is_at_least(8).is_at_most(40)
43
19
 
44
- def test_should_verify_emails_are_downcase
45
- email = 'TEST@EXAMPLE.COM'
46
- @typus_user.email = email
47
- assert @typus_user.invalid?
48
- assert @typus_user.errors.invalid?(:email)
49
- end
20
+ # should validate_uniqueness_of :email
21
+
22
+ context "TypusUser" do
50
23
 
51
- def test_should_verify_some_valid_emails_schemas
52
- emails = [ 'test+filter@example.com',
53
- 'test.filter@example.com',
54
- 'test@example.co.uk',
55
- 'test@example.es' ]
56
- emails.each do |email|
57
- @typus_user.email = email
58
- assert @typus_user.valid?
24
+ setup do
25
+ @typus_user = Factory(:typus_user)
59
26
  end
60
- end
61
27
 
62
- def test_should_verify_invalid_emails_are_detected
63
- emails = [ 'test@example', 'test@example.c', 'testexample.com' ]
64
- emails.each do |email|
65
- @typus_user.email = email
66
- assert @typus_user.invalid?
67
- assert @typus_user.errors.invalid?(:email)
28
+ should "verify definition" do
29
+ attributes = %w( id first_name last_name email role status salt crypted_password token preferences created_at updated_at )
30
+ TypusUser.columns.collect { |u| u.name }.each { |c| assert attributes.include?(c) }
68
31
  end
69
- end
70
32
 
71
- def test_should_verify_email_is_unique
72
- @typus_user.save
73
- @another_typus_user = TypusUser.new(@data)
74
- assert @another_typus_user.invalid?
75
- assert @another_typus_user.errors.invalid?(:email)
76
- end
33
+ should "return email when first_name and last_name are not set" do
34
+ assert_equal @typus_user.email, @typus_user.name
35
+ end
77
36
 
78
- def test_should_verify_length_of_password_when_under_within
79
- @typus_user.password = '1234'
80
- @typus_user.password_confirmation = '1234'
81
- assert @typus_user.invalid?
82
- assert @typus_user.errors.invalid?(:password)
83
- end
37
+ should "return name when first_name and last_name are set" do
38
+ @typus_user.first_name, @typus_user.last_name = "John", "Lock"
39
+ assert_equal "John Lock", @typus_user.name
40
+ end
84
41
 
85
- def test_should_verify_length_of_password_when_its_within_on_lower_limit
86
- @typus_user.password = '=' * 8
87
- @typus_user.password_confirmation = '=' * 8
88
- assert @typus_user.valid?
89
- end
42
+ should "verify salt never changes" do
43
+ salt, crypted_password = @typus_user.salt, @typus_user.crypted_password
90
44
 
91
- def test_should_verify_length_of_password_when_its_within_on_upper_limit
92
- @typus_user.password = '=' * 40
93
- @typus_user.password_confirmation = '=' * 40
94
- assert @typus_user.valid?
95
- end
45
+ @typus_user.update_attributes :password => '11111111', :password_confirmation => '11111111'
46
+ assert_equal salt, @typus_user.salt
47
+ assert_not_equal crypted_password, @typus_user.crypted_password
48
+ end
96
49
 
97
- def test_should_verify_length_of_password_when_its_over_within
98
- @typus_user.password = '=' * 50
99
- @typus_user.password_confirmation = '=' * 50
100
- assert @typus_user.invalid?
101
- assert @typus_user.errors.invalid?(:password)
102
- end
50
+ should "verify authenticated?" do
51
+ assert @typus_user.authenticated?('12345678')
52
+ assert !@typus_user.authenticated?('87654321')
53
+ end
103
54
 
104
- def test_should_verify_confirmation_of_password
55
+ should "verify can? (with a model as a param)" do
56
+ assert @typus_user.can?('delete', TypusUser)
57
+ end
105
58
 
106
- @typus_user.password = '12345678'
107
- @typus_user.password_confirmation = '87654321'
108
- assert @typus_user.invalid?
109
- assert @typus_user.errors.invalid?(:password)
59
+ should "verify can? (with a string as a param)" do
60
+ assert @typus_user.can?('delete', 'TypusUser')
61
+ end
110
62
 
111
- @typus_user.password = '12345678'
112
- @typus_user.password_confirmation = ''
113
- assert @typus_user.invalid?
114
- assert @typus_user.errors.invalid?(:password)
63
+ should "verify cannot?" do
64
+ assert !@typus_user.cannot?('delete', 'TypusUser')
65
+ end
115
66
 
116
67
  end
117
68
 
118
- def test_should_verify_role
119
- @typus_user.role = ''
120
- assert @typus_user.invalid?
121
- assert @typus_user.errors.invalid?(:role)
122
- assert_equal "can't be blank", @typus_user.errors[:role]
123
- end
69
+ context "TypusUser which is not root" do
124
70
 
125
- def test_should_return_name_when_only_email
126
- assert_equal @typus_user.email, @typus_user.name
127
- end
71
+ setup do
72
+ @typus_user = Factory(:typus_user, :role => "editor")
73
+ end
128
74
 
129
- def test_should_return_name_when_theres_first_name_and_last_name
130
- @typus_user.first_name = 'John'
131
- @typus_user.last_name = 'Smith'
132
- assert_equal 'John Smith', @typus_user.name
133
- end
75
+ should "verify is not root" do
76
+ assert @typus_user.is_not_root?
77
+ assert !@typus_user.is_root?
78
+ end
134
79
 
135
- def test_should_return_verify_is_root
136
- assert @typus_user.is_root?
137
- editor = typus_users(:editor)
138
- assert !editor.is_root?
139
80
  end
140
81
 
141
- def test_should_verify_authenticated
142
- @typus_user.save
143
- assert @typus_user.authenticated?('12345678')
144
- assert !@typus_user.authenticated?('87654321')
145
- end
82
+ context "Class methods" do
146
83
 
147
- def test_should_verify_typus_user_can_be_created
148
- assert_difference 'TypusUser.count' do
149
- TypusUser.create(@data)
84
+ should "verify generate requires the role" do
85
+ assert TypusUser.generate(:email => 'demo@example.com', :password => 'XXXXXXXX').valid?
86
+ assert TypusUser.generate(:email => 'demo@example.com', :password => 'XXXXXXXX', :role => 'admin').valid?
150
87
  end
151
- end
152
-
153
- def test_should_verify_salt_on_user_never_changes
154
-
155
- @typus_user.save
156
- salt = @typus_user.salt
157
- crypted_password = @typus_user.crypted_password
158
-
159
- @typus_user.update_attributes :password => '11111111', :password_confirmation => '11111111'
160
- assert_equal salt, @typus_user.salt
161
- assert_not_equal crypted_password, @typus_user.crypted_password
162
-
163
- end
164
-
165
- def test_should_verify_generate
166
- assert TypusUser.respond_to?(:generate)
167
- assert TypusUser.generate(:email => 'demo@example.com', :password => 'XXXXXXXX').invalid?
168
- assert TypusUser.generate(:email => 'demo@example.com', :password => 'XXXXXXXX', :role => 'admin').valid?
169
- end
170
88
 
171
- def test_should_verify_can_perform?
172
- assert TypusUser.instance_methods.map {|i| i.to_sym }.include?(:can_perform?)
173
- @current_user = TypusUser.find(:first)
174
- assert @current_user.can_perform?(TypusUser, 'delete')
175
- assert @current_user.can_perform?('TypusUser', 'delete')
176
89
  end
177
90
 
178
- end
91
+ end