curation_concerns 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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