enju_seed 0.1.1.pre12 → 0.2.0.beta.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (293) hide show
  1. checksums.yaml +4 -4
  2. data/MIT-LICENSE +1 -1
  3. data/app/controllers/my_accounts_controller.rb +93 -0
  4. data/app/controllers/profiles_controller.rb +219 -0
  5. data/app/controllers/roles_controller.rb +61 -0
  6. data/app/models/concerns/master_model.rb +38 -0
  7. data/app/models/identity.rb +9 -0
  8. data/app/models/profile.rb +101 -0
  9. data/app/models/role.rb +50 -0
  10. data/app/models/user_has_role.rb +19 -0
  11. data/app/policies/application_policy.rb +53 -0
  12. data/app/policies/profile_policy.rb +55 -0
  13. data/app/policies/role_policy.rb +21 -0
  14. data/app/views/my_accounts/_edit_credential.html.erb +99 -0
  15. data/app/views/my_accounts/_form.html.erb +24 -0
  16. data/app/views/my_accounts/_show.html.erb +1 -0
  17. data/app/views/my_accounts/edit.html.erb +32 -0
  18. data/app/views/my_accounts/show.html+phone.erb +1 -0
  19. data/app/views/my_accounts/show.html.erb +49 -0
  20. data/app/views/profiles/_edit_credential.html.erb +88 -0
  21. data/app/views/profiles/_edit_profile.html.erb +42 -0
  22. data/app/views/profiles/_form.html.erb +15 -0
  23. data/app/views/profiles/_show.html.erb +1 -0
  24. data/app/views/profiles/edit.html.erb +33 -0
  25. data/app/views/profiles/index.html.erb +70 -0
  26. data/app/views/profiles/new.html.erb +88 -0
  27. data/app/views/profiles/show.html+phone.erb +1 -0
  28. data/app/views/profiles/show.html.erb +71 -0
  29. data/app/views/roles/_form.html.erb +19 -0
  30. data/app/views/roles/edit.html.erb +13 -0
  31. data/app/views/roles/index.html.erb +32 -0
  32. data/app/views/roles/new.html.erb +12 -0
  33. data/app/views/roles/show.html.erb +46 -0
  34. data/config/routes.rb +5 -0
  35. data/db/migrate/041_create_roles.rb +13 -0
  36. data/db/migrate/20100606065209_create_user_has_roles.rb +12 -0
  37. data/db/migrate/20130221154434_add_additional_attributes_to_user.rb +16 -0
  38. data/db/migrate/20140122054321_create_profiles.rb +20 -0
  39. data/db/migrate/20140610123439_drop_email_unique_constraint_enju_leaf_rc10.rb +11 -0
  40. data/db/migrate/20140811031145_add_expired_at_to_profile.rb +5 -0
  41. data/db/migrate/20141003181336_add_full_name_transcription_to_profile.rb +5 -0
  42. data/db/migrate/20141003182825_add_date_of_birth_to_profile.rb +5 -0
  43. data/db/migrate/20150421023923_create_identities.rb +15 -0
  44. data/db/migrate/20151126005552_add_provider_to_identity.rb +5 -0
  45. data/lib/enju_seed/engine.rb +8 -5
  46. data/lib/enju_seed/version.rb +1 -1
  47. data/spec/controllers/my_accounts_controller_spec.rb +229 -0
  48. data/spec/controllers/profiles_controller_spec.rb +594 -0
  49. data/spec/controllers/roles_controller_spec.rb +136 -0
  50. data/spec/dummy/README.rdoc +15 -248
  51. data/spec/dummy/Rakefile +1 -2
  52. data/spec/dummy/app/assets/javascripts/application.js +4 -6
  53. data/spec/dummy/app/assets/stylesheets/application.css +6 -4
  54. data/spec/dummy/app/controllers/application_controller.rb +9 -1
  55. data/spec/dummy/app/models/user.rb +9 -0
  56. data/spec/dummy/app/views/layouts/application.html.erb +2 -2
  57. data/spec/dummy/bin/bundle +3 -0
  58. data/spec/dummy/bin/rails +4 -0
  59. data/spec/dummy/bin/rake +4 -0
  60. data/spec/dummy/bin/setup +29 -0
  61. data/spec/dummy/config.ru +2 -2
  62. data/spec/dummy/config/application.rb +4 -35
  63. data/spec/dummy/config/boot.rb +4 -9
  64. data/spec/dummy/config/database.yml +8 -8
  65. data/spec/dummy/config/environment.rb +3 -3
  66. data/spec/dummy/config/environments/development.rb +22 -18
  67. data/spec/dummy/config/environments/production.rb +46 -34
  68. data/spec/dummy/config/environments/test.rb +19 -14
  69. data/spec/dummy/config/initializers/assets.rb +11 -0
  70. data/spec/dummy/config/initializers/cookies_serializer.rb +3 -0
  71. data/spec/dummy/config/initializers/devise.rb +274 -0
  72. data/spec/dummy/config/initializers/enju_leaf.rb +2 -0
  73. data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  74. data/spec/dummy/config/initializers/inflections.rb +6 -5
  75. data/spec/dummy/config/initializers/mime_types.rb +0 -1
  76. data/spec/dummy/config/initializers/secret_token.rb +7 -2
  77. data/spec/dummy/config/initializers/session_store.rb +1 -6
  78. data/spec/dummy/config/initializers/wrap_parameters.rb +6 -6
  79. data/spec/dummy/config/locales/en.yml +20 -2
  80. data/spec/dummy/config/routes.rb +24 -25
  81. data/spec/dummy/config/secrets.yml +22 -0
  82. data/spec/dummy/db/migrate/001_create_agents.rb +50 -0
  83. data/spec/dummy/db/migrate/002_devise_create_users.rb +46 -0
  84. data/spec/dummy/db/migrate/005_create_manifestations.rb +43 -0
  85. data/spec/dummy/db/migrate/006_create_items.rb +21 -0
  86. data/spec/dummy/db/migrate/012_create_owns.rb +12 -0
  87. data/spec/dummy/db/migrate/015_create_creates.rb +12 -0
  88. data/spec/dummy/db/migrate/032_create_checkins.rb +17 -0
  89. data/spec/dummy/db/migrate/033_create_checkouts.rb +25 -0
  90. data/spec/dummy/db/migrate/035_create_reserves.rb +26 -0
  91. data/spec/dummy/db/migrate/047_create_produces.rb +12 -0
  92. data/spec/dummy/db/migrate/059_create_libraries.rb +28 -0
  93. data/spec/dummy/db/migrate/069_create_shelves.rb +15 -0
  94. data/spec/dummy/db/migrate/073_create_carrier_types.rb +11 -0
  95. data/spec/dummy/db/migrate/077_create_user_groups.rb +12 -0
  96. data/spec/dummy/db/migrate/080_create_library_groups.rb +17 -0
  97. data/spec/dummy/db/migrate/112_create_frequencies.rb +12 -0
  98. data/spec/dummy/db/migrate/117_create_form_of_works.rb +12 -0
  99. data/spec/dummy/db/migrate/120_create_baskets.rb +12 -0
  100. data/spec/dummy/db/migrate/121_create_checked_items.rb +17 -0
  101. data/spec/dummy/db/migrate/124_create_bookstores.rb +17 -0
  102. data/spec/dummy/db/migrate/125_create_donates.rb +12 -0
  103. data/spec/dummy/db/migrate/127_create_use_restrictions.rb +16 -0
  104. data/spec/dummy/db/migrate/129_create_item_has_use_restrictions.rb +16 -0
  105. data/spec/dummy/db/migrate/130_create_request_status_types.rb +12 -0
  106. data/spec/dummy/db/migrate/131_create_request_types.rb +12 -0
  107. data/spec/dummy/db/migrate/132_create_circulation_statuses.rb +16 -0
  108. data/spec/dummy/db/migrate/133_create_agent_merges.rb +15 -0
  109. data/spec/dummy/db/migrate/134_create_agent_merge_lists.rb +13 -0
  110. data/spec/dummy/db/migrate/149_create_message_templates.rb +18 -0
  111. data/spec/dummy/db/migrate/154_create_messages.rb +23 -0
  112. data/spec/dummy/db/migrate/20080819181903_create_message_requests.rb +18 -0
  113. data/spec/dummy/db/migrate/20080830154109_create_realizes.rb +13 -0
  114. data/spec/dummy/db/migrate/20080905191442_create_agent_types.rb +12 -0
  115. data/spec/dummy/db/migrate/20081006090811_create_subscriptions.rb +17 -0
  116. data/spec/dummy/db/migrate/20081006093246_create_subscribes.rb +14 -0
  117. data/spec/dummy/db/migrate/20081023092436_create_search_engines.rb +17 -0
  118. data/spec/dummy/db/migrate/20081025083323_create_countries.rb +28 -0
  119. data/spec/dummy/db/migrate/20081025083905_create_languages.rb +23 -0
  120. data/spec/dummy/db/migrate/20081027150907_create_picture_files.rb +15 -0
  121. data/spec/dummy/db/migrate/20081028083142_create_agent_import_files.rb +20 -0
  122. data/spec/dummy/db/migrate/20081028083208_create_resource_import_files.rb +20 -0
  123. data/spec/dummy/db/migrate/20081030023412_create_checkout_types.rb +17 -0
  124. data/spec/dummy/db/migrate/20081030023518_create_user_group_has_checkout_types.rb +25 -0
  125. data/spec/dummy/db/migrate/20081030023615_create_carrier_type_has_checkout_types.rb +18 -0
  126. data/spec/dummy/db/migrate/20081212075554_create_checkout_stat_has_manifestations.rb +17 -0
  127. data/spec/dummy/db/migrate/20081212080038_create_manifestation_checkout_stats.rb +15 -0
  128. data/spec/dummy/db/migrate/20081215094302_create_user_checkout_stats.rb +15 -0
  129. data/spec/dummy/db/migrate/20081215094955_create_checkout_stat_has_users.rb +17 -0
  130. data/spec/dummy/db/migrate/20081216190517_create_reserve_stat_has_manifestations.rb +17 -0
  131. data/spec/dummy/db/migrate/20081216190724_create_manifestation_reserve_stats.rb +15 -0
  132. data/spec/dummy/db/migrate/20081220023628_create_user_reserve_stats.rb +15 -0
  133. data/spec/dummy/db/migrate/20081220034117_create_reserve_stat_has_users.rb +17 -0
  134. data/spec/dummy/db/migrate/20090321130448_add_completed_at_to_user_checkout_stat.rb +23 -0
  135. data/spec/dummy/db/migrate/20090705133942_add_attachments_picture_to_picture_file.rb +15 -0
  136. data/spec/dummy/db/migrate/20090705212043_add_attachments_attachment_to_manifestation.rb +15 -0
  137. data/spec/dummy/db/migrate/20090720091106_create_medium_of_performances.rb +12 -0
  138. data/spec/dummy/db/migrate/20090720091429_create_content_types.rb +12 -0
  139. data/spec/dummy/db/migrate/20090812151902_create_agent_relationship_types.rb +12 -0
  140. data/spec/dummy/db/migrate/20090831220301_create_lending_policies.rb +21 -0
  141. data/spec/dummy/db/migrate/20091012101112_add_dcndl_schema.rb +27 -0
  142. data/spec/dummy/db/migrate/20091025080447_create_licenses.rb +12 -0
  143. data/spec/dummy/db/migrate/20091214131723_create_series_statements.rb +13 -0
  144. data/spec/dummy/db/migrate/20100129142347_create_import_requests.rb +14 -0
  145. data/spec/dummy/db/migrate/20100211105551_add_admin_networks_to_library_group.rb +9 -0
  146. data/spec/dummy/db/migrate/20100223121519_rename_series_statement_title_to_original_title.rb +13 -0
  147. data/spec/dummy/db/migrate/20100314190054_add_opening_hour_to_library.rb +9 -0
  148. data/spec/dummy/db/migrate/20100321235924_add_series_statement_identifier_to_series_statement.rb +10 -0
  149. data/spec/dummy/db/migrate/20100525124311_create_manifestation_relationships.rb +13 -0
  150. data/spec/dummy/db/migrate/20100606073747_create_agent_relationships.rb +13 -0
  151. data/spec/dummy/db/migrate/20100607044753_create_manifestation_relationship_types.rb +12 -0
  152. data/spec/dummy/db/migrate/20100814091104_add_position_to_agent_relationship.rb +11 -0
  153. data/spec/dummy/db/migrate/20100925043847_create_resource_import_results.rb +15 -0
  154. data/spec/dummy/db/migrate/20100925074559_create_agent_import_results.rb +11 -0
  155. data/spec/dummy/db/migrate/20101212070145_add_acquired_at_to_item.rb +9 -0
  156. data/spec/dummy/db/migrate/20110222073537_add_url_to_library_group.rb +9 -0
  157. data/spec/dummy/db/migrate/20110301035123_add_pub_date_to_manifestation.rb +9 -0
  158. data/spec/dummy/db/migrate/20110301121550_add_birth_date_and_death_date_to_agent.rb +11 -0
  159. data/spec/dummy/db/migrate/20110301134521_add_expire_date_to_reserve.rb +9 -0
  160. data/spec/dummy/db/migrate/20110318183304_add_valid_period_for_new_user_to_user_group.rb +11 -0
  161. data/spec/dummy/db/migrate/20110328130826_add_current_checkout_count_to_user_group_has_checkout_type.rb +9 -0
  162. data/spec/dummy/db/migrate/20110603184217_add_edit_mode_to_resource_import_file.rb +9 -0
  163. data/spec/dummy/db/migrate/20110619064807_add_edition_string_to_manifestation.rb +9 -0
  164. data/spec/dummy/db/migrate/20110620173525_add_bookstore_id_to_item.rb +11 -0
  165. data/spec/dummy/db/migrate/20110621093332_remove_expire_date_from_reserve.rb +9 -0
  166. data/spec/dummy/db/migrate/20110627034940_create_series_statement_merge_lists.rb +9 -0
  167. data/spec/dummy/db/migrate/20110627035057_create_series_statement_merges.rb +12 -0
  168. data/spec/dummy/db/migrate/20110627122938_add_number_of_day_to_notify_overdue_to_user_group.rb +13 -0
  169. data/spec/dummy/db/migrate/20110913115320_add_lft_and_rgt_to_message.rb +11 -0
  170. data/spec/dummy/db/migrate/20110916091020_add_volume_number_to_manifestation.rb +13 -0
  171. data/spec/dummy/db/migrate/20110916103953_add_manifestaiton_id_to_series_statement.rb +10 -0
  172. data/spec/dummy/db/migrate/20110918162329_add_note_to_series_statement.rb +9 -0
  173. data/spec/dummy/db/migrate/20111124110059_create_create_types.rb +12 -0
  174. data/spec/dummy/db/migrate/20111124110319_create_realize_types.rb +12 -0
  175. data/spec/dummy/db/migrate/20111124110355_create_produce_types.rb +12 -0
  176. data/spec/dummy/db/migrate/20111124112131_add_create_type_to_create.rb +7 -0
  177. data/spec/dummy/db/migrate/20111129044509_add_pickup_location_to_reserve.rb +6 -0
  178. data/spec/dummy/db/migrate/20120105074911_add_isil_to_library.rb +5 -0
  179. data/spec/dummy/db/migrate/20120125050502_add_depth_to_message.rb +6 -0
  180. data/spec/dummy/db/migrate/20120125152919_add_title_subseries_transcription_to_series_statement.rb +6 -0
  181. data/spec/dummy/db/migrate/20120129014038_create_budget_types.rb +12 -0
  182. data/spec/dummy/db/migrate/20120129020544_add_budget_type_id_to_item.rb +6 -0
  183. data/spec/dummy/db/migrate/20120319120638_add_content_type_id_to_manifestation.rb +6 -0
  184. data/spec/dummy/db/migrate/20120319173203_create_accepts.rb +14 -0
  185. data/spec/dummy/db/migrate/20120410104851_add_year_of_publication_to_manifestation.rb +5 -0
  186. data/spec/dummy/db/migrate/20120413072700_add_picture_meta_to_picture_file.rb +5 -0
  187. data/spec/dummy/db/migrate/20120413100352_add_fingerprint_to_picture_file.rb +5 -0
  188. data/spec/dummy/db/migrate/20120413161340_add_fingerprint_to_resource_import_file.rb +5 -0
  189. data/spec/dummy/db/migrate/20120413161403_add_fingerprint_to_agent_import_file.rb +5 -0
  190. data/spec/dummy/db/migrate/20120413170705_add_error_message_to_resource_import_file.rb +5 -0
  191. data/spec/dummy/db/migrate/20120413170720_add_error_message_to_agent_import_file.rb +5 -0
  192. data/spec/dummy/db/migrate/20120415164821_add_attachment_meta_to_manifestation.rb +5 -0
  193. data/spec/dummy/db/migrate/20120418081407_add_month_of_publication_to_manifestation.rb +5 -0
  194. data/spec/dummy/db/migrate/20120424103932_add_librarian_id_to_checked_item.rb +5 -0
  195. data/spec/dummy/db/migrate/20120510140958_add_closed_to_shelf.rb +5 -0
  196. data/spec/dummy/db/migrate/20120511072422_add_agent_identifier_to_agent.rb +6 -0
  197. data/spec/dummy/db/migrate/20120602141129_add_edit_mode_to_agent_import_file.rb +5 -0
  198. data/spec/dummy/db/migrate/20121116031206_add_fulltext_content_to_manifestation.rb +5 -0
  199. data/spec/dummy/db/migrate/20130303124821_add_retained_at_to_reserve.rb +5 -0
  200. data/spec/dummy/db/migrate/20130304015019_add_postponed_at_to_reserve.rb +5 -0
  201. data/spec/dummy/db/migrate/20130412083556_add_latitude_and_longitude_to_library.rb +6 -0
  202. data/spec/dummy/db/migrate/20130416054135_add_circulation_status_id_to_item.rb +8 -0
  203. data/spec/dummy/db/migrate/20130421093852_add_periodical_to_manifestation.rb +5 -0
  204. data/spec/dummy/db/migrate/20130421155019_add_creator_string_to_series_statement.rb +7 -0
  205. data/spec/dummy/db/migrate/20130421164124_add_series_master_to_series_statement.rb +5 -0
  206. data/spec/dummy/db/migrate/20130429020822_add_root_manifestation_id_to_series_statement.rb +6 -0
  207. data/spec/dummy/db/migrate/20130506175303_create_identifier_types.rb +12 -0
  208. data/spec/dummy/db/migrate/20130506175834_create_identifiers.rb +15 -0
  209. data/spec/dummy/db/migrate/20130509185724_add_statement_of_responsibility_to_manifestation.rb +5 -0
  210. data/spec/dummy/db/migrate/20130519065638_add_lock_version_to_reserve.rb +5 -0
  211. data/spec/dummy/db/migrate/20130519065837_add_lock_version_to_checkin.rb +5 -0
  212. data/spec/dummy/db/migrate/20140110122216_create_user_import_files.rb +18 -0
  213. data/spec/dummy/db/migrate/20140110131010_create_user_import_results.rb +11 -0
  214. data/spec/dummy/db/migrate/20140518050147_create_reserve_transitions.rb +18 -0
  215. data/spec/dummy/db/migrate/20140518111006_create_message_transitions.rb +18 -0
  216. data/spec/dummy/db/migrate/20140518135713_create_message_request_transitions.rb +18 -0
  217. data/spec/dummy/db/migrate/20140519170214_create_resource_import_file_transitions.rb +18 -0
  218. data/spec/dummy/db/migrate/20140519171220_create_import_request_transitions.rb +18 -0
  219. data/spec/dummy/db/migrate/20140524020735_create_agent_import_file_transitions.rb +18 -0
  220. data/spec/dummy/db/migrate/20140524074813_create_user_import_file_transitions.rb +18 -0
  221. data/spec/dummy/db/migrate/20140528045518_create_user_checkout_stat_transitions.rb +18 -0
  222. data/spec/dummy/db/migrate/20140528045539_create_user_reserve_stat_transitions.rb +18 -0
  223. data/spec/dummy/db/migrate/20140528045600_create_manifestation_checkout_stat_transitions.rb +18 -0
  224. data/spec/dummy/db/migrate/20140528045617_create_manifestation_reserve_stat_transitions.rb +18 -0
  225. data/spec/dummy/db/migrate/20140614065404_create_resource_export_files.rb +11 -0
  226. data/spec/dummy/db/migrate/20140614141500_create_resource_export_file_transitions.rb +18 -0
  227. data/spec/dummy/db/migrate/20140628072217_add_user_encoding_to_user_import_file.rb +5 -0
  228. data/spec/dummy/db/migrate/20140628073524_add_user_encoding_to_agent_import_file.rb +5 -0
  229. data/spec/dummy/db/migrate/20140628073535_add_user_encoding_to_resource_import_file.rb +5 -0
  230. data/spec/dummy/db/migrate/20140709113413_create_user_export_files.rb +11 -0
  231. data/spec/dummy/db/migrate/20140709113905_create_user_export_file_transitions.rb +18 -0
  232. data/spec/dummy/db/migrate/20140720140916_add_binding_item_identifier_to_item.rb +8 -0
  233. data/spec/dummy/db/migrate/20140720170714_add_default_library_id_to_user_import_file.rb +5 -0
  234. data/spec/dummy/db/migrate/20140720170735_add_default_user_group_id_to_user_import_file.rb +5 -0
  235. data/spec/dummy/db/migrate/20140721151416_add_default_shelf_id_to_resource_import_file.rb +5 -0
  236. data/spec/dummy/db/migrate/20140802082007_add_manifestation_id_to_item.rb +6 -0
  237. data/spec/dummy/db/migrate/20140810061942_add_user_id_to_user_checkout_stat.rb +12 -0
  238. data/spec/dummy/db/migrate/20140810091231_add_checkout_icalendar_token_to_profile.rb +6 -0
  239. data/spec/dummy/db/migrate/20140810091417_add_save_checkout_history_to_profile.rb +5 -0
  240. data/spec/dummy/db/migrate/20140813182425_add_publication_place_to_manifestation.rb +5 -0
  241. data/spec/dummy/db/migrate/20140821151023_create_colors.rb +14 -0
  242. data/spec/dummy/db/migrate/20140822114527_add_error_message_to_resource_import_result.rb +5 -0
  243. data/spec/dummy/db/migrate/20140823083524_add_extent_to_manifestation.rb +5 -0
  244. data/spec/dummy/db/migrate/20140823094847_add_dimensions_to_manifestation.rb +5 -0
  245. data/spec/dummy/db/migrate/20140823095740_rename_manifestation_periodical_to_serial.rb +9 -0
  246. data/spec/dummy/db/migrate/20141014065831_add_shelf_id_to_checkout.rb +6 -0
  247. data/spec/dummy/db/migrate/20141020120523_add_library_id_to_checkout.rb +6 -0
  248. data/spec/dummy/db/migrate/20150106001709_create_demands.rb +14 -0
  249. data/spec/dummy/db/migrate/20150117111136_add_foreign_key_to_items_referencing_manifestations.rb +5 -0
  250. data/spec/dummy/db/migrate/20150221063719_add_settings_to_library_group.rb +5 -0
  251. data/spec/dummy/db/migrate/20150506105356_add_error_message_to_user_import_result.rb +5 -0
  252. data/spec/dummy/db/migrate/20150924115059_create_withdraws.rb +13 -0
  253. data/spec/dummy/db/migrate/20151125004028_add_profile_id_to_agent.rb +6 -0
  254. data/spec/dummy/db/migrate/20151213070943_add_translation_table_to_library_group.rb +13 -0
  255. data/spec/dummy/db/migrate/20151213072705_add_footer_banner_to_library_group.rb +9 -0
  256. data/spec/dummy/db/migrate/20160610093229_add_html_snippet_to_library_group.rb +5 -0
  257. data/spec/dummy/db/migrate/20160627232219_add_most_recent_to_user_import_file_transitions.rb +9 -0
  258. data/spec/dummy/db/migrate/20160627232316_add_most_recent_to_user_export_file_transitions.rb +9 -0
  259. data/spec/dummy/db/migrate/20160703184619_add_most_recent_to_reserve_transitions.rb +9 -0
  260. data/spec/dummy/db/migrate/20160703184650_add_most_recent_to_manifestation_checkout_stat_transitions.rb +9 -0
  261. data/spec/dummy/db/migrate/20160703184723_add_most_recent_to_manifestation_reserve_stat_transitions.rb +9 -0
  262. data/spec/dummy/db/migrate/20160703184747_add_most_recent_to_user_checkout_stat_transitions.rb +9 -0
  263. data/spec/dummy/db/migrate/20160703184805_add_most_recent_to_user_reserve_stat_transitions.rb +9 -0
  264. data/spec/dummy/db/migrate/20160703185015_add_most_recent_to_message_transitions.rb +9 -0
  265. data/spec/dummy/db/migrate/20160703190209_add_foreign_key_on_manifestation_id_to_reserve.rb +5 -0
  266. data/spec/dummy/db/schema.rb +1392 -0
  267. data/spec/dummy/public/404.html +54 -13
  268. data/spec/dummy/public/422.html +54 -13
  269. data/spec/dummy/public/500.html +53 -12
  270. data/spec/factories/profile.rb +17 -0
  271. data/spec/factories/user.rb +43 -0
  272. data/spec/factories/user_group.rb +5 -0
  273. data/spec/fixtures/libraries.yml +101 -0
  274. data/spec/fixtures/library_groups.yml +39 -0
  275. data/spec/fixtures/message_requests.yml +26 -0
  276. data/spec/fixtures/message_templates.yml +98 -0
  277. data/spec/fixtures/messages.yml +56 -0
  278. data/spec/fixtures/profiles.yml +103 -0
  279. data/spec/fixtures/roles.yml +39 -0
  280. data/spec/fixtures/user_groups.yml +40 -0
  281. data/spec/fixtures/user_has_roles.yml +40 -0
  282. data/spec/fixtures/users.yml +51 -0
  283. data/spec/models/profile_spec.rb +98 -0
  284. data/spec/models/role_spec.rb +40 -0
  285. data/spec/rails_helper.rb +71 -0
  286. data/spec/requests/profiles_spec.rb +9 -0
  287. data/spec/routing/profiles_routing_spec.rb +35 -0
  288. data/spec/routing/users_spec.rb +14 -0
  289. data/spec/spec_helper.rb +96 -29
  290. data/spec/support/controller_macros.rb +46 -0
  291. data/spec/support/devise.rb +4 -0
  292. metadata +673 -46
  293. data/spec/dummy/script/rails +0 -6
data/config/routes.rb CHANGED
@@ -1,2 +1,7 @@
1
1
  Rails.application.routes.draw do
2
+ resource :profiles
3
+
4
+ resource :my_account
5
+
6
+ resources :roles, except: [:new, :create, :destroy]
2
7
  end
@@ -0,0 +1,13 @@
1
+ class CreateRoles < ActiveRecord::Migration
2
+ def change
3
+ create_table "roles" do |t|
4
+ t.column :name, :string, :null => false
5
+ t.column :display_name, :string
6
+ t.column :note, :text
7
+ t.column :created_at, :datetime
8
+ t.column :updated_at, :datetime
9
+ t.integer :score, :default => 0, :null => false
10
+ t.integer :position
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,12 @@
1
+ class CreateUserHasRoles < ActiveRecord::Migration
2
+ def change
3
+ create_table :user_has_roles do |t|
4
+ t.integer :user_id
5
+ t.integer :role_id
6
+
7
+ t.timestamps
8
+ end
9
+ add_index :user_has_roles, :user_id
10
+ add_index :user_has_roles, :role_id
11
+ end
12
+ end
@@ -0,0 +1,16 @@
1
+ class AddAdditionalAttributesToUser < ActiveRecord::Migration
2
+ def change
3
+ add_column :users, :username, :string
4
+ add_column :users, :deleted_at, :datetime
5
+ add_column :users, :expired_at, :datetime
6
+
7
+ add_column :users, :failed_attempts, :integer, :default => 0
8
+ add_column :users, :unlock_token, :string
9
+ add_column :users, :locked_at, :datetime
10
+
11
+ add_column :users, :confirmed_at, :datetime
12
+
13
+ add_index :users, :username, :unique => true
14
+ add_index :users, :unlock_token, :unique => true
15
+ end
16
+ end
@@ -0,0 +1,20 @@
1
+ class CreateProfiles < ActiveRecord::Migration
2
+ def change
3
+ create_table :profiles do |t|
4
+ t.integer :user_id
5
+ t.integer :user_group_id
6
+ t.integer :library_id
7
+ t.string :locale
8
+ t.string :user_number
9
+ t.text :full_name
10
+ t.text :note
11
+ t.text :keyword_list
12
+ t.integer :required_role_id
13
+
14
+ t.timestamps
15
+ end
16
+
17
+ add_index :profiles, :user_id
18
+ add_index :profiles, :user_number, :unique => true
19
+ end
20
+ end
@@ -0,0 +1,11 @@
1
+ class DropEmailUniqueConstraintEnjuLeafRc10 < ActiveRecord::Migration
2
+ def up
3
+ remove_index :users, :email
4
+ add_index :users, :email
5
+ end
6
+
7
+ def down
8
+ remove_index :users, :email
9
+ add_index :users, :email, unique: true
10
+ end
11
+ end
@@ -0,0 +1,5 @@
1
+ class AddExpiredAtToProfile < ActiveRecord::Migration
2
+ def change
3
+ add_column :profiles, :expired_at, :datetime
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class AddFullNameTranscriptionToProfile < ActiveRecord::Migration
2
+ def change
3
+ add_column :profiles, :full_name_transcription, :text
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class AddDateOfBirthToProfile < ActiveRecord::Migration
2
+ def change
3
+ add_column :profiles, :date_of_birth, :datetime
4
+ end
5
+ end
@@ -0,0 +1,15 @@
1
+ class CreateIdentities < ActiveRecord::Migration
2
+ def change
3
+ create_table :identities do |t|
4
+ t.string :name
5
+ t.string :email
6
+ t.string :password_digest
7
+ t.integer :profile_id
8
+
9
+ t.timestamps null: false
10
+ end
11
+ add_index :identities, :name
12
+ add_index :identities, :email
13
+ add_index :identities, :profile_id
14
+ end
15
+ end
@@ -0,0 +1,5 @@
1
+ class AddProviderToIdentity < ActiveRecord::Migration
2
+ def change
3
+ add_column :identities, :provider, :string
4
+ end
5
+ end
@@ -1,14 +1,17 @@
1
1
  require 'kaminari'
2
2
  require 'devise'
3
- require 'cancancan'
3
+ require 'pundit'
4
4
  require 'acts_as_list'
5
- require 'attribute_normalizer'
5
+ require 'strip_attributes'
6
6
  require 'friendly_id'
7
7
  require 'addressable/uri'
8
8
  require 'sunspot_rails'
9
- require 'resque/server'
10
- require 'settingslogic'
11
- require 'nested_form'
9
+ require 'cocoon'
10
+ require 'kramdown'
11
+ require 'rails_autolink'
12
+ require 'sitemap_generator'
13
+ require 'statesman'
14
+ require 'browser'
12
15
 
13
16
  module EnjuSeed
14
17
  class Engine < ::Rails::Engine
@@ -1,3 +1,3 @@
1
1
  module EnjuSeed
2
- VERSION = "0.1.1.pre12"
2
+ VERSION = "0.2.0.beta.1"
3
3
  end
@@ -0,0 +1,229 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require 'rails_helper'
3
+
4
+ describe MyAccountsController do
5
+ fixtures :all
6
+
7
+ describe "GET show" do
8
+ describe "When logged in as Administrator" do
9
+ before(:each) do
10
+ sign_in User.where(username: 'enjuadmin').first
11
+ end
12
+
13
+ it "assigns the requested user as @user" do
14
+ get :show, id: 'admin'
15
+ expect(response).to be_success
16
+ end
17
+ end
18
+
19
+ describe "When not logged in" do
20
+ it "assigns the requested user as @user" do
21
+ get :show, id: 'admin'
22
+ expect(assigns(:user)).to be_nil
23
+ expect(response).to redirect_to(new_user_session_url)
24
+ end
25
+ end
26
+ end
27
+
28
+ describe "GET edit" do
29
+ describe "When logged in as Administrator" do
30
+ before(:each) do
31
+ profile = FactoryGirl.create(:profile)
32
+ @user = FactoryGirl.create(:admin)
33
+ @user.profile = profile
34
+ sign_in @user
35
+ end
36
+
37
+ it "assigns the requested user as @user" do
38
+ get :edit
39
+ expect(assigns(:profile)).to eq(@user.profile)
40
+ end
41
+ end
42
+
43
+ describe "When logged in as Librarian" do
44
+ before(:each) do
45
+ profile = FactoryGirl.create(:profile)
46
+ @user = FactoryGirl.create(:librarian)
47
+ @user.profile = profile
48
+ sign_in @user
49
+ end
50
+
51
+ it "should assign the requested user as @user" do
52
+ get :edit
53
+ expect(assigns(:profile)).to eq(@user.profile)
54
+ end
55
+ end
56
+
57
+ describe "When logged in as User" do
58
+ before(:each) do
59
+ profile = FactoryGirl.create(:profile)
60
+ @user = FactoryGirl.create(:user)
61
+ @user.profile = profile
62
+ sign_in @user
63
+ end
64
+
65
+ it "should assign the requested user as @user" do
66
+ get :edit
67
+ expect(assigns(:profile)).to eq(@user.profile)
68
+ expect(response).to be_success
69
+ end
70
+ end
71
+
72
+ describe "When not logged in" do
73
+ it "should not assign the requested user as @user" do
74
+ get :edit
75
+ expect(assigns(:user)).to be_nil
76
+ expect(response).to redirect_to(new_user_session_url)
77
+ end
78
+ end
79
+ end
80
+
81
+ describe "PUT update" do
82
+ before(:each) do
83
+ @attrs = {:user_attributes => {email: 'newaddress@example.jp', :current_password => 'password'}, :locale => 'en'}
84
+ @invalid_attrs = {:user_attributes => {username: ''}, user_number: '日本語'}
85
+ @invalid_passwd_attrs = {:user_attributes => {:current_password=> ''}}
86
+ end
87
+
88
+ describe "When logged in as Administrator" do
89
+ before(:each) do
90
+ profile = FactoryGirl.create(:profile)
91
+ @user = FactoryGirl.create(:admin, :password => 'password', :password_confirmation => 'password')
92
+ @user.profile = profile
93
+ sign_in @user
94
+ end
95
+
96
+ describe "with valid params" do
97
+ it "updates the requested user" do
98
+ @attrs[:user_attributes][:id] = @user.id
99
+ put :update, profile: @attrs
100
+ end
101
+
102
+ it "assigns the requested user as @user" do
103
+ @attrs[:user_attributes][:id] = @user.id
104
+ put :update, profile: @attrs
105
+ expect(assigns(:profile)).to eq(@user.profile)
106
+ end
107
+
108
+ it "redirects to the user" do
109
+ @attrs[:user_attributes][:id] = @user.id
110
+ put :update, profile: @attrs
111
+ expect(assigns(:profile)).to eq(@user.profile)
112
+ expect(response).to redirect_to(my_account_url)
113
+ end
114
+ end
115
+
116
+ describe "with invalid params" do
117
+ it "assigns the requested user as @user" do
118
+ put :update, profile: @invalid_attrs
119
+ expect(assigns(:profile)).to eq(@user.profile)
120
+ end
121
+
122
+ it "re-renders the 'edit' template" do
123
+ put :update, profile: @invalid_attrs
124
+ expect(response).to render_template("edit")
125
+ end
126
+ end
127
+
128
+ #describe "with invalid password params" do
129
+ # it "assigns the requested user as @user" do
130
+ # put :update, profile: @invalid_passwd_attrs
131
+ # expect(assigns(:profile).errors).not_to be_blank
132
+ # end
133
+ #end
134
+ end
135
+
136
+ describe "When logged in as Librarian" do
137
+ before(:each) do
138
+ profile = FactoryGirl.create(:profile)
139
+ @user = FactoryGirl.create(:librarian, :password => 'password', :password_confirmation => 'password')
140
+ @user.profile = profile
141
+ sign_in @user
142
+ end
143
+
144
+ describe "with valid params" do
145
+ it "updates the requested user" do
146
+ @attrs[:user_attributes][:id] = @user.id
147
+ put :update, profile: @attrs
148
+ end
149
+
150
+ it "assigns the requested user as @user" do
151
+ @attrs[:user_attributes][:id] = @user.id
152
+ put :update, profile: @attrs
153
+ expect(assigns(:profile)).to eq(@user.profile)
154
+ end
155
+
156
+ it "redirects to the user" do
157
+ @attrs[:user_attributes][:id] = @user.id
158
+ put :update, profile: @attrs
159
+ expect(assigns(:profile)).to eq(@user.profile)
160
+ expect(response).to redirect_to(my_account_url)
161
+ end
162
+ end
163
+
164
+ describe "with invalid params" do
165
+ it "assigns the user as @user" do
166
+ put :update, profile: @invalid_attrs
167
+ expect(assigns(:profile)).to_not be_valid
168
+ expect(response).to be_success
169
+ end
170
+
171
+ it "should ignore username" do
172
+ put :update, profile: @invalid_attrs
173
+ expect(response).to render_template("edit")
174
+ expect(assigns(:profile).changed?).to be_truthy
175
+ end
176
+ end
177
+ end
178
+
179
+ describe "When logged in as User" do
180
+ before(:each) do
181
+ profile = FactoryGirl.create(:profile)
182
+ @user = FactoryGirl.create(:user, :password => 'password', :password_confirmation => 'password')
183
+ @user.profile = profile
184
+ sign_in @user
185
+ end
186
+
187
+ describe "with valid params" do
188
+ it "updates the requested user" do
189
+ @attrs[:user_attributes][:id] = @user.id
190
+ put :update, profile: @attrs
191
+ end
192
+
193
+ it "assigns the requested user as @user" do
194
+ @attrs[:user_attributes][:id] = @user.id
195
+ put :update, profile: @attrs
196
+ expect(assigns(:profile)).to eq(@user.profile)
197
+ expect(response).to redirect_to(my_account_url)
198
+ end
199
+ end
200
+
201
+ describe "with invalid params" do
202
+ it "assigns the requested user as @user" do
203
+ put :update, profile: @invalid_attrs
204
+ expect(response).to be_success
205
+ end
206
+ end
207
+ end
208
+
209
+ describe "When not logged in" do
210
+ describe "with valid params" do
211
+ it "updates the requested user" do
212
+ put :update, profile: @attrs
213
+ end
214
+
215
+ it "should be forbidden" do
216
+ put :update, profile: @attrs
217
+ expect(response).to redirect_to(new_user_session_url)
218
+ end
219
+ end
220
+
221
+ describe "with invalid params" do
222
+ it "assigns the requested user as @user" do
223
+ put :update, profile: @invalid_attrs
224
+ expect(response).to redirect_to(new_user_session_url)
225
+ end
226
+ end
227
+ end
228
+ end
229
+ end
@@ -0,0 +1,594 @@
1
+ require 'rails_helper'
2
+
3
+ describe ProfilesController do
4
+ fixtures :all
5
+
6
+ describe "GET index" do
7
+ describe "When logged in as Administrator" do
8
+ login_fixture_admin
9
+
10
+ it "assigns all profiles as @profiles" do
11
+ get :index
12
+ Sunspot.session.should be_a_search_for(Profile)
13
+ Sunspot.session.should have_search_params(:fulltext, '')
14
+ assigns(:profiles).should_not be_nil
15
+ end
16
+ end
17
+
18
+ describe "When logged in as Librarian" do
19
+ login_fixture_librarian
20
+
21
+ it "assigns all profiles as @profiles" do
22
+ get :index
23
+ Sunspot.session.should be_a_search_for(Profile)
24
+ Sunspot.session.should have_search_params(:fulltext, '')
25
+ assigns(:profiles).should_not be_nil
26
+ end
27
+
28
+ it "should get index with query" do
29
+ get :index, :query => 'user1'
30
+ response.should be_success
31
+ Sunspot.session.should be_a_search_for(Profile)
32
+ Sunspot.session.should have_search_params(:fulltext, 'user1')
33
+ assigns(:profiles).should_not be_nil
34
+ end
35
+
36
+ it "should get sorted index" do
37
+ get :index, :query => 'user1', :sort_by => 'username', :order => 'desc'
38
+ response.should be_success
39
+ Sunspot.session.should be_a_search_for(Profile)
40
+ Sunspot.session.should have_search_params(:fulltext, 'user1')
41
+ Sunspot.session.should have_search_params(:order_by, :username, :desc)
42
+ assigns(:profiles).should_not be_nil
43
+ end
44
+ end
45
+
46
+ describe "When logged in as User" do
47
+ login_fixture_user
48
+
49
+ it "assigns all profiles as @profiles" do
50
+ get :index
51
+ assigns(:profiles).should be_nil
52
+ response.should be_forbidden
53
+ end
54
+ end
55
+
56
+ describe "When not logged in" do
57
+ it "assigns all profiles as @profiles" do
58
+ get :index
59
+ assigns(:profiles).should be_nil
60
+ response.should redirect_to(new_user_session_url)
61
+ end
62
+ end
63
+ end
64
+
65
+ describe "GET show" do
66
+ describe "When logged in as Administrator" do
67
+ login_fixture_admin
68
+
69
+ it "assigns the requested user as @profile" do
70
+ get :show, id: profiles(:admin).id
71
+ assigns(:profile).should eq(profiles(:admin))
72
+ end
73
+ it "assigns the another requested user as @profile" do
74
+ admin_profile = FactoryGirl.create :admin_profile
75
+ get :show, id: admin_profile.id
76
+ expect(response).not_to be_forbidden
77
+ expect(assigns(:profile)).to eq admin_profile
78
+ end
79
+ end
80
+
81
+ describe "When logged in as Librarian" do
82
+ login_fixture_librarian
83
+
84
+ it "assigns the requested user as @profile" do
85
+ get :show, id: profiles(:librarian1).id
86
+ assigns(:profile).should eq(profiles(:librarian1))
87
+ end
88
+ it "should not assign the requested user as @admin" do
89
+ admin = FactoryGirl.create(:admin_profile)
90
+ get :show, id: admin.id
91
+ response.should be_forbidden
92
+ end
93
+ it "should assign the requested user as @librarian" do
94
+ librarian = FactoryGirl.create(:librarian_profile)
95
+ get :show, id: librarian.id
96
+ response.should_not be_forbidden
97
+ assigns(:profile).should eq librarian
98
+ end
99
+ end
100
+
101
+ describe "When logged in as User" do
102
+ login_fixture_user
103
+
104
+ it "assigns the requested user as @profile" do
105
+ get :show, id: profiles(:user1).id
106
+ assigns(:profile).should eq(profiles(:user1))
107
+ end
108
+
109
+ it "should redirect to my user account" do
110
+ get :show, id: profiles(:user1).id
111
+ assert_redirected_to my_account_url
112
+ end
113
+
114
+ it "should show other user's account" do
115
+ get :show, id: profiles(:admin).id
116
+ assigns(:profile).should eq(profiles(:admin))
117
+ response.should be_forbidden
118
+ end
119
+ end
120
+
121
+ describe "When not logged in" do
122
+ it "assigns the requested user as @profile" do
123
+ get :show, id: profiles(:admin).id
124
+ assigns(:profile).should eq(profiles(:admin))
125
+ response.should redirect_to(new_user_session_url)
126
+ end
127
+ end
128
+ end
129
+
130
+ describe "GET new" do
131
+ describe "When logged in as Administrator" do
132
+ login_fixture_admin
133
+
134
+ it "assigns the requested user as @profile" do
135
+ get :new
136
+ assigns(:profile).should_not be_valid
137
+ end
138
+ end
139
+
140
+ describe "When logged in as Librarian" do
141
+ login_fixture_librarian
142
+
143
+ it "should not assign the requested user as @profile" do
144
+ get :new
145
+ assigns(:profile).should_not be_valid
146
+ end
147
+ end
148
+
149
+ describe "When logged in as User" do
150
+ login_fixture_user
151
+
152
+ it "should not assign the requested user as @profile" do
153
+ get :new
154
+ assigns(:profile).should be_nil
155
+ response.should be_forbidden
156
+ end
157
+ end
158
+
159
+ describe "When not logged in" do
160
+ it "should not assign the requested user as @profile" do
161
+ get :new
162
+ assigns(:profile).should be_nil
163
+ response.should redirect_to(new_user_session_url)
164
+ end
165
+ end
166
+ end
167
+
168
+ describe "GET edit" do
169
+ describe "When logged in as Administrator" do
170
+ login_fixture_admin
171
+
172
+ it "assigns the requested user as @profile" do
173
+ profile = FactoryGirl.create(:profile)
174
+ get :edit, id: profile.id
175
+ assigns(:profile).should eq(profile)
176
+ end
177
+ end
178
+
179
+ describe "When logged in as Librarian" do
180
+ login_fixture_librarian
181
+
182
+ it "should assign the requested user as @profile" do
183
+ profile = FactoryGirl.create(:profile)
184
+ get :edit, id: profile.id
185
+ assigns(:profile).should eq(profile)
186
+ end
187
+ it "should not get edit page for admin required user" do
188
+ admin = FactoryGirl.create(:admin_profile)
189
+ get :edit, id: admin.id
190
+ response.should be_forbidden
191
+ #assigns(:profile).should_not eq(admin)
192
+ end
193
+ it "should get edit page for other librarian user" do
194
+ librarian = FactoryGirl.create(:librarian_profile)
195
+ get :edit, id: librarian.id
196
+ response.should_not be_forbidden
197
+ assigns(:profile).should eq librarian
198
+ end
199
+ it "should get edit page for other librarian user" do
200
+ admin = FactoryGirl.create(:admin_profile, required_role_id: Role.where(name: 'Librarian').first.id)
201
+ get :edit, id: admin.id
202
+ response.should be_forbidden
203
+ assigns(:profile).should eq admin
204
+ end
205
+
206
+ it "should show icalendar feed" do
207
+ get :edit, id: profiles(:user1).id, mode: 'feed_token'
208
+ response.should render_template("profiles/_feed_token")
209
+ end
210
+ end
211
+
212
+ describe "When logged in as User" do
213
+ login_fixture_user
214
+
215
+ it "should not assign the requested user as @profile" do
216
+ profile = FactoryGirl.create(:profile)
217
+ get :edit, id: profile.id
218
+ assigns(:profile).should eq(profile)
219
+ response.should be_forbidden
220
+ end
221
+
222
+ it "should edit myself" do
223
+ get :edit, id: profiles(:user1).id
224
+ response.should redirect_to edit_my_account_url
225
+ end
226
+ end
227
+
228
+ describe "When not logged in" do
229
+ it "should not assign the requested user as @profile" do
230
+ profile = FactoryGirl.create(:profile)
231
+ get :edit, id: profile.id
232
+ assigns(:profile).should eq(profile)
233
+ response.should redirect_to(new_user_session_url)
234
+ end
235
+ end
236
+ end
237
+
238
+ describe "POST create" do
239
+ before(:each) do
240
+ @attrs = FactoryGirl.attributes_for(:profile)
241
+ @invalid_attrs = {:user_group_id => '', :user_number => '日本語'}
242
+ end
243
+
244
+ describe "When logged in as Administrator" do
245
+ login_fixture_admin
246
+
247
+ describe "with valid params" do
248
+ it "assigns a newly created user as @profile" do
249
+ post :create, profile: @attrs
250
+ assigns(:profile).should be_valid
251
+ end
252
+
253
+ it "redirects to the created user" do
254
+ post :create, profile: @attrs
255
+ response.should redirect_to(profile_url(assigns(:profile)))
256
+ end
257
+ end
258
+
259
+ describe "with invalid params" do
260
+ it "assigns a newly created but unsaved user as @profile" do
261
+ post :create, profile: @invalid_attrs
262
+ assigns(:profile).should_not be_valid
263
+ end
264
+
265
+ it "re-renders the 'new' template" do
266
+ post :create, profile: @invalid_attrs
267
+ response.should render_template("new")
268
+ end
269
+ end
270
+ end
271
+
272
+ describe "When logged in as Librarian" do
273
+ login_fixture_librarian
274
+
275
+ describe "with valid params" do
276
+ it "assigns a newly created user as @profile" do
277
+ post :create, profile: @attrs
278
+ assigns(:profile).should be_valid
279
+ end
280
+
281
+ it "redirects to the created user" do
282
+ post :create, profile: @attrs
283
+ response.should redirect_to(profile_url(assigns(:profile)))
284
+ end
285
+ end
286
+
287
+ describe "with invalid params" do
288
+ it "assigns a newly created but unsaved user as @profile" do
289
+ post :create, profile: @invalid_attrs
290
+ assigns(:profile).should_not be_valid
291
+ end
292
+
293
+ it "re-renders the 'new' template" do
294
+ post :create, profile: @invalid_attrs
295
+ response.should render_template("new")
296
+ end
297
+ end
298
+ end
299
+
300
+ describe "When logged in as User" do
301
+ login_fixture_user
302
+
303
+ it "should not create user" do
304
+ post :create, profile: { :username => 'test10' }
305
+ assigns(:profile).should be_nil
306
+ response.should be_forbidden
307
+ end
308
+ end
309
+
310
+ describe "When not logged in" do
311
+ it "should not create user" do
312
+ post :create, profile: { :username => 'test10' }
313
+ response.should redirect_to new_user_session_url
314
+ end
315
+ end
316
+ end
317
+
318
+ describe "PUT update" do
319
+ before(:each) do
320
+ @profile = profiles(:user1)
321
+ @attrs = {:user_group_id => '3', :locale => 'en'}
322
+ @invalid_attrs = {:user_group_id => '', :user_number => '日本語'}
323
+ end
324
+
325
+ describe "When logged in as Administrator" do
326
+ login_fixture_admin
327
+
328
+ describe "with valid params" do
329
+ it "updates the requested user" do
330
+ put :update, id: @profile.id, profile: @attrs
331
+ end
332
+
333
+ it "assigns the requested user as @profile" do
334
+ put :update, id: @profile.id, profile: @attrs
335
+ assigns(:profile).should eq(@profile)
336
+ end
337
+
338
+ it "redirects to the user" do
339
+ put :update, id: @profile.id, profile: @attrs
340
+ assigns(:profile).should eq(@profile)
341
+ response.should redirect_to(@profile)
342
+ end
343
+ end
344
+
345
+ describe "with invalid params" do
346
+ it "assigns the requested user as @profile" do
347
+ put :update, id: @profile.id, profile: @invalid_attrs
348
+ assigns(:profile).should eq(@profile)
349
+ end
350
+
351
+ it "re-renders the 'edit' template" do
352
+ put :update, id: @profile, profile: @invalid_attrs
353
+ response.should render_template("edit")
354
+ end
355
+ end
356
+
357
+ it "should update other user's role" do
358
+ put :update, id: profiles(:user1).id, profile: {:user_attributes => {:user_has_role_attributes => {:role_id => 4}, :email => profiles(:user1).user.email, :locale => 'en', id: profiles(:user1).user.id}}
359
+ response.should redirect_to profile_url(assigns(:profile))
360
+ assigns(:profile).reload
361
+ assigns(:profile).user.role.should eq Role.where(name: 'Administrator').first
362
+ end
363
+ end
364
+
365
+ describe "When logged in as Librarian" do
366
+ login_fixture_librarian
367
+
368
+ describe "with valid params" do
369
+ it "updates the requested user" do
370
+ put :update, id: @profile.id, profile: @attrs
371
+ end
372
+
373
+ it "assigns the requested user as @profile" do
374
+ put :update, id: @profile.id, profile: @attrs
375
+ assigns(:profile).should eq(@profile)
376
+ end
377
+
378
+ it "redirects to the user" do
379
+ put :update, id: @profile.id, profile: @attrs
380
+ assigns(:profile).should eq(@profile)
381
+ response.should redirect_to(@profile)
382
+ end
383
+ end
384
+
385
+ describe "with invalid params" do
386
+ it "assigns the user as @profile" do
387
+ put :update, id: @profile, profile: @invalid_attrs
388
+ assigns(:profile).should_not be_valid
389
+ end
390
+
391
+ it "re-renders the 'edit' template" do
392
+ put :update, id: @profile, profile: @invalid_attrs
393
+ response.should render_template("edit")
394
+ end
395
+ end
396
+
397
+ it "should update other user" do
398
+ put :update, id: profiles(:user1).id, profile: {:user_number => '00003', :locale => 'en', :user_group_id => 3, :library_id => 3, :note => 'test'}
399
+ response.should redirect_to profile_url(assigns(:profile))
400
+ end
401
+
402
+ it "should not update other admin" do
403
+ put :update, id: profiles(:admin).id, profile: {:user_number => '00003', :locale => 'en', :user_group_id => 3, :library_id => 3, :note => 'test'}
404
+ response.should be_forbidden
405
+ end
406
+
407
+ it "should update other user's user_group" do
408
+ put :update, id: profiles(:user1).id, profile: {:user_group_id => 3, :library_id => 3, :locale => 'en'}
409
+ response.should redirect_to profile_url(assigns(:profile))
410
+ assigns(:profile).user_group_id.should eq 3
411
+ end
412
+
413
+ it "should update other user's note" do
414
+ put :update, id: profiles(:user1).id, profile: {:user_group_id => 3, :library_id => 3, :note => 'test', :locale => 'en'}
415
+ response.should redirect_to profile_url(assigns(:profile))
416
+ assert_equal assigns(:profile).note, 'test'
417
+ end
418
+
419
+ it "should update other user's locked status" do
420
+ put :update, id: profiles(:user1).id, profile: {:user_attributes => {:id => 3, :locked => '1', :username => 'user1'}}
421
+ response.should redirect_to profile_url(assigns(:profile))
422
+ assigns(:profile).user.locked_at.should be_truthy
423
+ assigns(:profile).user.access_locked?.should be_truthy
424
+ end
425
+ end
426
+
427
+ describe "When logged in as User" do
428
+ login_fixture_user
429
+
430
+ describe "with valid params" do
431
+ it "updates the requested user" do
432
+ put :update, id: @profile.id, profile: @attrs
433
+ end
434
+
435
+ it "assigns the requested user as @profile" do
436
+ put :update, id: @profile.id, profile: @attrs
437
+ assigns(:profile).should be_valid
438
+ response.should redirect_to profile_url(assigns(:profile))
439
+ end
440
+ end
441
+
442
+ describe "with invalid params" do
443
+ it "assigns the requested user as @profile" do
444
+ put :update, id: @profile.id, profile: @invalid_attrs
445
+ #assigns(:profile).should_not be_valid
446
+ #response.should be_success
447
+ assigns(:profile).should be_valid
448
+ response.should redirect_to profile_url(assigns(:profile))
449
+ end
450
+ end
451
+
452
+ it "should update myself" do
453
+ put :update, id: profiles(:user1).id, profile: {keyword_list: 'test'}
454
+ response.should redirect_to profile_url(assigns(:profile))
455
+ end
456
+
457
+ it "should not update my role" do
458
+ put :update, id: profiles(:user1).id, profile: {:user_has_role_attributes => {:role_id => 4}}
459
+ response.should redirect_to profile_url(assigns(:profile))
460
+ assigns(:profile).user.role.should_not eq Role.where(name: 'Administrator').first
461
+ end
462
+
463
+ it "should not update my user_group" do
464
+ put :update, id: profiles(:user1).id, profile: {:user_group_id => 3, :library_id => 3}
465
+ response.should redirect_to profile_url(assigns(:profile))
466
+ assigns(:profile).user_group_id.should eq 1
467
+ end
468
+
469
+ it "should not update my note" do
470
+ put :update, id: profiles(:user1).id, profile: {:user_group_id => 3, :library_id => 3, :note => 'test'}
471
+ response.should redirect_to profile_url(assigns(:profile))
472
+ assigns(:profile).note.should be_nil
473
+ end
474
+
475
+ it "should update my keyword_list" do
476
+ put :update, id: profiles(:user1).id, profile: {:keyword_list => 'test'}
477
+ response.should redirect_to profile_url(assigns(:profile))
478
+ assigns(:profile).keyword_list.should eq 'test'
479
+ assigns(:profile).user.role.name.should eq 'User'
480
+ end
481
+
482
+ it "should not update other user" do
483
+ put :update, id: profiles(:user2).id, profile: { }
484
+ assigns(:profile).should be_valid
485
+ response.should be_forbidden
486
+ end
487
+ end
488
+
489
+ describe "When not logged in" do
490
+ describe "with valid params" do
491
+ it "updates the requested user" do
492
+ put :update, id: @profile.id, profile: @attrs
493
+ end
494
+
495
+ it "should be forbidden" do
496
+ put :update, id: @profile.id, profile: @attrs
497
+ response.should redirect_to(new_user_session_url)
498
+ end
499
+ end
500
+
501
+ describe "with invalid params" do
502
+ it "assigns the requested user as @profile" do
503
+ put :update, id: @profile.id, profile: @invalid_attrs
504
+ response.should redirect_to(new_user_session_url)
505
+ end
506
+ end
507
+ end
508
+ end
509
+
510
+ describe "DELETE destroy" do
511
+ describe "When logged in as Administrator" do
512
+ login_fixture_admin
513
+
514
+ it "destroys the requested user" do
515
+ delete :destroy, id: profiles(:user2).id
516
+ end
517
+
518
+ it "redirects to the profiles list" do
519
+ delete :destroy, id: profiles(:user2).id
520
+ response.should redirect_to(profiles_url)
521
+ end
522
+
523
+ it "should destroy librarian" do
524
+ delete :destroy, id: profiles(:librarian2).id
525
+ response.should redirect_to(profiles_url)
526
+ end
527
+ end
528
+
529
+ describe "When logged in as Librarian" do
530
+ login_fixture_librarian
531
+
532
+ it "destroys the requested user" do
533
+ delete :destroy, id: profiles(:user2).id
534
+ response.should redirect_to(profiles_url)
535
+ end
536
+
537
+ it "redirects to the profiles list" do
538
+ delete :destroy, id: profiles(:user2).id
539
+ response.should redirect_to(profiles_url)
540
+ end
541
+
542
+ it "should not destroy librarian" do
543
+ delete :destroy, id: profiles(:librarian2).id
544
+ response.should be_forbidden
545
+ end
546
+
547
+ it "should not destroy admin" do
548
+ delete :destroy, id: profiles(:admin).id
549
+ response.should be_forbidden
550
+ end
551
+
552
+ it "should not destroy myself" do
553
+ delete :destroy, id: profiles(:librarian1).id
554
+ response.should be_forbidden
555
+ end
556
+
557
+ it "should not be able to delete other librarian user" do
558
+ librarian = FactoryGirl.create(:librarian_profile)
559
+ delete :destroy, id: librarian.id
560
+ response.should be_forbidden
561
+ end
562
+ end
563
+
564
+ describe "When logged in as User" do
565
+ login_fixture_user
566
+
567
+ it "destroys the requested user" do
568
+ delete :destroy, id: profiles(:user2).id
569
+ end
570
+
571
+ it "should be forbidden" do
572
+ delete :destroy, id: profiles(:user2).id
573
+ response.should be_forbidden
574
+ end
575
+
576
+ it "should not destroy myself" do
577
+ delete :destroy, id: profiles(:user1).id
578
+ response.should be_forbidden
579
+ end
580
+ end
581
+
582
+ describe "When not logged in" do
583
+ it "destroys the requested user" do
584
+ delete :destroy, id: profiles(:user2).id
585
+ response.should redirect_to(new_user_session_url)
586
+ end
587
+
588
+ it "should be forbidden" do
589
+ delete :destroy, id: profiles(:user2).id
590
+ response.should redirect_to(new_user_session_url)
591
+ end
592
+ end
593
+ end
594
+ end