enju_news 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (108) hide show
  1. data/MIT-LICENSE +20 -0
  2. data/README.rdoc +3 -0
  3. data/Rakefile +47 -0
  4. data/app/controllers/news_feeds_controller.rb +101 -0
  5. data/app/controllers/news_posts_controller.rb +98 -0
  6. data/app/helpers/news_feeds_helper.rb +2 -0
  7. data/app/helpers/news_posts_helper.rb +2 -0
  8. data/app/models/news_feed.rb +83 -0
  9. data/app/models/news_feed_sweeper.rb +12 -0
  10. data/app/models/news_post.rb +15 -0
  11. data/app/views/news_feeds/_content.html.erb +9 -0
  12. data/app/views/news_feeds/_content_atom.html.erb +16 -0
  13. data/app/views/news_feeds/_content_rss.html.erb +16 -0
  14. data/app/views/news_feeds/_form.html.erb +14 -0
  15. data/app/views/news_feeds/_list.html.erb +7 -0
  16. data/app/views/news_feeds/edit.html.erb +29 -0
  17. data/app/views/news_feeds/index.html.erb +42 -0
  18. data/app/views/news_feeds/new.html.erb +28 -0
  19. data/app/views/news_feeds/show.html.erb +34 -0
  20. data/app/views/news_posts/_form.html.erb +44 -0
  21. data/app/views/news_posts/edit.html.erb +13 -0
  22. data/app/views/news_posts/index.atom.builder +11 -0
  23. data/app/views/news_posts/index.html.erb +42 -0
  24. data/app/views/news_posts/index.rss.builder +32 -0
  25. data/app/views/news_posts/new.html.erb +12 -0
  26. data/app/views/news_posts/show.html.erb +49 -0
  27. data/config/locales/translation_en.yml +28 -0
  28. data/config/locales/translation_ja.yml +28 -0
  29. data/config/routes.rb +4 -0
  30. data/db/migrate/20081031033632_create_news_feeds.rb +13 -0
  31. data/db/migrate/20090126071155_create_news_posts.rb +18 -0
  32. data/db/migrate/20110220103937_add_url_to_news_post.rb +9 -0
  33. data/lib/enju_news.rb +6 -0
  34. data/lib/enju_news/engine.rb +12 -0
  35. data/lib/enju_news/expire_editable_fragment.rb +15 -0
  36. data/lib/enju_news/version.rb +3 -0
  37. data/lib/tasks/enju_news_tasks.rake +4 -0
  38. data/spec/cassette_library/NewsFeed.yml +1998 -0
  39. data/spec/controllers/news_feeds_controller_spec.rb +445 -0
  40. data/spec/controllers/news_posts_controller_spec.rb +443 -0
  41. data/spec/dummy/Rakefile +7 -0
  42. data/spec/dummy/app/assets/javascripts/application.js +9 -0
  43. data/spec/dummy/app/assets/stylesheets/application.css +7 -0
  44. data/spec/dummy/app/controllers/application_controller.rb +52 -0
  45. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  46. data/spec/dummy/app/models/ability.rb +22 -0
  47. data/spec/dummy/app/models/library_group.rb +86 -0
  48. data/spec/dummy/app/models/role.rb +46 -0
  49. data/spec/dummy/app/models/user.rb +94 -0
  50. data/spec/dummy/app/models/user_group.rb +40 -0
  51. data/spec/dummy/app/models/user_has_role.rb +5 -0
  52. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  53. data/spec/dummy/app/views/page/403.html.erb +9 -0
  54. data/spec/dummy/app/views/page/403.mobile.erb +5 -0
  55. data/spec/dummy/app/views/page/403.xml.erb +4 -0
  56. data/spec/dummy/app/views/page/404.html.erb +9 -0
  57. data/spec/dummy/app/views/page/404.mobile.erb +5 -0
  58. data/spec/dummy/app/views/page/404.xml.erb +4 -0
  59. data/spec/dummy/config.ru +4 -0
  60. data/spec/dummy/config/application.rb +47 -0
  61. data/spec/dummy/config/boot.rb +10 -0
  62. data/spec/dummy/config/database.yml +25 -0
  63. data/spec/dummy/config/environment.rb +5 -0
  64. data/spec/dummy/config/environments/development.rb +30 -0
  65. data/spec/dummy/config/environments/production.rb +60 -0
  66. data/spec/dummy/config/environments/test.rb +39 -0
  67. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  68. data/spec/dummy/config/initializers/devise.rb +205 -0
  69. data/spec/dummy/config/initializers/inflections.rb +10 -0
  70. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  71. data/spec/dummy/config/initializers/secret_token.rb +7 -0
  72. data/spec/dummy/config/initializers/session_store.rb +8 -0
  73. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  74. data/spec/dummy/config/locales/en.yml +5 -0
  75. data/spec/dummy/config/routes.rb +60 -0
  76. data/spec/dummy/db/migrate/077_create_user_groups.rb +16 -0
  77. data/spec/dummy/db/migrate/080_create_library_groups.rb +20 -0
  78. data/spec/dummy/db/migrate/20110222073537_add_url_to_library_group.rb +9 -0
  79. data/spec/dummy/db/migrate/20110318183304_add_valid_period_for_new_user_to_user_group.rb +13 -0
  80. data/spec/dummy/db/migrate/20111201121844_create_roles.rb +12 -0
  81. data/spec/dummy/db/migrate/20111201155456_create_users.rb +16 -0
  82. data/spec/dummy/db/migrate/20111201155513_add_devise_to_users.rb +44 -0
  83. data/spec/dummy/db/migrate/20111201163718_create_user_has_roles.rb +10 -0
  84. data/spec/dummy/db/schema.rb +116 -0
  85. data/spec/dummy/db/test.sqlite3 +0 -0
  86. data/spec/dummy/lib/master_model.rb +19 -0
  87. data/spec/dummy/lib/url_validator.rb +10 -0
  88. data/spec/dummy/public/404.html +26 -0
  89. data/spec/dummy/public/422.html +26 -0
  90. data/spec/dummy/public/500.html +26 -0
  91. data/spec/dummy/public/favicon.ico +0 -0
  92. data/spec/dummy/script/rails +6 -0
  93. data/spec/factories/news_feed.rb +6 -0
  94. data/spec/factories/news_post.rb +7 -0
  95. data/spec/factories/user.rb +37 -0
  96. data/spec/fixtures/library_groups.yml +33 -0
  97. data/spec/fixtures/news_feeds.yml +11 -0
  98. data/spec/fixtures/news_posts.yml +13 -0
  99. data/spec/fixtures/roles.yml +21 -0
  100. data/spec/fixtures/user_has_roles.yml +41 -0
  101. data/spec/fixtures/users.yml +93 -0
  102. data/spec/models/news_feed_spec.rb +31 -0
  103. data/spec/models/news_post_spec.rb +5 -0
  104. data/spec/spec_helper.rb +42 -0
  105. data/spec/support/controller_macros.rb +46 -0
  106. data/spec/support/devise.rb +4 -0
  107. data/spec/support/vcr.rb +9 -0
  108. metadata +430 -0
@@ -0,0 +1,445 @@
1
+ require 'spec_helper'
2
+
3
+ describe NewsFeedsController do
4
+ fixtures :all
5
+
6
+ def valid_attributes
7
+ FactoryGirl.attributes_for(:news_feed)
8
+ end
9
+
10
+ describe "GET index" do
11
+ before(:each) do
12
+ FactoryGirl.create(:news_feed)
13
+ end
14
+
15
+ describe "When logged in as Administrator" do
16
+ login_admin
17
+
18
+ it "assigns all news_feeds as @news_feeds" do
19
+ get :index
20
+ assigns(:news_feeds).should eq(NewsFeed.page(1))
21
+ end
22
+ end
23
+
24
+ describe "When logged in as Librarian" do
25
+ login_librarian
26
+
27
+ it "assigns all news_feeds as @news_feeds" do
28
+ get :index
29
+ assigns(:news_feeds).should eq(NewsFeed.page(1))
30
+ end
31
+ end
32
+
33
+ describe "When logged in as User" do
34
+ login_user
35
+
36
+ it "assigns all news_feeds as @news_feeds" do
37
+ get :index
38
+ assigns(:news_feeds).should be_empty
39
+ response.should be_forbidden
40
+ end
41
+ end
42
+
43
+ describe "When not logged in" do
44
+ it "assigns all news_feeds as @news_feeds" do
45
+ get :index
46
+ assigns(:news_feeds).should be_empty
47
+ response.should redirect_to(new_user_session_url)
48
+ end
49
+ end
50
+ end
51
+
52
+ describe "GET show" do
53
+ before(:each) do
54
+ @news_feed = FactoryGirl.create(:news_feed)
55
+ end
56
+
57
+ describe "When logged in as Administrator" do
58
+ login_admin
59
+
60
+ it "assigns the requested news_feed as @news_feed" do
61
+ get :show, :id => @news_feed.id
62
+ assigns(:news_feed).should eq(@news_feed)
63
+ end
64
+ end
65
+
66
+ describe "When logged in as Librarian" do
67
+ login_librarian
68
+
69
+ it "assigns the requested news_feed as @news_feed" do
70
+ get :show, :id => @news_feed.id
71
+ assigns(:news_feed).should eq(@news_feed)
72
+ end
73
+ end
74
+
75
+ describe "When logged in as User" do
76
+ login_user
77
+
78
+ it "assigns the requested news_feed as @news_feed" do
79
+ get :show, :id => @news_feed.id
80
+ assigns(:news_feed).should eq(@news_feed)
81
+ end
82
+ end
83
+
84
+ describe "When not logged in" do
85
+ it "assigns the requested news_feed as @news_feed" do
86
+ get :show, :id => @news_feed.id
87
+ assigns(:news_feed).should eq(@news_feed)
88
+ end
89
+ end
90
+ end
91
+
92
+ describe "GET new" do
93
+ describe "When logged in as Administrator" do
94
+ login_admin
95
+
96
+ it "assigns the requested news_feed as @news_feed" do
97
+ get :new
98
+ assigns(:news_feed).should_not be_valid
99
+ response.should be_success
100
+ end
101
+ end
102
+
103
+ describe "When logged in as Librarian" do
104
+ login_librarian
105
+
106
+ it "should not assign the requested news_feed as @news_feed" do
107
+ get :new
108
+ assigns(:news_feed).should_not be_valid
109
+ response.should be_forbidden
110
+ end
111
+ end
112
+
113
+ describe "When logged in as User" do
114
+ login_user
115
+
116
+ it "should not assign the requested news_feed as @news_feed" do
117
+ get :new
118
+ assigns(:news_feed).should_not be_valid
119
+ response.should be_forbidden
120
+ end
121
+ end
122
+
123
+ describe "When not logged in" do
124
+ it "should not assign the requested news_feed as @news_feed" do
125
+ get :new
126
+ assigns(:news_feed).should_not be_valid
127
+ response.should redirect_to(new_user_session_url)
128
+ end
129
+ end
130
+ end
131
+
132
+ describe "GET edit" do
133
+ before(:each) do
134
+ @news_feed = FactoryGirl.create(:news_feed)
135
+ end
136
+
137
+ describe "When logged in as Administrator" do
138
+ login_admin
139
+
140
+ it "assigns the requested news_feed as @news_feed" do
141
+ get :edit, :id => @news_feed.id
142
+ assigns(:news_feed).should eq(@news_feed)
143
+ end
144
+ end
145
+
146
+ describe "When logged in as Librarian" do
147
+ login_librarian
148
+
149
+ it "assigns the requested news_feed as @news_feed" do
150
+ get :edit, :id => @news_feed.id
151
+ response.should be_forbidden
152
+ end
153
+ end
154
+
155
+ describe "When logged in as User" do
156
+ login_user
157
+
158
+ it "assigns the requested news_feed as @news_feed" do
159
+ get :edit, :id => @news_feed.id
160
+ response.should be_forbidden
161
+ end
162
+ end
163
+
164
+ describe "When not logged in" do
165
+ it "should not assign the requested news_feed as @news_feed" do
166
+ get :edit, :id => @news_feed.id
167
+ response.should redirect_to(new_user_session_url)
168
+ end
169
+ end
170
+ end
171
+
172
+ describe "POST create" do
173
+ before(:each) do
174
+ @attrs = valid_attributes
175
+ @invalid_attrs = {:title => ''}
176
+ end
177
+
178
+ describe "When logged in as Administrator" do
179
+ login_admin
180
+
181
+ describe "with valid params" do
182
+ it "assigns a newly created news_feed as @news_feed" do
183
+ post :create, :news_feed => @attrs
184
+ assigns(:news_feed).should be_valid
185
+ end
186
+
187
+ it "redirects to the created news_feed" do
188
+ post :create, :news_feed => @attrs
189
+ response.should redirect_to(assigns(:news_feed))
190
+ end
191
+ end
192
+
193
+ describe "with invalid params" do
194
+ it "assigns a newly created but unsaved news_feed as @news_feed" do
195
+ post :create, :news_feed => @invalid_attrs
196
+ assigns(:news_feed).should_not be_valid
197
+ end
198
+
199
+ it "should be successful" do
200
+ post :create, :news_feed => @invalid_attrs
201
+ response.should be_success
202
+ end
203
+ end
204
+ end
205
+
206
+ describe "When logged in as Librarian" do
207
+ login_librarian
208
+
209
+ describe "with valid params" do
210
+ it "assigns a newly created news_feed as @news_feed" do
211
+ post :create, :news_feed => @attrs
212
+ assigns(:news_feed).should be_valid
213
+ end
214
+
215
+ it "should be forbidden" do
216
+ post :create, :news_feed => @attrs
217
+ response.should be_forbidden
218
+ end
219
+ end
220
+
221
+ describe "with invalid params" do
222
+ it "assigns a newly created but unsaved news_feed as @news_feed" do
223
+ post :create, :news_feed => @invalid_attrs
224
+ assigns(:news_feed).should_not be_valid
225
+ end
226
+
227
+ it "should be forbidden" do
228
+ post :create, :news_feed => @invalid_attrs
229
+ response.should be_forbidden
230
+ end
231
+ end
232
+ end
233
+
234
+ describe "When logged in as User" do
235
+ login_user
236
+
237
+ describe "with valid params" do
238
+ it "assigns a newly created news_feed as @news_feed" do
239
+ post :create, :news_feed => @attrs
240
+ assigns(:news_feed).should be_valid
241
+ end
242
+
243
+ it "should be forbidden" do
244
+ post :create, :news_feed => @attrs
245
+ response.should be_forbidden
246
+ end
247
+ end
248
+
249
+ describe "with invalid params" do
250
+ it "assigns a newly created but unsaved news_feed as @news_feed" do
251
+ post :create, :news_feed => @invalid_attrs
252
+ assigns(:news_feed).should_not be_valid
253
+ end
254
+
255
+ it "should be forbidden" do
256
+ post :create, :news_feed => @invalid_attrs
257
+ response.should be_forbidden
258
+ end
259
+ end
260
+ end
261
+
262
+ describe "When not logged in" do
263
+ describe "with valid params" do
264
+ it "assigns a newly created news_feed as @news_feed" do
265
+ post :create, :news_feed => @attrs
266
+ assigns(:news_feed).should be_valid
267
+ end
268
+
269
+ it "should be forbidden" do
270
+ post :create, :news_feed => @attrs
271
+ response.should redirect_to(new_user_session_url)
272
+ end
273
+ end
274
+
275
+ describe "with invalid params" do
276
+ it "assigns a newly created but unsaved news_feed as @news_feed" do
277
+ post :create, :news_feed => @invalid_attrs
278
+ assigns(:news_feed).should_not be_valid
279
+ end
280
+
281
+ it "should be forbidden" do
282
+ post :create, :news_feed => @invalid_attrs
283
+ response.should redirect_to(new_user_session_url)
284
+ end
285
+ end
286
+ end
287
+ end
288
+
289
+ describe "PUT update" do
290
+ before(:each) do
291
+ @news_feed = FactoryGirl.create(:news_feed)
292
+ @attrs = valid_attributes
293
+ @invalid_attrs = {:title => ''}
294
+ end
295
+
296
+ describe "When logged in as Administrator" do
297
+ login_admin
298
+
299
+ describe "with valid params" do
300
+ it "updates the requested news_feed" do
301
+ put :update, :id => @news_feed.id, :news_feed => @attrs
302
+ end
303
+
304
+ it "assigns the requested news_feed as @news_feed" do
305
+ put :update, :id => @news_feed.id, :news_feed => @attrs
306
+ assigns(:news_feed).should eq(@news_feed)
307
+ end
308
+
309
+ it "moves its position when specified" do
310
+ put :update, :id => @news_feed.id, :news_feed => @attrs, :move => 'lower'
311
+ response.should redirect_to(news_feeds_url)
312
+ end
313
+ end
314
+
315
+ describe "with invalid params" do
316
+ it "assigns the requested news_feed as @news_feed" do
317
+ put :update, :id => @news_feed.id, :news_feed => @invalid_attrs
318
+ response.should render_template("edit")
319
+ end
320
+ end
321
+ end
322
+
323
+ describe "When logged in as Librarian" do
324
+ login_librarian
325
+
326
+ describe "with valid params" do
327
+ it "updates the requested news_feed" do
328
+ put :update, :id => @news_feed.id, :news_feed => @attrs
329
+ end
330
+
331
+ it "assigns the requested news_feed as @news_feed" do
332
+ put :update, :id => @news_feed.id, :news_feed => @attrs
333
+ assigns(:news_feed).should eq(@news_feed)
334
+ response.should be_forbidden
335
+ end
336
+ end
337
+
338
+ describe "with invalid params" do
339
+ it "assigns the requested news_feed as @news_feed" do
340
+ put :update, :id => @news_feed.id, :news_feed => @invalid_attrs
341
+ response.should be_forbidden
342
+ end
343
+ end
344
+ end
345
+
346
+ describe "When logged in as User" do
347
+ login_user
348
+
349
+ describe "with valid params" do
350
+ it "updates the requested news_feed" do
351
+ put :update, :id => @news_feed.id, :news_feed => @attrs
352
+ end
353
+
354
+ it "assigns the requested news_feed as @news_feed" do
355
+ put :update, :id => @news_feed.id, :news_feed => @attrs
356
+ assigns(:news_feed).should eq(@news_feed)
357
+ response.should be_forbidden
358
+ end
359
+ end
360
+
361
+ describe "with invalid params" do
362
+ it "assigns the requested news_feed as @news_feed" do
363
+ put :update, :id => @news_feed.id, :news_feed => @invalid_attrs
364
+ response.should be_forbidden
365
+ end
366
+ end
367
+ end
368
+
369
+ describe "When not logged in" do
370
+ describe "with valid params" do
371
+ it "updates the requested news_feed" do
372
+ put :update, :id => @news_feed.id, :news_feed => @attrs
373
+ end
374
+
375
+ it "should be forbidden" do
376
+ put :update, :id => @news_feed.id, :news_feed => @attrs
377
+ response.should redirect_to(new_user_session_url)
378
+ end
379
+ end
380
+
381
+ describe "with invalid params" do
382
+ it "assigns the requested news_feed as @news_feed" do
383
+ put :update, :id => @news_feed.id, :news_feed => @invalid_attrs
384
+ response.should redirect_to(new_user_session_url)
385
+ end
386
+ end
387
+ end
388
+ end
389
+
390
+ describe "DELETE destroy" do
391
+ before(:each) do
392
+ @news_feed = FactoryGirl.create(:news_feed)
393
+ end
394
+
395
+ describe "When logged in as Administrator" do
396
+ login_admin
397
+
398
+ it "destroys the requested news_feed" do
399
+ delete :destroy, :id => @news_feed.id
400
+ end
401
+
402
+ it "redirects to the news_feeds list" do
403
+ delete :destroy, :id => @news_feed.id
404
+ response.should redirect_to(news_feeds_url)
405
+ end
406
+ end
407
+
408
+ describe "When logged in as Librarian" do
409
+ login_librarian
410
+
411
+ it "destroys the requested news_feed" do
412
+ delete :destroy, :id => @news_feed.id
413
+ end
414
+
415
+ it "should be forbidden" do
416
+ delete :destroy, :id => @news_feed.id
417
+ response.should be_forbidden
418
+ end
419
+ end
420
+
421
+ describe "When logged in as User" do
422
+ login_user
423
+
424
+ it "destroys the requested news_feed" do
425
+ delete :destroy, :id => @news_feed.id
426
+ end
427
+
428
+ it "should be forbidden" do
429
+ delete :destroy, :id => @news_feed.id
430
+ response.should be_forbidden
431
+ end
432
+ end
433
+
434
+ describe "When not logged in" do
435
+ it "destroys the requested news_feed" do
436
+ delete :destroy, :id => @news_feed.id
437
+ end
438
+
439
+ it "should be forbidden" do
440
+ delete :destroy, :id => @news_feed.id
441
+ response.should redirect_to(new_user_session_url)
442
+ end
443
+ end
444
+ end
445
+ end
@@ -0,0 +1,443 @@
1
+ require 'spec_helper'
2
+
3
+ describe NewsPostsController do
4
+ fixtures :all
5
+
6
+ def valid_attributes
7
+ FactoryGirl.attributes_for(:news_post)
8
+ end
9
+
10
+ describe "GET index" do
11
+ before(:each) do
12
+ FactoryGirl.create(:news_post)
13
+ end
14
+
15
+ describe "When logged in as Administrator" do
16
+ login_admin
17
+
18
+ it "assigns all news_posts as @news_posts" do
19
+ get :index
20
+ assigns(:news_posts).should eq(NewsPost.page(1))
21
+ end
22
+ end
23
+
24
+ describe "When logged in as Librarian" do
25
+ login_librarian
26
+
27
+ it "assigns all news_posts as @news_posts" do
28
+ get :index
29
+ assigns(:news_posts).should eq(NewsPost.page(1))
30
+ end
31
+ end
32
+
33
+ describe "When logged in as User" do
34
+ login_user
35
+
36
+ it "assigns all news_posts as @news_posts" do
37
+ get :index
38
+ assigns(:news_posts).should eq(NewsPost.published.page(1))
39
+ end
40
+ end
41
+
42
+ describe "When not logged in" do
43
+ it "assigns all news_posts as @news_posts" do
44
+ get :index
45
+ assigns(:news_posts).should eq(NewsPost.published.page(1))
46
+ end
47
+ end
48
+ end
49
+
50
+ describe "GET show" do
51
+ before(:each) do
52
+ @news_post = FactoryGirl.create(:news_post)
53
+ end
54
+
55
+ describe "When logged in as Administrator" do
56
+ login_admin
57
+
58
+ it "assigns the requested news_post as @news_post" do
59
+ get :show, :id => @news_post.id
60
+ assigns(:news_post).should eq(@news_post)
61
+ end
62
+ end
63
+
64
+ describe "When logged in as Librarian" do
65
+ login_librarian
66
+
67
+ it "assigns the requested news_post as @news_post" do
68
+ get :show, :id => @news_post.id
69
+ assigns(:news_post).should eq(@news_post)
70
+ end
71
+ end
72
+
73
+ describe "When logged in as User" do
74
+ login_user
75
+
76
+ it "assigns the requested news_post as @news_post" do
77
+ get :show, :id => @news_post.id
78
+ assigns(:news_post).should eq(@news_post)
79
+ end
80
+ end
81
+
82
+ describe "When not logged in" do
83
+ it "assigns the requested news_post as @news_post" do
84
+ get :show, :id => @news_post.id
85
+ assigns(:news_post).should eq(@news_post)
86
+ end
87
+ end
88
+ end
89
+
90
+ describe "GET new" do
91
+ describe "When logged in as Administrator" do
92
+ login_admin
93
+
94
+ it "assigns the requested news_post as @news_post" do
95
+ get :new
96
+ assigns(:news_post).should_not be_valid
97
+ response.should be_success
98
+ end
99
+ end
100
+
101
+ describe "When logged in as Librarian" do
102
+ login_librarian
103
+
104
+ it "should not assign the requested news_post as @news_post" do
105
+ get :new
106
+ assigns(:news_post).should_not be_valid
107
+ response.should be_forbidden
108
+ end
109
+ end
110
+
111
+ describe "When logged in as User" do
112
+ login_user
113
+
114
+ it "should not assign the requested news_post as @news_post" do
115
+ get :new
116
+ assigns(:news_post).should_not be_valid
117
+ response.should be_forbidden
118
+ end
119
+ end
120
+
121
+ describe "When not logged in" do
122
+ it "should not assign the requested news_post as @news_post" do
123
+ get :new
124
+ assigns(:news_post).should_not be_valid
125
+ response.should redirect_to(new_user_session_url)
126
+ end
127
+ end
128
+ end
129
+
130
+ describe "GET edit" do
131
+ before(:each) do
132
+ @news_post = FactoryGirl.create(:news_post)
133
+ end
134
+
135
+ describe "When logged in as Administrator" do
136
+ login_admin
137
+
138
+ it "assigns the requested news_post as @news_post" do
139
+ get :edit, :id => @news_post.id
140
+ assigns(:news_post).should eq(@news_post)
141
+ end
142
+ end
143
+
144
+ describe "When logged in as Librarian" do
145
+ login_librarian
146
+
147
+ it "assigns the requested news_post as @news_post" do
148
+ get :edit, :id => @news_post.id
149
+ response.should be_forbidden
150
+ end
151
+ end
152
+
153
+ describe "When logged in as User" do
154
+ login_user
155
+
156
+ it "assigns the requested news_post as @news_post" do
157
+ get :edit, :id => @news_post.id
158
+ response.should be_forbidden
159
+ end
160
+ end
161
+
162
+ describe "When not logged in" do
163
+ it "should not assign the requested news_post as @news_post" do
164
+ get :edit, :id => @news_post.id
165
+ response.should redirect_to(new_user_session_url)
166
+ end
167
+ end
168
+ end
169
+
170
+ describe "POST create" do
171
+ before(:each) do
172
+ @attrs = valid_attributes
173
+ @invalid_attrs = {:body => ''}
174
+ end
175
+
176
+ describe "When logged in as Administrator" do
177
+ login_admin
178
+
179
+ describe "with valid params" do
180
+ it "assigns a newly created news_post as @news_post" do
181
+ post :create, :news_post => @attrs
182
+ assigns(:news_post).should be_valid
183
+ end
184
+
185
+ it "redirects to the created news_post" do
186
+ post :create, :news_post => @attrs
187
+ response.should redirect_to(assigns(:news_post))
188
+ end
189
+ end
190
+
191
+ describe "with invalid params" do
192
+ it "assigns a newly created but unsaved news_post as @news_post" do
193
+ post :create, :news_post => @invalid_attrs
194
+ assigns(:news_post).should_not be_valid
195
+ end
196
+
197
+ it "should be successful" do
198
+ post :create, :news_post => @invalid_attrs
199
+ response.should be_success
200
+ end
201
+ end
202
+ end
203
+
204
+ describe "When logged in as Librarian" do
205
+ login_librarian
206
+
207
+ describe "with valid params" do
208
+ it "assigns a newly created news_post as @news_post" do
209
+ post :create, :news_post => @attrs
210
+ assigns(:news_post).should_not be_valid
211
+ end
212
+
213
+ it "should be forbidden" do
214
+ post :create, :news_post => @attrs
215
+ response.should be_forbidden
216
+ end
217
+ end
218
+
219
+ describe "with invalid params" do
220
+ it "assigns a newly created but unsaved news_post as @news_post" do
221
+ post :create, :news_post => @invalid_attrs
222
+ assigns(:news_post).should_not be_valid
223
+ end
224
+
225
+ it "should be forbidden" do
226
+ post :create, :news_post => @invalid_attrs
227
+ response.should be_forbidden
228
+ end
229
+ end
230
+ end
231
+
232
+ describe "When logged in as User" do
233
+ login_user
234
+
235
+ describe "with valid params" do
236
+ it "assigns a newly created news_post as @news_post" do
237
+ post :create, :news_post => @attrs
238
+ assigns(:news_post).should_not be_valid
239
+ end
240
+
241
+ it "should be forbidden" do
242
+ post :create, :news_post => @attrs
243
+ response.should be_forbidden
244
+ end
245
+ end
246
+
247
+ describe "with invalid params" do
248
+ it "assigns a newly created but unsaved news_post as @news_post" do
249
+ post :create, :news_post => @invalid_attrs
250
+ assigns(:news_post).should_not be_valid
251
+ end
252
+
253
+ it "should be forbidden" do
254
+ post :create, :news_post => @invalid_attrs
255
+ response.should be_forbidden
256
+ end
257
+ end
258
+ end
259
+
260
+ describe "When not logged in" do
261
+ describe "with valid params" do
262
+ it "assigns a newly created news_post as @news_post" do
263
+ post :create, :news_post => @attrs
264
+ assigns(:news_post).should_not be_valid
265
+ end
266
+
267
+ it "should be forbidden" do
268
+ post :create, :news_post => @attrs
269
+ response.should redirect_to(new_user_session_url)
270
+ end
271
+ end
272
+
273
+ describe "with invalid params" do
274
+ it "assigns a newly created but unsaved news_post as @news_post" do
275
+ post :create, :news_post => @invalid_attrs
276
+ assigns(:news_post).should_not be_valid
277
+ end
278
+
279
+ it "should be forbidden" do
280
+ post :create, :news_post => @invalid_attrs
281
+ response.should redirect_to(new_user_session_url)
282
+ end
283
+ end
284
+ end
285
+ end
286
+
287
+ describe "PUT update" do
288
+ before(:each) do
289
+ @news_post = FactoryGirl.create(:news_post)
290
+ @attrs = valid_attributes
291
+ @invalid_attrs = {:body => ''}
292
+ end
293
+
294
+ describe "When logged in as Administrator" do
295
+ login_admin
296
+
297
+ describe "with valid params" do
298
+ it "updates the requested news_post" do
299
+ put :update, :id => @news_post.id, :news_post => @attrs
300
+ end
301
+
302
+ it "assigns the requested news_post as @news_post" do
303
+ put :update, :id => @news_post.id, :news_post => @attrs
304
+ assigns(:news_post).should eq(@news_post)
305
+ end
306
+
307
+ it "moves its position when specified" do
308
+ put :update, :id => @news_post.id, :news_post => @attrs, :move => 'lower'
309
+ response.should redirect_to(news_posts_url)
310
+ end
311
+ end
312
+
313
+ describe "with invalid params" do
314
+ it "assigns the requested news_post as @news_post" do
315
+ put :update, :id => @news_post.id, :news_post => @invalid_attrs
316
+ response.should render_template("edit")
317
+ end
318
+ end
319
+ end
320
+
321
+ describe "When logged in as Librarian" do
322
+ login_librarian
323
+
324
+ describe "with valid params" do
325
+ it "updates the requested news_post" do
326
+ put :update, :id => @news_post.id, :news_post => @attrs
327
+ end
328
+
329
+ it "assigns the requested news_post as @news_post" do
330
+ put :update, :id => @news_post.id, :news_post => @attrs
331
+ assigns(:news_post).should eq(@news_post)
332
+ response.should be_forbidden
333
+ end
334
+ end
335
+
336
+ describe "with invalid params" do
337
+ it "assigns the requested news_post as @news_post" do
338
+ put :update, :id => @news_post.id, :news_post => @invalid_attrs
339
+ response.should be_forbidden
340
+ end
341
+ end
342
+ end
343
+
344
+ describe "When logged in as User" do
345
+ login_user
346
+
347
+ describe "with valid params" do
348
+ it "updates the requested news_post" do
349
+ put :update, :id => @news_post.id, :news_post => @attrs
350
+ end
351
+
352
+ it "assigns the requested news_post as @news_post" do
353
+ put :update, :id => @news_post.id, :news_post => @attrs
354
+ assigns(:news_post).should eq(@news_post)
355
+ response.should be_forbidden
356
+ end
357
+ end
358
+
359
+ describe "with invalid params" do
360
+ it "assigns the requested news_post as @news_post" do
361
+ put :update, :id => @news_post.id, :news_post => @invalid_attrs
362
+ response.should be_forbidden
363
+ end
364
+ end
365
+ end
366
+
367
+ describe "When not logged in" do
368
+ describe "with valid params" do
369
+ it "updates the requested news_post" do
370
+ put :update, :id => @news_post.id, :news_post => @attrs
371
+ end
372
+
373
+ it "should be forbidden" do
374
+ put :update, :id => @news_post.id, :news_post => @attrs
375
+ response.should redirect_to(new_user_session_url)
376
+ end
377
+ end
378
+
379
+ describe "with invalid params" do
380
+ it "assigns the requested news_post as @news_post" do
381
+ put :update, :id => @news_post.id, :news_post => @invalid_attrs
382
+ response.should redirect_to(new_user_session_url)
383
+ end
384
+ end
385
+ end
386
+ end
387
+
388
+ describe "DELETE destroy" do
389
+ before(:each) do
390
+ @news_post = FactoryGirl.create(:news_post)
391
+ end
392
+
393
+ describe "When logged in as Administrator" do
394
+ login_admin
395
+
396
+ it "destroys the requested news_post" do
397
+ delete :destroy, :id => @news_post.id
398
+ end
399
+
400
+ it "redirects to the news_posts list" do
401
+ delete :destroy, :id => @news_post.id
402
+ response.should redirect_to(news_posts_url)
403
+ end
404
+ end
405
+
406
+ describe "When logged in as Librarian" do
407
+ login_librarian
408
+
409
+ it "destroys the requested news_post" do
410
+ delete :destroy, :id => @news_post.id
411
+ end
412
+
413
+ it "should be forbidden" do
414
+ delete :destroy, :id => @news_post.id
415
+ response.should be_forbidden
416
+ end
417
+ end
418
+
419
+ describe "When logged in as User" do
420
+ login_user
421
+
422
+ it "destroys the requested news_post" do
423
+ delete :destroy, :id => @news_post.id
424
+ end
425
+
426
+ it "should be forbidden" do
427
+ delete :destroy, :id => @news_post.id
428
+ response.should be_forbidden
429
+ end
430
+ end
431
+
432
+ describe "When not logged in" do
433
+ it "destroys the requested news_post" do
434
+ delete :destroy, :id => @news_post.id
435
+ end
436
+
437
+ it "should be forbidden" do
438
+ delete :destroy, :id => @news_post.id
439
+ response.should redirect_to(new_user_session_url)
440
+ end
441
+ end
442
+ end
443
+ end