enju_event 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (172) hide show
  1. data/MIT-LICENSE +20 -0
  2. data/README.rdoc +3 -0
  3. data/Rakefile +36 -0
  4. data/app/controllers/calendar_controller.rb +34 -0
  5. data/app/controllers/event_categories_controller.rb +18 -0
  6. data/app/controllers/event_import_files_controller.rb +95 -0
  7. data/app/controllers/event_import_results_controller.rb +15 -0
  8. data/app/controllers/events_controller.rb +152 -0
  9. data/app/controllers/participates_controller.rb +81 -0
  10. data/app/helpers/calendar_helper.rb +31 -0
  11. data/app/models/event.rb +87 -0
  12. data/app/models/event_category.rb +23 -0
  13. data/app/models/event_import_file.rb +166 -0
  14. data/app/models/event_import_result.rb +23 -0
  15. data/app/models/participate.rb +25 -0
  16. data/app/views/calendar/index.html.erb +45 -0
  17. data/app/views/event_categories/_form.html.erb +19 -0
  18. data/app/views/event_categories/edit.html.erb +13 -0
  19. data/app/views/event_categories/index.html.erb +46 -0
  20. data/app/views/event_categories/new.html.erb +12 -0
  21. data/app/views/event_categories/show.html.erb +29 -0
  22. data/app/views/event_import_files/edit.html.erb +25 -0
  23. data/app/views/event_import_files/index.html.erb +40 -0
  24. data/app/views/event_import_files/new.html.erb +37 -0
  25. data/app/views/event_import_files/show.html.erb +64 -0
  26. data/app/views/event_import_results/index.csv.erb +3 -0
  27. data/app/views/event_import_results/index.html.erb +50 -0
  28. data/app/views/event_import_results/show.html.erb +33 -0
  29. data/app/views/events/_all_day.html.erb +24 -0
  30. data/app/views/events/_form.html.erb +44 -0
  31. data/app/views/events/edit.html.erb +14 -0
  32. data/app/views/events/index.atom.builder +10 -0
  33. data/app/views/events/index.csv.erb +4 -0
  34. data/app/views/events/index.html.erb +105 -0
  35. data/app/views/events/index.ics.erb +13 -0
  36. data/app/views/events/index.mobile.erb +49 -0
  37. data/app/views/events/index.rss.builder +34 -0
  38. data/app/views/events/new.html.erb +17 -0
  39. data/app/views/events/show.html.erb +50 -0
  40. data/app/views/events/show.mobile.erb +42 -0
  41. data/app/views/participates/edit.html.erb +28 -0
  42. data/app/views/participates/index.html.erb +30 -0
  43. data/app/views/participates/new.html.erb +27 -0
  44. data/app/views/participates/show.html.erb +24 -0
  45. data/config/routes.rb +10 -0
  46. data/db/fixtures/event_categories.yml +13 -0
  47. data/db/migrate/113_create_events.rb +23 -0
  48. data/db/migrate/114_create_event_categories.rb +16 -0
  49. data/db/migrate/20081028093607_create_event_import_files.rb +29 -0
  50. data/db/migrate/20090519203307_create_participates.rb +17 -0
  51. data/db/migrate/20100925074639_create_event_import_results.rb +15 -0
  52. data/lib/enju_event.rb +5 -0
  53. data/lib/enju_event/engine.rb +18 -0
  54. data/lib/enju_event/version.rb +3 -0
  55. data/lib/tasks/enju_event_tasks.rake +5 -0
  56. data/spec/controllers/event_categories_controller_spec.rb +483 -0
  57. data/spec/controllers/event_import_files_controller_spec.rb +321 -0
  58. data/spec/controllers/events_controller_spec.rb +506 -0
  59. data/spec/dummy/Rakefile +7 -0
  60. data/spec/dummy/app/assets/javascripts/application.js +9 -0
  61. data/spec/dummy/app/assets/stylesheets/application.css +7 -0
  62. data/spec/dummy/app/controllers/application_controller.rb +99 -0
  63. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  64. data/spec/dummy/app/mailers/notifier.rb +28 -0
  65. data/spec/dummy/app/models/ability.rb +39 -0
  66. data/spec/dummy/app/models/language.rb +4 -0
  67. data/spec/dummy/app/models/library.rb +128 -0
  68. data/spec/dummy/app/models/library_group.rb +86 -0
  69. data/spec/dummy/app/models/patron.rb +163 -0
  70. data/spec/dummy/app/models/patron_type.rb +19 -0
  71. data/spec/dummy/app/models/role.rb +8 -0
  72. data/spec/dummy/app/models/shelf.rb +54 -0
  73. data/spec/dummy/app/models/user.rb +43 -0
  74. data/spec/dummy/app/models/user_group.rb +2 -0
  75. data/spec/dummy/app/models/user_has_role.rb +4 -0
  76. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  77. data/spec/dummy/app/views/page/403.html.erb +9 -0
  78. data/spec/dummy/app/views/page/403.mobile.erb +5 -0
  79. data/spec/dummy/app/views/page/403.xml.erb +4 -0
  80. data/spec/dummy/app/views/page/404.html.erb +9 -0
  81. data/spec/dummy/app/views/page/404.mobile.erb +5 -0
  82. data/spec/dummy/app/views/page/404.xml.erb +4 -0
  83. data/spec/dummy/config.ru +4 -0
  84. data/spec/dummy/config/application.rb +45 -0
  85. data/spec/dummy/config/boot.rb +10 -0
  86. data/spec/dummy/config/database.yml +25 -0
  87. data/spec/dummy/config/environment.rb +5 -0
  88. data/spec/dummy/config/environments/development.rb +30 -0
  89. data/spec/dummy/config/environments/production.rb +60 -0
  90. data/spec/dummy/config/environments/test.rb +39 -0
  91. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  92. data/spec/dummy/config/initializers/devise.rb +209 -0
  93. data/spec/dummy/config/initializers/inflections.rb +10 -0
  94. data/spec/dummy/config/initializers/mime_types.rb +7 -0
  95. data/spec/dummy/config/initializers/secret_token.rb +7 -0
  96. data/spec/dummy/config/initializers/session_store.rb +8 -0
  97. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  98. data/spec/dummy/config/locales/en.yml +5 -0
  99. data/spec/dummy/config/routes.rb +60 -0
  100. data/spec/dummy/db/migrate/001_create_patrons.rb +62 -0
  101. data/spec/dummy/db/migrate/059_create_libraries.rb +34 -0
  102. data/spec/dummy/db/migrate/069_create_shelves.rb +19 -0
  103. data/spec/dummy/db/migrate/080_create_library_groups.rb +25 -0
  104. data/spec/dummy/db/migrate/20080905191442_create_patron_types.rb +16 -0
  105. data/spec/dummy/db/migrate/20081025083905_create_languages.rb +27 -0
  106. data/spec/dummy/db/migrate/20100211105551_add_admin_networks_to_library_group.rb +9 -0
  107. data/spec/dummy/db/migrate/20100222124420_add_allow_bookmark_external_url_to_library_group.rb +9 -0
  108. data/spec/dummy/db/migrate/20100527113752_create_delayed_jobs.rb +21 -0
  109. data/spec/dummy/db/migrate/20110115022329_add_position_to_library_group.rb +9 -0
  110. data/spec/dummy/db/migrate/20110222073537_add_url_to_library_group.rb +9 -0
  111. data/spec/dummy/db/migrate/20111020063828_remove_dsbl_from_library_group.rb +11 -0
  112. data/spec/dummy/db/migrate/20111201121844_create_roles.rb +12 -0
  113. data/spec/dummy/db/migrate/20111201155456_create_users.rb +14 -0
  114. data/spec/dummy/db/migrate/20111201155513_add_devise_to_users.rb +31 -0
  115. data/spec/dummy/db/migrate/20111201163342_create_user_groups.rb +12 -0
  116. data/spec/dummy/db/migrate/20111201163718_create_user_has_roles.rb +10 -0
  117. data/spec/dummy/db/schema.rb +293 -0
  118. data/spec/dummy/db/test.sqlite3 +0 -0
  119. data/spec/dummy/lib/enju_leaf.rb +4 -0
  120. data/spec/dummy/lib/enju_leaf/import_file.rb +13 -0
  121. data/spec/dummy/lib/enju_leaf/localized_name.rb +13 -0
  122. data/spec/dummy/lib/enju_leaf/master_model.rb +41 -0
  123. data/spec/dummy/lib/enju_leaf/url_validator.rb +10 -0
  124. data/spec/dummy/log/sunspot-solr-test.log +222 -0
  125. data/spec/dummy/log/test.log +145759 -0
  126. data/spec/dummy/private/system/event_imports/4/original/event_import_file_sample1.tsv +5 -0
  127. data/spec/dummy/private/system/event_imports/4/original/event_import_file_sample2.tsv +3 -0
  128. data/spec/dummy/public/404.html +26 -0
  129. data/spec/dummy/public/422.html +26 -0
  130. data/spec/dummy/public/500.html +26 -0
  131. data/spec/dummy/public/favicon.ico +0 -0
  132. data/spec/dummy/script/rails +6 -0
  133. data/spec/dummy/solr/conf/admin-extra.html +31 -0
  134. data/spec/dummy/solr/conf/elevate.xml +36 -0
  135. data/spec/dummy/solr/conf/mapping-ISOLatin1Accent.txt +246 -0
  136. data/spec/dummy/solr/conf/protwords.txt +21 -0
  137. data/spec/dummy/solr/conf/schema.xml +238 -0
  138. data/spec/dummy/solr/conf/scripts.conf +24 -0
  139. data/spec/dummy/solr/conf/solrconfig.xml +934 -0
  140. data/spec/dummy/solr/conf/spellings.txt +2 -0
  141. data/spec/dummy/solr/conf/stopwords.txt +58 -0
  142. data/spec/dummy/solr/conf/synonyms.txt +31 -0
  143. data/spec/dummy/solr/data/test/index/segments.gen +0 -0
  144. data/spec/dummy/solr/data/test/index/segments_1 +0 -0
  145. data/spec/dummy/solr/data/test/spellchecker/segments.gen +0 -0
  146. data/spec/dummy/solr/data/test/spellchecker/segments_1 +0 -0
  147. data/spec/factories/event.rb +7 -0
  148. data/spec/factories/event_category.rb +5 -0
  149. data/spec/factories/library.rb +13 -0
  150. data/spec/factories/user.rb +34 -0
  151. data/spec/fixtures/event_categories.yml +55 -0
  152. data/spec/fixtures/event_import_files.yml +49 -0
  153. data/spec/fixtures/event_import_results.yml +24 -0
  154. data/spec/fixtures/events.yml +142 -0
  155. data/spec/fixtures/languages.yml +1901 -0
  156. data/spec/fixtures/libraries.yml +108 -0
  157. data/spec/fixtures/library_groups.yml +34 -0
  158. data/spec/fixtures/patron_types.yml +35 -0
  159. data/spec/fixtures/patrons.yml +338 -0
  160. data/spec/fixtures/roles.yml +21 -0
  161. data/spec/fixtures/shelves.yml +46 -0
  162. data/spec/fixtures/user_groups.yml +25 -0
  163. data/spec/fixtures/user_has_roles.yml +41 -0
  164. data/spec/fixtures/users.yml +69 -0
  165. data/spec/models/event_category_spec.rb +21 -0
  166. data/spec/models/event_import_file_spec.rb +62 -0
  167. data/spec/models/event_import_result_spec.rb +20 -0
  168. data/spec/models/event_spec.rb +39 -0
  169. data/spec/spec_helper.rb +45 -0
  170. data/spec/support/controller_macros.rb +48 -0
  171. data/spec/support/devise.rb +4 -0
  172. metadata +541 -0
@@ -0,0 +1,321 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require 'spec_helper'
3
+
4
+ describe EventImportFilesController do
5
+ fixtures :all
6
+
7
+ describe "GET index" do
8
+ describe "When logged in as Administrator" do
9
+ before(:each) do
10
+ sign_in FactoryGirl.create(:admin)
11
+ end
12
+
13
+ it "assigns all event_import_files as @event_import_files" do
14
+ get :index
15
+ assigns(:event_import_files).should eq(EventImportFile.page(1))
16
+ end
17
+ end
18
+
19
+ describe "When logged in as Librarian" do
20
+ before(:each) do
21
+ sign_in FactoryGirl.create(:librarian)
22
+ end
23
+
24
+ it "assigns all event_import_files as @event_import_files" do
25
+ get :index
26
+ assigns(:event_import_files).should eq(EventImportFile.page(1))
27
+ end
28
+ end
29
+
30
+ describe "When logged in as User" do
31
+ before(:each) do
32
+ sign_in FactoryGirl.create(:user)
33
+ end
34
+
35
+ it "assigns empty as @event_import_files" do
36
+ get :index
37
+ assigns(:event_import_files).should be_empty
38
+ response.should be_forbidden
39
+ end
40
+ end
41
+
42
+ describe "When not logged in" do
43
+ it "assigns empty as @event_import_files" do
44
+ get :index
45
+ assigns(:event_import_files).should be_empty
46
+ response.should redirect_to(new_user_session_url)
47
+ end
48
+ end
49
+ end
50
+
51
+ describe "GET show" do
52
+ describe "When logged in as Administrator" do
53
+ before(:each) do
54
+ sign_in FactoryGirl.create(:admin)
55
+ end
56
+
57
+ it "assigns the requested event_import_file as @event_import_file" do
58
+ get :show, :id => 1
59
+ assigns(:event_import_file).should eq(EventImportFile.find(1))
60
+ end
61
+ end
62
+
63
+ describe "When logged in as Librarian" do
64
+ before(:each) do
65
+ sign_in FactoryGirl.create(:librarian)
66
+ end
67
+
68
+ it "assigns the requested event_import_file as @event_import_file" do
69
+ get :show, :id => 1
70
+ assigns(:event_import_file).should eq(EventImportFile.find(1))
71
+ end
72
+ end
73
+
74
+ describe "When logged in as User" do
75
+ before(:each) do
76
+ sign_in FactoryGirl.create(:user)
77
+ end
78
+
79
+ it "assigns the requested event_import_file as @event_import_file" do
80
+ get :show, :id => 1
81
+ assigns(:event_import_file).should eq(EventImportFile.find(1))
82
+ end
83
+ end
84
+
85
+ describe "When not logged in" do
86
+ it "assigns the requested event_import_file as @event_import_file" do
87
+ get :show, :id => 1
88
+ assigns(:event_import_file).should eq(EventImportFile.find(1))
89
+ response.should redirect_to(new_user_session_url)
90
+ end
91
+ end
92
+ end
93
+
94
+ describe "GET new" do
95
+ describe "When logged in as Administrator" do
96
+ before(:each) do
97
+ sign_in FactoryGirl.create(:admin)
98
+ end
99
+
100
+ it "assigns the requested event_import_file as @event_import_file" do
101
+ get :new
102
+ assigns(:event_import_file).should_not be_valid
103
+ response.should be_success
104
+ end
105
+ end
106
+
107
+ describe "When logged in as Librarian" do
108
+ before(:each) do
109
+ sign_in FactoryGirl.create(:librarian)
110
+ end
111
+
112
+ it "should not assign the requested event_import_file as @event_import_file" do
113
+ get :new
114
+ assigns(:event_import_file).should_not be_valid
115
+ response.should be_success
116
+ end
117
+ end
118
+
119
+ describe "When logged in as User" do
120
+ before(:each) do
121
+ sign_in FactoryGirl.create(:user)
122
+ end
123
+
124
+ it "should not assign the requested event_import_file as @event_import_file" do
125
+ get :new
126
+ assigns(:event_import_file).should_not be_valid
127
+ response.should be_forbidden
128
+ end
129
+ end
130
+
131
+ describe "When not logged in" do
132
+ it "should not assign the requested event_import_file as @event_import_file" do
133
+ get :new
134
+ assigns(:event_import_file).should_not be_valid
135
+ response.should redirect_to(new_user_session_url)
136
+ end
137
+ end
138
+ end
139
+
140
+ describe "POST create" do
141
+ describe "When logged in as Librarian" do
142
+ before(:each) do
143
+ @user = FactoryGirl.create(:librarian)
144
+ sign_in @user
145
+ end
146
+
147
+ it "should create event_import_file" do
148
+ post :create, :event_import_file => {:event_import => fixture_file_upload("/../../examples/event_import_file_sample1.tsv", 'text/csv') }
149
+ assigns(:event_import_file).should be_valid
150
+ assigns(:event_import_file).user.username.should eq @user.username
151
+ response.should redirect_to event_import_file_url(assigns(:event_import_file))
152
+ end
153
+
154
+ it "should import user" do
155
+ old_events_count = Event.count
156
+ post :create, :event_import_file => {:event_import => fixture_file_upload("/../../examples/event_import_file_sample2.tsv", 'text/csv') }
157
+ assigns(:event_import_file).import_start
158
+ Event.count.should eq old_events_count + 2
159
+ response.should redirect_to event_import_file_url(assigns(:event_import_file))
160
+ end
161
+ end
162
+
163
+ describe "When logged in as User" do
164
+ before(:each) do
165
+ @user = FactoryGirl.create(:user)
166
+ sign_in @user
167
+ end
168
+
169
+ it "should be forbidden" do
170
+ post :create, :event_import_file => {:event_import => fixture_file_upload("/../..//examples/event_import_file_sample1.tsv", 'text/csv') }
171
+ response.should be_forbidden
172
+ end
173
+ end
174
+
175
+ describe "When not logged in" do
176
+ it "should be redirect to new session url" do
177
+ post :create, :event_import_file => {:event_import => fixture_file_upload("/../../examples/event_import_file_sample1.tsv", 'text/csv') }
178
+ response.should redirect_to new_user_session_url
179
+ end
180
+ end
181
+ end
182
+
183
+ describe "GET edit" do
184
+ describe "When logged in as Administrator" do
185
+ before(:each) do
186
+ sign_in FactoryGirl.create(:admin)
187
+ end
188
+
189
+ it "assigns the requested event_import_file as @event_import_file" do
190
+ event_import_file = event_import_files(:event_import_file_00001)
191
+ get :edit, :id => event_import_file.id
192
+ assigns(:event_import_file).should eq(event_import_file)
193
+ end
194
+ end
195
+
196
+ describe "When logged in as Librarian" do
197
+ before(:each) do
198
+ sign_in FactoryGirl.create(:librarian)
199
+ end
200
+
201
+ it "assigns the requested event_import_file as @event_import_file" do
202
+ event_import_file = event_import_files(:event_import_file_00001)
203
+ get :edit, :id => event_import_file.id
204
+ assigns(:event_import_file).should eq(event_import_file)
205
+ end
206
+ end
207
+
208
+ describe "When logged in as User" do
209
+ before(:each) do
210
+ sign_in FactoryGirl.create(:user)
211
+ end
212
+
213
+ it "assigns the requested event_import_file as @event_import_file" do
214
+ event_import_file = event_import_files(:event_import_file_00001)
215
+ get :edit, :id => event_import_file.id
216
+ response.should be_forbidden
217
+ end
218
+ end
219
+
220
+ describe "When not logged in" do
221
+ it "should not assign the requested event_import_file as @event_import_file" do
222
+ event_import_file = event_import_files(:event_import_file_00001)
223
+ get :edit, :id => event_import_file.id
224
+ response.should redirect_to(new_user_session_url)
225
+ end
226
+ end
227
+ end
228
+
229
+ describe "PUT update" do
230
+ describe "When logged in as Librarian" do
231
+ before(:each) do
232
+ sign_in FactoryGirl.create(:librarian)
233
+ end
234
+
235
+ it "should update event_import_file" do
236
+ put :update, :id => event_import_files(:event_import_file_00003).id, :event_import_file => { }
237
+ response.should redirect_to event_import_file_url(assigns(:event_import_file))
238
+ end
239
+ end
240
+
241
+ describe "When logged in as User" do
242
+ before(:each) do
243
+ sign_in FactoryGirl.create(:user)
244
+ end
245
+
246
+ it "should not update event_import_file" do
247
+ put :update, :id => event_import_files(:event_import_file_00003).id, :event_import_file => { }
248
+ response.should be_forbidden
249
+ end
250
+ end
251
+
252
+ describe "When not logged in" do
253
+ it "should not update event_import_file" do
254
+ put :update, :id => event_import_files(:event_import_file_00003).id, :event_import_file => { }
255
+ response.should redirect_to new_user_session_url
256
+ end
257
+ end
258
+ end
259
+
260
+ describe "DELETE destroy" do
261
+ before(:each) do
262
+ @event_import_file = event_import_files(:event_import_file_00001)
263
+ end
264
+
265
+ describe "When logged in as Administrator" do
266
+ before(:each) do
267
+ sign_in FactoryGirl.create(:admin)
268
+ end
269
+
270
+ it "destroys the requested event_import_file" do
271
+ delete :destroy, :id => @event_import_file.id
272
+ end
273
+
274
+ it "redirects to the event_import_files list" do
275
+ delete :destroy, :id => @event_import_file.id
276
+ response.should redirect_to(event_import_files_url)
277
+ end
278
+ end
279
+
280
+ describe "When logged in as Librarian" do
281
+ before(:each) do
282
+ sign_in FactoryGirl.create(:librarian)
283
+ end
284
+
285
+ it "destroys the requested event_import_file" do
286
+ delete :destroy, :id => @event_import_file.id
287
+ end
288
+
289
+ it "redirects to the event_import_files list" do
290
+ delete :destroy, :id => @event_import_file.id
291
+ response.should redirect_to(event_import_files_url)
292
+ end
293
+ end
294
+
295
+ describe "When logged in as User" do
296
+ before(:each) do
297
+ sign_in FactoryGirl.create(:user)
298
+ end
299
+
300
+ it "destroys the requested event_import_file" do
301
+ delete :destroy, :id => @event_import_file.id
302
+ end
303
+
304
+ it "should be forbidden" do
305
+ delete :destroy, :id => @event_import_file.id
306
+ response.should be_forbidden
307
+ end
308
+ end
309
+
310
+ describe "When not logged in" do
311
+ it "destroys the requested event_import_file" do
312
+ delete :destroy, :id => @event_import_file.id
313
+ end
314
+
315
+ it "should be forbidden" do
316
+ delete :destroy, :id => @event_import_file.id
317
+ response.should redirect_to(new_user_session_url)
318
+ end
319
+ end
320
+ end
321
+ end
@@ -0,0 +1,506 @@
1
+ require 'spec_helper'
2
+
3
+ describe EventsController do
4
+ fixtures :all
5
+
6
+ describe "GET index", :solr => true do
7
+ before(:each) do
8
+ FactoryGirl.create(:event)
9
+ end
10
+
11
+ describe "When logged in as Administrator" do
12
+ before(:each) do
13
+ sign_in FactoryGirl.create(:admin)
14
+ end
15
+
16
+ it "assigns all events as @events" do
17
+ get :index
18
+ assigns(:events).should_not be_nil
19
+ end
20
+ end
21
+
22
+ describe "When logged in as Librarian" do
23
+ before(:each) do
24
+ sign_in FactoryGirl.create(:librarian)
25
+ end
26
+
27
+ it "assigns all events as @events" do
28
+ get :index
29
+ assigns(:events).should_not be_nil
30
+ end
31
+ end
32
+
33
+ describe "When logged in as User" do
34
+ before(:each) do
35
+ sign_in FactoryGirl.create(:user)
36
+ end
37
+
38
+ it "assigns all events as @events" do
39
+ get :index
40
+ assigns(:events).should_not be_nil
41
+ end
42
+ end
43
+
44
+ describe "When not logged in" do
45
+ it "assigns all events as @events" do
46
+ get :index
47
+ assigns(:events).should_not be_nil
48
+ end
49
+
50
+ it "assigns all events as @events in rss format" do
51
+ get :index, :format => 'rss'
52
+ assigns(:events).should_not be_nil
53
+ end
54
+
55
+ it "assigns all events as @events in ics format" do
56
+ get :index, :format => 'ics'
57
+ assigns(:events).should_not be_nil
58
+ end
59
+
60
+ it "assigns all events as @events in csv format" do
61
+ get :index, :format => 'csv'
62
+ assigns(:events).should_not be_nil
63
+ end
64
+
65
+ it "should get index with library_id" do
66
+ get :index, :library_id => 'kamata'
67
+ response.should be_success
68
+ assigns(:library).should eq libraries(:library_00002)
69
+ assigns(:events).should_not be_nil
70
+ end
71
+
72
+ it "should get upcoming event index" do
73
+ get :index, :mode => 'upcoming'
74
+ response.should be_success
75
+ assigns(:events).should_not be_nil
76
+ end
77
+
78
+ it "should get past event index" do
79
+ get :index, :mode => 'past'
80
+ response.should be_success
81
+ assigns(:events).should_not be_nil
82
+ end
83
+ end
84
+ end
85
+
86
+ describe "GET show" do
87
+ describe "When logged in as Administrator" do
88
+ before(:each) do
89
+ sign_in FactoryGirl.create(:admin)
90
+ end
91
+
92
+ it "assigns the requested event as @event" do
93
+ event = FactoryGirl.create(:event)
94
+ get :show, :id => event.id
95
+ assigns(:event).should eq(event)
96
+ end
97
+ end
98
+
99
+ describe "When logged in as Librarian" do
100
+ before(:each) do
101
+ sign_in FactoryGirl.create(:librarian)
102
+ end
103
+
104
+ it "assigns the requested event as @event" do
105
+ event = FactoryGirl.create(:event)
106
+ get :show, :id => event.id
107
+ assigns(:event).should eq(event)
108
+ end
109
+ end
110
+
111
+ describe "When logged in as User" do
112
+ before(:each) do
113
+ sign_in FactoryGirl.create(:user)
114
+ end
115
+
116
+ it "assigns the requested event as @event" do
117
+ event = FactoryGirl.create(:event)
118
+ get :show, :id => event.id
119
+ assigns(:event).should eq(event)
120
+ end
121
+ end
122
+
123
+ describe "When not logged in" do
124
+ it "assigns the requested event as @event" do
125
+ event = FactoryGirl.create(:event)
126
+ get :show, :id => event.id
127
+ assigns(:event).should eq(event)
128
+ end
129
+ end
130
+ end
131
+
132
+ describe "GET new" do
133
+ describe "When logged in as Administrator" do
134
+ before(:each) do
135
+ sign_in FactoryGirl.create(:admin)
136
+ end
137
+
138
+ it "assigns the requested event as @event" do
139
+ get :new
140
+ assigns(:event).should_not be_valid
141
+ end
142
+ end
143
+
144
+ describe "When logged in as Librarian" do
145
+ before(:each) do
146
+ sign_in FactoryGirl.create(:librarian)
147
+ end
148
+
149
+ it "should not assign the requested event as @event" do
150
+ get :new
151
+ assigns(:event).should_not be_valid
152
+ end
153
+ end
154
+
155
+ describe "When logged in as User" do
156
+ before(:each) do
157
+ sign_in FactoryGirl.create(:user)
158
+ end
159
+
160
+ it "should not assign the requested event as @event" do
161
+ get :new
162
+ assigns(:event).should_not be_valid
163
+ response.should be_forbidden
164
+ end
165
+ end
166
+
167
+ describe "When not logged in" do
168
+ it "should not assign the requested event as @event" do
169
+ get :new
170
+ assigns(:event).should_not be_valid
171
+ response.should redirect_to(new_user_session_url)
172
+ end
173
+ end
174
+ end
175
+
176
+ describe "GET edit" do
177
+ describe "When logged in as Administrator" do
178
+ before(:each) do
179
+ sign_in FactoryGirl.create(:admin)
180
+ end
181
+
182
+ it "assigns the requested event as @event" do
183
+ event = FactoryGirl.create(:event)
184
+ get :edit, :id => event.id
185
+ assigns(:event).should eq(event)
186
+ end
187
+ end
188
+
189
+ describe "When logged in as Librarian" do
190
+ before(:each) do
191
+ sign_in FactoryGirl.create(:librarian)
192
+ end
193
+
194
+ it "assigns the requested event as @event" do
195
+ event = FactoryGirl.create(:event)
196
+ get :edit, :id => event.id
197
+ end
198
+ end
199
+
200
+ describe "When logged in as User" do
201
+ before(:each) do
202
+ sign_in FactoryGirl.create(:user)
203
+ end
204
+
205
+ it "assigns the requested event as @event" do
206
+ event = FactoryGirl.create(:event)
207
+ get :edit, :id => event.id
208
+ response.should be_forbidden
209
+ end
210
+ end
211
+
212
+ describe "When not logged in" do
213
+ it "should not assign the requested event as @event" do
214
+ event = FactoryGirl.create(:event)
215
+ get :edit, :id => event.id
216
+ response.should redirect_to(new_user_session_url)
217
+ end
218
+ end
219
+ end
220
+
221
+ describe "POST create" do
222
+ before(:each) do
223
+ @attrs = FactoryGirl.attributes_for(:event)
224
+ @invalid_attrs = {:name => ''}
225
+ end
226
+
227
+ describe "When logged in as Administrator" do
228
+ before(:each) do
229
+ sign_in FactoryGirl.create(:admin)
230
+ end
231
+
232
+ describe "with valid params" do
233
+ it "assigns a newly created event as @event" do
234
+ post :create, :event => @attrs
235
+ assigns(:event).should be_valid
236
+ end
237
+
238
+ it "redirects to the created event" do
239
+ post :create, :event => @attrs
240
+ response.should redirect_to(assigns(:event))
241
+ end
242
+ end
243
+
244
+ describe "with invalid params" do
245
+ it "assigns a newly created but unsaved event as @event" do
246
+ post :create, :event => @invalid_attrs
247
+ assigns(:event).should_not be_valid
248
+ end
249
+
250
+ it "should be forbidden" do
251
+ post :create, :event => @invalid_attrs
252
+ response.should render_template("new")
253
+ end
254
+ end
255
+ end
256
+
257
+ describe "When logged in as Librarian" do
258
+ before(:each) do
259
+ sign_in FactoryGirl.create(:librarian)
260
+ end
261
+
262
+ describe "with valid params" do
263
+ it "assigns a newly created event as @event" do
264
+ post :create, :event => @attrs
265
+ assigns(:event).should be_valid
266
+ end
267
+
268
+ it "redirects to the created event" do
269
+ post :create, :event => @attrs
270
+ response.should redirect_to(assigns(:event))
271
+ end
272
+ end
273
+
274
+ describe "with invalid params" do
275
+ it "assigns a newly created but unsaved event as @event" do
276
+ post :create, :event => @invalid_attrs
277
+ assigns(:event).should_not be_valid
278
+ end
279
+
280
+ it "should be forbidden" do
281
+ post :create, :event => @invalid_attrs
282
+ response.should render_template("new")
283
+ end
284
+ end
285
+ end
286
+
287
+ describe "When logged in as User" do
288
+ before(:each) do
289
+ sign_in FactoryGirl.create(:user)
290
+ end
291
+
292
+ describe "with valid params" do
293
+ it "assigns a newly created event as @event" do
294
+ post :create, :event => @attrs
295
+ assigns(:event).should be_valid
296
+ end
297
+
298
+ it "should be forbidden" do
299
+ post :create, :event => @attrs
300
+ response.should be_forbidden
301
+ end
302
+ end
303
+
304
+ describe "with invalid params" do
305
+ it "assigns a newly created but unsaved event as @event" do
306
+ post :create, :event => @invalid_attrs
307
+ assigns(:event).should_not be_valid
308
+ end
309
+
310
+ it "should be forbidden" do
311
+ post :create, :event => @invalid_attrs
312
+ response.should be_forbidden
313
+ end
314
+ end
315
+ end
316
+
317
+ describe "When not logged in" do
318
+ describe "with valid params" do
319
+ it "assigns a newly created event as @event" do
320
+ post :create, :event => @attrs
321
+ assigns(:event).should be_valid
322
+ end
323
+
324
+ it "should be forbidden" do
325
+ post :create, :event => @attrs
326
+ response.should redirect_to(new_user_session_url)
327
+ end
328
+ end
329
+
330
+ describe "with invalid params" do
331
+ it "assigns a newly created but unsaved event as @event" do
332
+ post :create, :event => @invalid_attrs
333
+ assigns(:event).should_not be_valid
334
+ end
335
+
336
+ it "should be forbidden" do
337
+ post :create, :event => @invalid_attrs
338
+ response.should redirect_to(new_user_session_url)
339
+ end
340
+ end
341
+ end
342
+ end
343
+
344
+ describe "PUT update" do
345
+ before(:each) do
346
+ @event = FactoryGirl.create(:event)
347
+ @attrs = FactoryGirl.attributes_for(:event)
348
+ @invalid_attrs = {:name => ''}
349
+ end
350
+
351
+ describe "When logged in as Administrator" do
352
+ before(:each) do
353
+ sign_in FactoryGirl.create(:admin)
354
+ end
355
+
356
+ describe "with valid params" do
357
+ it "updates the requested event" do
358
+ put :update, :id => @event.id, :event => @attrs
359
+ end
360
+
361
+ it "assigns the requested event as @event" do
362
+ put :update, :id => @event.id, :event => @attrs
363
+ assigns(:event).should eq(@event)
364
+ end
365
+ end
366
+
367
+ describe "with invalid params" do
368
+ it "assigns the requested event as @event" do
369
+ put :update, :id => @event.id, :event => @invalid_attrs
370
+ response.should render_template("edit")
371
+ end
372
+ end
373
+ end
374
+
375
+ describe "When logged in as Librarian" do
376
+ before(:each) do
377
+ sign_in FactoryGirl.create(:librarian)
378
+ end
379
+
380
+ describe "with valid params" do
381
+ it "updates the requested event" do
382
+ put :update, :id => @event.id, :event => @attrs
383
+ end
384
+
385
+ it "assigns the requested event as @event" do
386
+ put :update, :id => @event.id, :event => @attrs
387
+ assigns(:event).should eq(@event)
388
+ end
389
+ end
390
+
391
+ describe "with invalid params" do
392
+ it "assigns the requested event as @event" do
393
+ put :update, :id => @event.id, :event => @invalid_attrs
394
+ response.should render_template("edit")
395
+ end
396
+ end
397
+ end
398
+
399
+ describe "When logged in as User" do
400
+ before(:each) do
401
+ sign_in FactoryGirl.create(:user)
402
+ end
403
+
404
+ describe "with valid params" do
405
+ it "updates the requested event" do
406
+ put :update, :id => @event.id, :event => @attrs
407
+ end
408
+
409
+ it "assigns the requested event as @event" do
410
+ put :update, :id => @event.id, :event => @attrs
411
+ assigns(:event).should eq(@event)
412
+ response.should be_forbidden
413
+ end
414
+ end
415
+
416
+ describe "with invalid params" do
417
+ it "assigns the requested event as @event" do
418
+ put :update, :id => @event.id, :event => @invalid_attrs
419
+ response.should be_forbidden
420
+ end
421
+ end
422
+ end
423
+
424
+ describe "When not logged in" do
425
+ describe "with valid params" do
426
+ it "updates the requested event" do
427
+ put :update, :id => @event.id, :event => @attrs
428
+ end
429
+
430
+ it "should be forbidden" do
431
+ put :update, :id => @event.id, :event => @attrs
432
+ response.should redirect_to(new_user_session_url)
433
+ end
434
+ end
435
+
436
+ describe "with invalid params" do
437
+ it "assigns the requested event as @event" do
438
+ put :update, :id => @event.id, :event => @invalid_attrs
439
+ response.should redirect_to(new_user_session_url)
440
+ end
441
+ end
442
+ end
443
+ end
444
+
445
+ describe "DELETE destroy" do
446
+ before(:each) do
447
+ @event = FactoryGirl.create(:event)
448
+ end
449
+
450
+ describe "When logged in as Administrator" do
451
+ before(:each) do
452
+ sign_in FactoryGirl.create(:admin)
453
+ end
454
+
455
+ it "destroys the requested event" do
456
+ delete :destroy, :id => @event.id
457
+ end
458
+
459
+ it "redirects to the events list" do
460
+ delete :destroy, :id => @event.id
461
+ response.should redirect_to(events_url)
462
+ end
463
+ end
464
+
465
+ describe "When logged in as Librarian" do
466
+ before(:each) do
467
+ sign_in FactoryGirl.create(:librarian)
468
+ end
469
+
470
+ it "destroys the requested event" do
471
+ delete :destroy, :id => @event.id
472
+ end
473
+
474
+ it "redirects to the events list" do
475
+ delete :destroy, :id => @event.id
476
+ response.should redirect_to(events_url)
477
+ end
478
+ end
479
+
480
+ describe "When logged in as User" do
481
+ before(:each) do
482
+ sign_in FactoryGirl.create(:user)
483
+ end
484
+
485
+ it "destroys the requested event" do
486
+ delete :destroy, :id => @event.id
487
+ end
488
+
489
+ it "should be forbidden" do
490
+ delete :destroy, :id => @event.id
491
+ response.should be_forbidden
492
+ end
493
+ end
494
+
495
+ describe "When not logged in" do
496
+ it "destroys the requested event" do
497
+ delete :destroy, :id => @event.id
498
+ end
499
+
500
+ it "should be forbidden" do
501
+ delete :destroy, :id => @event.id
502
+ response.should redirect_to(new_user_session_url)
503
+ end
504
+ end
505
+ end
506
+ end