enju_purchase_request 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 (131) hide show
  1. data/MIT-LICENSE +20 -0
  2. data/README.rdoc +3 -0
  3. data/Rakefile +45 -0
  4. data/app/controllers/order_lists_controller.rb +94 -0
  5. data/app/controllers/orders_controller.rb +129 -0
  6. data/app/controllers/purchase_requests_controller.rb +139 -0
  7. data/app/models/order.rb +35 -0
  8. data/app/models/order_list.rb +53 -0
  9. data/app/models/purchase_request.rb +89 -0
  10. data/app/views/order_lists/edit.html.erb +37 -0
  11. data/app/views/order_lists/index.atom.builder +11 -0
  12. data/app/views/order_lists/index.html.erb +34 -0
  13. data/app/views/order_lists/index.rss.builder +31 -0
  14. data/app/views/order_lists/new.html.erb +32 -0
  15. data/app/views/order_lists/show.html.erb +40 -0
  16. data/app/views/orders/edit.html.erb +30 -0
  17. data/app/views/orders/index.atom.builder +11 -0
  18. data/app/views/orders/index.html.erb +40 -0
  19. data/app/views/orders/index.rss.builder +38 -0
  20. data/app/views/orders/new.html.erb +34 -0
  21. data/app/views/orders/show.html.erb +23 -0
  22. data/app/views/purchase_requests/_index.html.erb +85 -0
  23. data/app/views/purchase_requests/_index_order_list.html.erb +76 -0
  24. data/app/views/purchase_requests/_new.html.erb +76 -0
  25. data/app/views/purchase_requests/_new_order_list.html.erb +74 -0
  26. data/app/views/purchase_requests/edit.html.erb +66 -0
  27. data/app/views/purchase_requests/index.atom.builder +15 -0
  28. data/app/views/purchase_requests/index.csv.erb +4 -0
  29. data/app/views/purchase_requests/index.html.erb +5 -0
  30. data/app/views/purchase_requests/index.rss.builder +38 -0
  31. data/app/views/purchase_requests/new.html.erb +5 -0
  32. data/app/views/purchase_requests/show.html.erb +94 -0
  33. data/config/routes.rb +18 -0
  34. data/db/migrate/123_create_purchase_requests.rb +30 -0
  35. data/db/migrate/126_create_orders.rb +18 -0
  36. data/db/migrate/20081009062129_create_order_lists.rb +21 -0
  37. data/lib/enju_purchase_request/bookmark_url.rb +45 -0
  38. data/lib/enju_purchase_request/bookstore.rb +3 -0
  39. data/lib/enju_purchase_request/engine.rb +14 -0
  40. data/lib/enju_purchase_request/url_validator.rb +10 -0
  41. data/lib/enju_purchase_request/version.rb +3 -0
  42. data/lib/enju_purchase_request.rb +7 -0
  43. data/lib/tasks/enju_purchase_request_tasks.rake +4 -0
  44. data/spec/controllers/order_lists_controller_spec.rb +476 -0
  45. data/spec/controllers/orders_controller_spec.rb +481 -0
  46. data/spec/controllers/purchase_requests_controller_spec.rb +537 -0
  47. data/spec/dummy/Rakefile +7 -0
  48. data/spec/dummy/app/assets/javascripts/application.js +9 -0
  49. data/spec/dummy/app/assets/stylesheets/application.css +7 -0
  50. data/spec/dummy/app/controllers/application_controller.rb +104 -0
  51. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  52. data/spec/dummy/app/models/ability.rb +25 -0
  53. data/spec/dummy/app/models/bookmark.rb +29 -0
  54. data/spec/dummy/app/models/bookstore.rb +31 -0
  55. data/spec/dummy/app/models/role.rb +5 -0
  56. data/spec/dummy/app/models/user.rb +29 -0
  57. data/spec/dummy/app/models/user_group.rb +2 -0
  58. data/spec/dummy/app/models/user_has_role.rb +4 -0
  59. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  60. data/spec/dummy/app/views/page/403.html.erb +9 -0
  61. data/spec/dummy/app/views/page/403.mobile.erb +5 -0
  62. data/spec/dummy/app/views/page/403.xml.erb +4 -0
  63. data/spec/dummy/app/views/page/404.html.erb +9 -0
  64. data/spec/dummy/app/views/page/404.mobile.erb +5 -0
  65. data/spec/dummy/app/views/page/404.xml.erb +4 -0
  66. data/spec/dummy/config/application.rb +45 -0
  67. data/spec/dummy/config/boot.rb +10 -0
  68. data/spec/dummy/config/database.yml +25 -0
  69. data/spec/dummy/config/environment.rb +5 -0
  70. data/spec/dummy/config/environments/development.rb +30 -0
  71. data/spec/dummy/config/environments/production.rb +60 -0
  72. data/spec/dummy/config/environments/test.rb +39 -0
  73. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  74. data/spec/dummy/config/initializers/devise.rb +209 -0
  75. data/spec/dummy/config/initializers/inflections.rb +10 -0
  76. data/spec/dummy/config/initializers/mime_types.rb +6 -0
  77. data/spec/dummy/config/initializers/secret_token.rb +7 -0
  78. data/spec/dummy/config/initializers/session_store.rb +8 -0
  79. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  80. data/spec/dummy/config/locales/en.yml +5 -0
  81. data/spec/dummy/config/routes.rb +60 -0
  82. data/spec/dummy/config.ru +4 -0
  83. data/spec/dummy/db/migrate/006_create_items.rb +36 -0
  84. data/spec/dummy/db/migrate/124_create_bookstores.rb +21 -0
  85. data/spec/dummy/db/migrate/20111201121844_create_roles.rb +12 -0
  86. data/spec/dummy/db/migrate/20111201155456_create_users.rb +13 -0
  87. data/spec/dummy/db/migrate/20111201155513_add_devise_to_users.rb +31 -0
  88. data/spec/dummy/db/migrate/20111201163342_create_user_groups.rb +12 -0
  89. data/spec/dummy/db/migrate/20111201163718_create_user_has_roles.rb +10 -0
  90. data/spec/dummy/db/schema.rb +156 -0
  91. data/spec/dummy/db/test.sqlite3 +0 -0
  92. data/spec/dummy/log/development.log +0 -0
  93. data/spec/dummy/log/sunspot-solr-test.log +222 -0
  94. data/spec/dummy/log/test.log +137771 -0
  95. data/spec/dummy/public/404.html +26 -0
  96. data/spec/dummy/public/422.html +26 -0
  97. data/spec/dummy/public/500.html +26 -0
  98. data/spec/dummy/public/favicon.ico +0 -0
  99. data/spec/dummy/script/rails +6 -0
  100. data/spec/dummy/solr/conf/admin-extra.html +31 -0
  101. data/spec/dummy/solr/conf/elevate.xml +36 -0
  102. data/spec/dummy/solr/conf/mapping-ISOLatin1Accent.txt +246 -0
  103. data/spec/dummy/solr/conf/protwords.txt +21 -0
  104. data/spec/dummy/solr/conf/schema.xml +238 -0
  105. data/spec/dummy/solr/conf/scripts.conf +24 -0
  106. data/spec/dummy/solr/conf/solrconfig.xml +934 -0
  107. data/spec/dummy/solr/conf/spellings.txt +2 -0
  108. data/spec/dummy/solr/conf/stopwords.txt +58 -0
  109. data/spec/dummy/solr/conf/synonyms.txt +31 -0
  110. data/spec/dummy/solr/data/test/index/segments.gen +0 -0
  111. data/spec/dummy/solr/data/test/index/segments_1 +0 -0
  112. data/spec/dummy/solr/data/test/spellchecker/segments.gen +0 -0
  113. data/spec/dummy/solr/data/test/spellchecker/segments_1 +0 -0
  114. data/spec/factories/bookstore.rb +5 -0
  115. data/spec/factories/order.rb +6 -0
  116. data/spec/factories/order_list.rb +7 -0
  117. data/spec/factories/purchase_request.rb +6 -0
  118. data/spec/factories/user.rb +34 -0
  119. data/spec/fixtures/order_lists.yml +40 -0
  120. data/spec/fixtures/orders.yml +50 -0
  121. data/spec/fixtures/purchase_requests.yml +129 -0
  122. data/spec/fixtures/roles.yml +21 -0
  123. data/spec/fixtures/user_has_roles.yml +41 -0
  124. data/spec/fixtures/users.yml +69 -0
  125. data/spec/models/order_list_spec.rb +24 -0
  126. data/spec/models/order_spec.rb +21 -0
  127. data/spec/models/purchase_request_spec.rb +31 -0
  128. data/spec/spec_helper.rb +44 -0
  129. data/spec/support/controller_macros.rb +48 -0
  130. data/spec/support/devise.rb +4 -0
  131. metadata +394 -0
@@ -0,0 +1,537 @@
1
+ require 'spec_helper'
2
+
3
+ describe PurchaseRequestsController do
4
+ fixtures :all
5
+
6
+ describe "GET index", :solr => true do
7
+ describe "When logged in as Administrator" do
8
+ login_fixture_admin
9
+
10
+ it "assigns all purchase_requests as @purchase_requests" do
11
+ get :index
12
+ assigns(:purchase_requests).should_not be_empty
13
+ end
14
+ end
15
+
16
+ describe "When logged in as Librarian" do
17
+ login_fixture_librarian
18
+
19
+ it "assigns all purchase_requests as @purchase_requests" do
20
+ get :index
21
+ assigns(:purchase_requests).should_not be_empty
22
+ end
23
+
24
+ it "should get other user's index without user_id" do
25
+ get :index
26
+ response.should be_success
27
+ assigns(:purchase_requests).should_not be_empty
28
+ end
29
+ end
30
+
31
+ describe "When logged in as User" do
32
+ login_fixture_user
33
+
34
+ it "assigns my purchase_requests as @purchase_requests" do
35
+ get :index
36
+ assigns(:purchase_requests).should_not be_empty
37
+ end
38
+
39
+ it "should be get my index without user_id" do
40
+ get :index
41
+ assigns(:purchase_requests).should eq users(:user1).purchase_requests
42
+ response.should be_success
43
+ end
44
+
45
+ it "should get my index" do
46
+ get :index, :user_id => users(:user1).username
47
+ response.should redirect_to purchase_requests_url
48
+ assigns(:purchase_requests).should be_nil
49
+ end
50
+
51
+ it "should get my index in csv format" do
52
+ get :index, :user_id => users(:user1).username, :format => 'csv'
53
+ response.should redirect_to purchase_requests_url(:format => :csv)
54
+ assigns(:purchase_requests).should be_nil
55
+ end
56
+
57
+ it "should get my index in rss format" do
58
+ get :index, :user_id => users(:user1).username, :format => 'rss'
59
+ response.should redirect_to purchase_requests_url(:format => :rss)
60
+ assigns(:purchase_requests).should be_nil
61
+ end
62
+
63
+ it "should not get other user's index" do
64
+ get :index, :user_id => users(:librarian1).username
65
+ response.should be_forbidden
66
+ end
67
+ end
68
+
69
+ describe "When not logged in" do
70
+ it "assigns empty as @purchase_requests" do
71
+ get :index
72
+ assigns(:purchase_requests).should be_nil
73
+ response.should redirect_to(new_user_session_url)
74
+ end
75
+ end
76
+ end
77
+
78
+ describe "GET show" do
79
+ before(:each) do
80
+ @purchase_request = purchase_requests(:purchase_request_00003)
81
+ end
82
+
83
+ describe "When logged in as Administrator" do
84
+ login_admin
85
+
86
+ it "assigns the requested purchase_request as @purchase_request" do
87
+ get :show, :id => @purchase_request.id
88
+ assigns(:purchase_request).should eq(@purchase_request)
89
+ end
90
+ end
91
+
92
+ describe "When logged in as Librarian" do
93
+ login_fixture_librarian
94
+
95
+ it "assigns the requested purchase_request as @purchase_request" do
96
+ get :show, :id => @purchase_request.id
97
+ assigns(:purchase_request).should eq(@purchase_request)
98
+ end
99
+
100
+ it "should show purchase_request without user_id" do
101
+ get :show, :id => purchase_requests(:purchase_request_00002).id
102
+ response.should be_success
103
+ end
104
+ end
105
+
106
+ describe "When logged in as User" do
107
+ login_fixture_user
108
+
109
+ it "assigns the requested purchase_request as @purchase_request" do
110
+ get :show, :id => @purchase_request.id
111
+ assigns(:purchase_request).should eq(@purchase_request)
112
+ end
113
+
114
+ it "should show my purchase request" do
115
+ get :show, :id => @purchase_request.id
116
+ response.should be_success
117
+ end
118
+
119
+ it "should not show other user's purchase request" do
120
+ get :show, :id => purchase_requests(:purchase_request_00001).id
121
+ response.should be_forbidden
122
+ end
123
+ end
124
+
125
+ describe "When not logged in" do
126
+ it "assigns the requested purchase_request as @purchase_request" do
127
+ get :show, :id => @purchase_request.id
128
+ assigns(:purchase_request).should eq(@purchase_request)
129
+ response.should redirect_to new_user_session_url
130
+ end
131
+ end
132
+ end
133
+
134
+ describe "GET new" do
135
+ describe "When logged in as Administrator" do
136
+ login_admin
137
+
138
+ it "assigns the requested purchase_request as @purchase_request" do
139
+ get :new
140
+ assigns(:purchase_request).should_not be_valid
141
+ response.should be_success
142
+ end
143
+ end
144
+
145
+ describe "When logged in as Librarian" do
146
+ login_fixture_librarian
147
+
148
+ it "should not assign the requested purchase_request as @purchase_request" do
149
+ get :new
150
+ assigns(:purchase_request).should_not be_valid
151
+ response.should be_success
152
+ end
153
+ end
154
+
155
+ describe "When logged in as User" do
156
+ login_fixture_user
157
+
158
+ it "should not assign the requested purchase_request as @purchase_request" do
159
+ get :new
160
+ assigns(:purchase_request).should_not be_valid
161
+ response.should be_success
162
+ end
163
+ end
164
+
165
+ describe "When not logged in" do
166
+ it "should not assign the requested purchase_request as @purchase_request" do
167
+ get :new
168
+ assigns(:purchase_request).should_not be_valid
169
+ response.should redirect_to(new_user_session_url)
170
+ end
171
+ end
172
+ end
173
+
174
+ describe "GET edit" do
175
+ describe "When logged in as Administrator" do
176
+ login_fixture_admin
177
+
178
+ it "should assign the requested purchase_request as @purchase_request" do
179
+ get :edit, :id => purchase_requests(:purchase_request_00001).id
180
+ assigns(:purchase_request).should eq(purchase_requests(:purchase_request_00001))
181
+ response.should be_success
182
+ end
183
+ end
184
+
185
+ describe "When logged in as Librarian" do
186
+ login_fixture_librarian
187
+
188
+ it "should assign the requested purchase_request as @purchase_request" do
189
+ get :edit, :id => purchase_requests(:purchase_request_00001).id
190
+ assigns(:purchase_request).should eq(purchase_requests(:purchase_request_00001))
191
+ response.should be_success
192
+ end
193
+ end
194
+
195
+ describe "When logged in as User" do
196
+ login_fixture_user
197
+
198
+ it "should edit my purchase_request" do
199
+ get :edit, :id => purchase_requests(:purchase_request_00003).id
200
+ response.should be_success
201
+ end
202
+
203
+ it "should not edit other user's purchase_request" do
204
+ get :edit, :id => purchase_requests(:purchase_request_00002).id
205
+ response.should be_forbidden
206
+ end
207
+ end
208
+
209
+ describe "When not logged in" do
210
+ it "should not assign the requested purchase_request as @purchase_request" do
211
+ get :edit, :id => purchase_requests(:purchase_request_00001).id
212
+ response.should redirect_to new_user_session_url
213
+ end
214
+ end
215
+ end
216
+
217
+ describe "POST create" do
218
+ before(:each) do
219
+ @attrs = FactoryGirl.attributes_for(:purchase_request)
220
+ @invalid_attrs = {:title => ''}
221
+ end
222
+
223
+ describe "When logged in as Administrator" do
224
+ login_fixture_admin
225
+
226
+ describe "with valid params" do
227
+ it "assigns a newly created purchase_request as @purchase_request" do
228
+ post :create, :purchase_request => @attrs
229
+ assigns(:purchase_request).should be_valid
230
+ end
231
+
232
+ it "redirects to the created purchase_request" do
233
+ post :create, :purchase_request => @attrs
234
+ response.should redirect_to(purchase_request_url(assigns(:purchase_request)))
235
+ end
236
+ end
237
+
238
+ describe "with invalid params" do
239
+ it "assigns a newly created but unsaved purchase_request as @purchase_request" do
240
+ post :create, :purchase_request => @invalid_attrs
241
+ assigns(:purchase_request).should_not be_valid
242
+ end
243
+
244
+ it "re-renders the 'new' template" do
245
+ post :create, :purchase_request => @invalid_attrs
246
+ response.should render_template("new")
247
+ end
248
+ end
249
+ end
250
+
251
+ describe "When logged in as Librarian" do
252
+ login_fixture_librarian
253
+
254
+ describe "with valid params" do
255
+ it "assigns a newly created purchase_request as @purchase_request" do
256
+ post :create, :purchase_request => @attrs
257
+ assigns(:purchase_request).should be_valid
258
+ end
259
+
260
+ it "redirects to the created purchase_request" do
261
+ post :create, :purchase_request => @attrs
262
+ response.should redirect_to(purchase_request_url(assigns(:purchase_request)))
263
+ end
264
+ end
265
+
266
+ describe "with invalid params" do
267
+ it "assigns a newly created but unsaved purchase_request as @purchase_request" do
268
+ post :create, :purchase_request => @invalid_attrs
269
+ assigns(:purchase_request).should_not be_valid
270
+ end
271
+
272
+ it "re-renders the 'new' template" do
273
+ post :create, :purchase_request => @invalid_attrs
274
+ response.should render_template("new")
275
+ end
276
+ end
277
+
278
+ it "should create purchase_request with other user's user_id" do
279
+ post :create, :purchase_request => {:title => 'test', :user_id => users(:user1).id}
280
+ response.should redirect_to purchase_request_url(assigns(:purchase_request))
281
+ end
282
+ end
283
+
284
+ describe "When logged in as User" do
285
+ login_fixture_user
286
+
287
+ describe "with valid params" do
288
+ it "assigns a newly created purchase_request as @purchase_request" do
289
+ post :create, :purchase_request => @attrs
290
+ assigns(:purchase_request).should be_valid
291
+ end
292
+
293
+ it "redirects to the created purchase_request" do
294
+ post :create, :purchase_request => @attrs
295
+ response.should redirect_to(purchase_request_url(assigns(:purchase_request)))
296
+ end
297
+ end
298
+
299
+ describe "with invalid params" do
300
+ it "assigns a newly created but unsaved purchase_request as @purchase_request" do
301
+ post :create, :purchase_request => @invalid_attrs
302
+ assigns(:purchase_request).should_not be_valid
303
+ end
304
+
305
+ it "re-renders the 'new' template" do
306
+ post :create, :purchase_request => @invalid_attrs
307
+ response.should render_template("new")
308
+ end
309
+ end
310
+
311
+ it "should create purchase_request without user_id" do
312
+ post :create, :purchase_request => {:title => 'test', :user_id => users(:user1).id, :pub_date => 2010}
313
+ assigns(:purchase_request).date_of_publication.should eq Time.zone.parse('2010-01-01')
314
+ response.should redirect_to purchase_request_url(assigns(:purchase_request))
315
+ end
316
+ end
317
+
318
+ describe "When not logged in" do
319
+ describe "with valid params" do
320
+ it "assigns a newly created purchase_request as @purchase_request" do
321
+ post :create, :purchase_request => @attrs
322
+ assigns(:purchase_request).should_not be_valid
323
+ end
324
+
325
+ it "should redirect to new_user_session_url" do
326
+ post :create, :purchase_request => @attrs
327
+ response.should redirect_to(new_user_session_url)
328
+ end
329
+ end
330
+
331
+ describe "with invalid params" do
332
+ it "assigns a newly created but unsaved purchase_request as @purchase_request" do
333
+ post :create, :purchase_request => @invalid_attrs
334
+ assigns(:purchase_request).should_not be_valid
335
+ end
336
+
337
+ it "should redirect to new_user_session_url" do
338
+ post :create, :purchase_request => @invalid_attrs
339
+ response.should redirect_to(new_user_session_url)
340
+ end
341
+ end
342
+ end
343
+ end
344
+
345
+ describe "PUT update" do
346
+ before(:each) do
347
+ @purchase_request = purchase_requests(:purchase_request_00001)
348
+ @attrs = FactoryGirl.attributes_for(:purchase_request)
349
+ @invalid_attrs = {:title => ''}
350
+ end
351
+
352
+ describe "When logged in as Administrator" do
353
+ before(:each) do
354
+ @user = FactoryGirl.create(:admin)
355
+ sign_in @user
356
+ end
357
+
358
+ describe "with valid params" do
359
+ it "updates the requested purchase_request" do
360
+ put :update, :id => @purchase_request.id, :purchase_request => @attrs
361
+ end
362
+
363
+ it "assigns the requested purchase_request as @purchase_request" do
364
+ put :update, :id => @purchase_request.id, :purchase_request => @attrs
365
+ assigns(:purchase_request).should eq(@purchase_request)
366
+ response.should redirect_to purchase_request_url(assigns(:purchase_request))
367
+ end
368
+ end
369
+
370
+ describe "with invalid params" do
371
+ it "assigns the requested purchase_request as @purchase_request" do
372
+ put :update, :id => @purchase_request.id, :purchase_request => @invalid_attrs
373
+ end
374
+
375
+ it "re-renders the 'edit' template" do
376
+ put :update, :id => @purchase_request.id, :purchase_request => @invalid_attrs
377
+ response.should render_template("edit")
378
+ end
379
+ end
380
+ end
381
+
382
+ describe "When logged in as Librarian" do
383
+ before(:each) do
384
+ @user = FactoryGirl.create(:librarian)
385
+ sign_in @user
386
+ end
387
+
388
+ describe "with valid params" do
389
+ it "updates the requested purchase_request" do
390
+ put :update, :id => @purchase_request.id, :purchase_request => @attrs
391
+ end
392
+
393
+ it "assigns the requested purchase_request as @purchase_request" do
394
+ put :update, :id => @purchase_request.id, :purchase_request => @attrs
395
+ assigns(:purchase_request).should eq(@purchase_request)
396
+ response.should redirect_to purchase_request_url(assigns(:purchase_request))
397
+ end
398
+ end
399
+
400
+ describe "with invalid params" do
401
+ it "assigns the purchase_request as @purchase_request" do
402
+ put :update, :id => @purchase_request.id, :purchase_request => @invalid_attrs
403
+ assigns(:purchase_request).should_not be_valid
404
+ end
405
+
406
+ it "re-renders the 'edit' template" do
407
+ put :update, :id => @purchase_request.id, :purchase_request => @invalid_attrs
408
+ response.should render_template("edit")
409
+ end
410
+ end
411
+ end
412
+
413
+ describe "When logged in as User" do
414
+ login_fixture_user
415
+
416
+ describe "with valid params" do
417
+ it "updates the requested purchase_request" do
418
+ put :update, :id => @purchase_request.id, :purchase_request => @attrs
419
+ end
420
+
421
+ it "assigns the requested purchase_request as @purchase_request" do
422
+ put :update, :id => @purchase_request.id, :purchase_request => @attrs
423
+ assigns(:purchase_request).should eq(@purchase_request)
424
+ response.should be_forbidden
425
+ end
426
+ end
427
+
428
+ describe "with invalid params" do
429
+ it "assigns the requested purchase_request as @purchase_request" do
430
+ put :update, :id => @purchase_request.id, :purchase_request => @invalid_attrs
431
+ response.should be_forbidden
432
+ end
433
+ end
434
+
435
+ it "should update my purchase_request" do
436
+ put :update, :id => purchase_requests(:purchase_request_00003).id, :purchase_request => { }
437
+ response.should redirect_to purchase_request_url(assigns(:purchase_request))
438
+ end
439
+
440
+ it "should not update other user's purchase_request" do
441
+ put :update, :id => purchase_requests(:purchase_request_00002).id, :purchase_request => { }
442
+ response.should be_forbidden
443
+ end
444
+ end
445
+
446
+ describe "When not logged in" do
447
+ describe "with valid params" do
448
+ it "updates the requested purchase_request" do
449
+ put :update, :id => @purchase_request.id, :purchase_request => @attrs
450
+ end
451
+
452
+ it "should be forbidden" do
453
+ put :update, :id => @purchase_request.id, :purchase_request => @attrs
454
+ response.should redirect_to(new_user_session_url)
455
+ end
456
+ end
457
+
458
+ describe "with invalid params" do
459
+ it "assigns the requested purchase_request as @purchase_request" do
460
+ put :update, :id => @purchase_request.id, :purchase_request => @invalid_attrs
461
+ response.should redirect_to(new_user_session_url)
462
+ end
463
+ end
464
+ end
465
+ end
466
+
467
+ describe "DELETE destroy" do
468
+ before(:each) do
469
+ @purchase_request = purchase_requests(:purchase_request_00001)
470
+ end
471
+
472
+ describe "When logged in as Administrator" do
473
+ login_admin
474
+
475
+ it "destroys the requested purchase_request" do
476
+ delete :destroy, :id => @purchase_request.id
477
+ end
478
+
479
+ it "redirects to the purchase_requests list" do
480
+ delete :destroy, :id => @purchase_request.id
481
+ response.should redirect_to purchase_requests_url
482
+ end
483
+ end
484
+
485
+ describe "When logged in as Librarian" do
486
+ login_fixture_librarian
487
+
488
+ it "destroys the requested purchase_request" do
489
+ delete :destroy, :id => @purchase_request.id
490
+ end
491
+
492
+ it "redirects to the purchase_requests list" do
493
+ delete :destroy, :id => @purchase_request.id
494
+ response.should redirect_to purchase_requests_url
495
+ end
496
+
497
+ it "should destroy other user's purchase request" do
498
+ delete :destroy, :id => purchase_requests(:purchase_request_00003).id
499
+ response.should redirect_to purchase_requests_url
500
+ end
501
+ end
502
+
503
+ describe "When logged in as User" do
504
+ login_fixture_user
505
+
506
+ it "destroys the requested purchase_request" do
507
+ delete :destroy, :id => @purchase_request.id
508
+ end
509
+
510
+ it "should be forbidden" do
511
+ delete :destroy, :id => @purchase_request.id
512
+ response.should be_forbidden
513
+ end
514
+
515
+ it "should destroy my purchase_request" do
516
+ delete :destroy, :id => purchase_requests(:purchase_request_00003).id
517
+ response.should redirect_to purchase_requests_url
518
+ end
519
+
520
+ it "should not destroy other user's purchase_request" do
521
+ delete :destroy, :id => purchase_requests(:purchase_request_00002).id
522
+ response.should be_forbidden
523
+ end
524
+ end
525
+
526
+ describe "When not logged in" do
527
+ it "destroys the requested purchase_request" do
528
+ delete :destroy, :id => @purchase_request.id
529
+ end
530
+
531
+ it "should be forbidden" do
532
+ delete :destroy, :id => @purchase_request.id
533
+ response.should redirect_to(new_user_session_url)
534
+ end
535
+ end
536
+ end
537
+ end
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env rake
2
+ # Add your own tasks in files placed in lib/tasks ending in .rake,
3
+ # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
4
+
5
+ require File.expand_path('../config/application', __FILE__)
6
+
7
+ Dummy::Application.load_tasks
@@ -0,0 +1,9 @@
1
+ // This is a manifest file that'll be compiled into including all the files listed below.
2
+ // Add new JavaScript/Coffee code in separate files in this directory and they'll automatically
3
+ // be included in the compiled file accessible from http://example.com/assets/application.js
4
+ // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
5
+ // the compiled file.
6
+ //
7
+ //= require jquery
8
+ //= require jquery_ujs
9
+ //= require_tree .
@@ -0,0 +1,7 @@
1
+ /*
2
+ * This is a manifest file that'll automatically include all the stylesheets available in this directory
3
+ * and any sub-directories. You're free to add application-wide styles to this file and they'll appear at
4
+ * the top of the compiled file, but it's generally better to create a new file per style scope.
5
+ *= require_self
6
+ *= require_tree .
7
+ */
@@ -0,0 +1,104 @@
1
+ class ApplicationController < ActionController::Base
2
+ protect_from_forgery
3
+
4
+ rescue_from CanCan::AccessDenied, :with => :render_403
5
+ rescue_from ActiveRecord::RecordNotFound, :with => :render_404
6
+
7
+ before_filter :set_locale
8
+
9
+ private
10
+ def render_403
11
+ return if performed?
12
+ if user_signed_in?
13
+ respond_to do |format|
14
+ format.html {render :template => 'page/403', :status => 403}
15
+ format.mobile {render :template => 'page/403', :status => 403}
16
+ format.xml {render :template => 'page/403', :status => 403}
17
+ format.json
18
+ end
19
+ else
20
+ respond_to do |format|
21
+ format.html {redirect_to new_user_session_url}
22
+ format.mobile {redirect_to new_user_session_url}
23
+ format.xml {render :template => 'page/403', :status => 403}
24
+ format.json
25
+ end
26
+ end
27
+ end
28
+
29
+ def render_404
30
+ return if performed?
31
+ respond_to do |format|
32
+ format.html {render :template => 'page/404', :status => 404}
33
+ format.mobile {render :template => 'page/404', :status => 404}
34
+ format.xml {render :template => 'page/404', :status => 404}
35
+ format.json
36
+ end
37
+ end
38
+
39
+ def set_locale
40
+ if params[:locale]
41
+ unless I18n.available_locales.include?(params[:locale].to_s.intern)
42
+ raise InvalidLocaleError
43
+ end
44
+ end
45
+ if user_signed_in?
46
+ locale = params[:locale] || session[:locale] || current_user.locale.try(:to_sym)
47
+ else
48
+ locale = params[:locale] || session[:locale]
49
+ end
50
+ if locale
51
+ I18n.locale = @locale = session[:locale] = locale.to_sym
52
+ else
53
+ I18n.locale = @locale = session[:locale] = I18n.default_locale
54
+ end
55
+ rescue InvalidLocaleError
56
+ @locale = I18n.default_locale
57
+ end
58
+
59
+ def access_denied
60
+ raise CanCan::AccessDenied
61
+ end
62
+
63
+ def get_user_if_nil
64
+ @user = User.where(:username => params[:user_id]).first if params[:user_id]
65
+ #authorize! :show, @user if @user
66
+ end
67
+
68
+ def get_order_list
69
+ @order_list = OrderList.find(params[:order_list_id]) if params[:order_list_id]
70
+ end
71
+
72
+ def get_purchase_request
73
+ @purchase_request = PurchaseRequest.find(params[:purchase_request_id]) if params[:purchase_request_id]
74
+ end
75
+
76
+ def get_bookstore
77
+ @bookstore = Bookstore.find(params[:bookstore_id]) if params[:bookstore_id]
78
+ end
79
+
80
+ def convert_charset
81
+ case params[:format]
82
+ when 'csv'
83
+ return unless configatron.csv_charset_conversion
84
+ # TODO: 他の言語
85
+ if @locale.to_sym == :ja
86
+ headers["Content-Type"] = "text/csv; charset=Shift_JIS"
87
+ response.body = NKF::nkf('-Ws', response.body)
88
+ end
89
+ when 'xml'
90
+ if @locale.to_sym == :ja
91
+ headers["Content-Type"] = "application/xml; charset=Shift_JIS"
92
+ response.body = NKF::nkf('-Ws', response.body)
93
+ end
94
+ end
95
+ end
96
+
97
+ def store_page
98
+ flash[:page] = params[:page] if params[:page].to_i > 0
99
+ end
100
+
101
+ def solr_commit
102
+ Sunspot.commit
103
+ end
104
+ end
@@ -0,0 +1,2 @@
1
+ module ApplicationHelper
2
+ end
@@ -0,0 +1,25 @@
1
+ class Ability
2
+ include CanCan::Ability
3
+
4
+ def initialize(user)
5
+ case user.try(:role).try(:name)
6
+ when 'Administrator'
7
+ can :manage, [
8
+ Order,
9
+ OrderList,
10
+ PurchaseRequest
11
+ ]
12
+ when 'Librarian'
13
+ can :manage, [
14
+ Order,
15
+ OrderList,
16
+ PurchaseRequest
17
+ ]
18
+ when 'User'
19
+ can [:index, :create], PurchaseRequest
20
+ can [:show, :update, :destroy], PurchaseRequest do |purchase_request|
21
+ purchase_request.user == user
22
+ end
23
+ end
24
+ end
25
+ end