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
@@ -0,0 +1,43 @@
1
+ require 'spec_helper'
2
+
3
+ describe CurationConcerns::ThumbnailPathService do
4
+ subject { described_class.call(object) }
5
+
6
+ context "with a FileSet" do
7
+ let(:object) { FileSet.new(id: '999', mime_type: mime_type) }
8
+ let(:mime_type) { 'image/jpeg' }
9
+ context "that has a thumbnail" do
10
+ before do
11
+ allow(File).to receive(:exist?).and_return(true)
12
+ end
13
+ it { is_expected.to eq '/downloads/999?file=thumbnail' }
14
+ end
15
+
16
+ context "that is an audio" do
17
+ let(:mime_type) { 'audio/x-wav' }
18
+ it { is_expected.to eq '/assets/audio.png' }
19
+ end
20
+
21
+ context "that has no thumbnail" do
22
+ it { is_expected.to eq '/assets/default.png' }
23
+ end
24
+ end
25
+
26
+ context "with a Work" do
27
+ context "that has a thumbnail" do
28
+ let(:object) { GenericWork.new(thumbnail_id: '999') }
29
+ let(:representative) { FileSet.new(id: '777') }
30
+ before do
31
+ allow(File).to receive(:exist?).and_return(true)
32
+ allow(FileSet).to receive(:load_instance_from_solr).with('999').and_return(representative)
33
+ end
34
+
35
+ it { is_expected.to eq '/downloads/999?file=thumbnail' }
36
+ end
37
+
38
+ context "that doesn't have a representative" do
39
+ let(:object) { FileSet.new }
40
+ it { is_expected.to eq '/assets/default.png' }
41
+ end
42
+ end
43
+ end
@@ -1,32 +1,31 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe CurationConcerns::VersioningService do
4
- describe "#latest_version_of" do
4
+ describe '#latest_version_of' do
5
5
  let(:file) do
6
- generic_file = GenericFile.create do |f|
6
+ FileSet.create do |f|
7
7
  f.apply_depositor_metadata('mjg36')
8
8
  end
9
9
  end
10
10
 
11
11
  before do
12
12
  # Add the original_file (this service creates a version after saving when you call it with versioning: true)
13
- Hydra::Works::AddFileToGenericFile.call(file, File.open(fixture_file_path('world.png')), :original_file, versioning: true)
13
+ Hydra::Works::AddFileToFileSet.call(file, File.open(fixture_file_path('world.png')), :original_file, versioning: true)
14
14
  end
15
15
 
16
- describe "latest_version_of" do
16
+ describe 'latest_version_of' do
17
17
  subject { described_class.latest_version_of(file.original_file).label }
18
18
 
19
- context "with one version" do
20
- it { is_expected.to eq "version1" }
19
+ context 'with one version' do
20
+ it { is_expected.to eq 'version1' }
21
21
  end
22
22
 
23
- context "with two versions" do
23
+ context 'with two versions' do
24
24
  before do
25
25
  file.original_file.create_version
26
26
  end
27
- it { is_expected.to eq "version2" }
27
+ it { is_expected.to eq 'version2' }
28
28
  end
29
29
  end
30
30
  end
31
-
32
31
  end
data/spec/spec_helper.rb CHANGED
@@ -1,4 +1,9 @@
1
- ENV["RAILS_ENV"] ||= 'test'
1
+ if ENV['CI']
2
+ require 'coveralls'
3
+ Coveralls.wear!
4
+ end
5
+
6
+ ENV['RAILS_ENV'] ||= 'test'
2
7
 
3
8
  require 'factory_girl'
4
9
  require 'database_cleaner'
@@ -11,35 +16,35 @@ require 'rspec/rails'
11
16
  require 'rspec/active_model/mocks'
12
17
  require 'capybara/poltergeist'
13
18
  Capybara.javascript_driver = :poltergeist
14
- Capybara.default_wait_time = ENV['TRAVIS'] ? 30 : 15
19
+ Capybara.default_max_wait_time = ENV['TRAVIS'] ? 30 : 15
15
20
  require 'capybara/rspec'
16
21
  require 'capybara/rails'
17
22
 
18
23
  $in_travis = !ENV['TRAVIS'].nil? && ENV['TRAVIS'] == 'true'
19
24
 
20
- if ENV['COVERAGE'] || ENV['CI']
25
+ if ENV['COVERAGE'] || $in_travis
21
26
  require 'simplecov'
22
- require 'coveralls'
23
27
 
24
- ENGINE_ROOT = File.expand_path('../..', __FILE__)
25
- SimpleCov.formatter = Coveralls::SimpleCov::Formatter if ENV["CI"]
26
- SimpleCov.start do
27
- add_filter '/spec/'
28
+ SimpleCov.root(File.expand_path('../..', __FILE__))
29
+ SimpleCov.formatter = Coveralls::SimpleCov::Formatter
30
+ SimpleCov.start('rails') do
31
+ add_filter '/spec'
28
32
  end
33
+ SimpleCov.command_name('spec')
29
34
  end
30
35
 
31
36
  require 'curation_concerns'
32
37
 
33
- Dir["./spec/support/**/*.rb"].sort.each {|f| require f}
38
+ Dir['./spec/support/**/*.rb'].sort.each { |f| require f }
34
39
  require File.expand_path('../matchers', __FILE__)
35
40
 
36
- FactoryGirl.definition_file_paths = [File.expand_path("../factories", __FILE__)]
41
+ FactoryGirl.definition_file_paths = [File.expand_path('../factories', __FILE__)]
37
42
  FactoryGirl.find_definitions
38
43
 
39
44
  require 'active_fedora/cleaner'
40
45
  RSpec.configure do |config|
41
46
  config.use_transactional_fixtures = false
42
- config.fixture_path = File.expand_path("../fixtures", __FILE__)
47
+ config.fixture_path = File.expand_path('../fixtures', __FILE__)
43
48
 
44
49
  config.before :each do
45
50
  if Capybara.current_driver == :rack_test
@@ -55,7 +60,7 @@ RSpec.configure do |config|
55
60
  end
56
61
 
57
62
  config.before :each do |example|
58
- unless (example.metadata[:type] == :view || example.metadata[:no_clean])
63
+ unless example.metadata[:type] == :view || example.metadata[:no_clean]
59
64
  ActiveFedora::Cleaner.clean!
60
65
  end
61
66
  end
@@ -68,6 +73,8 @@ RSpec.configure do |config|
68
73
  config.include Controllers::EngineHelpers, type: :controller
69
74
  config.include Rails.application.routes.url_helpers, type: :routing
70
75
  config.include Capybara::DSL
76
+ config.include InputSupport, type: :input
77
+ config.include Capybara::RSpecMatchers, type: :input
71
78
  config.infer_spec_type_from_file_location!
72
79
  config.deprecation_stream
73
80
  end
@@ -84,9 +91,10 @@ if defined?(ClamAV)
84
91
  else
85
92
  class ClamAV
86
93
  include Singleton
87
- def scanfile(f)
94
+ def scanfile(_f)
88
95
  0
89
96
  end
97
+
90
98
  def loaddb
91
99
  nil
92
100
  end
@@ -1,6 +1,7 @@
1
1
  module CurationConcerns
2
2
  module FactoryHelpers
3
3
  module_function
4
+
4
5
  def load_factories_for(context, klass)
5
6
  context.instance_exec(klass) do |curation_concern_class|
6
7
  let(:curation_concern_type_underscore) { curation_concern_class.name.underscore }
@@ -4,10 +4,12 @@ module Features
4
4
  def curation_concerns_fixture_file_upload(path, content_type = 'text/plain', binary = false)
5
5
  Rack::Test::UploadedFile.new(fixture_file_path(path), content_type, binary)
6
6
  end
7
+
7
8
  def fixture_file(path)
8
9
  File.open(fixture_file_path(path))
9
10
  end
10
- def fixture_file_path(path)
11
+
12
+ def fixture_file_path(path)
11
13
  File.join(CurationConcerns::Engine.root.to_s, 'spec/fixtures', path)
12
14
  end
13
15
  end
@@ -5,8 +5,9 @@ module Features
5
5
  user.reload # because the user isn't re-queried via Warden
6
6
  super(user, scope: :user, run_callbacks: false)
7
7
  end
8
+
8
9
  # Regular logout
9
- def logout(user=:user)
10
+ def logout(user = :user)
10
11
  super(user)
11
12
  end
12
13
 
@@ -27,9 +28,7 @@ module Features
27
28
  user = if who.instance_of?(User)
28
29
  who
29
30
  else
30
- FactoryGirl.build(:user).tap do |u|
31
- u.save!
32
- end
31
+ FactoryGirl.build(:user).tap(&:save!)
33
32
  end
34
33
  visit new_user_session_path
35
34
  fill_in 'Email', with: user.email
@@ -5,15 +5,12 @@ RSpec.configure do |config|
5
5
  config.include Warden::Test::Helpers, type: :feature
6
6
  config.include Features::SessionHelpers, type: :feature
7
7
  config.include Features::FixtureFileUpload
8
-
8
+
9
9
  config.before(:each, type: :feature) do
10
10
  Warden.test_mode!
11
- @old_resque_inline_value = Resque.inline
12
- Resque.inline = true
13
11
  end
14
12
 
15
13
  config.after(:each, type: :feature) do
16
14
  Warden.test_reset!
17
- Resque.inline = @old_resque_inline_value
18
15
  end
19
16
  end
@@ -0,0 +1,11 @@
1
+ module InputSupport
2
+ extend ActiveSupport::Concern
3
+
4
+ include RSpec::Rails::HelperExampleGroup
5
+
6
+ def input_for(object, attribute_name, options = {})
7
+ helper.simple_form_for object, url: '' do |f|
8
+ f.input attribute_name, options
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,22 @@
1
+ # RSpec matchers for API default JSON responses.
2
+ # Creates a matcher like respond_forbidden or respond_not_found corresponding to each of the Api::V1.default_responses
3
+ # Accepts optional overrides to the expected response body.
4
+ # @example Override the description expected in the JSON body of a :forbidden response
5
+ # expect(response).to respond_forbidden(description:"You can't create for that identity")
6
+ ::CurationConcerns::API.default_responses.each_pair do |response_type, default_response_body|
7
+ RSpec::Matchers.define "respond_#{response_type}".to_sym do |expectation_options|
8
+ match do |response|
9
+ @expected_response_body = expectation_options.nil? ? default_response_body : default_response_body.merge(expectation_options)
10
+ expect(response.body).to_not be_empty
11
+ json = JSON.parse(response.body)
12
+ expect(response.code).to eq(@expected_response_body[:code].to_s)
13
+ @expected_response_body.each_pair do |key, value|
14
+ expect(json[key.to_s]).to eq(value.as_json)
15
+ end
16
+ end
17
+
18
+ failure_message do |actual|
19
+ "expected #{default_response_body[:code]} status code. Got #{actual.code} status code.\nexpected an Authentication Required response like this:\n #{@expected_response_body.to_json} \ngot\n #{actual.body}\nTo override expectations about the response body, provide a Hash of overrides in your call to :respond_#{response_type} "
20
+ end
21
+ end
22
+ end
@@ -1,5 +1,4 @@
1
1
  shared_examples 'has_dc_metadata' do
2
-
3
2
  # Single-valued fields
4
3
  it { should have_unique_field(:created) }
5
4
  it { should have_unique_field(:date_uploaded) }
@@ -13,5 +12,4 @@ shared_examples 'has_dc_metadata' do
13
12
  it { should have_multivalue_field(:source) }
14
13
  it { should have_multivalue_field(:language) }
15
14
  it { should have_multivalue_field(:subject) }
16
-
17
15
  end
@@ -1,8 +1,6 @@
1
1
  shared_examples 'is_embargoable' do
2
-
3
- it "has an embargo_release_date attribute" do
2
+ it 'has an embargo_release_date attribute' do
4
3
  expect(subject).to respond_to(:embargo_release_date)
5
4
  expect(subject).to respond_to(:embargo_release_date=)
6
5
  end
7
-
8
6
  end
@@ -1,27 +1,26 @@
1
1
  shared_examples 'with_access_rights' do
2
-
3
2
  def prepare_subject_for_access_rights_visibility_test!
4
3
  # I am doing this because the actual persistence of the objects requires
5
4
  # so much more and I don't know for certain if it has happened.
6
5
  allow(subject).to receive(:persisted?).and_return(true)
7
6
  end
8
7
 
9
- it "has an under_embargo?" do
10
- expect {
8
+ it 'has an under_embargo?' do
9
+ expect do
11
10
  subject.under_embargo?
12
- }.to_not raise_error
11
+ end.to_not raise_error
13
12
  end
14
13
 
15
- it "has a visibility attribute" do
14
+ it 'has a visibility attribute' do
16
15
  expect(subject).to respond_to(:visibility)
17
16
  expect(subject).to respond_to(:visibility=)
18
17
  end
19
18
 
20
19
  describe 'open access' do
21
- it "has an open_access?" do
22
- expect {
20
+ it 'has an open_access?' do
21
+ expect do
23
22
  subject.open_access?
24
- }.to_not raise_error
23
+ end.to_not raise_error
25
24
  end
26
25
 
27
26
  it 'sets visibility' do
@@ -38,10 +37,10 @@ shared_examples 'with_access_rights' do
38
37
  expect(subject).to be_authenticated_only_access
39
38
  end
40
39
 
41
- it "has an authenticated_only_access?" do
42
- expect {
40
+ it 'has an authenticated_only_access?' do
41
+ expect do
43
42
  subject.authenticated_only_access?
44
- }.to_not raise_error
43
+ end.to_not raise_error
45
44
  end
46
45
  end
47
46
 
@@ -52,12 +51,10 @@ shared_examples 'with_access_rights' do
52
51
  expect(subject).to be_private_access
53
52
  end
54
53
 
55
-
56
- it "has an private_access?" do
57
- expect {
54
+ it 'has an private_access?' do
55
+ expect do
58
56
  subject.private_access?
59
- }.to_not raise_error
57
+ end.to_not raise_error
60
58
  end
61
59
  end
62
-
63
60
  end
@@ -1,24 +1,22 @@
1
1
  require 'spec_helper'
2
2
  require 'rake'
3
3
 
4
- describe "Rake tasks" do
5
-
6
- describe "curation_concerns:migrate" do
7
- let(:namespaced_id) { "curation_concerns:123" }
8
- let(:corrected_id) { "123" }
4
+ describe 'Rake tasks' do
5
+ describe 'curation_concerns:migrate' do
6
+ let(:namespaced_id) { 'curation_concerns:123' }
7
+ let(:corrected_id) { '123' }
9
8
  before do
10
- load File.expand_path("../../../curation_concerns-models/lib/tasks/migrate.rake", __FILE__)
9
+ load File.expand_path('../../../curation_concerns-models/lib/tasks/migrate.rake', __FILE__)
11
10
  Rake::Task.define_task(:environment)
12
11
  end
13
12
 
14
- describe "deleting the namespace from ChecksumAuditLog#generic_file_id" do
13
+ describe 'deleting the namespace from ChecksumAuditLog#file_set_id' do
15
14
  before do
16
- ChecksumAuditLog.create(generic_file_id: namespaced_id)
17
- Rake::Task["curation_concerns:migrate:audit_logs"].invoke
15
+ ChecksumAuditLog.create(file_set_id: namespaced_id)
16
+ Rake::Task['curation_concerns:migrate:audit_logs'].invoke
18
17
  end
19
- subject { ChecksumAuditLog.first.generic_file_id }
18
+ subject { ChecksumAuditLog.first.file_set_id }
20
19
  it { is_expected.to eql corrected_id }
21
20
  end
22
21
  end
23
-
24
22
  end
@@ -1 +1,4 @@
1
- # placeholder to use for pinning against specific gem commit references
1
+ # placeholder to use for pinning against specific gem commit references
2
+ # gem 'hydra-works', github: 'projecthydra-labs/hydra-works', branch: 'master'
3
+ # gem 'hydra-pcdm', github: 'projecthydra-labs/hydra-pcdm', branch: 'master'
4
+ # gem 'activefedora-aggregation', github: 'projecthydra-labs/activefedora-aggregation', branch: 'master'
@@ -1,14 +1,14 @@
1
1
  require 'rails/generators'
2
2
 
3
3
  class TestAppGenerator < Rails::Generators::Base
4
- source_root "../../spec/test_app_templates"
4
+ source_root '../../spec/test_app_templates'
5
5
 
6
6
  def install_engine
7
- generate 'curation_concerns:install'
7
+ generate 'curation_concerns:install', '-f'
8
8
  end
9
9
 
10
10
  def run_migrations
11
- rake "db:migrate"
11
+ rake 'db:migrate'
12
12
  end
13
13
 
14
14
  def generate_generic_work
@@ -20,36 +20,4 @@ class TestAppGenerator < Rails::Generators::Base
20
20
  remove_file 'spec/controllers/curation_concerns/generic_works_controller_spec.rb'
21
21
  remove_file 'spec/actors/curation_concerns/generic_work_actor_spec.rb'
22
22
  end
23
-
24
- def enable_av_transcoding
25
- file_path = "app/models/generic_file.rb"
26
- inject_into_file file_path, after: /include ::CurationConcerns::GenericFileBehavior/ do
27
- %q(
28
- directly_contains_one :ogg, through: :files, type: ::RDF::URI("http://pcdm.org/use#ServiceFile"), class_name: "Hydra::PCDM::File"
29
- directly_contains_one :mp3, through: :files, type: ::RDF::URI("http://pcdm.org/use#File"), class_name: "Hydra::PCDM::File"
30
- directly_contains_one :mp4, through: :files, type: ::RDF::URI("http://pcdm.org/use#ServiceFile"), class_name: "Hydra::PCDM::File"
31
- directly_contains_one :webm, through: :files, type: ::RDF::URI("http://pcdm.org/use#File"), class_name: "Hydra::PCDM::File"
32
-
33
-
34
- # This was taken directly from Sufia's GenericFile::Derivative.
35
- makes_derivatives do |obj|
36
- case obj.original_file.mime_type
37
- when *pdf_mime_types
38
- obj.transform_file :original_file, thumbnail: { format: 'jpg', size: '338x493' }
39
- when *office_document_mime_types
40
- obj.transform_file :original_file, { thumbnail: { format: 'jpg', size: '200x150>' } }, processor: :document
41
- when *audio_mime_types
42
- obj.transform_file :original_file, { mp3: { format: 'mp3' }, ogg: { format: 'ogg' } }, processor: :audio
43
- when *video_mime_types
44
- obj.transform_file :original_file, { webm: { format: 'webm' }, mp4: { format: 'mp4' }, thumbnail: { format: 'jpg' } }, processor: :video
45
- when *image_mime_types
46
- obj.transform_file :original_file, thumbnail: { format: 'jpg', size: '200x150>' }
47
- end
48
- end
49
- )
50
- end
51
-
52
-
53
- end
54
-
55
23
  end
@@ -10,7 +10,6 @@ describe 'catalog/index.html.erb' do
10
10
  allow(view).to receive(:search_action_path).and_return('/catalog')
11
11
  allow(view).to receive(:has_search_parameters?).and_return(true)
12
12
 
13
-
14
13
  allow(view).to receive(:current_users_collections).and_return([])
15
14
  allow(view).to receive(:blacklight_config).and_return(CatalogController.blacklight_config)
16
15
  stub_template 'catalog/_search_sidebar.html.erb' => ''
@@ -24,7 +23,7 @@ describe 'catalog/index.html.erb' do
24
23
  params[:view] = 'gallery'
25
24
 
26
25
  resp = []
27
- assign(:response, resp )
26
+ assign(:response, resp)
28
27
  allow(resp).to receive(:total_pages).and_return(1)
29
28
  allow(resp).to receive(:current_page).and_return(1)
30
29
  allow(resp).to receive(:limit_value).and_return(10)
@@ -36,24 +35,22 @@ describe 'catalog/index.html.erb' do
36
35
  assign(:document_list, [doc])
37
36
  end
38
37
 
39
- context "when user does not have permissions" do
40
- before { allow(view).to receive(:can?).and_return(false) }
38
+ context 'when user does not have permissions' do
39
+ before { allow(view).to receive(:can?).and_return(false) }
41
40
  it 'appears on page without error' do
42
41
  render
43
42
  page = Capybara::Node::Simple.new(rendered)
44
43
  expect(page).to have_link(collection.title)
45
- expect(page).to have_content "List of files deposited"
44
+ expect(page).to have_content 'List of files deposited'
46
45
  end
47
46
  end
48
- context "when user has all the permissions" do
49
- before { allow(view).to receive(:can?).and_return(true) }
47
+ context 'when user has all the permissions' do
48
+ before { allow(view).to receive(:can?).and_return(true) }
50
49
  it 'appears on page without error' do
51
50
  render
52
51
  page = Capybara::Node::Simple.new(rendered)
53
52
  expect(page).to have_link(collection.title)
54
- expect(page).to have_content "List of files deposited"
53
+ expect(page).to have_content 'List of files deposited'
55
54
  end
56
55
  end
57
-
58
-
59
56
  end
@@ -1,20 +1,23 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe 'curation_concerns/base/_attributes.html.erb' do
4
-
5
4
  let(:creator) { 'Bilbo' }
6
5
  let(:contributor) { 'Frodo' }
7
6
  let(:subject) { 'history' }
8
7
 
9
- let(:curation_concern) { double(creator: [creator],
10
- contributor: [contributor],
11
- subject: [subject]) }
8
+ let(:solr_document) { SolrDocument.new(subject_tesim: subject,
9
+ contributor_tesim: contributor,
10
+ creator_tesim: creator) }
11
+ let(:ability) { nil }
12
+ let(:presenter) do
13
+ CurationConcerns::WorkShowPresenter.new(solr_document, ability)
14
+ end
12
15
 
13
16
  before do
14
17
  allow(view).to receive(:dom_class) { '' }
15
- allow(view).to receive(:permission_badge_for) { '' }
16
18
 
17
- render partial: 'attributes', locals: { curation_concern: curation_concern }
19
+ assign(:presenter, presenter)
20
+ render
18
21
  end
19
22
 
20
23
  it 'has links to search for other objects with the same metadata' do
@@ -0,0 +1,13 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'curation_concerns/base/_form_permission.html.erb' do
4
+ let(:curation_concern) { GenericWork.new }
5
+ before do
6
+ f = double('form', object: curation_concern, object_name: nil, input: nil)
7
+ render partial: "curation_concerns/base/form_permission", locals: { f: f }
8
+ end
9
+
10
+ it 'has a permissions note' do
11
+ expect(rendered).to have_content('Please note, making something visible to the world')
12
+ end
13
+ end
@@ -1,29 +1,49 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe 'curation_concerns/base/show.html.erb' do
4
+ let(:object_profile) { ["{\"id\":\"999\"}"] }
5
+ let(:contributor) { 'Frodo' }
6
+ let(:creator) { 'Bilbo' }
7
+ let(:solr_document) {
8
+ SolrDocument.new(
9
+ id: '999',
10
+ object_profile_ssm: object_profile,
11
+ has_model_ssim: ['GenericWork'],
12
+ human_readable_type_tesim: ['Generic Work'],
13
+ contributor_tesim: contributor,
14
+ creator_tesim: creator,
15
+ rights_tesim: ['http://creativecommons.org/licenses/by/3.0/us/']
16
+ )
17
+ }
4
18
 
5
- let!(:curation_concern) { FactoryGirl.create(:private_generic_work) }
19
+ let(:ability) { nil }
20
+ let(:presenter) do
21
+ CurationConcerns::WorkShowPresenter.new(solr_document, ability)
22
+ end
6
23
 
7
- context "for editors" do
24
+ context 'for editors' do
8
25
  before do
9
- allow(view).to receive(:can?).and_return(true)
26
+ allow(view).to receive(:can?).with(:edit, String).and_return(true)
27
+ allow(view).to receive(:can?).with(:collect, String).and_return(true)
28
+ assign(:presenter, presenter)
29
+ render
10
30
  end
11
31
 
12
- it 'has links to edit' do # and add to collections' do
13
- render file: 'curation_concerns/base/show', locals: { curation_concern: curation_concern }
14
- expect(rendered).to have_link("Edit This Generic Work", href: edit_polymorphic_path([:curation_concerns, curation_concern]))
15
- # expect(rendered).to have_selector "a[data-toggle='modal'][data-target='##{curation_concern.to_param}-modal']", text: "Add to a Collection"
16
- # expect(rendered).to have_selector("div.modal##{curation_concern.to_param}-modal form[action='#{collections.collections_path}'] input[value='Add to collection']")
32
+ it 'draws the page' do
33
+ expect(rendered).to have_link 'Attribution 3.0 United States', href: 'http://creativecommons.org/licenses/by/3.0/us/'
34
+ expect(rendered).to have_link 'Edit This Generic Work', href: edit_polymorphic_path([:curation_concerns, presenter])
17
35
  end
18
36
  end
19
37
 
20
- context "for non-editors" do
21
- it 'does not have links to edit' do #, but has add to collection' do
22
- render file: 'curation_concerns/base/show', locals: { curation_concern: curation_concern }
23
- expect(rendered).not_to have_content("Edit this Generic Work")
24
-
25
- # expect(rendered).to have_selector "a[data-toggle='modal'][data-target='##{curation_concern.to_param}-modal']", text: "Add to a Collection"
26
- # expect(rendered).to have_selector("div.modal##{curation_concern.to_param}-modal form[action='#{collections.collections_path}'] input[value='Add to collection']")
38
+ context 'for non-editors' do
39
+ before do
40
+ assign(:presenter, presenter)
41
+ allow(view).to receive(:can?).with(:edit, String).and_return(false)
42
+ allow(view).to receive(:can?).with(:collect, String).and_return(false)
43
+ render
44
+ end
45
+ it 'does not have links to edit' do
46
+ expect(rendered).not_to have_content('Edit this Generic Work')
27
47
  end
28
48
  end
29
49
  end
@@ -0,0 +1,21 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'curation_concerns/base/show.json.jbuilder' do
4
+ let(:curation_concern) { FactoryGirl.create(:generic_work) }
5
+
6
+ before do
7
+ assign(:curation_concern, curation_concern)
8
+ render
9
+ end
10
+
11
+ it "renders json of the curation_concern" do
12
+ json = JSON.parse(rendered)
13
+ expect(json['id']).to eq curation_concern.id
14
+ expect(json['title']).to eq curation_concern.title
15
+ expected_fields = curation_concern.class.fields.select { |f| ![:has_model, :create_date].include? f }
16
+ expected_fields << :date_created
17
+ expected_fields.each do |field_symbol|
18
+ expect(json).to have_key(field_symbol.to_s)
19
+ end
20
+ end
21
+ end