enju_news 0.0.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 (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