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.
- data/MIT-LICENSE +20 -0
- data/README.rdoc +3 -0
- data/Rakefile +45 -0
- data/app/controllers/order_lists_controller.rb +94 -0
- data/app/controllers/orders_controller.rb +129 -0
- data/app/controllers/purchase_requests_controller.rb +139 -0
- data/app/models/order.rb +35 -0
- data/app/models/order_list.rb +53 -0
- data/app/models/purchase_request.rb +89 -0
- data/app/views/order_lists/edit.html.erb +37 -0
- data/app/views/order_lists/index.atom.builder +11 -0
- data/app/views/order_lists/index.html.erb +34 -0
- data/app/views/order_lists/index.rss.builder +31 -0
- data/app/views/order_lists/new.html.erb +32 -0
- data/app/views/order_lists/show.html.erb +40 -0
- data/app/views/orders/edit.html.erb +30 -0
- data/app/views/orders/index.atom.builder +11 -0
- data/app/views/orders/index.html.erb +40 -0
- data/app/views/orders/index.rss.builder +38 -0
- data/app/views/orders/new.html.erb +34 -0
- data/app/views/orders/show.html.erb +23 -0
- data/app/views/purchase_requests/_index.html.erb +85 -0
- data/app/views/purchase_requests/_index_order_list.html.erb +76 -0
- data/app/views/purchase_requests/_new.html.erb +76 -0
- data/app/views/purchase_requests/_new_order_list.html.erb +74 -0
- data/app/views/purchase_requests/edit.html.erb +66 -0
- data/app/views/purchase_requests/index.atom.builder +15 -0
- data/app/views/purchase_requests/index.csv.erb +4 -0
- data/app/views/purchase_requests/index.html.erb +5 -0
- data/app/views/purchase_requests/index.rss.builder +38 -0
- data/app/views/purchase_requests/new.html.erb +5 -0
- data/app/views/purchase_requests/show.html.erb +94 -0
- data/config/routes.rb +18 -0
- data/db/migrate/123_create_purchase_requests.rb +30 -0
- data/db/migrate/126_create_orders.rb +18 -0
- data/db/migrate/20081009062129_create_order_lists.rb +21 -0
- data/lib/enju_purchase_request/bookmark_url.rb +45 -0
- data/lib/enju_purchase_request/bookstore.rb +3 -0
- data/lib/enju_purchase_request/engine.rb +14 -0
- data/lib/enju_purchase_request/url_validator.rb +10 -0
- data/lib/enju_purchase_request/version.rb +3 -0
- data/lib/enju_purchase_request.rb +7 -0
- data/lib/tasks/enju_purchase_request_tasks.rake +4 -0
- data/spec/controllers/order_lists_controller_spec.rb +476 -0
- data/spec/controllers/orders_controller_spec.rb +481 -0
- data/spec/controllers/purchase_requests_controller_spec.rb +537 -0
- data/spec/dummy/Rakefile +7 -0
- data/spec/dummy/app/assets/javascripts/application.js +9 -0
- data/spec/dummy/app/assets/stylesheets/application.css +7 -0
- data/spec/dummy/app/controllers/application_controller.rb +104 -0
- data/spec/dummy/app/helpers/application_helper.rb +2 -0
- data/spec/dummy/app/models/ability.rb +25 -0
- data/spec/dummy/app/models/bookmark.rb +29 -0
- data/spec/dummy/app/models/bookstore.rb +31 -0
- data/spec/dummy/app/models/role.rb +5 -0
- data/spec/dummy/app/models/user.rb +29 -0
- data/spec/dummy/app/models/user_group.rb +2 -0
- data/spec/dummy/app/models/user_has_role.rb +4 -0
- data/spec/dummy/app/views/layouts/application.html.erb +14 -0
- data/spec/dummy/app/views/page/403.html.erb +9 -0
- data/spec/dummy/app/views/page/403.mobile.erb +5 -0
- data/spec/dummy/app/views/page/403.xml.erb +4 -0
- data/spec/dummy/app/views/page/404.html.erb +9 -0
- data/spec/dummy/app/views/page/404.mobile.erb +5 -0
- data/spec/dummy/app/views/page/404.xml.erb +4 -0
- data/spec/dummy/config/application.rb +45 -0
- data/spec/dummy/config/boot.rb +10 -0
- data/spec/dummy/config/database.yml +25 -0
- data/spec/dummy/config/environment.rb +5 -0
- data/spec/dummy/config/environments/development.rb +30 -0
- data/spec/dummy/config/environments/production.rb +60 -0
- data/spec/dummy/config/environments/test.rb +39 -0
- data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy/config/initializers/devise.rb +209 -0
- data/spec/dummy/config/initializers/inflections.rb +10 -0
- data/spec/dummy/config/initializers/mime_types.rb +6 -0
- data/spec/dummy/config/initializers/secret_token.rb +7 -0
- data/spec/dummy/config/initializers/session_store.rb +8 -0
- data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/spec/dummy/config/locales/en.yml +5 -0
- data/spec/dummy/config/routes.rb +60 -0
- data/spec/dummy/config.ru +4 -0
- data/spec/dummy/db/migrate/006_create_items.rb +36 -0
- data/spec/dummy/db/migrate/124_create_bookstores.rb +21 -0
- data/spec/dummy/db/migrate/20111201121844_create_roles.rb +12 -0
- data/spec/dummy/db/migrate/20111201155456_create_users.rb +13 -0
- data/spec/dummy/db/migrate/20111201155513_add_devise_to_users.rb +31 -0
- data/spec/dummy/db/migrate/20111201163342_create_user_groups.rb +12 -0
- data/spec/dummy/db/migrate/20111201163718_create_user_has_roles.rb +10 -0
- data/spec/dummy/db/schema.rb +156 -0
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/dummy/log/development.log +0 -0
- data/spec/dummy/log/sunspot-solr-test.log +222 -0
- data/spec/dummy/log/test.log +137771 -0
- data/spec/dummy/public/404.html +26 -0
- data/spec/dummy/public/422.html +26 -0
- data/spec/dummy/public/500.html +26 -0
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/dummy/script/rails +6 -0
- data/spec/dummy/solr/conf/admin-extra.html +31 -0
- data/spec/dummy/solr/conf/elevate.xml +36 -0
- data/spec/dummy/solr/conf/mapping-ISOLatin1Accent.txt +246 -0
- data/spec/dummy/solr/conf/protwords.txt +21 -0
- data/spec/dummy/solr/conf/schema.xml +238 -0
- data/spec/dummy/solr/conf/scripts.conf +24 -0
- data/spec/dummy/solr/conf/solrconfig.xml +934 -0
- data/spec/dummy/solr/conf/spellings.txt +2 -0
- data/spec/dummy/solr/conf/stopwords.txt +58 -0
- data/spec/dummy/solr/conf/synonyms.txt +31 -0
- data/spec/dummy/solr/data/test/index/segments.gen +0 -0
- data/spec/dummy/solr/data/test/index/segments_1 +0 -0
- data/spec/dummy/solr/data/test/spellchecker/segments.gen +0 -0
- data/spec/dummy/solr/data/test/spellchecker/segments_1 +0 -0
- data/spec/factories/bookstore.rb +5 -0
- data/spec/factories/order.rb +6 -0
- data/spec/factories/order_list.rb +7 -0
- data/spec/factories/purchase_request.rb +6 -0
- data/spec/factories/user.rb +34 -0
- data/spec/fixtures/order_lists.yml +40 -0
- data/spec/fixtures/orders.yml +50 -0
- data/spec/fixtures/purchase_requests.yml +129 -0
- data/spec/fixtures/roles.yml +21 -0
- data/spec/fixtures/user_has_roles.yml +41 -0
- data/spec/fixtures/users.yml +69 -0
- data/spec/models/order_list_spec.rb +24 -0
- data/spec/models/order_spec.rb +21 -0
- data/spec/models/purchase_request_spec.rb +31 -0
- data/spec/spec_helper.rb +44 -0
- data/spec/support/controller_macros.rb +48 -0
- data/spec/support/devise.rb +4 -0
- 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
|
data/spec/dummy/Rakefile
ADDED
@@ -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,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
|