curation_concerns 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (472) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +7 -9
  3. data/.rspec +1 -1
  4. data/.rubocop.yml +185 -0
  5. data/.travis.yml +0 -10
  6. data/CONTRIBUTING.md +117 -0
  7. data/Gemfile +5 -2
  8. data/README.md +18 -11
  9. data/Rakefile +23 -11
  10. data/VERSION +1 -1
  11. data/app/assets/images/audio.png +0 -0
  12. data/app/assets/images/loading.gif +0 -0
  13. data/app/assets/images/progressbar.gif +0 -0
  14. data/app/assets/javascripts/curation_concerns/application.js +2 -8
  15. data/app/assets/javascripts/curation_concerns/curation_concerns.js +1 -15
  16. data/app/assets/javascripts/curation_concerns/facet_mine.js +4 -10
  17. data/app/assets/javascripts/curation_concerns/fileupload.js +6 -0
  18. data/app/assets/javascripts/curation_concerns/uploader.js +183 -0
  19. data/app/assets/stylesheets/curation_concerns/_curation_concerns.scss +3 -0
  20. data/app/assets/stylesheets/curation_concerns/_positioning.scss +6 -0
  21. data/app/assets/stylesheets/curation_concerns/fileupload/jquery.fileupload-ui.scss +86 -0
  22. data/app/assets/stylesheets/curation_concerns/fileupload/thumbnail-scaling.css +3 -0
  23. data/app/assets/stylesheets/curation_concerns/fileupload.scss +48 -0
  24. data/app/assets/stylesheets/curation_concerns/modules/attributes.scss +10 -0
  25. data/app/assets/stylesheets/curation_concerns/modules/embargoes.scss +1 -1
  26. data/app/assets/stylesheets/curation_concerns/modules/forms.scss +0 -10
  27. data/app/assets/stylesheets/curation_concerns/modules/search_results.scss +7 -8
  28. data/app/controllers/concerns/curation_concerns/api.rb +77 -0
  29. data/app/controllers/concerns/curation_concerns/application_controller_behavior.rb +30 -12
  30. data/app/controllers/concerns/curation_concerns/catalog_controller.rb +9 -276
  31. data/app/controllers/concerns/curation_concerns/collections_controller_behavior.rb +51 -40
  32. data/app/controllers/concerns/curation_concerns/curation_concern_controller.rb +60 -30
  33. data/app/controllers/concerns/curation_concerns/download_behavior.rb +51 -37
  34. data/app/controllers/concerns/curation_concerns/embargoes_controller_behavior.rb +29 -29
  35. data/app/controllers/concerns/curation_concerns/file_sets_controller_behavior.rb +198 -0
  36. data/app/controllers/concerns/curation_concerns/leases_controller_behavior.rb +27 -20
  37. data/app/controllers/concerns/curation_concerns/manages_embargoes.rb +2 -7
  38. data/app/controllers/concerns/curation_concerns/parent_container.rb +20 -4
  39. data/app/controllers/concerns/curation_concerns/single_use_links_controller_behavior.rb +48 -0
  40. data/app/controllers/concerns/curation_concerns/single_use_links_viewer_controller_behavior.rb +75 -0
  41. data/app/controllers/concerns/curation_concerns/themed_layout_controller.rb +0 -1
  42. data/app/controllers/concerns/curation_concerns/upload_sets_controller_behavior.rb +38 -0
  43. data/app/controllers/concerns/curation_concerns/welcome_controller_behavior.rb +8 -0
  44. data/app/controllers/concerns/curation_concerns/without_namespace.rb +2 -1
  45. data/app/controllers/curation_concerns/classify_concerns_controller.rb +9 -9
  46. data/app/controllers/curation_concerns/file_sets_controller.rb +5 -0
  47. data/app/controllers/curation_concerns/permissions_controller.rb +2 -3
  48. data/app/controllers/curation_concerns/single_use_links_controller.rb +5 -0
  49. data/app/controllers/curation_concerns/single_use_links_viewer_controller.rb +21 -0
  50. data/app/controllers/downloads_controller.rb +0 -1
  51. data/app/controllers/embargoes_controller.rb +0 -2
  52. data/app/controllers/leases_controller.rb +0 -2
  53. data/app/controllers/registrations_controller.rb +1 -2
  54. data/app/controllers/upload_sets_controller.rb +3 -0
  55. data/app/controllers/welcome_controller.rb +3 -0
  56. data/app/forms/curation_concerns/forms/collection_edit_form.rb +18 -2
  57. data/app/forms/curation_concerns/forms/file_set_edit_form.rb +15 -0
  58. data/app/forms/curation_concerns/forms/work_form.rb +57 -0
  59. data/app/helpers/curation_concerns/ability_helper.rb +24 -24
  60. data/app/helpers/curation_concerns/catalog_helper.rb +9 -8
  61. data/app/helpers/curation_concerns/collections_helper.rb +9 -12
  62. data/app/helpers/curation_concerns/embargo_helper.rb +0 -2
  63. data/app/helpers/curation_concerns/file_set_helper.rb +31 -0
  64. data/app/helpers/curation_concerns/lease_helper.rb +0 -3
  65. data/app/helpers/curation_concerns/main_app_helpers.rb +1 -3
  66. data/app/helpers/curation_concerns/render_constraints_helper.rb +5 -5
  67. data/app/helpers/curation_concerns/search_paths_helper.rb +5 -7
  68. data/app/helpers/curation_concerns/title_helper.rb +3 -7
  69. data/app/helpers/curation_concerns/url_helper.rb +4 -6
  70. data/app/inputs/multifile_input.rb +8 -0
  71. data/app/jobs/visibility_copy_job.rb +22 -0
  72. data/app/presenters/curation_concerns/collection_presenter.rb +14 -32
  73. data/app/presenters/curation_concerns/embargo_presenter.rb +26 -0
  74. data/app/presenters/curation_concerns/file_set_presenter.rb +34 -0
  75. data/app/presenters/curation_concerns/lease_presenter.rb +30 -0
  76. data/app/presenters/curation_concerns/model_proxy.rb +27 -0
  77. data/app/presenters/curation_concerns/permission_badge.rb +61 -0
  78. data/app/presenters/curation_concerns/presenter_factory.rb +45 -0
  79. data/app/presenters/curation_concerns/presents_attributes.rb +25 -0
  80. data/app/presenters/curation_concerns/version_list_presenter.rb +18 -0
  81. data/app/presenters/curation_concerns/version_presenter.rb +27 -0
  82. data/app/presenters/curation_concerns/work_show_presenter.rb +33 -0
  83. data/app/renderers/curation_concerns/attribute_renderer.rb +75 -0
  84. data/app/search_builders/curation_concerns/deactivated_embargo_search_builder.rb +10 -0
  85. data/app/search_builders/curation_concerns/deactivated_lease_search_builder.rb +10 -0
  86. data/app/search_builders/curation_concerns/embargo_search_builder.rb +23 -0
  87. data/app/search_builders/curation_concerns/expired_embargo_search_builder.rb +11 -0
  88. data/app/search_builders/curation_concerns/expired_lease_search_builder.rb +11 -0
  89. data/app/search_builders/curation_concerns/lease_search_builder.rb +23 -0
  90. data/app/search_builders/curation_concerns/search_builder.rb +10 -16
  91. data/app/services/curation_concerns/curation_concern.rb +0 -5
  92. data/app/services/curation_concerns/embargo_service.rb +26 -4
  93. data/app/services/curation_concerns/lease_service.rb +14 -5
  94. data/app/services/curation_concerns/parent_service.rb +19 -0
  95. data/app/services/curation_concerns/restriction_service.rb +24 -0
  96. data/app/services/rights_service.rb +14 -0
  97. data/app/views/catalog/_action_menu_partials/_collection.html.erb +1 -1
  98. data/app/views/catalog/_action_menu_partials/_default.html.erb +5 -3
  99. data/app/views/catalog/_document_list.html.erb +1 -1
  100. data/app/views/catalog/index.html.erb +1 -35
  101. data/app/views/collections/_edit_descriptions.html.erb +3 -4
  102. data/app/views/collections/_form.html.erb +1 -1
  103. data/app/views/collections/_form_permission.html.erb +1 -1
  104. data/app/views/collections/_search_form.html.erb +10 -0
  105. data/app/views/collections/_show_actions.html.erb +3 -3
  106. data/app/views/collections/_sort_and_per_page.html.erb +2 -2
  107. data/app/views/collections/show.html.erb +6 -6
  108. data/app/views/curation_concerns/base/_attribute_rows.html.erb +7 -0
  109. data/app/views/curation_concerns/base/_attributes.html.erb +6 -13
  110. data/app/views/curation_concerns/base/_form.html.erb +4 -5
  111. data/app/views/curation_concerns/base/_form_descriptive_fields.erb +2 -4
  112. data/app/views/curation_concerns/base/_form_files_and_links.html.erb +3 -5
  113. data/app/views/curation_concerns/base/_form_permission.html.erb +13 -26
  114. data/app/views/curation_concerns/base/_form_permission_note.html.erb +15 -0
  115. data/app/views/curation_concerns/base/_form_permission_under_embargo.html.erb +2 -2
  116. data/app/views/curation_concerns/base/_form_permission_under_lease.html.erb +2 -2
  117. data/app/views/curation_concerns/base/_form_representative_image.html.erb +16 -4
  118. data/app/views/curation_concerns/base/_form_rights.html.erb +17 -0
  119. data/app/views/curation_concerns/base/_form_supplementary_fields.html.erb +4 -9
  120. data/app/views/curation_concerns/base/_related_files.html.erb +4 -4
  121. data/app/views/curation_concerns/base/_representative_media.html.erb +2 -4
  122. data/app/views/curation_concerns/base/_versioning.html.erb +23 -0
  123. data/app/views/curation_concerns/base/show.html.erb +13 -10
  124. data/app/views/curation_concerns/base/show.json.jbuilder +1 -0
  125. data/app/views/curation_concerns/base/versions.html.erb +6 -0
  126. data/app/views/curation_concerns/file_sets/_actions.html.erb +16 -0
  127. data/app/views/curation_concerns/file_sets/_file_set.html.erb +12 -0
  128. data/app/views/curation_concerns/{generic_files → file_sets}/_form.html.erb +7 -7
  129. data/app/views/curation_concerns/file_sets/_multiple_upload.html.erb +3 -0
  130. data/app/views/curation_concerns/{generic_files → file_sets}/edit.html.erb +0 -0
  131. data/app/views/curation_concerns/file_sets/jq_upload.json.jbuilder +8 -0
  132. data/app/views/curation_concerns/file_sets/media_display/_audio.html.erb +6 -0
  133. data/app/views/curation_concerns/file_sets/media_display/_default.html.erb +4 -0
  134. data/app/views/curation_concerns/file_sets/media_display/_image.html.erb +8 -0
  135. data/app/views/curation_concerns/file_sets/media_display/_office_document.html.erb +7 -0
  136. data/app/views/curation_concerns/file_sets/media_display/_pdf.html.erb +7 -0
  137. data/app/views/curation_concerns/file_sets/media_display/_video.html.erb +6 -0
  138. data/app/views/curation_concerns/file_sets/show.html.erb +15 -0
  139. data/app/views/curation_concerns/file_sets/show.json.jbuilder +1 -0
  140. data/app/views/curation_concerns/file_sets/upload/_alerts.html.erb +19 -0
  141. data/app/views/curation_concerns/file_sets/upload/_form.html.erb +6 -0
  142. data/app/views/curation_concerns/file_sets/upload/_form_fields.html.erb +45 -0
  143. data/app/views/curation_concerns/file_sets/upload/_script_templates.html.erb +61 -0
  144. data/app/views/curation_concerns/single_use_links/new_download.html.erb +5 -0
  145. data/app/views/curation_concerns/single_use_links/new_show.html.erb +5 -0
  146. data/app/views/curation_concerns/single_use_links_viewer/show.html.erb +10 -0
  147. data/app/views/error/single_use_error.html.erb +19 -0
  148. data/app/views/layouts/error.html.erb +33 -0
  149. data/app/views/leases/_list_expired_active_leases.html.erb +6 -1
  150. data/app/views/records/_rights_modal.html.erb +1 -0
  151. data/app/views/records/edit_fields/_default.html.erb +5 -0
  152. data/app/views/records/show_fields/_default.html.erb +6 -0
  153. data/app/views/shared/_add_content.html.erb +2 -14
  154. data/app/views/shared/_add_works.html.erb +14 -0
  155. data/app/views/shared/_my_actions.html.erb +9 -1
  156. data/app/views/shared/_site_actions.html.erb +1 -1
  157. data/app/views/shared/_site_search.html.erb +7 -7
  158. data/app/views/upload_sets/_edit.js.erb +15 -0
  159. data/app/views/upload_sets/_metadata.html.erb +50 -0
  160. data/app/views/upload_sets/_more_metadata.html.erb +7 -0
  161. data/app/views/upload_sets/edit.html.erb +26 -0
  162. data/app/views/{catalog/_home_text.html.erb → welcome/index.html.erb} +1 -0
  163. data/config/initializers/simple_form.rb +14 -0
  164. data/config/jetty.yml +5 -0
  165. data/config/locales/curation_concerns.en.yml +25 -4
  166. data/config/routes.rb +5 -0
  167. data/curation_concerns.gemspec +4 -6
  168. data/lib/curation_concerns/callbacks/registry.rb +48 -0
  169. data/lib/curation_concerns/callbacks.rb +26 -0
  170. data/lib/curation_concerns/controller_resource.rb +4 -4
  171. data/lib/curation_concerns/engine.rb +4 -2
  172. data/lib/curation_concerns/rails/routes.rb +23 -19
  173. data/lib/curation_concerns/single_use_error.rb +3 -0
  174. data/lib/curation_concerns/spec_support.rb +0 -2
  175. data/lib/curation_concerns/version.rb +1 -1
  176. data/lib/curation_concerns.rb +1 -2
  177. data/lib/generators/curation_concerns/install_generator.rb +34 -30
  178. data/lib/generators/curation_concerns/templates/catalog_controller.rb +236 -0
  179. data/lib/generators/curation_concerns/templates/config/authorities/rights.yml +19 -0
  180. data/lib/generators/curation_concerns/templates/{curation_concerns.css.scss → curation_concerns.scss} +0 -0
  181. data/lib/generators/curation_concerns/work/templates/actor_spec.rb.erb +1 -1
  182. data/lib/generators/curation_concerns/work/templates/controller_spec.rb.erb +1 -1
  183. data/lib/generators/curation_concerns/work/templates/form.rb.erb +8 -0
  184. data/lib/generators/curation_concerns/work/templates/form_spec.rb.erb +10 -0
  185. data/lib/generators/curation_concerns/work/templates/model.rb.erb +2 -2
  186. data/lib/generators/curation_concerns/work/templates/model_spec.rb.erb +1 -1
  187. data/lib/generators/curation_concerns/work/work_generator.rb +31 -26
  188. data/spec/abilities/collection_abilities_spec.rb +13 -13
  189. data/spec/abilities/embargo_and_lease_ability_spec.rb +23 -0
  190. data/spec/abilities/file_set_abilities_spec.rb +67 -0
  191. data/spec/abilities/generic_work_abilities_spec.rb +12 -12
  192. data/spec/actors/curation_concerns/embargo_actor_spec.rb +38 -0
  193. data/spec/actors/curation_concerns/file_set_actor_spec.rb +180 -0
  194. data/spec/actors/curation_concerns/lease_actor_spec.rb +39 -0
  195. data/spec/actors/curation_concerns/manages_embargoes_actor_spec.rb +44 -38
  196. data/spec/actors/curation_concerns/work_actor_spec.rb +121 -63
  197. data/spec/controllers/catalog_controller_spec.rb +30 -32
  198. data/spec/controllers/curation_concerns/classify_concerns_controller_spec.rb +2 -3
  199. data/spec/controllers/curation_concerns/collections_controller_spec.rb +93 -76
  200. data/spec/controllers/curation_concerns/file_sets_controller_json_spec.rb +106 -0
  201. data/spec/controllers/curation_concerns/file_sets_controller_spec.rb +237 -0
  202. data/spec/controllers/curation_concerns/generic_works_controller_json_spec.rb +85 -0
  203. data/spec/controllers/curation_concerns/generic_works_controller_spec.rb +84 -72
  204. data/spec/controllers/curation_concerns/permissions_controller_spec.rb +8 -11
  205. data/spec/controllers/curation_concerns/single_use_links_controller_spec.rb +79 -0
  206. data/spec/controllers/curation_concerns/single_use_links_viewer_controller_spec.rb +74 -0
  207. data/spec/controllers/downloads_controller_spec.rb +49 -24
  208. data/spec/controllers/embargoes_controller_spec.rb +42 -51
  209. data/spec/controllers/leases_controller_spec.rb +53 -42
  210. data/spec/controllers/upload_sets_controller_spec.rb +76 -0
  211. data/spec/controllers/welcome_controller_spec.rb +12 -0
  212. data/spec/factories/collections.rb +5 -1
  213. data/spec/factories/{generic_files.rb → file_sets.rb} +6 -6
  214. data/spec/factories/generic_works.rb +5 -6
  215. data/spec/factories/users.rb +2 -4
  216. data/spec/features/add_file_spec.rb +11 -12
  217. data/spec/features/catalog_search_spec.rb +43 -0
  218. data/spec/features/collection_spec.rb +61 -46
  219. data/spec/features/create_work_spec.rb +26 -19
  220. data/spec/features/embargo_spec.rb +13 -12
  221. data/spec/features/lease_spec.rb +15 -16
  222. data/spec/features/update_file_spec.rb +11 -13
  223. data/spec/features/work_generator_spec.rb +34 -26
  224. data/spec/{helpers/curation_concerns/.keep → fixtures/empty_file.txt} +0 -0
  225. data/spec/fixtures/test.pdf +0 -0
  226. data/spec/forms/collection_edit_form_spec.rb +53 -9
  227. data/spec/forms/file_set_edit_form_spec.rb +53 -0
  228. data/spec/forms/work_form_spec.rb +54 -0
  229. data/spec/helpers/catalog_helper_spec.rb +9 -10
  230. data/spec/helpers/configuration_helper_spec.rb +1 -2
  231. data/spec/helpers/curation_concerns/collections_helper_spec.rb +8 -9
  232. data/spec/helpers/curation_concerns/file_set_helper_spec.rb +61 -0
  233. data/spec/helpers/render_constraints_helper_spec.rb +4 -4
  234. data/spec/helpers/url_helper_spec.rb +8 -7
  235. data/spec/indexers/collection_indexer_spec.rb +14 -0
  236. data/spec/indexers/file_set_indexing_service_spec.rb +69 -0
  237. data/spec/indexers/generic_work_indexing_service_spec.rb +22 -0
  238. data/spec/inputs/multifile_input_spec.rb +32 -0
  239. data/spec/jobs/active_fedora_id_based_job_spec.rb +10 -8
  240. data/spec/jobs/audit_job_spec.rb +28 -20
  241. data/spec/jobs/characterize_job_spec.rb +10 -15
  242. data/spec/jobs/create_derivatives_job_spec.rb +11 -9
  243. data/spec/jobs/import_url_job_spec.rb +14 -21
  244. data/spec/jobs/ingest_file_job_spec.rb +45 -0
  245. data/spec/jobs/ingest_local_file_job_spec.rb +13 -15
  246. data/spec/jobs/upload_set_update_job_spec.rb +30 -0
  247. data/spec/jobs/visibility_copy_job_spec.rb +61 -0
  248. data/spec/lib/curation_concerns/callbacks/registry_spec.rb +54 -0
  249. data/spec/lib/curation_concerns/callbacks_spec.rb +27 -0
  250. data/spec/lib/curation_concerns/messages_spec.rb +29 -30
  251. data/spec/lib/curation_concerns/readable_permissions_spec.rb +18 -20
  252. data/spec/lib/curation_concerns/writable_permissions_spec.rb +2 -4
  253. data/spec/matchers/metadata_field_matchers.rb +1 -1
  254. data/spec/matchers/response_matchers.rb +2 -2
  255. data/spec/matchers.rb +3 -2
  256. data/spec/models/checksum_audit_log_spec.rb +37 -32
  257. data/spec/models/curation_concerns/collection_behavior_spec.rb +50 -37
  258. data/spec/models/curation_concerns/file_set/derivatives_spec.rb +84 -0
  259. data/spec/models/curation_concerns/work_behavior_spec.rb +53 -0
  260. data/spec/models/file_set_spec.rb +601 -0
  261. data/spec/models/generic_work_spec.rb +15 -14
  262. data/spec/models/single_use_link_spec.rb +69 -0
  263. data/spec/models/solr_document_spec.rb +67 -0
  264. data/spec/models/upload_set_spec.rb +39 -0
  265. data/spec/models/user_spec.rb +7 -8
  266. data/spec/presenters/curation_concerns/collection_presenter_spec.rb +8 -24
  267. data/spec/presenters/curation_concerns/file_set_presenter_spec.rb +59 -0
  268. data/spec/presenters/curation_concerns/permission_badge_spec.rb +29 -0
  269. data/spec/presenters/curation_concerns/presenter_factory_spec.rb +29 -0
  270. data/spec/presenters/curation_concerns/version_list_presenter_spec.rb +32 -0
  271. data/spec/presenters/curation_concerns/version_presenter_spec.rb +51 -0
  272. data/spec/presenters/curation_concerns/work_show_presenter_spec.rb +35 -0
  273. data/spec/presenters/embargo_presenter_spec.rb +48 -0
  274. data/spec/presenters/lease_presenter_spec.rb +48 -0
  275. data/spec/renderers/curation_concerns/attribute_renderer_spec.rb +14 -0
  276. data/spec/routing/curation_concerns/routes_spec.rb +38 -12
  277. data/spec/routing/route_spec.rb +38 -39
  278. data/spec/search_builders/curation_concerns/embargo_search_builder_spec.rb +17 -0
  279. data/spec/search_builders/curation_concerns/lease_search_builder_spec.rb +17 -0
  280. data/spec/search_builders/curation_concerns/search_builder_spec.rb +60 -0
  281. data/spec/services/derivative_path_spec.rb +16 -0
  282. data/spec/services/embargo_service_spec.rb +15 -14
  283. data/spec/services/file_set_audit_service_spec.rb +71 -0
  284. data/spec/services/lease_service_spec.rb +13 -13
  285. data/spec/services/lock_manager_spec.rb +12 -0
  286. data/spec/services/parent_service_spec.rb +13 -0
  287. data/spec/services/persist_derivatives_spec.rb +24 -0
  288. data/spec/services/persist_directly_contained_output_file_service_spec.rb +14 -0
  289. data/spec/services/repository_audit_service_spec.rb +8 -7
  290. data/spec/services/rights_service_spec.rb +17 -0
  291. data/spec/services/thumbnail_path_service_spec.rb +43 -0
  292. data/spec/services/versioning_service_spec.rb +8 -9
  293. data/spec/spec_helper.rb +21 -13
  294. data/spec/support/curation_concerns/factory_helpers.rb +1 -0
  295. data/spec/support/features/fixture_file_upload.rb +3 -1
  296. data/spec/support/features/session_helpers.rb +3 -4
  297. data/spec/support/features.rb +1 -4
  298. data/spec/support/input_support.rb +11 -0
  299. data/spec/support/matchers/api_responses.rb +22 -0
  300. data/spec/support/shared/shared_examples_has_dc_metadata.rb +0 -2
  301. data/spec/support/shared/shared_examples_is_embargoable.rb +1 -3
  302. data/spec/support/shared/shared_examples_with_access_rights.rb +13 -16
  303. data/spec/tasks/rake_spec.rb +9 -11
  304. data/spec/test_app_templates/Gemfile.extra +4 -1
  305. data/spec/test_app_templates/lib/generators/test_app_generator.rb +3 -35
  306. data/spec/views/catalog/index.html.erb_spec.rb +7 -10
  307. data/spec/views/curation_concerns/base/_attributes.html.erb_spec.rb +9 -6
  308. data/spec/views/curation_concerns/base/_form_permission.html.erb_spec.rb +13 -0
  309. data/spec/views/curation_concerns/base/show.html.erb_spec.rb +35 -15
  310. data/spec/views/curation_concerns/base/show.json.jbuilder_spec.rb +21 -0
  311. data/spec/views/curation_concerns/file_sets/_file_set.html.erb_spec.rb +37 -0
  312. data/spec/views/curation_concerns/file_sets/show.json.jbuilder_spec.rb +21 -0
  313. data/spec/views/curation_concerns/permissions/confirm.html.erb_spec.rb +6 -6
  314. data/spec/views/error/single_use_error.html.erb_spec.rb +8 -0
  315. data/spec/views/layouts/error.html.erb_spec.rb +8 -0
  316. data/spec/views/shared/_add_content.html.erb_spec.rb +33 -20
  317. data/spec/views/shared/_my_actions.html.erb_spec.rb +18 -6
  318. data/spec/views/single_use_links/new_download.html.erb_spec.rb +29 -0
  319. data/spec/views/single_use_links_viewer/show.html.erb_spec.rb +32 -0
  320. data/tasks/jetty.rake +1 -1
  321. data/vendor/assets/javascrips/fileupload/jquery.fileupload-process.js +175 -0
  322. data/vendor/assets/javascrips/fileupload/jquery.fileupload-ui.js +710 -0
  323. data/vendor/assets/javascrips/fileupload/jquery.fileupload-validate.js +122 -0
  324. data/vendor/assets/javascrips/fileupload/jquery.fileupload.js +1477 -0
  325. data/vendor/assets/javascrips/fileupload/locale.js +27 -0
  326. data/vendor/assets/javascrips/fileupload/tmpl.js +87 -0
  327. metadata +242 -213
  328. data/app/assets/javascripts/curation_concerns/help_modal.js +0 -36
  329. data/app/assets/javascripts/curation_concerns/link_groups.js.coffee +0 -123
  330. data/app/assets/javascripts/curation_concerns/link_users.js.coffee +0 -126
  331. data/app/assets/javascripts/curation_concerns/proxy_rights.js.coffee +0 -95
  332. data/app/assets/javascripts/curation_concerns/proxy_submission.js +0 -23
  333. data/app/assets/javascripts/curation_concerns/select_works.js.coffee +0 -20
  334. data/app/controllers/catalog_controller.rb +0 -3
  335. data/app/controllers/concerns/curation_concerns/generic_files_controller_behavior.rb +0 -149
  336. data/app/controllers/curation_concerns/generic_files_controller.rb +0 -13
  337. data/app/datastreams/curation_concerns/generic_work_rdf_properties.rb +0 -57
  338. data/app/datastreams/generic_work_metadata.rb +0 -3
  339. data/app/forms/curation_concerns/forms/generic_file_edit_form.rb +0 -15
  340. data/app/forms/curation_concerns/forms/generic_work_edit_form.rb +0 -9
  341. data/app/helpers/curation_concerns/attribute_helper.rb +0 -67
  342. data/app/helpers/curation_concerns/generic_file_helper.rb +0 -19
  343. data/app/helpers/curation_concerns/thumbnail_helper.rb +0 -11
  344. data/app/presenters/curation_concerns/generic_file_presenter.rb +0 -14
  345. data/app/presenters/curation_concerns/generic_work_presenter.rb +0 -13
  346. data/app/views/catalog/_index_default.html.erb +0 -17
  347. data/app/views/collections/_form_representative_image.html.erb +0 -13
  348. data/app/views/collections/_identifier_and_action.html.erb +0 -15
  349. data/app/views/curation_concerns/base/_form_content_license.html.erb +0 -16
  350. data/app/views/curation_concerns/base/_form_editors.html.erb +0 -15
  351. data/app/views/curation_concerns/generic_files/_actions.html.erb +0 -16
  352. data/app/views/curation_concerns/generic_files/_generic_file.html.erb +0 -12
  353. data/app/views/curation_concerns/generic_files/_media_display.html.erb +0 -19
  354. data/app/views/curation_concerns/generic_files/jq_upload.json.jbuilder +0 -8
  355. data/app/views/curation_concerns/generic_files/show.html.erb +0 -15
  356. data/app/workers/visibility_copy_worker.rb +0 -30
  357. data/curation_concerns-models/.gitignore +0 -17
  358. data/curation_concerns-models/Gemfile +0 -4
  359. data/curation_concerns-models/LICENSE.md +0 -177
  360. data/curation_concerns-models/README.md +0 -42
  361. data/curation_concerns-models/Rakefile +0 -1
  362. data/curation_concerns-models/app/actors/concerns/curation_concerns/manages_embargoes_actor.rb +0 -99
  363. data/curation_concerns-models/app/actors/curation_concerns/base_actor.rb +0 -90
  364. data/curation_concerns-models/app/actors/curation_concerns/generic_file_actor.rb +0 -150
  365. data/curation_concerns-models/app/actors/curation_concerns/work_actor_behavior.rb +0 -88
  366. data/curation_concerns-models/app/jobs/active_fedora_id_based_job.rb +0 -22
  367. data/curation_concerns-models/app/jobs/active_fedora_pid_based_job.rb +0 -6
  368. data/curation_concerns-models/app/jobs/audit_job.rb +0 -58
  369. data/curation_concerns-models/app/jobs/characterize_job.rb +0 -11
  370. data/curation_concerns-models/app/jobs/copy_permissions_job.rb +0 -24
  371. data/curation_concerns-models/app/jobs/create_derivatives_job.rb +0 -15
  372. data/curation_concerns-models/app/jobs/import_url_job.rb +0 -56
  373. data/curation_concerns-models/app/jobs/ingest_local_file_job.rb +0 -48
  374. data/curation_concerns-models/app/jobs/resolrize_job.rb +0 -9
  375. data/curation_concerns-models/app/models/checksum_audit_log.rb +0 -21
  376. data/curation_concerns-models/app/models/concerns/curation_concerns/ability.rb +0 -34
  377. data/curation_concerns-models/app/models/concerns/curation_concerns/basic_metadata.rb +0 -87
  378. data/curation_concerns-models/app/models/concerns/curation_concerns/collection_behavior.rb +0 -47
  379. data/curation_concerns-models/app/models/concerns/curation_concerns/generic_file/belongs_to_works.rb +0 -53
  380. data/curation_concerns-models/app/models/concerns/curation_concerns/generic_file/characterization.rb +0 -89
  381. data/curation_concerns-models/app/models/concerns/curation_concerns/generic_file/content.rb +0 -8
  382. data/curation_concerns-models/app/models/concerns/curation_concerns/generic_file/export.rb +0 -343
  383. data/curation_concerns-models/app/models/concerns/curation_concerns/generic_file/full_text_indexing.rb +0 -12
  384. data/curation_concerns-models/app/models/concerns/curation_concerns/generic_file/indexing.rb +0 -14
  385. data/curation_concerns-models/app/models/concerns/curation_concerns/generic_file/versions.rb +0 -16
  386. data/curation_concerns-models/app/models/concerns/curation_concerns/generic_file.rb +0 -5
  387. data/curation_concerns-models/app/models/concerns/curation_concerns/generic_file_behavior.rb +0 -44
  388. data/curation_concerns-models/app/models/concerns/curation_concerns/generic_work_behavior.rb +0 -38
  389. data/curation_concerns-models/app/models/concerns/curation_concerns/has_representative.rb +0 -14
  390. data/curation_concerns-models/app/models/concerns/curation_concerns/human_readable_type.rb +0 -23
  391. data/curation_concerns-models/app/models/concerns/curation_concerns/permissions/readable.rb +0 -19
  392. data/curation_concerns-models/app/models/concerns/curation_concerns/permissions/writable.rb +0 -75
  393. data/curation_concerns-models/app/models/concerns/curation_concerns/permissions.rb +0 -7
  394. data/curation_concerns-models/app/models/concerns/curation_concerns/serializers.rb +0 -15
  395. data/curation_concerns-models/app/models/concerns/curation_concerns/solr_document_behavior.rb +0 -135
  396. data/curation_concerns-models/app/models/concerns/curation_concerns/user.rb +0 -65
  397. data/curation_concerns-models/app/models/concerns/curation_concerns/with_basic_metadata.rb +0 -98
  398. data/curation_concerns-models/app/models/concerns/curation_concerns/with_generic_files.rb +0 -29
  399. data/curation_concerns-models/app/models/curation_concerns/classify_concern.rb +0 -47
  400. data/curation_concerns-models/app/models/curation_concerns/quick_classification_query.rb +0 -31
  401. data/curation_concerns-models/app/models/datastreams/fits_datastream.rb +0 -148
  402. data/curation_concerns-models/app/models/version_committer.rb +0 -2
  403. data/curation_concerns-models/app/services/curation_concerns/characterization_service.rb +0 -71
  404. data/curation_concerns-models/app/services/curation_concerns/full_text_extraction_service.rb +0 -38
  405. data/curation_concerns-models/app/services/curation_concerns/generic_file_audit_service.rb +0 -85
  406. data/curation_concerns-models/app/services/curation_concerns/generic_file_indexing_service.rb +0 -14
  407. data/curation_concerns-models/app/services/curation_concerns/generic_work_indexing_service.rb +0 -16
  408. data/curation_concerns-models/app/services/curation_concerns/noid.rb +0 -23
  409. data/curation_concerns-models/app/services/curation_concerns/repository_audit_service.rb +0 -9
  410. data/curation_concerns-models/app/services/curation_concerns/versioning_service.rb +0 -27
  411. data/curation_concerns-models/config/locales/curation_concerns.en.yml +0 -6
  412. data/curation_concerns-models/curation_concerns-models.gemspec +0 -34
  413. data/curation_concerns-models/lib/curation_concerns/messages.rb +0 -66
  414. data/curation_concerns-models/lib/curation_concerns/models/engine.rb +0 -61
  415. data/curation_concerns-models/lib/curation_concerns/models/resque.rb +0 -36
  416. data/curation_concerns-models/lib/curation_concerns/models/utils.rb +0 -22
  417. data/curation_concerns-models/lib/curation_concerns/models/version.rb +0 -5
  418. data/curation_concerns-models/lib/curation_concerns/models.rb +0 -32
  419. data/curation_concerns-models/lib/generators/curation_concerns/models/abstract_migration_generator.rb +0 -30
  420. data/curation_concerns-models/lib/generators/curation_concerns/models/clamav_generator.rb +0 -19
  421. data/curation_concerns-models/lib/generators/curation_concerns/models/fulltext_generator.rb +0 -28
  422. data/curation_concerns-models/lib/generators/curation_concerns/models/install_generator.rb +0 -70
  423. data/curation_concerns-models/lib/generators/curation_concerns/models/templates/app/models/collection.rb +0 -4
  424. data/curation_concerns-models/lib/generators/curation_concerns/models/templates/app/models/generic_file.rb +0 -4
  425. data/curation_concerns-models/lib/generators/curation_concerns/models/templates/config/clamav.rb +0 -1
  426. data/curation_concerns-models/lib/generators/curation_concerns/models/templates/config/curation_concerns.rb +0 -123
  427. data/curation_concerns-models/lib/generators/curation_concerns/models/templates/config/mime_types.rb +0 -6
  428. data/curation_concerns-models/lib/generators/curation_concerns/models/templates/config/redis.yml +0 -9
  429. data/curation_concerns-models/lib/generators/curation_concerns/models/templates/config/redis_config.rb +0 -32
  430. data/curation_concerns-models/lib/generators/curation_concerns/models/templates/config/resque-pool.yml +0 -1
  431. data/curation_concerns-models/lib/generators/curation_concerns/models/templates/config/resque_admin.rb +0 -10
  432. data/curation_concerns-models/lib/generators/curation_concerns/models/templates/config/resque_config.rb +0 -5
  433. data/curation_concerns-models/lib/generators/curation_concerns/models/templates/migrations/create_checksum_audit_logs.rb +0 -19
  434. data/curation_concerns-models/lib/generators/curation_concerns/models/templates/migrations/create_version_committers.rb +0 -15
  435. data/curation_concerns-models/lib/tasks/curation_concerns-models_tasks.rake +0 -75
  436. data/curation_concerns-models/lib/tasks/migrate.rake +0 -13
  437. data/curation_concerns-models/lib/tasks/resque.rake +0 -13
  438. data/curation_concerns-models/lib/tasks/solr_reindex.rake +0 -8
  439. data/lib/curation_concerns/configuration.rb +0 -74
  440. data/lib/generators/curation_concerns/templates/curation_concerns_config.rb +0 -2
  441. data/solr_conf/conf/solrconfig.xml +0 -223
  442. data/spec/abilities/generic_file_abilities_spec.rb +0 -62
  443. data/spec/actors/curation_concerns/generic_file_actor_spec.rb +0 -116
  444. data/spec/controllers/curation_concerns/generic_files_controller_spec.rb +0 -251
  445. data/spec/forms/generic_file_edit_form_spec.rb +0 -33
  446. data/spec/helpers/thumbnail_helper_spec.rb +0 -21
  447. data/spec/jobs/copy_permissions_job_spec.rb +0 -49
  448. data/spec/jobs/curation_concerns_resque_queue_spec.rb +0 -49
  449. data/spec/models/curation_concerns/generic_file/derivatives_spec.rb +0 -88
  450. data/spec/models/curation_concerns/generic_work_behavior_spec.rb +0 -35
  451. data/spec/models/fits_datastream_spec.rb +0 -127
  452. data/spec/models/generic_file_spec.rb +0 -619
  453. data/spec/presenters/curation_concerns/generic_file_presenter_spec.rb +0 -16
  454. data/spec/services/characterization_service_spec.rb +0 -30
  455. data/spec/services/full_text_extraction_service_spec.rb +0 -5
  456. data/spec/services/generic_file_audit_service_spec.rb +0 -71
  457. data/spec/services/generic_file_indexing_service_spec.rb +0 -57
  458. data/spec/services/generic_work_indexing_service_spec.rb +0 -18
  459. data/spec/workers/visibility_copy_worker_spec.rb +0 -70
  460. data/vendor/assets/javascripts/handlebars.js +0 -2278
  461. data/vendor/assets/javascripts/jquery-ui-1.9.2/jquery.ui.autocomplete.js +0 -602
  462. data/vendor/assets/javascripts/jquery-ui-1.9.2/jquery.ui.core.js +0 -356
  463. data/vendor/assets/javascripts/jquery-ui-1.9.2/jquery.ui.effect-highlight.js +0 -50
  464. data/vendor/assets/javascripts/jquery-ui-1.9.2/jquery.ui.effect.js +0 -1276
  465. data/vendor/assets/javascripts/jquery-ui-1.9.2/jquery.ui.menu.js +0 -610
  466. data/vendor/assets/javascripts/jquery-ui-1.9.2/jquery.ui.position.js +0 -498
  467. data/vendor/assets/javascripts/jquery-ui-1.9.2/jquery.ui.widget.js +0 -528
  468. data/vendor/assets/javascripts/jquery.tokeninput.js +0 -1061
  469. data/vendor/assets/stylesheets/jquery-ui-lightness.css +0 -474
  470. data/vendor/assets/stylesheets/token-input-facebook.css +0 -122
  471. data/vendor/assets/stylesheets/token-input-mac.css +0 -204
  472. data/vendor/assets/stylesheets/token-input.css +0 -127
@@ -6,16 +6,16 @@ describe 'collection' do
6
6
  click_link 'Add a Collection'
7
7
  fill_in('Title', with: title)
8
8
  fill_in('collection_description', with: description)
9
- click_button("Create Collection")
9
+ click_button('Create Collection')
10
10
  expect(page).to have_content 'Items in this Collection'
11
11
  expect(page).to have_content title
12
12
  expect(page).to have_content description
13
13
  end
14
14
 
15
- let(:title1) {"Test Collection 1"}
16
- let(:description1) {"Description for collection 1 we are testing."}
17
- let(:title2) {"Test Collection 2"}
18
- let(:description2) {"Description for collection 2 we are testing."}
15
+ let(:title1) { 'Test Collection 1' }
16
+ let(:description1) { 'Description for collection 1 we are testing.' }
17
+ let(:title2) { 'Test Collection 2' }
18
+ let(:description2) { 'Description for collection 2 we are testing.' }
19
19
 
20
20
  let(:user) { FactoryGirl.create(:user, email: 'user1@example.com') }
21
21
  let(:user_key) { user.user_key }
@@ -28,8 +28,8 @@ describe 'collection' do
28
28
  end
29
29
  end
30
30
  end
31
- let(:gw1) { generic_works[0]}
32
- let(:gw2) { generic_works[1]}
31
+ let(:gw1) { generic_works[0] }
32
+ let(:gw2) { generic_works[1] }
33
33
 
34
34
  before(:all) do
35
35
  @old_resque_inline_value = Resque.inline
@@ -47,13 +47,13 @@ describe 'collection' do
47
47
  sign_in user
48
48
  visit search_path_for_my_collections
49
49
  end
50
- it "should create a collection" do
51
- title = "Genealogies of the American West"
52
- description = "All about Genealogies of the American West"
50
+ it 'creates a collection' do
51
+ title = 'Genealogies of the American West'
52
+ description = 'All about Genealogies of the American West'
53
53
  click_link 'Add a Collection'
54
54
  fill_in('Title', with: title)
55
55
  fill_in('collection_description', with: description)
56
- click_button("Create Collection")
56
+ click_button('Create Collection')
57
57
  expect(page).to have_content 'Items in this Collection'
58
58
  expect(page).to have_content title
59
59
  expect(page).to have_content description
@@ -61,55 +61,54 @@ describe 'collection' do
61
61
  end
62
62
 
63
63
  describe 'delete collection' do
64
- before (:each) do
65
- @collection = Collection.new title:'collection title'
64
+ before do
65
+ @collection = Collection.new title: 'collection title'
66
66
  @collection.description = 'collection description'
67
67
  @collection.apply_depositor_metadata(user_key)
68
68
  @collection.save
69
69
  sign_in user
70
- visit main_app.catalog_index_path(:'f[generic_type_sim][]' => 'Collection', works: 'mine')
70
+ visit main_app.catalog_index_path('f[generic_type_sim][]' => 'Collection', works: 'mine')
71
71
  end
72
72
 
73
- it "should delete a collection" do
73
+ it 'deletes a collection' do
74
74
  expect(page).to have_content(@collection.title)
75
75
  within("#document_#{@collection.id}") do
76
- first(".itemtrash").click
76
+ first('.itemtrash').click
77
77
  end
78
78
  expect(page).to_not have_content(@collection.title)
79
- expect(page).to have_content("Collection was successfully deleted.")
79
+ expect(page).to have_content('Collection was successfully deleted.')
80
80
  end
81
81
  end
82
82
 
83
83
  describe 'show collection' do
84
84
  before do
85
- @collection = FactoryGirl.create(:collection, user:user, title: 'collection title', description:'collection description')
85
+ @collection = FactoryGirl.create(:collection, user: user, title: 'collection title', description: 'collection description')
86
86
  # @collection = Collection.new title: 'collection title'
87
87
  # @collection.description = ['collection description']
88
88
  # @collection.apply_depositor_metadata(user_key)
89
- @collection.members = [gw1,gw2]
89
+ @collection.members = [gw1, gw2]
90
90
  @collection.save
91
91
  sign_in user
92
92
  visit search_path_for_my_collections
93
93
  end
94
94
 
95
- it "should show a collection with a listing of Descriptive Metadata and catalog-style search results" do
95
+ it 'shows a collection with a listing of Descriptive Metadata and catalog-style search results' do
96
96
  expect(page).to have_content(@collection.title)
97
- within('#document_'+@collection.id) do
98
- click_link("collection title")
97
+ within('#document_' + @collection.id) do
98
+ click_link('collection title')
99
99
  end
100
100
  expect(page).to have_content(@collection.title)
101
101
  expect(page).to have_content(@collection.description)
102
102
  # Should have search results / contents listing
103
103
  expect(page).to have_content(gw1.title.first)
104
104
  expect(page).to have_content(gw2.title.first)
105
- expect(page).to_not have_css(".pager")
106
-
105
+ expect(page).to_not have_css('.pager')
107
106
  end
108
107
 
109
- it "should hide collection descriptive metadata when searching a collection" do
108
+ it 'hides collection descriptive metadata when searching a collection' do
110
109
  expect(page).to have_content(@collection.title)
111
110
  within("#document_#{@collection.id}") do
112
- click_link("collection title")
111
+ click_link('collection title')
113
112
  end
114
113
  expect(page).to have_content(@collection.title)
115
114
  expect(page).to have_content(@collection.description)
@@ -118,19 +117,19 @@ describe 'collection' do
118
117
  fill_in('collection_search', with: gw1.title.first)
119
118
  click_button('collection_submit')
120
119
  # Should not have Collection Descriptive metadata table
121
- expect(page).to_not have_content("Descriptions")
120
+ expect(page).to_not have_content('Descriptions')
122
121
  expect(page).to have_content(@collection.title)
123
122
  expect(page).to have_content(@collection.description)
124
123
  # Should have search results / contents listing
125
124
  expect(page).to have_content(gw1.title.first)
126
125
  expect(page).to_not have_content(gw2.title.first)
127
126
  # Should not have Dashboard content in contents listing
128
- expect(page).to_not have_content("Visibility")
127
+ expect(page).to_not have_content('Visibility')
129
128
  end
130
129
  end
131
130
 
132
131
  describe 'edit collection' do
133
- before (:each) do
132
+ before do
134
133
  @collection = Collection.new(title: 'Awesome Title')
135
134
  @collection.description = 'collection description'
136
135
  @collection.apply_depositor_metadata(user_key)
@@ -140,22 +139,22 @@ describe 'collection' do
140
139
  visit search_path_for_my_collections
141
140
  end
142
141
 
143
- it "should edit and update collection metadata" do
142
+ it 'edits and update collection metadata' do
144
143
  expect(page).to have_content(@collection.title)
145
144
  within("#document_#{@collection.id}") do
146
145
  click_link('Edit Collection')
147
146
  end
148
147
  expect(page).to have_field('collection_title', with: @collection.title)
149
148
  expect(page).to have_field('collection_description', with: @collection.description)
150
- new_title = "Altered Title"
151
- new_description = "Completely new Description text."
152
- creators = ["Dorje Trollo", "Vajrayogini"]
149
+ new_title = 'Altered Title'
150
+ new_description = 'Completely new Description text.'
151
+ creators = ['Dorje Trollo', 'Vajrayogini']
153
152
  fill_in('Title', with: new_title)
154
153
  fill_in('collection_description', with: new_description)
155
154
  fill_in('Creator', with: creators.first)
156
- #within('.form-actions') do
157
- click_button('Update Collection')
158
- #end
155
+ # within('.form-actions') do
156
+ click_button('Update Collection')
157
+ # end
159
158
  expect(page).to_not have_content(@collection.title)
160
159
  expect(page).to_not have_content(@collection.description)
161
160
  expect(page).to have_content(new_title)
@@ -163,7 +162,7 @@ describe 'collection' do
163
162
  expect(page).to have_content(creators.first)
164
163
  end
165
164
 
166
- it "should remove a work from a collection" do
165
+ it 'removes a work from a collection from edit page' do
167
166
  expect(page).to have_content(@collection.title)
168
167
  within("#document_#{@collection.id}") do
169
168
  click_link('Edit Collection')
@@ -181,10 +180,26 @@ describe 'collection' do
181
180
  expect(page).to have_content(gw2.title.first)
182
181
  end
183
182
 
184
- it "should remove all works from a collection" do
185
- skip "This is from Sufia, not sure if it should be here."
183
+ it 'removes a work from a collection from show page' do
184
+ expect(page).to have_content(@collection.title)
185
+ within('#document_' + @collection.id) do
186
+ click_link(@collection.title)
187
+ end
188
+ expect(page).to have_content(gw1.title.first)
189
+ expect(page).to have_content(gw2.title.first)
190
+ within("#document_#{gw1.id}") do
191
+ click_link('Remove From Collection')
192
+ end
193
+ expect(page).to have_content(@collection.title)
194
+ expect(page).to have_content(@collection.description)
195
+ expect(page).to_not have_content(gw1.title.first)
196
+ expect(page).to have_content(gw2.title.first)
197
+ end
198
+
199
+ it 'removes all works from a collection' do
200
+ skip 'This is from Sufia, not sure if it should be here.'
186
201
  expect(page).to have_content(@collection.title)
187
- within('#document_'+@collection.id) do
202
+ within('#document_' + @collection.id) do
188
203
  click_link('Edit Collection')
189
204
  end
190
205
  expect(page).to have_field('collection_title', with: @collection.title)
@@ -201,8 +216,8 @@ describe 'collection' do
201
216
  end
202
217
 
203
218
  describe 'show pages of a collection' do
204
- before (:each) do
205
- @collection = Collection.new title:'collection title'
219
+ before do
220
+ @collection = Collection.new title: 'collection title'
206
221
  @collection.description = 'collection description'
207
222
  @collection.apply_depositor_metadata(user_key)
208
223
  @collection.members = generic_works
@@ -211,12 +226,12 @@ describe 'collection' do
211
226
  visit search_path_for_my_collections
212
227
  end
213
228
 
214
- it "should show a collection with a listing of Descriptive Metadata and catalog-style search results" do
229
+ it 'shows a collection with a listing of Descriptive Metadata and catalog-style search results' do
215
230
  expect(page).to have_content(@collection.title)
216
- within('#document_'+@collection.id) do
217
- click_link("collection title")
231
+ within('#document_' + @collection.id) do
232
+ click_link('collection title')
218
233
  end
219
- expect(page).to have_css(".pager")
234
+ expect(page).to have_css('.pager')
220
235
  end
221
236
  end
222
237
  end
@@ -1,41 +1,48 @@
1
1
  require 'spec_helper'
2
+ require 'redlock'
2
3
 
3
- describe "Creating a new Work" do
4
+ describe 'Creating a new Work' do
4
5
  let(:user) { FactoryGirl.create(:user) }
5
6
 
7
+ let(:redlock_client_stub) { # stub out redis connection
8
+ client = double('redlock client')
9
+ allow(client).to receive(:lock).and_yield(true)
10
+ allow(Redlock::Client).to receive(:new).and_return(client)
11
+ client
12
+ }
13
+
6
14
  before do
7
15
  sign_in user
8
16
 
9
17
  # stub out characterization. Travis doesn't have fits installed, and it's not relevant to the test.
10
- s2 = double('resque message')
11
- expect(CharacterizeJob).to receive(:new).and_return(s2)
12
- expect(CurationConcerns.queue).to receive(:push).with(s2).once
18
+ expect(CharacterizeJob).to receive(:perform_later)
19
+ redlock_client_stub
13
20
  end
14
21
 
15
- it "should create the work and allow you to attach a file" do
16
- visit "/concern/generic_works/new"
22
+ it 'creates the work and allow you to attach a file' do
23
+ visit '/concern/generic_works/new'
17
24
  work_title = 'My Test Work'
18
- within("form.new_generic_work") do
19
- fill_in("Title", with: work_title)
20
- attach_file("Upload a file", fixture_file_path('files/image.png'))
21
- choose("visibility_open")
22
- click_on("Create Generic work")
25
+ within('form.new_generic_work') do
26
+ fill_in('Title', with: work_title)
27
+ attach_file('Upload a file', fixture_file_path('files/image.png'))
28
+ choose('visibility_open')
29
+ click_on('Create Generic work')
23
30
  end
24
31
  within '.related_files' do
25
- expect(page).to have_link "image.png"
32
+ expect(page).to have_link 'image.png'
26
33
  end
27
34
 
28
- title = "Genealogies of the American West"
35
+ title = 'Genealogies of the American West'
29
36
  click_link 'Add a Collection'
30
37
  fill_in('Title', with: title)
31
- click_button("Create Collection")
32
- click_on("Add files from your dashboard")
33
- find("#facet-human_readable_type_sim").click_link('Generic Work')
38
+ click_button('Create Collection')
39
+ click_on('Add files from your dashboard')
40
+ find('#facet-human_readable_type_sim').click_link('Generic Work')
34
41
 
35
42
  # Works can be added to collections
36
- within(".modal.fade", :match => :first) do
37
- select title, :from => "id"
38
- click_on("Add to collection")
43
+ within('.modal.fade', match: :first) do
44
+ select title, from: 'id'
45
+ click_on('Add to collection')
39
46
  end
40
47
  expect(page).to have_content('Collection was successfully updated.')
41
48
  expect(page).to have_content(work_title)
@@ -5,7 +5,7 @@ describe 'embargo' do
5
5
  before do
6
6
  sign_in user
7
7
  end
8
- describe "creating an embargoed object" do
8
+ describe 'creating an embargoed object' do
9
9
  before do
10
10
  visit '/'
11
11
  end
@@ -13,37 +13,38 @@ describe 'embargo' do
13
13
  let(:future_date) { 5.days.from_now }
14
14
  let(:later_future_date) { 10.days.from_now }
15
15
 
16
- it "can be created, displayed and updated" do
16
+ it 'can be created, displayed and updated' do
17
17
  click_link 'New Generic Work'
18
18
  fill_in 'Title', with: 'Embargo test'
19
19
  choose 'Embargo'
20
- fill_in "generic_work_embargo_release_date", with: future_date
20
+ fill_in 'generic_work_embargo_release_date', with: future_date
21
21
  select 'Private', from: 'Restricted to'
22
22
  select 'Open Access', from: 'then open it up to'
23
23
  click_button 'Create Generic work'
24
24
 
25
- expect(page).to have_content(future_date.to_datetime.iso8601) # chosen embargo date is on the show page
25
+ # chosen embargo date is on the show page
26
+ expect(page).to have_content(future_date.to_datetime.iso8601.sub(/\+00:00/, 'Z'))
26
27
 
27
- click_link "Edit This Generic Work"
28
- click_link "Embargo Management Page"
28
+ click_link 'Edit This Generic Work'
29
+ click_link 'Embargo Management Page'
29
30
 
30
- expect(page).to have_content("This work is under embargo.")
31
- expect(page).to have_xpath("//input[@name='generic_work[embargo_release_date]' and @value='#{future_date.to_datetime.iso8601}']") # current embargo date is pre-populated in edit field
31
+ expect(page).to have_content('This work is under embargo.')
32
+ expect(page).to have_xpath("//input[@name='generic_work[embargo_release_date]' and @value='#{future_date.to_datetime.iso8601}']") # current embargo date is pre-populated in edit field
32
33
 
33
- fill_in "until", with: later_future_date.to_s
34
+ fill_in 'until', with: later_future_date.to_s
34
35
 
35
- click_button "Update Embargo"
36
+ click_button 'Update Embargo'
36
37
  expect(page).to have_content(later_future_date.to_date.to_formatted_s(:long_ordinal))
37
38
  end
38
39
  end
39
40
 
40
- describe "managing embargoes" do
41
+ describe 'managing embargoes' do
41
42
  before do
42
43
  # admin privs
43
44
  allow_any_instance_of(Ability).to receive(:user_groups).and_return(['admin'])
44
45
  end
45
46
 
46
- it "should show lists of objects under lease" do
47
+ it 'shows lists of objects under lease' do
47
48
  visit '/embargoes'
48
49
  expect(page).to have_content 'Manage Embargoes'
49
50
  end
@@ -1,47 +1,46 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe "leases" do
3
+ describe 'leases' do
4
4
  let(:user) { FactoryGirl.create(:user) }
5
5
  before do
6
6
  sign_in user
7
7
  end
8
- describe "create a new leased object" do
9
-
8
+ describe 'create a new leased object' do
10
9
  let(:future_date) { 5.days.from_now }
11
10
  let(:later_future_date) { 10.days.from_now }
12
11
 
13
- it "can be created, displayed and updated" do
12
+ it 'can be created, displayed and updated' do
14
13
  visit '/'
15
14
  click_link 'New Generic Work'
16
15
  fill_in 'Title', with: 'Lease test'
17
16
  choose 'Lease'
18
- fill_in "generic_work_lease_expiration_date", with: future_date
17
+ fill_in 'generic_work_lease_expiration_date', with: future_date
19
18
  select 'Open Access', from: 'Is available for'
20
19
  select 'Private', from: 'then restrict it to'
21
20
  click_button 'Create Generic work'
22
21
 
23
- expect(page).to have_content(future_date.to_datetime.iso8601) # chosen lease date is on the show page
22
+ # chosen lease date is on the show page
23
+ expect(page).to have_content(future_date.to_datetime.iso8601.sub(/\+00:00/, 'Z'))
24
24
 
25
- click_link "Edit This Generic Work"
26
- click_link "Lease Management Page"
25
+ click_link 'Edit This Generic Work'
26
+ click_link 'Lease Management Page'
27
27
 
28
- expect(page).to have_content("This work is under lease.")
29
- expect(page).to have_xpath("//input[@name='generic_work[lease_expiration_date]' and @value='#{future_date.to_datetime.iso8601}']") # current lease date is pre-populated in edit field
28
+ expect(page).to have_content('This work is under lease.')
29
+ expect(page).to have_xpath("//input[@name='generic_work[lease_expiration_date]' and @value='#{future_date.to_datetime.iso8601}']") # current lease date is pre-populated in edit field
30
30
 
31
- fill_in "until", with: later_future_date.to_s
31
+ fill_in 'until', with: later_future_date.to_s
32
32
 
33
- click_button "Update Lease"
34
- expect(page).to have_content(later_future_date.to_date.to_formatted_s(:long_ordinal)) # new lease date is displayed in message
33
+ click_button 'Update Lease'
34
+ expect(page).to have_content(later_future_date.to_date.to_formatted_s(:long_ordinal)) # new lease date is displayed in message
35
35
  end
36
-
37
36
  end
38
37
 
39
- describe "managing leases" do
38
+ describe 'managing leases' do
40
39
  before do
41
40
  # admin privs
42
41
  allow_any_instance_of(Ability).to receive(:user_groups).and_return(['admin'])
43
42
  end
44
- it "should show lists of objects under lease" do
43
+ it 'shows lists of objects under lease' do
45
44
  visit '/leases'
46
45
  expect(page).to have_content 'Manage Leases'
47
46
  end
@@ -1,32 +1,30 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe "Editing attached files" do
3
+ describe 'Editing attached files' do
4
4
  let(:user) { create(:user) }
5
5
  let!(:parent) { create(:work_with_one_file, user: user) }
6
- let!(:generic_file) { parent.generic_files.first }
6
+ let!(:file_set) { parent.file_sets.first }
7
7
 
8
8
  before do
9
9
  sign_in user
10
10
 
11
11
  # stub out characterization. Travis doesn't have fits installed, and it's not relevant to the test.
12
- s2 = double('resque message')
13
- expect(CharacterizeJob).to receive(:new).and_return(s2)
14
- expect(CurationConcerns.queue).to receive(:push).with(s2).once
12
+ expect(CharacterizeJob).to receive(:perform_later)
15
13
  end
16
14
 
17
- it "updates the file" do
15
+ it 'updates the file' do
18
16
  visit "/concern/generic_works/#{parent.id}"
19
17
  click_link 'Edit'
20
18
  expect(page).to have_content "Updating Attached File to \"Test title\""
21
19
 
22
- attach_file("Upload a file", fixture_file_path('files/image.png'))
23
- click_button "Update Attached File"
20
+ attach_file('Upload a file', fixture_file_path('files/image.png'))
21
+ click_button 'Update Attached File'
24
22
 
25
- expect(page).to have_content "The file A Contained Generic File has been updated."
23
+ expect(page).to have_content 'The file A Contained Generic File has been updated.'
26
24
 
27
- #TODO this stuff belongs in an Actor or Controller test:
28
- generic_file.reload
29
- expect(generic_file.original_file.original_name).to eq 'image.png'
30
- expect(generic_file.original_file.mime_type).to eq 'image/png'
25
+ # TODO: this stuff belongs in an Actor or Controller test:
26
+ file_set.reload
27
+ expect(file_set.original_file.original_name).to eq 'image.png'
28
+ expect(file_set.original_file.mime_type).to eq 'image/png'
31
29
  end
32
30
  end
@@ -1,56 +1,64 @@
1
1
  require 'spec_helper'
2
2
  require 'rails/generators'
3
+ require 'redlock'
3
4
 
4
- describe "Creating a new Work" do
5
+ describe 'Creating a new Work' do
5
6
  let(:user) { FactoryGirl.create(:user) }
6
7
 
8
+ let(:redlock_client_stub) { # stub out redis connection
9
+ client = double('redlock client')
10
+ allow(client).to receive(:lock).and_yield(true)
11
+ allow(Redlock::Client).to receive(:new).and_return(client)
12
+ client
13
+ }
14
+
7
15
  before do
8
- Rails::Generators.invoke("curation_concerns:work", ["Catapult"], destination_root: Rails.root)
16
+ Rails::Generators.invoke('curation_concerns:work', ['Catapult'], destination_root: Rails.root)
9
17
  load 'spec/internal/app/models/catapult.rb'
10
18
  load 'spec/internal/app/controllers/curation_concerns/catapults_controller.rb'
11
19
  load 'spec/internal/app/actors/curation_concerns/catapult_actor.rb'
12
- load 'spec/internal/config/initializers/curation_concerns_config.rb'
20
+ load 'spec/internal/app/forms/curation_concerns/catapult_form.rb'
21
+ load 'spec/internal/config/initializers/curation_concerns.rb'
13
22
  load 'spec/internal/config/routes.rb'
14
23
  load 'app/helpers/curation_concerns/url_helper.rb'
15
24
  sign_in user
16
25
 
17
26
  # stub out characterization. Travis doesn't have fits installed, and it's not relevant to the test.
18
- s2 = double('resque message')
19
- expect(CharacterizeJob).to receive(:new).and_return(s2)
20
- expect(CurationConcerns.queue).to receive(:push).with(s2).once
27
+ expect(CharacterizeJob).to receive(:perform_later)
28
+ redlock_client_stub
21
29
  end
22
30
 
23
31
  after do
24
- Rails::Generators.invoke("curation_concerns:work", ["Catapult"], behavior: :revoke, destination_root: Rails.root)
32
+ Rails::Generators.invoke('curation_concerns:work', ['Catapult'], behavior: :revoke, destination_root: Rails.root)
25
33
  end
26
34
 
27
- it "catapults should behave like generic works" do
28
- visit "/concern/catapults/new"
29
- # within("form.new_generic_file") do
35
+ it 'catapults should behave like generic works' do
36
+ visit '/concern/catapults/new'
37
+ # within("form.new_file_set") do
30
38
  # attach_file("Upload a file", fixture_file_path('files/image.png'))
31
39
  # click_button "Attach to Generic Work"
32
40
  # end
33
41
  catapult_title = 'My Test Work'
34
- within("form.new_catapult") do
35
- fill_in("Title", with: catapult_title)
36
- attach_file("Upload a file", fixture_file_path('files/image.png'))
37
- choose("visibility_open")
38
- click_on("Create Catapult")
42
+ within('form.new_catapult') do
43
+ fill_in('Title', with: catapult_title)
44
+ attach_file('Upload a file', fixture_file_path('files/image.png'))
45
+ choose('visibility_open')
46
+ click_on('Create Catapult')
39
47
  end
40
- click_on("Edit This Catapult")
41
- within("form.edit_catapult") do
42
- fill_in("Subject", with: 'test')
43
- click_on("Update Catapult")
48
+ click_on('Edit This Catapult')
49
+ within('form.edit_catapult') do
50
+ fill_in('Subject', with: 'test')
51
+ click_on('Update Catapult')
44
52
  end
45
- title = "Genealogies of the American West"
53
+ title = 'Genealogies of the American West'
46
54
  click_link 'Add a Collection'
47
55
  fill_in('Title', with: title)
48
- click_button("Create Collection")
49
- click_on("Add files from your dashboard")
50
- find("#facet-human_readable_type_sim").click_link('Catapult')
51
- within(".modal.fade", :match => :first) do
52
- select title, :from => "id"
53
- click_on("Add to collection")
56
+ click_button('Create Collection')
57
+ click_on('Add files from your dashboard')
58
+ find('#facet-human_readable_type_sim').click_link('Catapult')
59
+ within('.modal.fade', match: :first) do
60
+ select title, from: 'id'
61
+ click_on('Add to collection')
54
62
  end
55
63
  expect(page).to have_content('Collection was successfully updated.')
56
64
  expect(page).to have_content(catapult_title)
Binary file
@@ -4,17 +4,61 @@ describe CurationConcerns::Forms::CollectionEditForm do
4
4
  let(:collection) { Collection.new }
5
5
  let(:form) { described_class.new(collection) }
6
6
 
7
- describe "#terms" do
8
- subject { form.terms}
9
- it { is_expected.to eq [:resource_type, :title, :creator, :contributor, :description,
10
- :tag, :rights, :publisher, :date_created, :subject, :language,
11
- :identifier, :based_near, :related_url] }
7
+ describe '#terms' do
8
+ subject { form.terms }
9
+ it do
10
+ is_expected.to eq [:resource_type, :title, :creator, :contributor, :description,
11
+ :tag, :rights, :publisher, :date_created, :subject, :language,
12
+ :identifier, :based_near, :related_url, :visibility]
13
+ end
14
+ end
15
+
16
+ describe ".build_permitted_params" do
17
+ subject { described_class.build_permitted_params }
18
+ it { is_expected.to eq [{ resource_type: [] },
19
+ :title,
20
+ { creator: [] },
21
+ { contributor: [] },
22
+ :description,
23
+ { tag: [] },
24
+ { rights: [] },
25
+ { publisher: [] },
26
+ { date_created: [] },
27
+ { subject: [] },
28
+ { language: [] },
29
+ { identifier: [] },
30
+ { based_near: [] },
31
+ { related_url: [] },
32
+ :visibility] }
12
33
  end
13
34
 
14
- describe "unique?" do
15
- context "with :title" do
16
- subject { CurationConcerns::Forms::CollectionEditForm.unique?(:title) }
17
- it { is_expected.to be true }
35
+ describe 'multiple?' do
36
+ context 'with :title' do
37
+ subject { described_class.multiple?(:title) }
38
+ it { is_expected.to be false }
39
+ end
40
+ end
41
+
42
+ describe '#select_files' do
43
+ context 'without any works/files attached' do
44
+ subject { form.select_files }
45
+ it { is_expected.to be_empty }
46
+ end
47
+
48
+ context 'with a work/file attached' do
49
+ let(:work) { create(:work_with_one_file) }
50
+ let(:title) { work.file_sets.first.title.first }
51
+ let(:file_id) { work.file_sets.first.id }
52
+ let(:collection_with_file) do
53
+ Collection.create!(title: 'foo', members: [work]) do |c|
54
+ c.apply_depositor_metadata('jcoyne')
55
+ end
56
+ end
57
+
58
+ it 'returns a hash of with file title as key and file id as value' do
59
+ form_with_files = described_class.new(collection_with_file)
60
+ expect(form_with_files.select_files).to eq(title => file_id)
61
+ end
18
62
  end
19
63
  end
20
64
  end