goldberg_generator 0.2.2

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 (186) hide show
  1. data/USAGE +34 -0
  2. data/goldberg_generator.rb +463 -0
  3. data/templates/README_GOLDBERG +22 -0
  4. data/templates/app/views/layouts/application.rhtml +80 -0
  5. data/templates/layouts/ewnf/README +8 -0
  6. data/templates/layouts/ewnf/app/views/layouts/application.rhtml +74 -0
  7. data/templates/layouts/ewnf/public/images/bg.gif +0 -0
  8. data/templates/layouts/ewnf/public/images/daddy_rightarrow.gif +0 -0
  9. data/templates/layouts/ewnf/public/images/sample.jpg +0 -0
  10. data/templates/layouts/ewnf/public/images/title_img.jpg +0 -0
  11. data/templates/layouts/ewnf/public/stylesheets/layout.css +223 -0
  12. data/templates/layouts/snooker/app/views/layouts/application.rhtml +74 -0
  13. data/templates/layouts/snooker/public/images/column_200.png +0 -0
  14. data/templates/layouts/snooker/public/images/daddy_rightarrow.gif +0 -0
  15. data/templates/layouts/snooker/public/images/footer_bg.png +0 -0
  16. data/templates/layouts/snooker/public/images/logo.jpg +0 -0
  17. data/templates/layouts/snooker/public/stylesheets/layout.css +183 -0
  18. data/templates/layouts/spoiled_brat/LICENSE.txt +211 -0
  19. data/templates/layouts/spoiled_brat/README +8 -0
  20. data/templates/layouts/spoiled_brat/app/views/layouts/application.rhtml +71 -0
  21. data/templates/layouts/spoiled_brat/public/images/blockquote-bg.gif +0 -0
  22. data/templates/layouts/spoiled_brat/public/images/body-bg.jpg +0 -0
  23. data/templates/layouts/spoiled_brat/public/images/centerColumn-bg.jpg +0 -0
  24. data/templates/layouts/spoiled_brat/public/images/daddy_leftarrow.gif +0 -0
  25. data/templates/layouts/spoiled_brat/public/images/h2-bg.gif +0 -0
  26. data/templates/layouts/spoiled_brat/public/images/h3-bg.gif +0 -0
  27. data/templates/layouts/spoiled_brat/public/images/header-bg.jpg +0 -0
  28. data/templates/layouts/spoiled_brat/public/images/hr-bg.jpg +0 -0
  29. data/templates/layouts/spoiled_brat/public/images/logo.jpg +0 -0
  30. data/templates/layouts/spoiled_brat/public/stylesheets/layout.css +379 -0
  31. data/templates/public/goldberg/images/action.png +0 -0
  32. data/templates/public/goldberg/images/add.png +0 -0
  33. data/templates/public/goldberg/images/bodybg.jpg +0 -0
  34. data/templates/public/goldberg/images/delete.png +0 -0
  35. data/templates/public/goldberg/images/down.png +0 -0
  36. data/templates/public/goldberg/images/footerbg.jpg +0 -0
  37. data/templates/public/goldberg/images/logo_right.jpg +0 -0
  38. data/templates/public/goldberg/images/menuhover.jpg +0 -0
  39. data/templates/public/goldberg/images/page.png +0 -0
  40. data/templates/public/goldberg/images/permission.png +0 -0
  41. data/templates/public/goldberg/images/role.png +0 -0
  42. data/templates/public/goldberg/images/up.png +0 -0
  43. data/templates/public/goldberg/javascripts/suckerfish.js +12 -0
  44. data/templates/public/goldberg/stylesheets/goldberg.css +142 -0
  45. data/templates/public/goldberg/stylesheets/layout.css +321 -0
  46. data/templates/public/goldberg/stylesheets/suckerfish.css +124 -0
  47. data/templates/vendor/plugins/goldberg/app/controllers/goldberg/auth_controller.rb +104 -0
  48. data/templates/vendor/plugins/goldberg/app/controllers/goldberg/content_pages_controller.rb +197 -0
  49. data/templates/vendor/plugins/goldberg/app/controllers/goldberg/controller_actions_controller.rb +134 -0
  50. data/templates/vendor/plugins/goldberg/app/controllers/goldberg/menu_items_controller.rb +184 -0
  51. data/templates/vendor/plugins/goldberg/app/controllers/goldberg/permissions_controller.rb +60 -0
  52. data/templates/vendor/plugins/goldberg/app/controllers/goldberg/roles_controller.rb +85 -0
  53. data/templates/vendor/plugins/goldberg/app/controllers/goldberg/roles_permissions_controller.rb +65 -0
  54. data/templates/vendor/plugins/goldberg/app/controllers/goldberg/site_controllers_controller.rb +157 -0
  55. data/templates/vendor/plugins/goldberg/app/controllers/goldberg/system_settings_controller.rb +75 -0
  56. data/templates/vendor/plugins/goldberg/app/controllers/goldberg/users_controller.rb +293 -0
  57. data/templates/vendor/plugins/goldberg/app/helpers/goldberg/auth_helper.rb +4 -0
  58. data/templates/vendor/plugins/goldberg/app/helpers/goldberg/content_pages_helper.rb +23 -0
  59. data/templates/vendor/plugins/goldberg/app/helpers/goldberg/controller_actions_helper.rb +5 -0
  60. data/templates/vendor/plugins/goldberg/app/helpers/goldberg/menu_items_helper.rb +4 -0
  61. data/templates/vendor/plugins/goldberg/app/helpers/goldberg/permissions_helper.rb +4 -0
  62. data/templates/vendor/plugins/goldberg/app/helpers/goldberg/roles_helper.rb +4 -0
  63. data/templates/vendor/plugins/goldberg/app/helpers/goldberg/roles_permissions_helper.rb +4 -0
  64. data/templates/vendor/plugins/goldberg/app/helpers/goldberg/site_controllers_helper.rb +4 -0
  65. data/templates/vendor/plugins/goldberg/app/helpers/goldberg/system_settings_helper.rb +4 -0
  66. data/templates/vendor/plugins/goldberg/app/helpers/goldberg/users_helper.rb +4 -0
  67. data/templates/vendor/plugins/goldberg/app/models/goldberg/content_page.rb +134 -0
  68. data/templates/vendor/plugins/goldberg/app/models/goldberg/controller_action.rb +86 -0
  69. data/templates/vendor/plugins/goldberg/app/models/goldberg/credentials.rb +128 -0
  70. data/templates/vendor/plugins/goldberg/app/models/goldberg/menu.rb +198 -0
  71. data/templates/vendor/plugins/goldberg/app/models/goldberg/menu_item.rb +127 -0
  72. data/templates/vendor/plugins/goldberg/app/models/goldberg/permission.rb +37 -0
  73. data/templates/vendor/plugins/goldberg/app/models/goldberg/role.rb +68 -0
  74. data/templates/vendor/plugins/goldberg/app/models/goldberg/roles_permission.rb +18 -0
  75. data/templates/vendor/plugins/goldberg/app/models/goldberg/site_controller.rb +59 -0
  76. data/templates/vendor/plugins/goldberg/app/models/goldberg/system_settings.rb +112 -0
  77. data/templates/vendor/plugins/goldberg/app/models/goldberg/user.rb +69 -0
  78. data/templates/vendor/plugins/goldberg/app/models/goldberg/user_mailer.rb +43 -0
  79. data/templates/vendor/plugins/goldberg/app/views/goldberg/auth/_login.rhtml +15 -0
  80. data/templates/vendor/plugins/goldberg/app/views/goldberg/auth/login.rhtml +22 -0
  81. data/templates/vendor/plugins/goldberg/app/views/goldberg/auth/logout.rhtml +2 -0
  82. data/templates/vendor/plugins/goldberg/app/views/goldberg/content_pages/_fck_create_folder.rxml +6 -0
  83. data/templates/vendor/plugins/goldberg/app/views/goldberg/content_pages/_fck_files.rxml +19 -0
  84. data/templates/vendor/plugins/goldberg/app/views/goldberg/content_pages/_form.rhtml +32 -0
  85. data/templates/vendor/plugins/goldberg/app/views/goldberg/content_pages/edit.rhtml +10 -0
  86. data/templates/vendor/plugins/goldberg/app/views/goldberg/content_pages/fck_speller_pages.rhtml +58 -0
  87. data/templates/vendor/plugins/goldberg/app/views/goldberg/content_pages/list.rhtml +22 -0
  88. data/templates/vendor/plugins/goldberg/app/views/goldberg/content_pages/new.rhtml +8 -0
  89. data/templates/vendor/plugins/goldberg/app/views/goldberg/content_pages/show.rhtml +57 -0
  90. data/templates/vendor/plugins/goldberg/app/views/goldberg/content_pages/view.rhtml +1 -0
  91. data/templates/vendor/plugins/goldberg/app/views/goldberg/content_pages/view_default.rhtml +1 -0
  92. data/templates/vendor/plugins/goldberg/app/views/goldberg/controller_actions/_form.rhtml +53 -0
  93. data/templates/vendor/plugins/goldberg/app/views/goldberg/controller_actions/edit.rhtml +9 -0
  94. data/templates/vendor/plugins/goldberg/app/views/goldberg/controller_actions/list.rhtml +27 -0
  95. data/templates/vendor/plugins/goldberg/app/views/goldberg/controller_actions/new.rhtml +10 -0
  96. data/templates/vendor/plugins/goldberg/app/views/goldberg/controller_actions/show.rhtml +13 -0
  97. data/templates/vendor/plugins/goldberg/app/views/goldberg/layouts/_tabpanel_js.rhtml +52 -0
  98. data/templates/vendor/plugins/goldberg/app/views/goldberg/layouts/_tabpanel_list.rhtml +7 -0
  99. data/templates/vendor/plugins/goldberg/app/views/goldberg/menu_items/_breadcrumbs.rhtml +5 -0
  100. data/templates/vendor/plugins/goldberg/app/views/goldberg/menu_items/_form.rhtml +42 -0
  101. data/templates/vendor/plugins/goldberg/app/views/goldberg/menu_items/_item_list.rhtml +52 -0
  102. data/templates/vendor/plugins/goldberg/app/views/goldberg/menu_items/_item_parent_list.rhtml +15 -0
  103. data/templates/vendor/plugins/goldberg/app/views/goldberg/menu_items/_menubar.rhtml +21 -0
  104. data/templates/vendor/plugins/goldberg/app/views/goldberg/menu_items/_suckerfish.rhtml +14 -0
  105. data/templates/vendor/plugins/goldberg/app/views/goldberg/menu_items/edit.rhtml +10 -0
  106. data/templates/vendor/plugins/goldberg/app/views/goldberg/menu_items/list-original.rhtml +27 -0
  107. data/templates/vendor/plugins/goldberg/app/views/goldberg/menu_items/list.rhtml +16 -0
  108. data/templates/vendor/plugins/goldberg/app/views/goldberg/menu_items/new.rhtml +9 -0
  109. data/templates/vendor/plugins/goldberg/app/views/goldberg/menu_items/show.rhtml +8 -0
  110. data/templates/vendor/plugins/goldberg/app/views/goldberg/permissions/_form.rhtml +7 -0
  111. data/templates/vendor/plugins/goldberg/app/views/goldberg/permissions/edit.rhtml +9 -0
  112. data/templates/vendor/plugins/goldberg/app/views/goldberg/permissions/list.rhtml +14 -0
  113. data/templates/vendor/plugins/goldberg/app/views/goldberg/permissions/new.rhtml +8 -0
  114. data/templates/vendor/plugins/goldberg/app/views/goldberg/permissions/show.rhtml +38 -0
  115. data/templates/vendor/plugins/goldberg/app/views/goldberg/roles/_form.rhtml +18 -0
  116. data/templates/vendor/plugins/goldberg/app/views/goldberg/roles/edit.rhtml +9 -0
  117. data/templates/vendor/plugins/goldberg/app/views/goldberg/roles/list.rhtml +21 -0
  118. data/templates/vendor/plugins/goldberg/app/views/goldberg/roles/new.rhtml +8 -0
  119. data/templates/vendor/plugins/goldberg/app/views/goldberg/roles/show.rhtml +79 -0
  120. data/templates/vendor/plugins/goldberg/app/views/goldberg/roles_permissions/_form.rhtml +13 -0
  121. data/templates/vendor/plugins/goldberg/app/views/goldberg/roles_permissions/edit.rhtml +9 -0
  122. data/templates/vendor/plugins/goldberg/app/views/goldberg/roles_permissions/list.rhtml +24 -0
  123. data/templates/vendor/plugins/goldberg/app/views/goldberg/roles_permissions/new.rhtml +8 -0
  124. data/templates/vendor/plugins/goldberg/app/views/goldberg/roles_permissions/new_permission_for_role.rhtml +8 -0
  125. data/templates/vendor/plugins/goldberg/app/views/goldberg/roles_permissions/show.rhtml +8 -0
  126. data/templates/vendor/plugins/goldberg/app/views/goldberg/site_controllers/_form.rhtml +15 -0
  127. data/templates/vendor/plugins/goldberg/app/views/goldberg/site_controllers/_list.rhtml +26 -0
  128. data/templates/vendor/plugins/goldberg/app/views/goldberg/site_controllers/edit.rhtml +9 -0
  129. data/templates/vendor/plugins/goldberg/app/views/goldberg/site_controllers/list.rhtml +107 -0
  130. data/templates/vendor/plugins/goldberg/app/views/goldberg/site_controllers/new.rhtml +8 -0
  131. data/templates/vendor/plugins/goldberg/app/views/goldberg/site_controllers/show.rhtml +38 -0
  132. data/templates/vendor/plugins/goldberg/app/views/goldberg/system_settings/_form.rhtml +71 -0
  133. data/templates/vendor/plugins/goldberg/app/views/goldberg/system_settings/edit.rhtml +9 -0
  134. data/templates/vendor/plugins/goldberg/app/views/goldberg/system_settings/list.rhtml +27 -0
  135. data/templates/vendor/plugins/goldberg/app/views/goldberg/system_settings/new.rhtml +8 -0
  136. data/templates/vendor/plugins/goldberg/app/views/goldberg/system_settings/show.rhtml +189 -0
  137. data/templates/vendor/plugins/goldberg/app/views/goldberg/user_mailer/confirmation_request.rhtml +19 -0
  138. data/templates/vendor/plugins/goldberg/app/views/goldberg/user_mailer/reset_password.rhtml +17 -0
  139. data/templates/vendor/plugins/goldberg/app/views/goldberg/user_mailer/reset_password_request.rhtml +23 -0
  140. data/templates/vendor/plugins/goldberg/app/views/goldberg/users/_form.rhtml +53 -0
  141. data/templates/vendor/plugins/goldberg/app/views/goldberg/users/confirm_registration.rhtml +26 -0
  142. data/templates/vendor/plugins/goldberg/app/views/goldberg/users/confirm_registration_submit.rhtml +4 -0
  143. data/templates/vendor/plugins/goldberg/app/views/goldberg/users/create.rhtml +19 -0
  144. data/templates/vendor/plugins/goldberg/app/views/goldberg/users/edit.rhtml +11 -0
  145. data/templates/vendor/plugins/goldberg/app/views/goldberg/users/forgot_password.rhtml +27 -0
  146. data/templates/vendor/plugins/goldberg/app/views/goldberg/users/forgot_password_submit.rhtml +4 -0
  147. data/templates/vendor/plugins/goldberg/app/views/goldberg/users/list.rhtml +18 -0
  148. data/templates/vendor/plugins/goldberg/app/views/goldberg/users/new.rhtml +19 -0
  149. data/templates/vendor/plugins/goldberg/app/views/goldberg/users/reset_password.rhtml +11 -0
  150. data/templates/vendor/plugins/goldberg/app/views/goldberg/users/reset_password_submit.rhtml +3 -0
  151. data/templates/vendor/plugins/goldberg/app/views/goldberg/users/show.rhtml +33 -0
  152. data/templates/vendor/plugins/goldberg/db/ContentPage.yml +466 -0
  153. data/templates/vendor/plugins/goldberg/db/ControllerAction.yml +162 -0
  154. data/templates/vendor/plugins/goldberg/db/MenuItem.yml +109 -0
  155. data/templates/vendor/plugins/goldberg/db/Permission.yml +21 -0
  156. data/templates/vendor/plugins/goldberg/db/Role.yml +493 -0
  157. data/templates/vendor/plugins/goldberg/db/RolesPermission.yml +26 -0
  158. data/templates/vendor/plugins/goldberg/db/SiteController.yml +61 -0
  159. data/templates/vendor/plugins/goldberg/db/SystemSettings.yml +21 -0
  160. data/templates/vendor/plugins/goldberg/db/User.yml +15 -0
  161. data/templates/vendor/plugins/goldberg/db/migrate/001_initial_setup.rb +128 -0
  162. data/templates/vendor/plugins/goldberg/db/migrate/002_menu_rest_items_users_cached_content_pages.rb +26 -0
  163. data/templates/vendor/plugins/goldberg/db/migrate/003_self_registration.rb +54 -0
  164. data/templates/vendor/plugins/goldberg/db/migrate/004_column_fixes.rb +119 -0
  165. data/templates/vendor/plugins/goldberg/init.rb +13 -0
  166. data/templates/vendor/plugins/goldberg/lib/goldberg.rb +37 -0
  167. data/templates/vendor/plugins/goldberg/lib/goldberg/controller.rb +11 -0
  168. data/templates/vendor/plugins/goldberg/lib/goldberg/filters.rb +197 -0
  169. data/templates/vendor/plugins/goldberg/lib/goldberg/helper.rb +66 -0
  170. data/templates/vendor/plugins/goldberg/lib/goldberg/migration.rb +113 -0
  171. data/templates/vendor/plugins/goldberg/lib/goldberg/migrator.rb +128 -0
  172. data/templates/vendor/plugins/goldberg/lib/goldberg/model.rb +110 -0
  173. data/templates/vendor/plugins/goldberg/lib/goldberg/routes.rb +49 -0
  174. data/templates/vendor/plugins/goldberg/lib/goldberg/test_helper.rb +82 -0
  175. data/templates/vendor/plugins/goldberg/tasks/goldberg_tasks.rake +47 -0
  176. data/templates/vendor/plugins/goldberg/test/functional/content_pages_controller_test.rb +31 -0
  177. data/templates/vendor/plugins/goldberg/test/integration/security_test.rb +134 -0
  178. data/templates/vendor/plugins/goldberg/test/test_helper.rb +40 -0
  179. data/templates/vendor/plugins/goldberg/test/unit/content_page_test.rb +87 -0
  180. data/templates/vendor/plugins/goldberg/test/unit/controller_action_test.rb +85 -0
  181. data/templates/vendor/plugins/goldberg/test/unit/menu_item_test.rb +46 -0
  182. data/templates/vendor/plugins/goldberg/test/unit/permission_test.rb +35 -0
  183. data/templates/vendor/plugins/goldberg/test/unit/site_controller_test.rb +53 -0
  184. data/templates/vendor/plugins/goldberg/test/unit/system_settings_test.rb +71 -0
  185. data/templates/vendor/plugins/goldberg/test/unit/user_test.rb +104 -0
  186. metadata +310 -0
@@ -0,0 +1,40 @@
1
+ ENV["RAILS_ENV"] = "test"
2
+ require File.expand_path(File.dirname(__FILE__) +
3
+ "/../../../../config/environment")
4
+
5
+ require 'test_help'
6
+
7
+ class Test::Unit::TestCase
8
+ # Transactional fixtures accelerate your tests by wrapping each test method
9
+ # in a transaction that's rolled back on completion. This ensures that the
10
+ # test database remains unchanged so your fixtures don't have to be reloaded
11
+ # between every test method. Fewer database queries means faster tests.
12
+ #
13
+ # Read Mike Clark's excellent walkthrough at
14
+ # http://clarkware.com/cgi/blosxom/2005/10/24#Rails10FastTesting
15
+ #
16
+ # Every Active Record database supports transactions except MyISAM tables
17
+ # in MySQL. Turn off transactional fixtures in this case; however, if you
18
+ # don't care one way or the other, switching from MyISAM to InnoDB tables
19
+ # is recommended.
20
+ #
21
+ # The only drawback to using transactional fixtures is when you actually
22
+ # need to test transactions. Since your test is bracketed by a transaction,
23
+ # any transactions started in your code will be automatically rolled back.
24
+ self.use_transactional_fixtures = true
25
+
26
+ # Instantiated fixtures are slow, but give you @david where otherwise you
27
+ # would need people(:david). If you don't want to migrate your existing
28
+ # test cases which use the @david style and don't mind the speed hit (each
29
+ # instantiated fixtures translates to a database query per test method),
30
+ # then set this back to true.
31
+ self.use_instantiated_fixtures = false
32
+
33
+ # Setup all fixtures in test/fixtures/*.(yml|csv) for all tests in alphabetical order.
34
+ #
35
+ # Note: You'll currently still have to declare fixtures explicitly in integration tests
36
+ # -- they do not yet inherit this setting
37
+ # fixtures :all
38
+
39
+ # Add more helper methods to be used by all tests here...
40
+ end
@@ -0,0 +1,87 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+
3
+ class ContentPageTest < Test::Unit::TestCase
4
+ include Goldberg::TestHelper
5
+
6
+ def setup
7
+ @permission = Goldberg::Permission.find :first
8
+ end
9
+
10
+ def test_all_fields
11
+ page = Goldberg::ContentPage.new(:name => 'test', :title => 'A test')
12
+ page.permission = @permission
13
+ page.markup_style = 'Raw HTML'
14
+ page.content = 'This is a test'
15
+ assert page.save
16
+ end
17
+
18
+ # Test that HTML content is generated when it's accessed
19
+ def test_content_cached_on_access
20
+ page = new_page()
21
+ page.content = 'This is a test'
22
+ # No content yet
23
+ assert_nil page.content_cache
24
+ # Calling #content_html triggers HTML generation
25
+ assert_not_nil page.content_html
26
+ assert_not_nil page.content_cache
27
+ end
28
+
29
+ # Test that HTML content is generated when the page is saved
30
+ def test_content_cached_on_save
31
+ page = new_page()
32
+ page.content = 'This is a test'
33
+ # No content yet
34
+ assert_nil page.content_cache
35
+ page.save
36
+ # Saving triggers HTML generation
37
+ assert_not_nil page.content_cache
38
+ end
39
+
40
+ def test_minimal_fields
41
+ page = Goldberg::ContentPage.new(:name => 'test', :title => 'A test')
42
+ page.permission = @permission
43
+ assert page.save
44
+ end
45
+
46
+ def test_no_fields
47
+ page = Goldberg::ContentPage.new
48
+ assert !page.valid?
49
+ # name, title and permission_id are compulsory
50
+ [:name, :title, :permission_id].each do |attr|
51
+ assert page.errors.on(attr)
52
+ end
53
+ end
54
+
55
+ # Test that name is unique
56
+ def test_uniqueness_of
57
+ # Create a page named 'test' and save it
58
+ page1 = new_page()
59
+ assert page1.save
60
+
61
+ # Duplicate page name won't work
62
+ page2 = new_page()
63
+ assert !page2.save
64
+ assert page2.errors.on(:name)
65
+
66
+ # Fix name and it should work
67
+ page2.name = 'test2'
68
+ assert page2.save
69
+ end
70
+
71
+ # Test that the URL generated for the page equals the name preceded
72
+ # with a slash
73
+ def test_url_generation
74
+ page = new_page()
75
+ assert_equal page.url, '/test'
76
+ end
77
+
78
+
79
+ protected
80
+
81
+ def new_page
82
+ page = Goldberg::ContentPage.new(:name => 'test',
83
+ :title => 'This is a test')
84
+ page.permission = @permission
85
+ return page
86
+ end
87
+ end
@@ -0,0 +1,85 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+
3
+ class ControllerActionTest < Test::Unit::TestCase
4
+ include Goldberg::TestHelper
5
+
6
+ def setup
7
+ # Some associated records (two of each will do)
8
+ (@sc1, @sc2) = Goldberg::SiteController.find :all
9
+ (@p1, @p2) = Goldberg::Permission.find :all
10
+ end
11
+
12
+ def test_no_fields
13
+ ca = Goldberg::ControllerAction.new
14
+ assert !ca.valid?
15
+ # name, and site_controller_id are compulsory
16
+ [:name, :site_controller_id].each do |attr|
17
+ assert ca.errors.on(attr)
18
+ end
19
+ end
20
+
21
+ def test_minimal_fields
22
+ ca = Goldberg::ControllerAction.new(:name => 'test')
23
+ ca.site_controller = @sc1
24
+ assert ca.save
25
+
26
+ # All fields
27
+ ca.permission = @p1
28
+ assert ca.save
29
+ end
30
+
31
+ def test_all_fields
32
+ ca = Goldberg::ControllerAction.new(:name => 'test')
33
+ ca.site_controller = @sc1
34
+ ca.permission = @p1
35
+ assert ca.save
36
+ end
37
+
38
+ # The name of the controller action should be unique within the
39
+ # scope of the site controller.
40
+ def test_name_unique_within_scope_of_site_controller
41
+ ca1 = Goldberg::ControllerAction.new(:name => 'test')
42
+ ca2 = Goldberg::ControllerAction.new(:name => 'test')
43
+ ca1.site_controller = @sc1
44
+ ca2.site_controller = @sc1
45
+ ca1.save
46
+
47
+ # Error: name not unique within scope of controller
48
+ assert !ca2.save
49
+ assert ca2.errors.on(:name)
50
+
51
+ # Should work: same name, different controllers
52
+ ca2.site_controller = @sc2
53
+ assert ca2.save
54
+
55
+ # Should work: different names, same controller
56
+ ca2.name = 'test2'
57
+ ca2.site_controller = @sc1
58
+ assert ca2.save
59
+ end
60
+
61
+ # The effective permission is the permission of the controller
62
+ # action, if specified; otherwise it is the permission of the
63
+ # action's site controller.
64
+ def test_effective_permission
65
+ # Make sure we know the permission on the site controller
66
+ @sc1.permission = @p1
67
+ @sc1.save!
68
+
69
+ ca = Goldberg::ControllerAction.new(:name => 'test')
70
+ ca.site_controller = @sc1
71
+ ca.save!
72
+
73
+ # No explicit permission: effective permission should be the same
74
+ # as site controller
75
+ assert_nil ca.permission
76
+ assert_equal @p1.id, ca.effective_permission.id
77
+
78
+ # Explicit permission: should override permission of site
79
+ # controller
80
+ ca.permission = @p2
81
+ ca.save!
82
+ assert_not_nil ca.permission
83
+ assert_equal @p2.id, ca.effective_permission.id
84
+ end
85
+ end
@@ -0,0 +1,46 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+
3
+ class MenuItemTest < Test::Unit::TestCase
4
+ include Goldberg::TestHelper
5
+
6
+ def test_name_is_unique
7
+ name_1 = 'THIS_IS_NAME_1'
8
+ name_2 = 'THIS_IS_NAME_2'
9
+ name_1.freeze
10
+ name_2.freeze
11
+
12
+ menu_item_1 = Goldberg::MenuItem.new(:content_page_id => 1)
13
+ menu_item_2 = Goldberg::MenuItem.new(:content_page_id => 1)
14
+
15
+ menu_item_1.name = name_1
16
+ menu_item_1.label = 'This is name 1'
17
+ menu_item_2.name = name_2
18
+ menu_item_2.label = 'This is name 2'
19
+
20
+ assert(menu_item_1.save)
21
+ assert(menu_item_2.save)
22
+
23
+ menu_item_2.name = name_1
24
+
25
+ assert(!menu_item_2.save)
26
+ assert(menu_item_2.errors.invalid?(:name))
27
+ end
28
+
29
+
30
+ def test_name_is_required
31
+ mi = Goldberg::MenuItem.new(:content_page_id => 1)
32
+ assert(!mi.valid?)
33
+ assert(mi.errors.invalid?(:name))
34
+ assert(!mi.save)
35
+ end
36
+
37
+
38
+ def test_must_have_content_page_or_controller_action
39
+ mi = Goldberg::MenuItem.new(:name => 'test', :label => 'Test')
40
+ assert(!mi.valid?)
41
+ assert(mi.errors.invalid?(:content_page_id))
42
+ assert(mi.errors.invalid?(:controller_action_id))
43
+ assert(!mi.save)
44
+ end
45
+
46
+ end
@@ -0,0 +1,35 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+
3
+ class PermissionTest < Test::Unit::TestCase
4
+ include Goldberg::TestHelper
5
+
6
+ def test_invalid_without_name
7
+ permission = Goldberg::Permission.new
8
+ assert(!permission.valid?)
9
+ assert(permission.errors.invalid?(:name))
10
+ assert(!permission.save)
11
+ end
12
+
13
+
14
+ def test_uniqueness_of_name
15
+ name_1 = 'THIS_IS_NAME_1'
16
+ name_2 = 'THIS_IS_NAME_2'
17
+ name_1.freeze
18
+ name_2.freeze
19
+
20
+ permission_1 = Goldberg::Permission.new
21
+ permission_2 = Goldberg::Permission.new
22
+
23
+ permission_1.name = name_1
24
+ permission_2.name = name_2
25
+
26
+ assert(permission_1.save)
27
+ assert(permission_2.save)
28
+
29
+ permission_2.name = name_1
30
+
31
+ assert(!permission_2.save)
32
+ assert(permission_2.errors.invalid?(:name))
33
+ end
34
+
35
+ end
@@ -0,0 +1,53 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+
3
+ class SiteControllerTest < Test::Unit::TestCase
4
+ include Goldberg::TestHelper
5
+
6
+ def setup
7
+ @p = Goldberg::Permission.find :first
8
+ end
9
+
10
+ def test_invalid_without_name
11
+ site_controller = Goldberg::SiteController.new
12
+ assert(!site_controller.valid?)
13
+ assert(site_controller.errors.invalid?(:name))
14
+ assert(!site_controller.save)
15
+ end
16
+
17
+
18
+ def test_uniqueness_of_name
19
+ name_1 = 'THIS_IS_NAME_1'
20
+ name_2 = 'THIS_IS_NAME_2'
21
+ name_1.freeze
22
+ name_2.freeze
23
+
24
+ site_controller_1 = Goldberg::SiteController.new
25
+ site_controller_1.permission = @p
26
+ site_controller_2 = Goldberg::SiteController.new
27
+ site_controller_2.permission = @p
28
+
29
+ site_controller_1.name = name_1
30
+ site_controller_2.name = name_2
31
+
32
+ assert(site_controller_1.save)
33
+ assert(site_controller_2.save)
34
+
35
+ site_controller_2.name = name_1
36
+
37
+ assert(!site_controller_2.save)
38
+ assert(site_controller_2.errors.invalid?(:name))
39
+ end
40
+
41
+
42
+ #create so the classes method can be tested...
43
+ class ThereShouldBeNoSuchRealClassNameGoldbergTestController < ApplicationController
44
+ end
45
+
46
+
47
+ def test_classes_finds_direct_controller_derivatives
48
+ classes = Goldberg::SiteController.classes
49
+ assert(classes.has_value?(SiteControllerTest::ThereShouldBeNoSuchRealClassNameGoldbergTestController))
50
+ end
51
+
52
+
53
+ end
@@ -0,0 +1,71 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+
3
+ class SystemSettingsTest < Test::Unit::TestCase
4
+ include Goldberg::TestHelper
5
+
6
+ def test_public_role
7
+ public_role = Goldberg::Role.find :first
8
+ ss = Goldberg::SystemSettings.create(:public_role_id => public_role.id)
9
+ assert_equal(public_role, ss.public_role)
10
+ end
11
+
12
+ def test_public_role_raises_when_role_not_found
13
+ ss = Goldberg::SystemSettings.create
14
+ assert_raise(ActiveRecord::RecordNotFound) {ss.public_role}
15
+ end
16
+
17
+ def test_site_default_page
18
+ page = Goldberg::ContentPage.find :first
19
+ ss = Goldberg::SystemSettings.create(:site_default_page_id => page.id)
20
+ end
21
+
22
+
23
+ def test_site_default_page_raises_when_page_not_found
24
+ ss = Goldberg::SystemSettings.create
25
+ assert_raise(ActiveRecord::RecordNotFound) {ss.site_default_page}
26
+ end
27
+
28
+
29
+ def test_not_found_page
30
+ page = Goldberg::ContentPage.find :first
31
+ ss = Goldberg::SystemSettings.create(:not_found_page_id => page.id)
32
+ end
33
+
34
+
35
+ def test_not_found_page_raises_when_page_not_found
36
+ ss = Goldberg::SystemSettings.create
37
+ assert_raise(ActiveRecord::RecordNotFound) {ss.not_found_page}
38
+ end
39
+
40
+
41
+ def test_permission_denied_page
42
+ page = Goldberg::ContentPage.find :first
43
+ ss = Goldberg::SystemSettings.create(:permission_denied_page_id => page.id)
44
+ end
45
+
46
+
47
+ def test_permission_denied_page_raises_when_page_permission_denied
48
+ ss = Goldberg::SystemSettings.create
49
+ assert_raise(ActiveRecord::RecordNotFound) {ss.permission_denied_page}
50
+ end
51
+
52
+
53
+ def test_session_expired_page
54
+ page = Goldberg::ContentPage.find :first
55
+ ss = Goldberg::SystemSettings.create(:session_expired_page_id => page.id)
56
+ end
57
+
58
+
59
+ def test_session_expired_page_raises_when_page_session_expired
60
+ ss = Goldberg::SystemSettings.create
61
+ assert_raise(ActiveRecord::RecordNotFound) {ss.session_expired_page}
62
+ end
63
+
64
+
65
+ def test_system_pages_returns_nil_when_tested_page_not_system_page
66
+ ss = Goldberg::SystemSettings.create
67
+ page = Goldberg::ContentPage.find :first
68
+ assert_nil(ss.system_pages(page.id))
69
+ end
70
+
71
+ end
@@ -0,0 +1,104 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+
3
+ class UserTest < Test::Unit::TestCase
4
+ include Goldberg::TestHelper
5
+
6
+ def setup
7
+ @role = Goldberg::Role.find :first
8
+ end
9
+
10
+ def test_requires_name
11
+ user = Goldberg::User.new
12
+ assert(!user.valid?)
13
+ assert(user.errors.invalid?(:name))
14
+ assert(!user.save)
15
+ end
16
+
17
+
18
+ def test_name_unique
19
+ name_1 = 'NAME1'
20
+ name_2 = 'NAME2'
21
+ name_1.freeze
22
+ name_2.freeze
23
+
24
+ user_1 = Goldberg::User.new(:name => name_1)
25
+ user_1.role = @role
26
+ user_1.clear_password = 'fred'
27
+ user_2 = Goldberg::User.new(:name => name_2)
28
+ user_2.role = @role
29
+ user_2.clear_password = 'fred'
30
+
31
+ assert(user_1.save)
32
+ assert(user_2.save)
33
+
34
+ user_2.name = name_1
35
+ assert(!user_2.save)
36
+ assert(!user_2.valid?)
37
+ assert(user_2.errors.invalid?(:name))
38
+ end
39
+
40
+
41
+ def test_password_updated_on_save_when_clear_password_set
42
+ user = Goldberg::User.new(:name => 'name')
43
+ user.role = @role
44
+ user.clear_password = 'fred'
45
+ assert(user.save)
46
+
47
+ saved_password = user.password
48
+ saved_salt = user.password_salt
49
+
50
+ user.clear_password = 'test123'
51
+ assert(user.save)
52
+
53
+ assert_not_equal(saved_password, user.password)
54
+ assert_not_equal(saved_salt, user.password_salt)
55
+
56
+ saved_password = user.password
57
+ saved_salt = user.password_salt
58
+
59
+ user.name = 'haha'
60
+ assert(user.name)
61
+
62
+ assert_equal(saved_password, user.password)
63
+ assert_equal(saved_salt, user.password_salt)
64
+ end
65
+
66
+
67
+ def test_clear_password_set_nil_on_save
68
+ new_pass = 'test123'
69
+ new_pass.freeze
70
+
71
+ user = Goldberg::User.new(:name => 'name')
72
+ user.role = @role
73
+ assert(!user.save)
74
+
75
+ user.clear_password = new_pass
76
+ assert_equal(new_pass, user.clear_password)
77
+ assert(user.save)
78
+ assert_nil(user.clear_password)
79
+ end
80
+
81
+
82
+ def test_check_password
83
+ first_pass = 'test'
84
+ new_pass = 'test1'
85
+ first_pass.freeze
86
+ new_pass.freeze
87
+
88
+ assert_not_equal(first_pass, new_pass)
89
+
90
+ user = Goldberg::User.new(:name => 'user')
91
+ user.role = @role
92
+ user.clear_password = first_pass
93
+ assert(user.save)
94
+
95
+ assert(user.check_password(first_pass))
96
+ assert(!user.check_password(new_pass))
97
+
98
+ user.clear_password = new_pass
99
+ assert(user.save)
100
+
101
+ assert(user.check_password(new_pass))
102
+ assert(!user.check_password(first_pass))
103
+ end
104
+ end