enju_event 0.0.3

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 (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