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,481 @@
1
+ require 'spec_helper'
2
+ require 'sunspot/rails/spec_helper'
3
+
4
+ describe OrdersController do
5
+ fixtures :all
6
+ disconnect_sunspot
7
+
8
+ describe "GET index" do
9
+ before(:each) do
10
+ FactoryGirl.create(:order)
11
+ end
12
+
13
+ describe "When logged in as Administrator" do
14
+ before(:each) do
15
+ sign_in FactoryGirl.create(:admin)
16
+ end
17
+
18
+ it "assigns all orders as @orders" do
19
+ get :index
20
+ assigns(:orders).should eq(Order.all)
21
+ end
22
+ end
23
+
24
+ describe "When logged in as Librarian" do
25
+ before(:each) do
26
+ sign_in FactoryGirl.create(:librarian)
27
+ end
28
+
29
+ it "assigns all orders as @orders" do
30
+ get :index
31
+ assigns(:orders).should eq(Order.all)
32
+ end
33
+ end
34
+
35
+ describe "When logged in as User" do
36
+ before(:each) do
37
+ sign_in FactoryGirl.create(:user)
38
+ end
39
+
40
+ it "should be forbidden" do
41
+ get :index
42
+ assigns(:orders).should be_empty
43
+ response.should be_forbidden
44
+ end
45
+ end
46
+
47
+ describe "When not logged in" do
48
+ it "assigns all orders as @orders" do
49
+ get :index
50
+ assigns(:orders).should be_empty
51
+ response.should redirect_to(new_user_session_url)
52
+ end
53
+ end
54
+ end
55
+
56
+ describe "GET show" do
57
+ describe "When logged in as Administrator" do
58
+ before(:each) do
59
+ sign_in FactoryGirl.create(:admin)
60
+ end
61
+
62
+ it "assigns the requested order as @order" do
63
+ order = FactoryGirl.create(:order)
64
+ get :show, :id => order.id
65
+ assigns(:order).should eq(order)
66
+ end
67
+ end
68
+
69
+ describe "When logged in as Librarian" do
70
+ before(:each) do
71
+ sign_in FactoryGirl.create(:librarian)
72
+ end
73
+
74
+ it "assigns the requested order as @order" do
75
+ order = FactoryGirl.create(:order)
76
+ get :show, :id => order.id
77
+ assigns(:order).should eq(order)
78
+ end
79
+ end
80
+
81
+ describe "When logged in as User" do
82
+ before(:each) do
83
+ sign_in FactoryGirl.create(:user)
84
+ end
85
+
86
+ it "assigns the requested order as @order" do
87
+ order = FactoryGirl.create(:order)
88
+ get :show, :id => order.id
89
+ assigns(:order).should eq(order)
90
+ end
91
+ end
92
+
93
+ describe "When not logged in" do
94
+ it "assigns the requested order as @order" do
95
+ order = FactoryGirl.create(:order)
96
+ get :show, :id => order.id
97
+ assigns(:order).should eq(order)
98
+ end
99
+ end
100
+ end
101
+
102
+ describe "GET new" do
103
+ describe "When logged in as Administrator" do
104
+ before(:each) do
105
+ sign_in FactoryGirl.create(:admin)
106
+ end
107
+
108
+ it "assigns the requested order as @order" do
109
+ get :new, :order_list_id => 1, :purchase_request_id => 1
110
+ assigns(:order).should_not be_valid
111
+ response.should be_success
112
+ end
113
+ end
114
+
115
+ describe "When logged in as Librarian" do
116
+ before(:each) do
117
+ sign_in FactoryGirl.create(:librarian)
118
+ end
119
+
120
+ it "assigns the requested order as @order" do
121
+ get :new, :order_list_id => 1, :purchase_request_id => 1
122
+ assigns(:order).should_not be_valid
123
+ response.should be_success
124
+ end
125
+ end
126
+
127
+ describe "When logged in as User" do
128
+ before(:each) do
129
+ sign_in FactoryGirl.create(:user)
130
+ end
131
+
132
+ it "should not assign the requested order as @order" do
133
+ get :new, :order_list_id => 1, :purchase_request_id => 1
134
+ assigns(:order).should_not be_valid
135
+ response.should be_forbidden
136
+ end
137
+ end
138
+
139
+ describe "When not logged in" do
140
+ it "should not assign the requested order as @order" do
141
+ get :new, :order_list_id => 1, :purchase_request_id => 1
142
+ assigns(:order).should_not be_valid
143
+ response.should redirect_to(new_user_session_url)
144
+ end
145
+ end
146
+ end
147
+
148
+ describe "GET edit" do
149
+ describe "When logged in as Administrator" do
150
+ before(:each) do
151
+ sign_in FactoryGirl.create(:admin)
152
+ end
153
+
154
+ it "assigns the requested order as @order" do
155
+ order = FactoryGirl.create(:order)
156
+ get :edit, :id => order.id
157
+ assigns(:order).should eq(order)
158
+ end
159
+ end
160
+
161
+ describe "When logged in as Librarian" do
162
+ before(:each) do
163
+ sign_in FactoryGirl.create(:librarian)
164
+ end
165
+
166
+ it "assigns the requested order as @order" do
167
+ order = FactoryGirl.create(:order)
168
+ get :edit, :id => order.id
169
+ assigns(:order).should eq(order)
170
+ end
171
+ end
172
+
173
+ describe "When logged in as User" do
174
+ before(:each) do
175
+ sign_in FactoryGirl.create(:user)
176
+ end
177
+
178
+ it "assigns the requested order as @order" do
179
+ order = FactoryGirl.create(:order)
180
+ get :edit, :id => order.id
181
+ response.should be_forbidden
182
+ end
183
+ end
184
+
185
+ describe "When not logged in" do
186
+ it "should not assign the requested order as @order" do
187
+ order = FactoryGirl.create(:order)
188
+ get :edit, :id => order.id
189
+ response.should redirect_to(new_user_session_url)
190
+ end
191
+ end
192
+ end
193
+
194
+ describe "POST create" do
195
+ before(:each) do
196
+ @attrs = FactoryGirl.attributes_for(:order)
197
+ @invalid_attrs = {:order_list_id => ''}
198
+ end
199
+
200
+ describe "When logged in as Administrator" do
201
+ before(:each) do
202
+ sign_in FactoryGirl.create(:admin)
203
+ end
204
+
205
+ describe "with valid params" do
206
+ it "assigns a newly created order as @order" do
207
+ post :create, :order => @attrs
208
+ assigns(:order).should be_valid
209
+ end
210
+
211
+ it "redirects to the created patron" do
212
+ post :create, :order => @attrs
213
+ response.should redirect_to(assigns(:order))
214
+ end
215
+ end
216
+
217
+ describe "with invalid params" do
218
+ it "assigns a newly created but unsaved order as @order" do
219
+ post :create, :order => @invalid_attrs
220
+ assigns(:order).should_not be_valid
221
+ end
222
+
223
+ it "re-renders the 'new' template" do
224
+ post :create, :order => @invalid_attrs
225
+ response.should render_template("new")
226
+ end
227
+ end
228
+ end
229
+
230
+ describe "When logged in as Librarian" do
231
+ before(:each) do
232
+ sign_in FactoryGirl.create(:librarian)
233
+ end
234
+
235
+ describe "with valid params" do
236
+ it "assigns a newly created order as @order" do
237
+ post :create, :order => @attrs
238
+ assigns(:order).should be_valid
239
+ end
240
+
241
+ it "redirects to the created patron" do
242
+ post :create, :order => @attrs
243
+ response.should redirect_to(assigns(:order))
244
+ end
245
+ end
246
+
247
+ describe "with invalid params" do
248
+ it "assigns a newly created but unsaved order as @order" do
249
+ post :create, :order => @invalid_attrs
250
+ assigns(:order).should_not be_valid
251
+ end
252
+
253
+ it "re-renders the 'new' template" do
254
+ post :create, :order => @invalid_attrs
255
+ response.should render_template("new")
256
+ end
257
+ end
258
+ end
259
+
260
+ describe "When logged in as User" do
261
+ before(:each) do
262
+ sign_in FactoryGirl.create(:user)
263
+ end
264
+
265
+ describe "with valid params" do
266
+ it "assigns a newly created order as @order" do
267
+ post :create, :order => @attrs
268
+ assigns(:order).should be_valid
269
+ end
270
+
271
+ it "should be forbidden" do
272
+ post :create, :order => @attrs
273
+ response.should be_forbidden
274
+ end
275
+ end
276
+
277
+ describe "with invalid params" do
278
+ it "assigns a newly created but unsaved order as @order" do
279
+ post :create, :order => @invalid_attrs
280
+ assigns(:order).should_not be_valid
281
+ end
282
+
283
+ it "should be forbidden" do
284
+ post :create, :order => @invalid_attrs
285
+ response.should be_forbidden
286
+ end
287
+ end
288
+ end
289
+
290
+ describe "When not logged in" do
291
+ describe "with valid params" do
292
+ it "assigns a newly created order as @order" do
293
+ post :create, :order => @attrs
294
+ assigns(:order).should be_valid
295
+ end
296
+
297
+ it "should be forbidden" do
298
+ post :create, :order => @attrs
299
+ response.should redirect_to(new_user_session_url)
300
+ end
301
+ end
302
+
303
+ describe "with invalid params" do
304
+ it "assigns a newly created but unsaved order as @order" do
305
+ post :create, :order => @invalid_attrs
306
+ assigns(:order).should_not be_valid
307
+ end
308
+
309
+ it "should be forbidden" do
310
+ post :create, :order => @invalid_attrs
311
+ response.should redirect_to(new_user_session_url)
312
+ end
313
+ end
314
+ end
315
+ end
316
+
317
+ describe "PUT update" do
318
+ before(:each) do
319
+ @order = FactoryGirl.create(:order)
320
+ @attrs = FactoryGirl.attributes_for(:order)
321
+ @invalid_attrs = {:order_list_id => ''}
322
+ end
323
+
324
+ describe "When logged in as Administrator" do
325
+ before(:each) do
326
+ sign_in FactoryGirl.create(:admin)
327
+ end
328
+
329
+ describe "with valid params" do
330
+ it "updates the requested order" do
331
+ put :update, :id => @order.id, :order => @attrs
332
+ end
333
+
334
+ it "assigns the requested order as @order" do
335
+ put :update, :id => @order.id, :order => @attrs
336
+ assigns(:order).should eq(@order)
337
+ response.should redirect_to(@order)
338
+ end
339
+ end
340
+
341
+ describe "with invalid params" do
342
+ it "assigns the requested order as @order" do
343
+ put :update, :id => @order.id, :order => @invalid_attrs
344
+ response.should render_template("edit")
345
+ end
346
+ end
347
+ end
348
+
349
+ describe "When logged in as Librarian" do
350
+ before(:each) do
351
+ sign_in FactoryGirl.create(:librarian)
352
+ end
353
+
354
+ describe "with valid params" do
355
+ it "updates the requested order" do
356
+ put :update, :id => @order.id, :order => @attrs
357
+ end
358
+
359
+ it "assigns the requested order as @order" do
360
+ put :update, :id => @order.id, :order => @attrs
361
+ assigns(:order).should eq(@order)
362
+ response.should redirect_to(@order)
363
+ end
364
+ end
365
+
366
+ describe "with invalid params" do
367
+ it "assigns the requested order as @order" do
368
+ put :update, :id => @order.id, :order => @invalid_attrs
369
+ response.should render_template("edit")
370
+ end
371
+ end
372
+ end
373
+
374
+ describe "When logged in as User" do
375
+ before(:each) do
376
+ sign_in FactoryGirl.create(:user)
377
+ end
378
+
379
+ describe "with valid params" do
380
+ it "updates the requested order" do
381
+ put :update, :id => @order.id, :order => @attrs
382
+ end
383
+
384
+ it "assigns the requested order as @order" do
385
+ put :update, :id => @order.id, :order => @attrs
386
+ assigns(:order).should eq(@order)
387
+ response.should be_forbidden
388
+ end
389
+ end
390
+
391
+ describe "with invalid params" do
392
+ it "assigns the requested order as @order" do
393
+ put :update, :id => @order.id, :order => @invalid_attrs
394
+ response.should be_forbidden
395
+ end
396
+ end
397
+ end
398
+
399
+ describe "When not logged in" do
400
+ describe "with valid params" do
401
+ it "updates the requested order" do
402
+ put :update, :id => @order.id, :order => @attrs
403
+ end
404
+
405
+ it "should be forbidden" do
406
+ put :update, :id => @order.id, :order => @attrs
407
+ response.should redirect_to(new_user_session_url)
408
+ end
409
+ end
410
+
411
+ describe "with invalid params" do
412
+ it "assigns the requested order as @order" do
413
+ put :update, :id => @order.id, :order => @invalid_attrs
414
+ response.should redirect_to(new_user_session_url)
415
+ end
416
+ end
417
+ end
418
+ end
419
+
420
+ describe "DELETE destroy" do
421
+ before(:each) do
422
+ @order = FactoryGirl.create(:order)
423
+ end
424
+
425
+ describe "When logged in as Administrator" do
426
+ before(:each) do
427
+ sign_in FactoryGirl.create(:admin)
428
+ end
429
+
430
+ it "destroys the requested order" do
431
+ delete :destroy, :id => @order.id
432
+ end
433
+
434
+ it "redirects to the orders list" do
435
+ delete :destroy, :id => @order.id
436
+ response.should redirect_to(orders_url)
437
+ end
438
+ end
439
+
440
+ describe "When logged in as Librarian" do
441
+ before(:each) do
442
+ sign_in FactoryGirl.create(:librarian)
443
+ end
444
+
445
+ it "destroys the requested order" do
446
+ delete :destroy, :id => @order.id
447
+ end
448
+
449
+ it "redirects to the orders list" do
450
+ delete :destroy, :id => @order.id
451
+ response.should redirect_to(orders_url)
452
+ end
453
+ end
454
+
455
+ describe "When logged in as User" do
456
+ before(:each) do
457
+ sign_in FactoryGirl.create(:user)
458
+ end
459
+
460
+ it "destroys the requested order" do
461
+ delete :destroy, :id => @order.id
462
+ end
463
+
464
+ it "should be forbidden" do
465
+ delete :destroy, :id => @order.id
466
+ response.should be_forbidden
467
+ end
468
+ end
469
+
470
+ describe "When not logged in" do
471
+ it "destroys the requested order" do
472
+ delete :destroy, :id => @order.id
473
+ end
474
+
475
+ it "should be forbidden" do
476
+ delete :destroy, :id => @order.id
477
+ response.should redirect_to(new_user_session_url)
478
+ end
479
+ end
480
+ end
481
+ end