enju_trunk_subject 1.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (280) hide show
  1. checksums.yaml +15 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.rdoc +3 -0
  4. data/Rakefile +36 -0
  5. data/app/controllers/classification_types_controller.rb +13 -0
  6. data/app/controllers/classifications_controller.rb +114 -0
  7. data/app/controllers/subject_has_classifications_controller.rb +97 -0
  8. data/app/controllers/subject_heading_type_has_subjects_controller.rb +80 -0
  9. data/app/controllers/subject_heading_types_controller.rb +13 -0
  10. data/app/controllers/subject_types_controller.rb +13 -0
  11. data/app/controllers/subjects_controller.rb +216 -0
  12. data/app/controllers/work_has_subjects_controller.rb +107 -0
  13. data/app/models/classification.rb +89 -0
  14. data/app/models/classification_type.rb +20 -0
  15. data/app/models/enju_subject/ability.rb +55 -0
  16. data/app/models/subject.rb +100 -0
  17. data/app/models/subject_has_classification.rb +37 -0
  18. data/app/models/subject_heading_type.rb +21 -0
  19. data/app/models/subject_heading_type_has_subject.rb +22 -0
  20. data/app/models/subject_type.rb +20 -0
  21. data/app/models/work_has_subject.rb +35 -0
  22. data/app/views/classification_types/_form.html.erb +19 -0
  23. data/app/views/classification_types/edit.html.erb +13 -0
  24. data/app/views/classification_types/index.html.erb +45 -0
  25. data/app/views/classification_types/new.html.erb +12 -0
  26. data/app/views/classification_types/show.html.erb +30 -0
  27. data/app/views/classifications/_form.html.erb +27 -0
  28. data/app/views/classifications/edit.html.erb +13 -0
  29. data/app/views/classifications/index.html.erb +54 -0
  30. data/app/views/classifications/new.html.erb +12 -0
  31. data/app/views/classifications/show.html.erb +34 -0
  32. data/app/views/manifestations/_classification_detail.html.erb +14 -0
  33. data/app/views/manifestations/_subject_detail.html.erb +14 -0
  34. data/app/views/manifestations/_subject_facet.html.erb +18 -0
  35. data/app/views/manifestations/_subject_form.html.erb +21 -0
  36. data/app/views/subject_has_classifications/edit.html.erb +30 -0
  37. data/app/views/subject_has_classifications/index.html.erb +38 -0
  38. data/app/views/subject_has_classifications/new.html.erb +32 -0
  39. data/app/views/subject_has_classifications/show.html.erb +22 -0
  40. data/app/views/subject_heading_type_has_subjects/edit.html.erb +28 -0
  41. data/app/views/subject_heading_type_has_subjects/index.html.erb +30 -0
  42. data/app/views/subject_heading_type_has_subjects/new.html.erb +27 -0
  43. data/app/views/subject_heading_type_has_subjects/show.html.erb +23 -0
  44. data/app/views/subject_heading_types/_form.html.erb +19 -0
  45. data/app/views/subject_heading_types/edit.html.erb +13 -0
  46. data/app/views/subject_heading_types/index.html.erb +43 -0
  47. data/app/views/subject_heading_types/new.html.erb +12 -0
  48. data/app/views/subject_heading_types/show.html.erb +27 -0
  49. data/app/views/subject_types/_form.html.erb +19 -0
  50. data/app/views/subject_types/edit.html.erb +13 -0
  51. data/app/views/subject_types/index.html.erb +43 -0
  52. data/app/views/subject_types/new.html.erb +12 -0
  53. data/app/views/subject_types/show.html.erb +29 -0
  54. data/app/views/subjects/_form.html.erb +42 -0
  55. data/app/views/subjects/_index.html.erb +48 -0
  56. data/app/views/subjects/_index_classification.html.erb +57 -0
  57. data/app/views/subjects/_index_work.html.erb +60 -0
  58. data/app/views/subjects/_show_work_list.html.erb +15 -0
  59. data/app/views/subjects/edit.html.erb +13 -0
  60. data/app/views/subjects/index.atom.builder +10 -0
  61. data/app/views/subjects/index.html.erb +7 -0
  62. data/app/views/subjects/index.rss.builder +29 -0
  63. data/app/views/subjects/new.html.erb +12 -0
  64. data/app/views/subjects/show.html.erb +69 -0
  65. data/app/views/subjects/show.js.erb +1 -0
  66. data/app/views/work_has_subjects/_form.html.erb +24 -0
  67. data/app/views/work_has_subjects/edit.html.erb +29 -0
  68. data/app/views/work_has_subjects/index.html.erb +31 -0
  69. data/app/views/work_has_subjects/new.html.erb +42 -0
  70. data/app/views/work_has_subjects/show.html.erb +25 -0
  71. data/config/locales/translation_en.yml +35 -0
  72. data/config/locales/translation_ja.yml +39 -0
  73. data/config/routes.rb +7 -0
  74. data/db/fixtures/classification_types.yml +7 -0
  75. data/db/fixtures/subject_types.yml +28 -0
  76. data/db/migrate/029_create_subjects.rb +28 -0
  77. data/db/migrate/142_create_classifications.rb +19 -0
  78. data/db/migrate/144_create_classification_types.rb +16 -0
  79. data/db/migrate/145_create_subject_heading_types.rb +16 -0
  80. data/db/migrate/146_create_subject_types.rb +16 -0
  81. data/db/migrate/20110913120629_add_lft_and_rgt_to_classification.rb +11 -0
  82. data/db/migrate/20140427142354_add_classifiation_identifier_to_classification.rb +6 -0
  83. data/lib/enju_subject.rb +33 -0
  84. data/lib/enju_subject/engine.rb +8 -0
  85. data/lib/enju_subject/manifestation.rb +31 -0
  86. data/lib/enju_subject/master_model.rb +41 -0
  87. data/lib/enju_subject/version.rb +3 -0
  88. data/lib/generators/enju_subject/setup/USAGE +8 -0
  89. data/lib/generators/enju_subject/setup/setup_generator.rb +10 -0
  90. data/lib/generators/enju_subject/setup/templates/db/fixtures/classification_types.yml +13 -0
  91. data/lib/generators/enju_subject/setup/templates/db/fixtures/subject_heading_types.yml +39 -0
  92. data/lib/generators/enju_subject/setup/templates/db/fixtures/subject_types.yml +28 -0
  93. data/lib/tasks/enju_subject_tasks.rake +19 -0
  94. data/spec/controllers/classification_types_controller_spec.rb +445 -0
  95. data/spec/controllers/classifications_controller_spec.rb +441 -0
  96. data/spec/controllers/subject_heading_types_controller_spec.rb +445 -0
  97. data/spec/controllers/subject_types_controller_spec.rb +447 -0
  98. data/spec/controllers/subjects_controller_spec.rb +437 -0
  99. data/spec/dummy/Rakefile +7 -0
  100. data/spec/dummy/app/assets/javascripts/application.js +9 -0
  101. data/spec/dummy/app/assets/stylesheets/application.css +7 -0
  102. data/spec/dummy/app/controllers/application_controller.rb +47 -0
  103. data/spec/dummy/app/helpers/application_helper.rb +21 -0
  104. data/spec/dummy/app/models/ability.rb +59 -0
  105. data/spec/dummy/app/models/setting.rb +4 -0
  106. data/spec/dummy/app/models/user.rb +43 -0
  107. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  108. data/spec/dummy/config.ru +4 -0
  109. data/spec/dummy/config/application.rb +46 -0
  110. data/spec/dummy/config/application.yml +38 -0
  111. data/spec/dummy/config/boot.rb +10 -0
  112. data/spec/dummy/config/database.yml +25 -0
  113. data/spec/dummy/config/environment.rb +5 -0
  114. data/spec/dummy/config/environments/development.rb +30 -0
  115. data/spec/dummy/config/environments/production.rb +60 -0
  116. data/spec/dummy/config/environments/test.rb +39 -0
  117. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  118. data/spec/dummy/config/initializers/devise.rb +207 -0
  119. data/spec/dummy/config/initializers/inflections.rb +10 -0
  120. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  121. data/spec/dummy/config/initializers/secret_token.rb +7 -0
  122. data/spec/dummy/config/initializers/session_store.rb +8 -0
  123. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  124. data/spec/dummy/config/locales/devise.en.yml +57 -0
  125. data/spec/dummy/config/locales/en.yml +18 -0
  126. data/spec/dummy/config/locales/ja.yml +18 -0
  127. data/spec/dummy/config/routes.rb +60 -0
  128. data/spec/dummy/db/fixtures/roles.yml +25 -0
  129. data/spec/dummy/db/migrate/001_create_agents.rb +53 -0
  130. data/spec/dummy/db/migrate/005_create_manifestations.rb +56 -0
  131. data/spec/dummy/db/migrate/006_create_items.rb +24 -0
  132. data/spec/dummy/db/migrate/012_create_owns.rb +12 -0
  133. data/spec/dummy/db/migrate/015_create_creates.rb +12 -0
  134. data/spec/dummy/db/migrate/047_create_produces.rb +12 -0
  135. data/spec/dummy/db/migrate/059_create_libraries.rb +28 -0
  136. data/spec/dummy/db/migrate/069_create_shelves.rb +15 -0
  137. data/spec/dummy/db/migrate/073_create_carrier_types.rb +11 -0
  138. data/spec/dummy/db/migrate/077_create_user_groups.rb +12 -0
  139. data/spec/dummy/db/migrate/080_create_library_groups.rb +18 -0
  140. data/spec/dummy/db/migrate/112_create_frequencies.rb +12 -0
  141. data/spec/dummy/db/migrate/117_create_form_of_works.rb +12 -0
  142. data/spec/dummy/db/migrate/120_create_baskets.rb +12 -0
  143. data/spec/dummy/db/migrate/124_create_bookstores.rb +17 -0
  144. data/spec/dummy/db/migrate/125_create_donates.rb +12 -0
  145. data/spec/dummy/db/migrate/130_create_request_status_types.rb +12 -0
  146. data/spec/dummy/db/migrate/131_create_request_types.rb +12 -0
  147. data/spec/dummy/db/migrate/20080830154109_create_realizes.rb +13 -0
  148. data/spec/dummy/db/migrate/20080830172106_create_exemplifies.rb +13 -0
  149. data/spec/dummy/db/migrate/20080905191442_create_agent_types.rb +12 -0
  150. data/spec/dummy/db/migrate/20081006090811_create_subscriptions.rb +17 -0
  151. data/spec/dummy/db/migrate/20081006093246_create_subscribes.rb +14 -0
  152. data/spec/dummy/db/migrate/20081023092436_create_search_engines.rb +17 -0
  153. data/spec/dummy/db/migrate/20081025083323_create_countries.rb +28 -0
  154. data/spec/dummy/db/migrate/20081025083905_create_languages.rb +23 -0
  155. data/spec/dummy/db/migrate/20081027150907_create_picture_files.rb +15 -0
  156. data/spec/dummy/db/migrate/20081028083142_create_agent_import_files.rb +22 -0
  157. data/spec/dummy/db/migrate/20081028083208_create_resource_import_files.rb +22 -0
  158. data/spec/dummy/db/migrate/20090705133942_add_attachments_picture_to_picture_file.rb +15 -0
  159. data/spec/dummy/db/migrate/20090705212043_add_attachments_attachment_to_manifestation.rb +15 -0
  160. data/spec/dummy/db/migrate/20090719201843_create_extents.rb +12 -0
  161. data/spec/dummy/db/migrate/20090720091106_create_medium_of_performances.rb +12 -0
  162. data/spec/dummy/db/migrate/20090720091429_create_content_types.rb +12 -0
  163. data/spec/dummy/db/migrate/20090812151902_create_agent_relationship_types.rb +12 -0
  164. data/spec/dummy/db/migrate/20091012101112_add_dcndl_schema.rb +27 -0
  165. data/spec/dummy/db/migrate/20091025080447_create_licenses.rb +12 -0
  166. data/spec/dummy/db/migrate/20091202124834_create_versions.rb +18 -0
  167. data/spec/dummy/db/migrate/20091214131723_create_series_statements.rb +13 -0
  168. data/spec/dummy/db/migrate/20100129142347_create_import_requests.rb +15 -0
  169. data/spec/dummy/db/migrate/20100211105551_add_admin_networks_to_library_group.rb +9 -0
  170. data/spec/dummy/db/migrate/20100223121519_rename_series_statement_title_to_original_title.rb +13 -0
  171. data/spec/dummy/db/migrate/20100321235924_add_series_statement_identifier_to_series_statement.rb +10 -0
  172. data/spec/dummy/db/migrate/20100525124311_create_manifestation_relationships.rb +13 -0
  173. data/spec/dummy/db/migrate/20100606073747_create_agent_relationships.rb +13 -0
  174. data/spec/dummy/db/migrate/20100607044753_create_manifestation_relationship_types.rb +12 -0
  175. data/spec/dummy/db/migrate/20100814091104_add_position_to_agent_relationship.rb +11 -0
  176. data/spec/dummy/db/migrate/20100925043847_create_resource_import_results.rb +15 -0
  177. data/spec/dummy/db/migrate/20100925074559_create_agent_import_results.rb +12 -0
  178. data/spec/dummy/db/migrate/20101212070145_add_acquired_at_to_item.rb +9 -0
  179. data/spec/dummy/db/migrate/20110222073537_add_url_to_library_group.rb +9 -0
  180. data/spec/dummy/db/migrate/20110301035123_add_pub_date_to_manifestation.rb +9 -0
  181. data/spec/dummy/db/migrate/20110301121550_add_birth_date_and_death_date_to_agent.rb +11 -0
  182. data/spec/dummy/db/migrate/20110425133109_add_issn_to_series_statement.rb +9 -0
  183. data/spec/dummy/db/migrate/20110603184217_add_edit_mode_to_resource_import_file.rb +9 -0
  184. data/spec/dummy/db/migrate/20110618091240_add_periodical_to_series_statement.rb +9 -0
  185. data/spec/dummy/db/migrate/20110619064807_add_edition_string_to_manifestation.rb +9 -0
  186. data/spec/dummy/db/migrate/20110620173525_add_bookstore_id_to_item.rb +11 -0
  187. data/spec/dummy/db/migrate/20110627034940_create_series_statement_merge_lists.rb +9 -0
  188. data/spec/dummy/db/migrate/20110627035057_create_series_statement_merges.rb +12 -0
  189. data/spec/dummy/db/migrate/20110627122938_add_number_of_day_to_notify_overdue_to_user_group.rb +13 -0
  190. data/spec/dummy/db/migrate/20110820131417_create_series_has_manifestations.rb +13 -0
  191. data/spec/dummy/db/migrate/20110916053430_rename_manifestation_number_list_to_number_string.rb +13 -0
  192. data/spec/dummy/db/migrate/20110916091020_add_volume_number_to_manifestation.rb +13 -0
  193. data/spec/dummy/db/migrate/20110916103953_add_manifestaiton_id_to_series_statement.rb +10 -0
  194. data/spec/dummy/db/migrate/20110918162329_add_note_to_series_statement.rb +9 -0
  195. data/spec/dummy/db/migrate/20111009183423_add_ndc_to_manifestation.rb +9 -0
  196. data/spec/dummy/db/migrate/20111124110059_create_create_types.rb +12 -0
  197. data/spec/dummy/db/migrate/20111124110319_create_realize_types.rb +12 -0
  198. data/spec/dummy/db/migrate/20111124110355_create_produce_types.rb +12 -0
  199. data/spec/dummy/db/migrate/20111124112131_add_create_type_to_create.rb +7 -0
  200. data/spec/dummy/db/migrate/20111201121844_create_roles.rb +12 -0
  201. data/spec/dummy/db/migrate/20111201155456_create_users.rb +8 -0
  202. data/spec/dummy/db/migrate/20111201155513_add_devise_to_users.rb +49 -0
  203. data/spec/dummy/db/migrate/20111201163718_create_user_has_roles.rb +10 -0
  204. data/spec/dummy/db/migrate/20120105074911_add_isil_to_library.rb +5 -0
  205. data/spec/dummy/db/migrate/20120125152919_add_title_subseries_transcription_to_series_statement.rb +6 -0
  206. data/spec/dummy/db/migrate/20120129014038_create_budget_types.rb +12 -0
  207. data/spec/dummy/db/migrate/20120129020544_add_budget_type_id_to_item.rb +6 -0
  208. data/spec/dummy/db/migrate/20120319120638_add_content_type_id_to_manifestation.rb +6 -0
  209. data/spec/dummy/db/migrate/20120319173203_create_accepts.rb +14 -0
  210. data/spec/dummy/db/migrate/20120410104851_add_year_of_publication_to_manifestation.rb +5 -0
  211. data/spec/dummy/db/migrate/20120413072700_add_picture_meta_to_picture_file.rb +5 -0
  212. data/spec/dummy/db/migrate/20120413100352_add_fingerprint_to_picture_file.rb +5 -0
  213. data/spec/dummy/db/migrate/20120413161340_add_fingerprint_to_resource_import_file.rb +5 -0
  214. data/spec/dummy/db/migrate/20120413161403_add_fingerprint_to_agent_import_file.rb +5 -0
  215. data/spec/dummy/db/migrate/20120413170705_add_error_message_to_resource_import_file.rb +5 -0
  216. data/spec/dummy/db/migrate/20120413170720_add_error_message_to_agent_import_file.rb +5 -0
  217. data/spec/dummy/db/migrate/20120415060308_rename_resource_import_file_imported_at_to_executed_at.rb +9 -0
  218. data/spec/dummy/db/migrate/20120415164821_add_attachment_meta_to_manifestation.rb +5 -0
  219. data/spec/dummy/db/migrate/20120418081407_add_month_of_publication_to_manifestation.rb +5 -0
  220. data/spec/dummy/db/migrate/20120510140958_add_closed_to_shelf.rb +5 -0
  221. data/spec/dummy/db/migrate/20120511072422_add_agent_identifier_to_agent.rb +6 -0
  222. data/spec/dummy/db/migrate/20120602141129_add_edit_mode_to_agent_import_file.rb +5 -0
  223. data/spec/dummy/db/migrate/20130221154434_add_additional_attributes_to_user.rb +26 -0
  224. data/spec/dummy/db/migrate/20130421093852_add_periodical_to_manifestation.rb +5 -0
  225. data/spec/dummy/db/migrate/20130421155019_add_creator_string_to_series_statement.rb +7 -0
  226. data/spec/dummy/db/migrate/20130421164124_add_series_master_to_series_statement.rb +5 -0
  227. data/spec/dummy/db/migrate/20130506175303_create_identifier_types.rb +12 -0
  228. data/spec/dummy/db/migrate/20130506175834_create_identifiers.rb +15 -0
  229. data/spec/dummy/db/migrate/20130509185724_add_statement_of_responsibility_to_manifestation.rb +5 -0
  230. data/spec/dummy/db/schema.rb +901 -0
  231. data/spec/dummy/db/seeds.rb +32 -0
  232. data/spec/dummy/public/404.html +26 -0
  233. data/spec/dummy/public/422.html +26 -0
  234. data/spec/dummy/public/500.html +26 -0
  235. data/spec/dummy/public/favicon.ico +0 -0
  236. data/spec/dummy/script/rails +6 -0
  237. data/spec/dummy/spec/fixtures/subjects.yml +72 -0
  238. data/spec/dummy/test/fixtures/user_groups.yml +13 -0
  239. data/spec/dummy/test/fixtures/user_has_roles.yml +9 -0
  240. data/spec/dummy/test/fixtures/users.yml +11 -0
  241. data/spec/dummy/test/unit/user_group_test.rb +7 -0
  242. data/spec/dummy/test/unit/user_has_role_test.rb +7 -0
  243. data/spec/dummy/test/unit/user_test.rb +7 -0
  244. data/spec/factories/classification.rb +6 -0
  245. data/spec/factories/classification_type.rb +5 -0
  246. data/spec/factories/manifestation.rb +6 -0
  247. data/spec/factories/subject.rb +7 -0
  248. data/spec/factories/subject_heading_type.rb +5 -0
  249. data/spec/factories/subject_heading_type_has_subject.rb +6 -0
  250. data/spec/factories/subject_type.rb +5 -0
  251. data/spec/factories/user.rb +34 -0
  252. data/spec/fixtures/agent_types.yml +35 -0
  253. data/spec/fixtures/agents.yml +143 -0
  254. data/spec/fixtures/carrier_types.yml +51 -0
  255. data/spec/fixtures/classification_types.yml +188 -0
  256. data/spec/fixtures/classifications.yml +118 -0
  257. data/spec/fixtures/languages.yml +1901 -0
  258. data/spec/fixtures/library_groups.yml +33 -0
  259. data/spec/fixtures/manifestations.yml +22 -0
  260. data/spec/fixtures/roles.yml +21 -0
  261. data/spec/fixtures/shtsv.tsv +3 -0
  262. data/spec/fixtures/subject_heading_types.yml +39 -0
  263. data/spec/fixtures/subject_types.yml +42 -0
  264. data/spec/fixtures/subjects.yml +80 -0
  265. data/spec/fixtures/user_groups.yml +25 -0
  266. data/spec/fixtures/user_has_roles.yml +41 -0
  267. data/spec/fixtures/users.yml +69 -0
  268. data/spec/models/classification_spec.rb +46 -0
  269. data/spec/models/classification_type_spec.rb +21 -0
  270. data/spec/models/subject_heading_type_spec.rb +21 -0
  271. data/spec/models/subject_spec.rb +33 -0
  272. data/spec/models/subject_type_spec.rb +21 -0
  273. data/spec/requests/subjects_spec.rb +9 -0
  274. data/spec/routing/subject_heading_types_routing_spec.rb +35 -0
  275. data/spec/routing/subject_types_routing_spec.rb +35 -0
  276. data/spec/routing/subjects_routing_spec.rb +35 -0
  277. data/spec/spec_helper.rb +45 -0
  278. data/spec/support/controller_macros.rb +48 -0
  279. data/spec/support/devise.rb +3 -0
  280. metadata +675 -0
@@ -0,0 +1,447 @@
1
+ require 'spec_helper'
2
+ require 'sunspot/rails/spec_helper'
3
+
4
+ describe SubjectTypesController do
5
+ fixtures :all
6
+ disconnect_sunspot
7
+
8
+ def valid_attributes
9
+ FactoryGirl.attributes_for(:subject_type)
10
+ end
11
+
12
+ describe "GET index" do
13
+ before(:each) do
14
+ FactoryGirl.create(:subject_type)
15
+ end
16
+
17
+ describe "When logged in as Administrator" do
18
+ login_admin
19
+
20
+ it "assigns all subject_types as @subject_types" do
21
+ get :index
22
+ assigns(:subject_types).should eq(SubjectType.all)
23
+ end
24
+ end
25
+
26
+ describe "When logged in as Librarian" do
27
+ login_librarian
28
+
29
+ it "assigns all subject_types as @subject_types" do
30
+ get :index
31
+ assigns(:subject_types).should eq(SubjectType.all)
32
+ end
33
+ end
34
+
35
+ describe "When logged in as User" do
36
+ login_user
37
+
38
+ it "assigns all subject_types as @subject_types" do
39
+ get :index
40
+ assigns(:subject_types).should be_empty
41
+ response.should be_forbidden
42
+ end
43
+ end
44
+
45
+ describe "When not logged in" do
46
+ it "assigns all subject_types as @subject_types" do
47
+ get :index
48
+ assigns(:subject_types).should be_empty
49
+ response.should redirect_to(new_user_session_url)
50
+ end
51
+ end
52
+ end
53
+
54
+ describe "GET show" do
55
+ describe "When logged in as Administrator" do
56
+ login_admin
57
+
58
+ it "assigns the requested subject_type as @subject_type" do
59
+ subject_type = FactoryGirl.create(:subject_type)
60
+ get :show, :id => subject_type.id
61
+ assigns(:subject_type).should eq(subject_type)
62
+ end
63
+ end
64
+
65
+ describe "When logged in as Librarian" do
66
+ login_librarian
67
+
68
+ it "assigns the requested subject_type as @subject_type" do
69
+ subject_type = FactoryGirl.create(:subject_type)
70
+ get :show, :id => subject_type.id
71
+ assigns(:subject_type).should eq(subject_type)
72
+ end
73
+ end
74
+
75
+ describe "When logged in as User" do
76
+ login_user
77
+
78
+ it "assigns the requested subject_type as @subject_type" do
79
+ subject_type = FactoryGirl.create(:subject_type)
80
+ get :show, :id => subject_type.id
81
+ assigns(:subject_type).should eq(subject_type)
82
+ end
83
+ end
84
+
85
+ describe "When not logged in" do
86
+ it "assigns the requested subject_type as @subject_type" do
87
+ subject_type = FactoryGirl.create(:subject_type)
88
+ get :show, :id => subject_type.id
89
+ assigns(:subject_type).should eq(subject_type)
90
+ end
91
+ end
92
+ end
93
+
94
+ describe "GET new" do
95
+ describe "When logged in as Administrator" do
96
+ login_admin
97
+
98
+ it "assigns the requested subject_type as @subject_type" do
99
+ get :new
100
+ assigns(:subject_type).should_not be_valid
101
+ response.should be_success
102
+ end
103
+ end
104
+
105
+ describe "When logged in as Librarian" do
106
+ login_librarian
107
+
108
+ it "should not assign the requested subject_type as @subject_type" do
109
+ get :new
110
+ assigns(:subject_type).should_not be_valid
111
+ response.should be_forbidden
112
+ end
113
+ end
114
+
115
+ describe "When logged in as User" do
116
+ login_user
117
+
118
+ it "should not assign the requested subject_type as @subject_type" do
119
+ get :new
120
+ assigns(:subject_type).should_not be_valid
121
+ response.should be_forbidden
122
+ end
123
+ end
124
+
125
+ describe "When not logged in" do
126
+ it "should not assign the requested subject_type as @subject_type" do
127
+ get :new
128
+ assigns(:subject_type).should_not be_valid
129
+ response.should redirect_to(new_user_session_url)
130
+ end
131
+ end
132
+ end
133
+
134
+ describe "GET edit" do
135
+ describe "When logged in as Administrator" do
136
+ login_admin
137
+
138
+ it "assigns the requested subject_type as @subject_type" do
139
+ subject_type = FactoryGirl.create(:subject_type)
140
+ get :edit, :id => subject_type.id
141
+ assigns(:subject_type).should eq(subject_type)
142
+ end
143
+ end
144
+
145
+ describe "When logged in as Librarian" do
146
+ login_librarian
147
+
148
+ it "assigns the requested subject_type as @subject_type" do
149
+ subject_type = FactoryGirl.create(:subject_type)
150
+ get :edit, :id => subject_type.id
151
+ response.should be_forbidden
152
+ end
153
+ end
154
+
155
+ describe "When logged in as User" do
156
+ login_user
157
+
158
+ it "assigns the requested subject_type as @subject_type" do
159
+ subject_type = FactoryGirl.create(:subject_type)
160
+ get :edit, :id => subject_type.id
161
+ response.should be_forbidden
162
+ end
163
+ end
164
+
165
+ describe "When not logged in" do
166
+ it "should not assign the requested subject_type as @subject_type" do
167
+ subject_type = FactoryGirl.create(:subject_type)
168
+ get :edit, :id => subject_type.id
169
+ response.should redirect_to(new_user_session_url)
170
+ end
171
+ end
172
+ end
173
+
174
+ describe "POST create" do
175
+ before(:each) do
176
+ @attrs = valid_attributes
177
+ @invalid_attrs = {:name => ''}
178
+ end
179
+
180
+ describe "When logged in as Administrator" do
181
+ login_admin
182
+
183
+ describe "with valid params" do
184
+ it "assigns a newly created subject_type as @subject_type" do
185
+ post :create, :subject_type => @attrs
186
+ assigns(:subject_type).should be_valid
187
+ end
188
+
189
+ it "redirects to the created agent" do
190
+ post :create, :subject_type => @attrs
191
+ response.should redirect_to(assigns(:subject_type))
192
+ end
193
+ end
194
+
195
+ describe "with invalid params" do
196
+ it "assigns a newly created but unsaved subject_type as @subject_type" do
197
+ post :create, :subject_type => @invalid_attrs
198
+ assigns(:subject_type).should_not be_valid
199
+ end
200
+
201
+ it "should be successful" do
202
+ post :create, :subject_type => @invalid_attrs
203
+ response.should be_success
204
+ end
205
+ end
206
+ end
207
+
208
+ describe "When logged in as Librarian" do
209
+ login_librarian
210
+
211
+ describe "with valid params" do
212
+ it "assigns a newly created subject_type as @subject_type" do
213
+ post :create, :subject_type => @attrs
214
+ assigns(:subject_type).should be_valid
215
+ end
216
+
217
+ it "should be forbidden" do
218
+ post :create, :subject_type => @attrs
219
+ response.should be_forbidden
220
+ end
221
+ end
222
+
223
+ describe "with invalid params" do
224
+ it "assigns a newly created but unsaved subject_type as @subject_type" do
225
+ post :create, :subject_type => @invalid_attrs
226
+ assigns(:subject_type).should_not be_valid
227
+ end
228
+
229
+ it "should be forbidden" do
230
+ post :create, :subject_type => @invalid_attrs
231
+ response.should be_forbidden
232
+ end
233
+ end
234
+ end
235
+
236
+ describe "When logged in as User" do
237
+ login_user
238
+
239
+ describe "with valid params" do
240
+ it "assigns a newly created subject_type as @subject_type" do
241
+ post :create, :subject_type => @attrs
242
+ assigns(:subject_type).should be_valid
243
+ end
244
+
245
+ it "should be forbidden" do
246
+ post :create, :subject_type => @attrs
247
+ response.should be_forbidden
248
+ end
249
+ end
250
+
251
+ describe "with invalid params" do
252
+ it "assigns a newly created but unsaved subject_type as @subject_type" do
253
+ post :create, :subject_type => @invalid_attrs
254
+ assigns(:subject_type).should_not be_valid
255
+ end
256
+
257
+ it "should be forbidden" do
258
+ post :create, :subject_type => @invalid_attrs
259
+ response.should be_forbidden
260
+ end
261
+ end
262
+ end
263
+
264
+ describe "When not logged in" do
265
+ describe "with valid params" do
266
+ it "assigns a newly created subject_type as @subject_type" do
267
+ post :create, :subject_type => @attrs
268
+ assigns(:subject_type).should be_valid
269
+ end
270
+
271
+ it "should be forbidden" do
272
+ post :create, :subject_type => @attrs
273
+ response.should redirect_to(new_user_session_url)
274
+ end
275
+ end
276
+
277
+ describe "with invalid params" do
278
+ it "assigns a newly created but unsaved subject_type as @subject_type" do
279
+ post :create, :subject_type => @invalid_attrs
280
+ assigns(:subject_type).should_not be_valid
281
+ end
282
+
283
+ it "should be forbidden" do
284
+ post :create, :subject_type => @invalid_attrs
285
+ response.should redirect_to(new_user_session_url)
286
+ end
287
+ end
288
+ end
289
+ end
290
+
291
+ describe "PUT update" do
292
+ before(:each) do
293
+ @subject_type = FactoryGirl.create(:subject_type)
294
+ @attrs = valid_attributes
295
+ @invalid_attrs = {:name => ''}
296
+ end
297
+
298
+ describe "When logged in as Administrator" do
299
+ login_admin
300
+
301
+ describe "with valid params" do
302
+ it "updates the requested subject_type" do
303
+ put :update, :id => @subject_type.id, :subject_type => @attrs
304
+ end
305
+
306
+ it "assigns the requested subject_type as @subject_type" do
307
+ put :update, :id => @subject_type.id, :subject_type => @attrs
308
+ assigns(:subject_type).should eq(@subject_type)
309
+ end
310
+
311
+ it "moves its position when specified" do
312
+ put :update, :id => @subject_type.id, :subject_type => @attrs, :move => 'lower'
313
+ response.should redirect_to(subject_types_url)
314
+ end
315
+ end
316
+
317
+ describe "with invalid params" do
318
+ it "assigns the requested subject_type as @subject_type" do
319
+ put :update, :id => @subject_type.id, :subject_type => @invalid_attrs
320
+ response.should render_template("edit")
321
+ end
322
+ end
323
+ end
324
+
325
+ describe "When logged in as Librarian" do
326
+ login_librarian
327
+
328
+ describe "with valid params" do
329
+ it "updates the requested subject_type" do
330
+ put :update, :id => @subject_type.id, :subject_type => @attrs
331
+ end
332
+
333
+ it "assigns the requested subject_type as @subject_type" do
334
+ put :update, :id => @subject_type.id, :subject_type => @attrs
335
+ assigns(:subject_type).should eq(@subject_type)
336
+ response.should be_forbidden
337
+ end
338
+ end
339
+
340
+ describe "with invalid params" do
341
+ it "assigns the requested subject_type as @subject_type" do
342
+ put :update, :id => @subject_type.id, :subject_type => @invalid_attrs
343
+ response.should be_forbidden
344
+ end
345
+ end
346
+ end
347
+
348
+ describe "When logged in as User" do
349
+ login_user
350
+
351
+ describe "with valid params" do
352
+ it "updates the requested subject_type" do
353
+ put :update, :id => @subject_type.id, :subject_type => @attrs
354
+ end
355
+
356
+ it "assigns the requested subject_type as @subject_type" do
357
+ put :update, :id => @subject_type.id, :subject_type => @attrs
358
+ assigns(:subject_type).should eq(@subject_type)
359
+ response.should be_forbidden
360
+ end
361
+ end
362
+
363
+ describe "with invalid params" do
364
+ it "assigns the requested subject_type as @subject_type" do
365
+ put :update, :id => @subject_type.id, :subject_type => @invalid_attrs
366
+ response.should be_forbidden
367
+ end
368
+ end
369
+ end
370
+
371
+ describe "When not logged in" do
372
+ describe "with valid params" do
373
+ it "updates the requested subject_type" do
374
+ put :update, :id => @subject_type.id, :subject_type => @attrs
375
+ end
376
+
377
+ it "should be forbidden" do
378
+ put :update, :id => @subject_type.id, :subject_type => @attrs
379
+ response.should redirect_to(new_user_session_url)
380
+ end
381
+ end
382
+
383
+ describe "with invalid params" do
384
+ it "assigns the requested subject_type as @subject_type" do
385
+ put :update, :id => @subject_type.id, :subject_type => @invalid_attrs
386
+ response.should redirect_to(new_user_session_url)
387
+ end
388
+ end
389
+ end
390
+ end
391
+
392
+ describe "DELETE destroy" do
393
+ before(:each) do
394
+ @subject_type = FactoryGirl.create(:subject_type)
395
+ end
396
+
397
+ describe "When logged in as Administrator" do
398
+ login_admin
399
+
400
+ it "destroys the requested subject_type" do
401
+ delete :destroy, :id => @subject_type.id
402
+ end
403
+
404
+ it "redirects to the subject_types list" do
405
+ delete :destroy, :id => @subject_type.id
406
+ response.should redirect_to(subject_types_url)
407
+ end
408
+ end
409
+
410
+ describe "When logged in as Librarian" do
411
+ login_librarian
412
+
413
+ it "destroys the requested subject_type" do
414
+ delete :destroy, :id => @subject_type.id
415
+ end
416
+
417
+ it "should be forbidden" do
418
+ delete :destroy, :id => @subject_type.id
419
+ response.should be_forbidden
420
+ end
421
+ end
422
+
423
+ describe "When logged in as User" do
424
+ login_user
425
+
426
+ it "destroys the requested subject_type" do
427
+ delete :destroy, :id => @subject_type.id
428
+ end
429
+
430
+ it "should be forbidden" do
431
+ delete :destroy, :id => @subject_type.id
432
+ response.should be_forbidden
433
+ end
434
+ end
435
+
436
+ describe "When not logged in" do
437
+ it "destroys the requested subject_type" do
438
+ delete :destroy, :id => @subject_type.id
439
+ end
440
+
441
+ it "should be forbidden" do
442
+ delete :destroy, :id => @subject_type.id
443
+ response.should redirect_to(new_user_session_url)
444
+ end
445
+ end
446
+ end
447
+ end
@@ -0,0 +1,437 @@
1
+ require 'spec_helper'
2
+
3
+ describe SubjectsController do
4
+ fixtures :all
5
+
6
+ def valid_attributes
7
+ FactoryGirl.attributes_for(:subject)
8
+ end
9
+
10
+ describe "GET index", :solr => true do
11
+ before do
12
+ Subject.reindex
13
+ end
14
+
15
+ describe "When logged in as Administrator" do
16
+ login_admin
17
+
18
+ it "assigns all subjects as @subjects" do
19
+ get :index
20
+ assigns(:subjects).should_not be_nil
21
+ end
22
+ end
23
+
24
+ describe "When logged in as Librarian" do
25
+ login_librarian
26
+
27
+ it "assigns all subjects as @subjects" do
28
+ get :index
29
+ assigns(:subjects).should_not be_nil
30
+ end
31
+ end
32
+
33
+ describe "When logged in as User" do
34
+ login_user
35
+
36
+ it "assigns all subjects as @subjects" do
37
+ get :index
38
+ assigns(:subjects).should_not be_nil
39
+ end
40
+ end
41
+
42
+ describe "When not logged in" do
43
+ it "assigns all subjects as @subjects" do
44
+ get :index
45
+ response.should be_success
46
+ assigns(:subjects).should_not be_nil
47
+ end
48
+ end
49
+ end
50
+
51
+ describe "GET show", :solr => true do
52
+ describe "When logged in as Administrator" do
53
+ login_admin
54
+
55
+ it "assigns the requested subject as @subject" do
56
+ subject = FactoryGirl.create(:subject)
57
+ get :show, :id => subject.id
58
+ assigns(:subject).should eq(subject)
59
+ end
60
+ end
61
+
62
+ describe "When logged in as Librarian" do
63
+ login_librarian
64
+
65
+ it "assigns the requested subject as @subject" do
66
+ subject = FactoryGirl.create(:subject)
67
+ get :show, :id => subject.id
68
+ assigns(:subject).should eq(subject)
69
+ end
70
+ end
71
+
72
+ describe "When logged in as User" do
73
+ login_user
74
+
75
+ it "assigns the requested subject as @subject" do
76
+ subject = FactoryGirl.create(:subject)
77
+ get :show, :id => subject.id
78
+ assigns(:subject).should eq(subject)
79
+ end
80
+ end
81
+
82
+ describe "When not logged in" do
83
+ it "assigns the requested subject as @subject" do
84
+ subject = FactoryGirl.create(:subject)
85
+ get :show, :id => subject.id
86
+ assigns(:subject).should eq(subject)
87
+ end
88
+ end
89
+ end
90
+
91
+ describe "GET new" do
92
+ describe "When logged in as Administrator" do
93
+ login_admin
94
+
95
+ it "assigns the requested subject as @subject" do
96
+ get :new
97
+ assigns(:subject).should_not be_valid
98
+ end
99
+ end
100
+
101
+ describe "When logged in as Librarian" do
102
+ login_librarian
103
+
104
+ it "assigns the requested subject as @subject" do
105
+ get :new
106
+ assigns(:subject).should_not be_valid
107
+ end
108
+ end
109
+
110
+ describe "When logged in as User" do
111
+ login_user
112
+
113
+ it "should not assign the requested subject as @subject" do
114
+ get :new
115
+ assigns(:subject).should_not be_valid
116
+ response.should be_forbidden
117
+ end
118
+ end
119
+
120
+ describe "When not logged in" do
121
+ it "should not assign the requested subject as @subject" do
122
+ get :new
123
+ assigns(:subject).should_not be_valid
124
+ response.should redirect_to(new_user_session_url)
125
+ end
126
+ end
127
+ end
128
+
129
+ describe "GET edit" do
130
+ describe "When logged in as Administrator" do
131
+ login_admin
132
+
133
+ it "assigns the requested subject as @subject" do
134
+ subject = FactoryGirl.create(:subject)
135
+ get :edit, :id => subject.id
136
+ assigns(:subject).should eq(subject)
137
+ end
138
+ end
139
+
140
+ describe "When logged in as Librarian" do
141
+ login_librarian
142
+
143
+ it "assigns the requested subject as @subject" do
144
+ subject = FactoryGirl.create(:subject)
145
+ get :edit, :id => subject.id
146
+ assigns(:subject).should eq(subject)
147
+ end
148
+ end
149
+
150
+ describe "When logged in as User" do
151
+ login_user
152
+
153
+ it "assigns the requested subject as @subject" do
154
+ subject = FactoryGirl.create(:subject)
155
+ get :edit, :id => subject.id
156
+ response.should be_forbidden
157
+ end
158
+ end
159
+
160
+ describe "When not logged in" do
161
+ it "should not assign the requested subject as @subject" do
162
+ subject = FactoryGirl.create(:subject)
163
+ get :edit, :id => subject.id
164
+ response.should redirect_to(new_user_session_url)
165
+ end
166
+ end
167
+ end
168
+
169
+ describe "POST create" do
170
+ before(:each) do
171
+ @attrs = valid_attributes
172
+ @invalid_attrs = {:term => ''}
173
+ end
174
+
175
+ describe "When logged in as Administrator" do
176
+ login_admin
177
+
178
+ describe "with valid params" do
179
+ it "assigns a newly created subject as @subject" do
180
+ post :create, :subject => @attrs
181
+ assigns(:subject).should be_valid
182
+ end
183
+
184
+ it "redirects to the created subject" do
185
+ post :create, :subject => @attrs
186
+ response.should redirect_to(subject_url(assigns(:subject)))
187
+ end
188
+ end
189
+
190
+ describe "with invalid params" do
191
+ it "assigns a newly created but unsaved subject as @subject" do
192
+ post :create, :subject => @invalid_attrs
193
+ assigns(:subject).should_not be_valid
194
+ end
195
+
196
+ it "re-renders the 'new' template" do
197
+ post :create, :subject => @invalid_attrs
198
+ response.should render_template("new")
199
+ end
200
+ end
201
+ end
202
+
203
+ describe "When logged in as Librarian" do
204
+ login_librarian
205
+
206
+ describe "with valid params" do
207
+ it "assigns a newly created subject as @subject" do
208
+ post :create, :subject => @attrs
209
+ assigns(:subject).should be_valid
210
+ end
211
+
212
+ it "should be forbidden" do
213
+ post :create, :subject => @attrs
214
+ response.should be_forbidden
215
+ end
216
+ end
217
+
218
+ describe "with invalid params" do
219
+ it "assigns a newly created but unsaved subject as @subject" do
220
+ post :create, :subject => @invalid_attrs
221
+ assigns(:subject).should_not be_valid
222
+ end
223
+
224
+ it "should be forbidden" do
225
+ post :create, :subject => @invalid_attrs
226
+ response.should be_forbidden
227
+ end
228
+ end
229
+ end
230
+
231
+ describe "When logged in as User" do
232
+ login_user
233
+
234
+ describe "with valid params" do
235
+ it "assigns a newly created subject as @subject" do
236
+ post :create, :subject => @attrs
237
+ assigns(:subject).should be_valid
238
+ end
239
+
240
+ it "should be forbidden" do
241
+ post :create, :subject => @attrs
242
+ response.should be_forbidden
243
+ end
244
+ end
245
+
246
+ describe "with invalid params" do
247
+ it "assigns a newly created but unsaved subject as @subject" do
248
+ post :create, :subject => @invalid_attrs
249
+ assigns(:subject).should_not be_valid
250
+ end
251
+
252
+ it "should be forbidden" do
253
+ post :create, :subject => @invalid_attrs
254
+ response.should be_forbidden
255
+ end
256
+ end
257
+ end
258
+
259
+ describe "When not logged in" do
260
+ describe "with valid params" do
261
+ it "assigns a newly created subject as @subject" do
262
+ post :create, :subject => @attrs
263
+ assigns(:subject).should be_valid
264
+ end
265
+
266
+ it "should be forbidden" do
267
+ post :create, :subject => @attrs
268
+ response.should redirect_to(new_user_session_url)
269
+ end
270
+ end
271
+
272
+ describe "with invalid params" do
273
+ it "assigns a newly created but unsaved subject as @subject" do
274
+ post :create, :subject => @invalid_attrs
275
+ assigns(:subject).should_not be_valid
276
+ end
277
+
278
+ it "should be forbidden" do
279
+ post :create, :subject => @invalid_attrs
280
+ response.should redirect_to(new_user_session_url)
281
+ end
282
+ end
283
+ end
284
+ end
285
+
286
+ describe "PUT update" do
287
+ before(:each) do
288
+ @subject = FactoryGirl.create(:subject)
289
+ @attrs = valid_attributes
290
+ @invalid_attrs = {:term => ''}
291
+ end
292
+
293
+ describe "When logged in as Administrator" do
294
+ login_admin
295
+
296
+ describe "with valid params" do
297
+ it "updates the requested subject" do
298
+ put :update, :id => @subject.id, :subject => @attrs
299
+ end
300
+
301
+ it "assigns the requested subject as @subject" do
302
+ put :update, :id => @subject.id, :subject => @attrs
303
+ assigns(:subject).should eq(@subject)
304
+ end
305
+ end
306
+
307
+ describe "with invalid params" do
308
+ it "assigns the requested subject as @subject" do
309
+ put :update, :id => @subject.id, :subject => @invalid_attrs
310
+ response.should render_template("edit")
311
+ end
312
+ end
313
+ end
314
+
315
+ describe "When logged in as Librarian" do
316
+ login_librarian
317
+
318
+ describe "with valid params" do
319
+ it "updates the requested subject" do
320
+ put :update, :id => @subject.id, :subject => @attrs
321
+ end
322
+
323
+ it "should be forbidden" do
324
+ put :update, :id => @subject.id, :subject => @attrs
325
+ assigns(:subject).should eq(@subject)
326
+ response.should be_forbidden
327
+ end
328
+ end
329
+
330
+ describe "with invalid params" do
331
+ it "should be forbidden" do
332
+ put :update, :id => @subject, :subject => @invalid_attrs
333
+ response.should be_forbidden
334
+ end
335
+ end
336
+ end
337
+
338
+ describe "When logged in as User" do
339
+ login_user
340
+
341
+ describe "with valid params" do
342
+ it "updates the requested subject" do
343
+ put :update, :id => @subject.id, :subject => @attrs
344
+ end
345
+
346
+ it "assigns the requested subject as @subject" do
347
+ put :update, :id => @subject.id, :subject => @attrs
348
+ assigns(:subject).should eq(@subject)
349
+ response.should be_forbidden
350
+ end
351
+ end
352
+
353
+ describe "with invalid params" do
354
+ it "assigns the requested subject as @subject" do
355
+ put :update, :id => @subject.id, :subject => @invalid_attrs
356
+ response.should be_forbidden
357
+ end
358
+ end
359
+ end
360
+
361
+ describe "When not logged in" do
362
+ describe "with valid params" do
363
+ it "updates the requested subject" do
364
+ put :update, :id => @subject.id, :subject => @attrs
365
+ end
366
+
367
+ it "should be forbidden" do
368
+ put :update, :id => @subject.id, :subject => @attrs
369
+ response.should redirect_to(new_user_session_url)
370
+ end
371
+ end
372
+
373
+ describe "with invalid params" do
374
+ it "assigns the requested subject as @subject" do
375
+ put :update, :id => @subject.id, :subject => @invalid_attrs
376
+ response.should redirect_to(new_user_session_url)
377
+ end
378
+ end
379
+ end
380
+ end
381
+
382
+ describe "DELETE destroy" do
383
+ before(:each) do
384
+ @subject = FactoryGirl.create(:subject)
385
+ end
386
+
387
+ describe "When logged in as Administrator" do
388
+ login_admin
389
+
390
+ it "destroys the requested subject" do
391
+ delete :destroy, :id => @subject.id
392
+ end
393
+
394
+ it "redirects to the subjects list" do
395
+ delete :destroy, :id => @subject.id
396
+ response.should redirect_to(subjects_url)
397
+ end
398
+ end
399
+
400
+ describe "When logged in as Librarian" do
401
+ login_librarian
402
+
403
+ it "destroys the requested subject" do
404
+ delete :destroy, :id => @subject.id
405
+ end
406
+
407
+ it "should be forbidden" do
408
+ delete :destroy, :id => @subject.id
409
+ response.should be_forbidden
410
+ end
411
+ end
412
+
413
+ describe "When logged in as User" do
414
+ login_user
415
+
416
+ it "destroys the requested subject" do
417
+ delete :destroy, :id => @subject.id
418
+ end
419
+
420
+ it "should be forbidden" do
421
+ delete :destroy, :id => @subject.id
422
+ response.should be_forbidden
423
+ end
424
+ end
425
+
426
+ describe "When not logged in" do
427
+ it "destroys the requested subject" do
428
+ delete :destroy, :id => @subject.id
429
+ end
430
+
431
+ it "should be forbidden" do
432
+ delete :destroy, :id => @subject.id
433
+ response.should redirect_to(new_user_session_url)
434
+ end
435
+ end
436
+ end
437
+ end