Changesets can be listed by changeset number.
The Git repository is here.
- Revision:
- 171
- Log:
Initial import of Beast 0.9 from downloaded Tarball. Beast is a Ruby
On Rails based forum application. The original tarball came from the
following location:http://s3.amazonaws.com/beast-forum/beast-0.9.tar.gz
The forum post which announced this version's availability was at:
http://beast.caboo.se/forums/1/topics/446
- Author:
- rool
- Date:
- Fri Mar 02 15:51:55 +0000 2007
- Size:
- 7546 Bytes
1 | require File.dirname(__FILE__) + '/../test_helper' |
2 | require 'posts_controller' |
3 | |
4 | # Re-raise errors caught by the controller. |
5 | class PostsController; def rescue_action(e) raise e end; end |
6 | |
7 | class PostsControllerTest < Test::Unit::TestCase |
8 | all_fixtures |
9 | def setup |
10 | @controller = PostsController.new |
11 | @request = ActionController::TestRequest.new |
12 | @response = ActionController::TestResponse.new |
13 | end |
14 | |
15 | def test_should_create_reply |
16 | counts = lambda { [Post.count, forums(:rails).posts_count, users(:aaron).posts_count, topics(:pdi).posts_count] } |
17 | equal = lambda { [forums(:rails).topics_count] } |
18 | old_counts = counts.call |
19 | old_equal = equal.call |
20 | |
21 | login_as :aaron |
22 | post :create, :forum_id => forums(:rails).id, :topic_id => topics(:pdi).id, :post => { :body => 'blah' } |
23 | assert_redirected_to topic_path(:forum_id => forums(:rails).id, :id => topics(:pdi).id, :anchor => assigns(:post).dom_id, :page => '1') |
24 | assert_equal topics(:pdi), assigns(:topic) |
25 | [forums(:rails), users(:aaron), topics(:pdi)].each &:reload |
26 | |
27 | assert_equal old_counts.collect { |n| n + 1}, counts.call |
28 | assert_equal old_equal, equal.call |
29 | end |
30 | |
31 | def test_should_update_topic_replied_at_upon_replying |
32 | old=topics(:pdi).replied_at |
33 | login_as :aaron |
34 | post :create, :forum_id => forums(:rails).id, :topic_id => topics(:pdi).id, :post => { :body => 'blah' } |
35 | assert_not_equal(old, topics(:pdi).reload.replied_at) |
36 | assert old < topics(:pdi).reload.replied_at |
37 | end |
38 | |
39 | def test_should_reply_with_no_body |
40 | assert_difference Post, :count, 0 do |
41 | login_as :aaron |
42 | post :create, :forum_id => forums(:rails).id, :topic_id => posts(:pdi).id, :post => {} |
43 | assert_redirected_to topic_path(:forum_id => forums(:rails).id, :id => posts(:pdi).id, :anchor => 'reply-form', :page => '1') |
44 | end |
45 | end |
46 | |
47 | def test_should_delete_reply |
48 | counts = lambda { [Post.count, forums(:rails).posts_count, users(:sam).posts_count, topics(:pdi).posts_count] } |
49 | equal = lambda { [forums(:rails).topics_count] } |
50 | old_counts = counts.call |
51 | old_equal = equal.call |
52 | |
53 | login_as :aaron |
54 | delete :destroy, :forum_id => forums(:rails).id, :topic_id => topics(:pdi).id, :id => posts(:pdi_reply).id |
55 | [forums(:rails), users(:sam), topics(:pdi)].each &:reload |
56 | |
57 | assert_equal old_counts.collect { |n| n - 1}, counts.call |
58 | assert_equal old_equal, equal.call |
59 | end |
60 | |
61 | def test_should_delete_reply_as_moderator |
62 | assert_difference Post, :count, -1 do |
63 | login_as :sam |
64 | delete :destroy, :forum_id => forums(:rails).id, :topic_id => topics(:pdi).id, :id => posts(:pdi_rebuttal).id |
65 | end |
66 | end |
67 | |
68 | def test_should_delete_topic_if_deleting_the_last_reply |
69 | assert_difference Post, :count, -1 do |
70 | assert_difference Topic, :count, -1 do |
71 | login_as :aaron |
72 | delete :destroy, :forum_id => forums(:rails).id, :topic_id => topics(:il8n).id, :id => posts(:il8n).id |
73 | assert_redirected_to forum_path(forums(:rails)) |
74 | assert_raise(ActiveRecord::RecordNotFound) { topics(:il8n).reload } |
75 | end |
76 | end |
77 | end |
78 | |
79 | def test_can_edit_own_post |
80 | login_as :sam |
81 | put :update, :forum_id => forums(:comics).id, :topic_id => topics(:galactus).id, :id => posts(:silver_surfer).id, :post => {} |
82 | assert_redirected_to topic_path(:forum_id => forums(:comics), :id => topics(:galactus), :anchor => posts(:silver_surfer).dom_id, :page => '1') |
83 | end |
84 | |
85 | def test_can_edit_other_post_as_moderator |
86 | login_as :sam |
87 | put :update, :forum_id => forums(:rails).id, :topic_id => topics(:pdi).id, :id => posts(:pdi_rebuttal).id, :post => {} |
88 | assert_redirected_to topic_path(:forum_id => forums(:rails), :id => posts(:pdi), :anchor => posts(:pdi_rebuttal).dom_id, :page => '1') |
89 | end |
90 | |
91 | def test_cannot_edit_other_post |
92 | login_as :sam |
93 | put :update, :forum_id => forums(:comics).id, :topic_id => topics(:galactus).id, :id => posts(:galactus).id, :post => {} |
94 | assert_redirected_to login_path |
95 | end |
96 | |
97 | def test_cannot_edit_own_post_user_id |
98 | login_as :sam |
99 | put :update, :forum_id => forums(:rails).id, :topic_id => topics(:pdi).id, :id => posts(:pdi_reply).id, :post => { :user_id => 32 } |
100 | assert_redirected_to topic_path(:forum_id => forums(:rails), :id => posts(:pdi), :anchor => posts(:pdi_reply).dom_id, :page => '1') |
101 | assert_equal users(:sam).id, posts(:pdi_reply).reload.user_id |
102 | end |
103 | |
104 | def test_can_edit_other_post_as_admin |
105 | login_as :aaron |
106 | put :update, :forum_id => forums(:rails).id, :topic_id => topics(:pdi).id, :id => posts(:pdi_rebuttal).id, :post => {} |
107 | assert_redirected_to topic_path(:forum_id => forums(:rails), :id => posts(:pdi), :anchor => posts(:pdi_rebuttal).dom_id, :page => '1') |
108 | end |
109 | |
110 | def test_should_view_recent_posts |
111 | get :index |
112 | assert_response :success |
113 | assert_models_equal [posts(:il8n), posts(:shield_reply), posts(:shield), posts(:silver_surfer), posts(:galactus), posts(:ponies), posts(:pdi_rebuttal), posts(:pdi_reply), posts(:pdi), posts(:sticky)], assigns(:posts) |
114 | end |
115 | |
116 | def test_should_view_posts_by_forum |
117 | get :index, :forum_id => forums(:comics).id |
118 | assert_response :success |
119 | assert_models_equal [posts(:shield_reply), posts(:shield), posts(:silver_surfer), posts(:galactus)], assigns(:posts) |
120 | end |
121 | |
122 | def test_should_view_posts_by_user |
123 | get :index, :user_id => users(:sam).id |
124 | assert_response :success |
125 | assert_models_equal [posts(:shield), posts(:silver_surfer), posts(:ponies), posts(:pdi_reply), posts(:sticky)], assigns(:posts) |
126 | end |
127 | |
128 | def test_should_view_monitored_posts |
129 | get :monitored, :user_id => users(:aaron).id |
130 | assert_models_equal [posts(:pdi_reply)], assigns(:posts) |
131 | end |
132 | |
133 | def test_should_search_recent_posts |
134 | get :index, :q => 'pdi' |
135 | assert_response :success |
136 | assert_models_equal [posts(:pdi_rebuttal), posts(:pdi_reply), posts(:pdi)], assigns(:posts) |
137 | end |
138 | |
139 | def test_should_search_posts_by_forum |
140 | get :index, :forum_id => forums(:comics).id, :q => 'galactus' |
141 | assert_response :success |
142 | assert_models_equal [posts(:silver_surfer), posts(:galactus)], assigns(:posts) |
143 | end |
144 | |
145 | def test_should_search_posts_by_user |
146 | get :index, :user_id => users(:sam).id, :q => 'pdi' |
147 | assert_response :success |
148 | assert_models_equal [posts(:pdi_reply)], assigns(:posts) |
149 | end |
150 | |
151 | def test_should_view_recent_posts_as_rss |
152 | get :index, :format => 'rss' |
153 | assert_response :success |
154 | assert_models_equal [posts(:il8n), posts(:shield_reply), posts(:shield), posts(:silver_surfer), posts(:galactus), posts(:ponies), posts(:pdi_rebuttal), posts(:pdi_reply), posts(:pdi), posts(:sticky)], assigns(:posts) |
155 | end |
156 | |
157 | def test_should_view_posts_by_forum_as_rss |
158 | get :index, :forum_id => forums(:comics).id, :format => 'rss' |
159 | assert_response :success |
160 | assert_models_equal [posts(:shield_reply), posts(:shield), posts(:silver_surfer), posts(:galactus)], assigns(:posts) |
161 | end |
162 | |
163 | def test_should_view_posts_by_user_as_rss |
164 | get :index, :user_id => users(:sam).id, :format => 'rss' |
165 | assert_response :success |
166 | assert_models_equal [posts(:shield), posts(:silver_surfer), posts(:ponies), posts(:pdi_reply), posts(:sticky)], assigns(:posts) |
167 | end |
168 | |
169 | def test_disallow_new_post_to_locked_topic |
170 | galactus = topics(:galactus) |
171 | galactus.locked = 1 |
172 | galactus.save |
173 | login_as :aaron |
174 | post :create, :forum_id => forums(:comics).id, :topic_id => topics(:galactus).id, :post => { :body => 'blah' } |
175 | assert_redirected_to topic_path(:forum_id => forums(:comics), :id => topics(:galactus)) |
176 | assert_equal 'This topic is locked.', flash[:notice] |
177 | end |
178 | end |