sufia 6.2.0 → 6.3.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 (269) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +146 -0
  3. data/.travis.yml +4 -7
  4. data/Gemfile +2 -0
  5. data/History.md +29 -1
  6. data/README.md +25 -9
  7. data/SUFIA_VERSION +1 -1
  8. data/app/assets/stylesheets/sufia/_collections.scss +15 -0
  9. data/app/assets/stylesheets/sufia/_file-listing.scss +7 -0
  10. data/app/assets/stylesheets/sufia/_home-page.scss +10 -0
  11. data/app/builders/sufia/bootstrap_breadcrumbs_builder.rb +3 -5
  12. data/app/controllers/admin/stats_controller.rb +1 -76
  13. data/app/controllers/api/items_controller.rb +4 -6
  14. data/app/controllers/api/zotero_controller.rb +5 -5
  15. data/app/controllers/authorities_controller.rb +5 -1
  16. data/app/controllers/batch_edits_controller.rb +3 -3
  17. data/app/controllers/concerns/sufia/admin/depositor_stats.rb +41 -0
  18. data/app/controllers/concerns/sufia/admin/stats_behavior.rb +94 -0
  19. data/app/controllers/concerns/sufia/batch_controller_behavior.rb +16 -18
  20. data/app/controllers/concerns/sufia/batch_edits_controller_behavior.rb +54 -56
  21. data/app/controllers/concerns/sufia/breadcrumbs.rb +3 -6
  22. data/app/controllers/concerns/sufia/collections_controller_behavior.rb +39 -39
  23. data/app/controllers/concerns/sufia/controller.rb +10 -10
  24. data/app/controllers/concerns/sufia/dashboard_controller_behavior.rb +17 -18
  25. data/app/controllers/concerns/sufia/depositors_controller_behavior.rb +9 -12
  26. data/app/controllers/concerns/sufia/files_controller/browse_everything.rb +6 -7
  27. data/app/controllers/concerns/sufia/files_controller/local_ingest_behavior.rb +39 -40
  28. data/app/controllers/concerns/sufia/files_controller/upload_complete_behavior.rb +1 -1
  29. data/app/controllers/concerns/sufia/files_controller_behavior.rb +109 -110
  30. data/app/controllers/concerns/sufia/homepage_controller.rb +8 -8
  31. data/app/controllers/concerns/sufia/my_controller_behavior.rb +13 -10
  32. data/app/controllers/concerns/sufia/single_use_links_controller_behavior.rb +11 -14
  33. data/app/controllers/concerns/sufia/single_use_links_viewer_controller_behavior.rb +27 -21
  34. data/app/controllers/concerns/sufia/transfers_controller_behavior.rb +17 -17
  35. data/app/controllers/concerns/sufia/users_controller_behavior.rb +54 -54
  36. data/app/controllers/contact_form_controller.rb +1 -1
  37. data/app/controllers/content_blocks_controller.rb +11 -12
  38. data/app/controllers/directory_controller.rb +2 -3
  39. data/app/controllers/featured_work_lists_controller.rb +1 -1
  40. data/app/controllers/featured_works_controller.rb +2 -4
  41. data/app/controllers/homepage_controller.rb +1 -2
  42. data/app/controllers/mailbox_controller.rb +12 -32
  43. data/app/controllers/my/collections_controller.rb +3 -4
  44. data/app/controllers/my/files_controller.rb +4 -6
  45. data/app/controllers/my/highlights_controller.rb +4 -6
  46. data/app/controllers/my/shares_controller.rb +3 -5
  47. data/app/controllers/pages_controller.rb +1 -3
  48. data/app/controllers/single_use_links_controller.rb +0 -1
  49. data/app/controllers/single_use_links_viewer_controller.rb +0 -1
  50. data/app/controllers/static_controller.rb +1 -0
  51. data/app/forms/sufia/forms/collection_edit_form.rb +2 -2
  52. data/app/helpers/batch_edits_helper.rb +1 -3
  53. data/app/helpers/content_block_helper.rb +7 -8
  54. data/app/helpers/generic_file_helper.rb +23 -24
  55. data/app/helpers/sufia/blacklight_override.rb +6 -7
  56. data/app/helpers/sufia/dashboard_helper_behavior.rb +4 -7
  57. data/app/helpers/sufia/permissions_helper.rb +3 -4
  58. data/app/helpers/sufia/sufia_helper_behavior.rb +30 -29
  59. data/app/helpers/trophy_helper.rb +15 -15
  60. data/app/inputs/select_with_modal_help_input.rb +3 -3
  61. data/app/inputs/with_help_icon.rb +4 -4
  62. data/app/jobs/content_delete_event_job.rb +0 -1
  63. data/app/jobs/content_depositor_change_event_job.rb +1 -2
  64. data/app/jobs/event_job.rb +0 -1
  65. data/app/jobs/user_unfollow_event_job.rb +1 -0
  66. data/app/models/concerns/sufia/solr_document_behavior.rb +1 -2
  67. data/app/models/contact_form.rb +6 -6
  68. data/app/models/content_block.rb +1 -2
  69. data/app/models/featured_work_list.rb +3 -5
  70. data/app/models/user_mailbox.rb +44 -0
  71. data/app/presenters/sufia/collection_presenter.rb +6 -8
  72. data/app/presenters/sufia/generic_file_presenter.rb +2 -2
  73. data/app/presenters/sufia/presenter_renderer.rb +2 -2
  74. data/app/presenters/sufia/version_list_presenter.rb +1 -1
  75. data/app/presenters/sufia/version_presenter.rb +3 -6
  76. data/app/search_builders/deposit_search_builder.rb +19 -0
  77. data/app/search_builders/sufia/my_search_builder_behavior.rb +1 -2
  78. data/app/search_builders/sufia/search_builder.rb +1 -3
  79. data/app/uploaders/tinymce_asset_uploader.rb +0 -2
  80. data/app/views/_controls.html.erb +5 -5
  81. data/app/views/admin/stats/_deposits.html.erb +19 -0
  82. data/app/views/admin/stats/index.html.erb +2 -0
  83. data/app/views/batch_edits/edit.html.erb +2 -2
  84. data/app/views/collections/_edit_actions.html.erb +3 -3
  85. data/app/views/collections/_form_for_select_collection.html.erb +2 -2
  86. data/app/views/collections/_sort_and_per_page.html.erb +12 -9
  87. data/app/views/collections/_view_type_group.html.erb +1 -1
  88. data/app/views/collections/edit.html.erb +5 -5
  89. data/app/views/collections/show.html.erb +7 -6
  90. data/app/views/homepage/_announcement.html.erb +5 -0
  91. data/app/views/homepage/_home.html.erb +1 -0
  92. data/app/views/my/_sort_and_per_page.html.erb +14 -10
  93. data/app/views/my/index.html.erb +1 -1
  94. data/app/views/pages/show.html.erb +0 -2
  95. data/app/views/single_use_links/new_download.html.erb +1 -1
  96. data/app/views/single_use_links_viewer/show.html.erb +1 -1
  97. data/app/views/users/_notify_link.html.erb +1 -1
  98. data/app/views/users/_notify_number.html.erb +2 -2
  99. data/config/initializers/simple_form.rb +1 -1
  100. data/config/initializers/simple_form_bootstrap.rb +1 -1
  101. data/config/locales/sufia.en.yml +4 -0
  102. data/config/routes.rb +2 -3
  103. data/lib/generators/sufia/admin_stat_generator.rb +0 -3
  104. data/lib/generators/sufia/install_generator.rb +8 -9
  105. data/lib/generators/sufia/templates/catalog_controller.rb +2 -3
  106. data/lib/generators/sufia/templates/config/action_dispatch_http_upload_monkey_patch.rb +1 -0
  107. data/lib/generators/sufia/upgrade400_generator.rb +9 -9
  108. data/lib/generators/sufia/upgrade600_generator.rb +1 -4
  109. data/lib/sufia.rb +2 -2
  110. data/lib/sufia/arkivo/actor.rb +1 -1
  111. data/lib/sufia/arkivo/create_subscription_job.rb +30 -30
  112. data/lib/sufia/arkivo/metadata_munger.rb +7 -7
  113. data/lib/sufia/arkivo/schema_validator.rb +1 -1
  114. data/lib/sufia/single_use_error.rb +0 -1
  115. data/lib/sufia/version.rb +1 -1
  116. data/lib/sufia/zotero/config.rb +13 -13
  117. data/spec/actors/generic_file/actor_spec.rb +17 -18
  118. data/spec/controllers/admin_stats_controller_spec.rb +56 -5
  119. data/spec/controllers/api/zotero_controller_spec.rb +10 -9
  120. data/spec/controllers/authorities_controller_spec.rb +8 -8
  121. data/spec/controllers/batch_controller_spec.rb +19 -20
  122. data/spec/controllers/batch_edits_controller_spec.rb +8 -9
  123. data/spec/controllers/catalog_controller_spec.rb +7 -9
  124. data/spec/controllers/collections_controller_spec.rb +30 -32
  125. data/spec/controllers/content_blocks_controller_spec.rb +4 -4
  126. data/spec/controllers/dashboard_controller_spec.rb +12 -12
  127. data/spec/controllers/depositors_controller_spec.rb +8 -8
  128. data/spec/controllers/downloads_controller_spec.rb +10 -11
  129. data/spec/controllers/featured_work_lists_controller_spec.rb +4 -4
  130. data/spec/controllers/featured_works_controller_spec.rb +11 -12
  131. data/spec/controllers/generic_files_controller_spec.rb +154 -125
  132. data/spec/controllers/homepage_controller_spec.rb +22 -15
  133. data/spec/controllers/mailbox_controller_spec.rb +20 -36
  134. data/spec/controllers/my/collections_controller_spec.rb +4 -5
  135. data/spec/controllers/my/files_controller_spec.rb +10 -11
  136. data/spec/controllers/my/highlights_controller_spec.rb +4 -5
  137. data/spec/controllers/my/shares_controller_spec.rb +12 -14
  138. data/spec/controllers/my_controller_spec.rb +1 -3
  139. data/spec/controllers/pages_controller_spec.rb +4 -4
  140. data/spec/controllers/single_use_links_controller_spec.rb +1 -3
  141. data/spec/controllers/single_use_links_viewer_controller_spec.rb +1 -2
  142. data/spec/controllers/static_controller_spec.rb +1 -1
  143. data/spec/controllers/tinymce_assets_controller_spec.rb +8 -9
  144. data/spec/controllers/transfers_controller_spec.rb +19 -19
  145. data/spec/controllers/users_controller_spec.rb +33 -35
  146. data/spec/factories/api_items.rb +2 -2
  147. data/spec/factories/content_blocks.rb +1 -1
  148. data/spec/factories/featured_works.rb +1 -1
  149. data/spec/factories/generic_files.rb +3 -3
  150. data/spec/factories/users.rb +7 -8
  151. data/spec/features/browse_dashboard_files_spec.rb +14 -18
  152. data/spec/features/browse_files_spec.rb +3 -4
  153. data/spec/features/catalog_search_spec.rb +3 -5
  154. data/spec/features/cloud_upload_spec.rb +2 -2
  155. data/spec/features/collection_spec.rb +21 -21
  156. data/spec/features/contact_form_spec.rb +10 -11
  157. data/spec/features/display_dashboard_spec.rb +5 -9
  158. data/spec/features/edit_file_spec.rb +8 -9
  159. data/spec/features/featured_item_spec.rb +1 -1
  160. data/spec/features/ingest_upload_files_spec.rb +5 -5
  161. data/spec/features/notifications_spec.rb +2 -6
  162. data/spec/features/ownership_transfer_spec.rb +2 -2
  163. data/spec/features/proxy_spec.rb +2 -2
  164. data/spec/features/search_spec.rb +3 -4
  165. data/spec/features/single_use_links_spec.rb +1 -1
  166. data/spec/features/users_spec.rb +4 -5
  167. data/spec/forms/collection_edit_form_spec.rb +2 -2
  168. data/spec/forms/generic_file_edit_form_spec.rb +6 -7
  169. data/spec/helpers/batch_edits_helper_spec.rb +9 -13
  170. data/spec/helpers/content_block_helper_spec.rb +3 -3
  171. data/spec/helpers/dashboard_helper_spec.rb +19 -24
  172. data/spec/helpers/generic_file_helper_spec.rb +5 -7
  173. data/spec/helpers/sufia_helper_spec.rb +43 -54
  174. data/spec/helpers/trophy_helper_spec.rb +5 -5
  175. data/spec/inputs/multi_value_with_help_input_spec.rb +1 -2
  176. data/spec/inputs/select_with_help_input_spec.rb +19 -15
  177. data/spec/javascripts/jasmine_spec.rb +4 -5
  178. data/spec/javascripts/support/jasmine_helper.rb +9 -9
  179. data/spec/jobs/active_fedora_id_based_job_spec.rb +7 -5
  180. data/spec/jobs/audit_job_spec.rb +7 -7
  181. data/spec/jobs/batch_update_job_spec.rb +5 -6
  182. data/spec/jobs/characterize_job_spec.rb +1 -1
  183. data/spec/jobs/content_depositor_change_event_job_spec.rb +1 -1
  184. data/spec/jobs/create_derivatives_job_spec.rb +5 -5
  185. data/spec/jobs/event_jobs_spec.rb +16 -16
  186. data/spec/jobs/import_url_job_spec.rb +36 -5
  187. data/spec/jobs/ingest_local_file_job_spec.rb +31 -20
  188. data/spec/jobs/sufia_resque_queue_spec.rb +1 -1
  189. data/spec/lib/sufia/analytics_spec.rb +0 -1
  190. data/spec/lib/sufia/arkivo/actor_spec.rb +6 -6
  191. data/spec/lib/sufia/arkivo/schema_validator_spec.rb +18 -18
  192. data/spec/lib/sufia/breadcrumbs_spec.rb +5 -6
  193. data/spec/lib/sufia/messages_spec.rb +11 -12
  194. data/spec/lib/sufia/readable_permissions_spec.rb +8 -10
  195. data/spec/lib/sufia/upload_complete_behavior_spec.rb +6 -7
  196. data/spec/lib/sufia/user_stat_importer_spec.rb +30 -33
  197. data/spec/lib/sufia/writable_permissions_spec.rb +1 -3
  198. data/spec/lib/sufia/zotero/config_spec.rb +4 -6
  199. data/spec/models/ability_spec.rb +11 -9
  200. data/spec/models/batch_spec.rb +13 -13
  201. data/spec/models/characterization_spec.rb +2 -3
  202. data/spec/models/checksum_audit_log_spec.rb +18 -19
  203. data/spec/models/collection_spec.rb +11 -12
  204. data/spec/models/content_block_spec.rb +33 -22
  205. data/spec/models/download_spec.rb +3 -5
  206. data/spec/models/featured_work_list_spec.rb +3 -3
  207. data/spec/models/featured_work_spec.rb +12 -14
  208. data/spec/models/file_content_datastream_spec.rb +9 -7
  209. data/spec/models/file_download_stat_spec.rb +34 -40
  210. data/spec/models/file_usage_spec.rb +46 -52
  211. data/spec/models/file_view_stat_spec.rb +35 -41
  212. data/spec/models/fits_datastream_spec.rb +23 -25
  213. data/spec/models/generic_file/visibility_spec.rb +10 -5
  214. data/spec/models/generic_file_spec.rb +86 -88
  215. data/spec/models/geo_names_resource_spec.rb +3 -5
  216. data/spec/models/local_authority_spec.rb +30 -33
  217. data/spec/models/pageview_spec.rb +3 -3
  218. data/spec/models/proxy_deposit_request_spec.rb +3 -3
  219. data/spec/models/single_use_link_spec.rb +36 -36
  220. data/spec/models/solr_document_spec.rb +3 -6
  221. data/spec/models/trophy_spec.rb +8 -9
  222. data/spec/models/user_mailbox_spec.rb +62 -0
  223. data/spec/models/user_spec.rb +28 -29
  224. data/spec/presenters/presenter_renderer_spec.rb +1 -1
  225. data/spec/presenters/sufia/generic_file_presenter_spec.rb +5 -5
  226. data/spec/presenters/sufia/version_list_presenter_spec.rb +2 -2
  227. data/spec/presenters/sufia/version_presenter_spec.rb +1 -1
  228. data/spec/routing/featured_works_route_spec.rb +4 -4
  229. data/spec/routing/ownership_transfers_route_spec.rb +1 -1
  230. data/spec/routing/route_spec.rb +89 -89
  231. data/spec/services/generic_file_audit_service_spec.rb +8 -8
  232. data/spec/services/repository_audit_service_spec.rb +7 -3
  233. data/spec/spec_helper.rb +5 -4
  234. data/spec/support/features/session_helpers.rb +1 -1
  235. data/spec/support/input_support.rb +1 -2
  236. data/spec/support/rake.rb +1 -1
  237. data/spec/support/selectors.rb +1 -6
  238. data/spec/support/statistic_helper.rb +1 -1
  239. data/spec/support/uploaded_file_monkeypatch.rb +1 -1
  240. data/spec/tasks/rake_spec.rb +3 -5
  241. data/spec/views/admin/stats/index.html.erb_spec.rb +16 -16
  242. data/spec/views/batch/edit.html.erb_spec.rb +1 -3
  243. data/spec/views/batch_edits/check_all_spec.rb +5 -5
  244. data/spec/views/batch_edits/edit.html.erb_spec.rb +1 -3
  245. data/spec/views/catalog/index.html.erb_spec.rb +1 -3
  246. data/spec/views/catalog/sort_and_per_page.html.erb_spec.rb +4 -5
  247. data/spec/views/collections/_form.html.erb_spec.rb +5 -3
  248. data/spec/views/collections/_show_descriptions.html.erb_spec.rb +7 -8
  249. data/spec/views/collections/_show_document_list.erb_spec.rb +4 -6
  250. data/spec/views/dashboard/index_spec.rb +14 -21
  251. data/spec/views/generic_file/_browse_everything.html.erb_spec.rb +2 -2
  252. data/spec/views/generic_file/_permission_form.html.erb_spec.rb +8 -9
  253. data/spec/views/generic_file/edit.html.erb_spec.rb +7 -7
  254. data/spec/views/generic_file/show.html.erb_spec.rb +24 -25
  255. data/spec/views/generic_file/stats.html.erb_spec.rb +19 -19
  256. data/spec/views/homepage/_announcement.html.erb_spec.rb +51 -0
  257. data/spec/views/homepage/_featured_works.html.erb_spec.rb +5 -9
  258. data/spec/views/homepage/_home_header.html.erb_spec.rb +2 -2
  259. data/spec/views/my/facet.html.erb_spec.rb +4 -4
  260. data/spec/views/single_use_links/new_download.html.erb_spec.rb +28 -0
  261. data/spec/views/single_use_links_viewer/show.html.erb_spec.rb +29 -0
  262. data/spec/views/users/_follower_modal.html.erb_spec.rb +7 -8
  263. data/spec/views/users/_following_modal.html.erb_spec.rb +4 -5
  264. data/spec/views/users/_notify_number.html.erb_spec.rb +2 -5
  265. data/spec/views/users/_user_util_links.html.erb_spec.rb +5 -8
  266. data/spec/views/users/index.html.erb_spec.rb +4 -6
  267. data/spec/views/users/show.html.erb_spec.rb +4 -7
  268. data/tasks/sufia-dev.rake +19 -3
  269. metadata +20 -5
@@ -1,41 +1,52 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe ContentBlock, :type => :model do
4
-
5
- let(:bilbo) { ContentBlock.create!(
6
- name: ContentBlock::RESEARCHER,
7
- value: '<h1>Bilbo Baggins</h1>',
8
- created_at: Time.now)
9
- }
3
+ describe ContentBlock, type: :model do
4
+ let(:bilbo) do
5
+ described_class.create!(
6
+ name: ContentBlock::RESEARCHER,
7
+ value: '<h1>Bilbo Baggins</h1>',
8
+ created_at: Time.now)
9
+ end
10
10
 
11
- let(:frodo) { ContentBlock.create!(
12
- name: ContentBlock::RESEARCHER,
13
- value: '<h1>Frodo Baggins</h1>',
14
- created_at: 2.hours.ago)
15
- }
11
+ let(:frodo) do
12
+ described_class.create!(
13
+ name: ContentBlock::RESEARCHER,
14
+ value: '<h1>Frodo Baggins</h1>',
15
+ created_at: 2.hours.ago)
16
+ end
16
17
 
17
- let(:marketing) { ContentBlock.create!(
18
- name: ContentBlock::MARKETING,
19
- value: '<h1>Marketing Text</h1>')
20
- }
18
+ let(:marketing) do
19
+ described_class.create!(
20
+ name: ContentBlock::MARKETING,
21
+ value: '<h1>Marketing Text</h1>')
22
+ end
21
23
 
22
24
  describe '.recent_researchers' do
23
- before { frodo; bilbo; marketing }
24
- subject { ContentBlock.recent_researchers }
25
+ before do
26
+ frodo
27
+ bilbo
28
+ marketing
29
+ end
30
+
31
+ subject { described_class.recent_researchers }
25
32
 
26
33
  it 'returns featured_researcher entries in chronological order' do
27
- expect(ContentBlock.count).to eq 3
34
+ expect(described_class.count).to eq 3
28
35
  expect(subject).to eq [bilbo, frodo]
29
36
  end
30
37
  end
31
38
 
32
39
  describe '.featured_researcher' do
33
- before { frodo; bilbo; marketing }
34
- subject { ContentBlock.featured_researcher }
40
+ before do
41
+ frodo
42
+ bilbo
43
+ marketing
44
+ end
45
+
46
+ subject { described_class.featured_researcher }
35
47
 
36
48
  it 'finds the most recent entry for featured_researcher' do
37
49
  expect(subject).to eq bilbo
38
50
  end
39
51
  end
40
-
41
52
  end
@@ -1,13 +1,12 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Sufia::Download, :type => :model do
4
-
3
+ describe Sufia::Download, type: :model do
5
4
  before do
6
- @download = Sufia::Download
5
+ @download = described_class
7
6
  end
8
7
 
9
8
  it 'has an events metric' do
10
- expect(@download.metrics).to be == Legato::ListParameter.new(:metrics, [:totalEvents])
9
+ expect(@download.metrics).to be == Legato::ListParameter.new(:metrics, [:totalEvents])
11
10
  end
12
11
 
13
12
  it 'has dimensions' do
@@ -17,5 +16,4 @@ describe Sufia::Download, :type => :model do
17
16
  it 'responds to :for_file' do
18
17
  expect(@download).to respond_to(:for_file)
19
18
  end
20
-
21
19
  end
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe FeaturedWorkList, :type => :model do
3
+ describe FeaturedWorkList, type: :model do
4
4
  let(:file1) { create(:generic_file) }
5
5
  let(:file2) { create(:generic_file) }
6
6
 
@@ -10,7 +10,7 @@ describe FeaturedWorkList, :type => :model do
10
10
  create(:featured_work, generic_file_id: file2.id)
11
11
  end
12
12
 
13
- it 'should be a list of the featured work objects, each with the generic_file\'s solr_doc' do
13
+ it 'is a list of the featured work objects, each with the generic_file\'s solr_doc' do
14
14
  expect(subject.featured_works.size).to eq 2
15
15
  solr_doc = subject.featured_works.first.generic_file_solr_document
16
16
  expect(solr_doc).to be_kind_of SolrDocument
@@ -25,7 +25,7 @@ describe FeaturedWorkList, :type => :model do
25
25
  file1.destroy
26
26
  end
27
27
 
28
- it 'should be a list of the remaining featured work objects, each with the generic_file\'s solr_doc' do
28
+ it 'is a list of the remaining featured work objects, each with the generic_file\'s solr_doc' do
29
29
  expect(subject.featured_works.size).to eq 1
30
30
  solr_doc = subject.featured_works.first.generic_file_solr_document
31
31
  expect(solr_doc).to be_kind_of SolrDocument
@@ -1,25 +1,25 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe FeaturedWork, :type => :model do
4
- let(:feature) { FeaturedWork.create(generic_file_id:"99") }
3
+ describe FeaturedWork, type: :model do
4
+ let(:feature) { described_class.create(generic_file_id: "99") }
5
5
 
6
- it "should have a file" do
6
+ it "has a file" do
7
7
  expect(feature.generic_file_id).to eq "99"
8
8
  end
9
9
 
10
- it "should not allow six features" do
10
+ it "does not allow six features" do
11
11
  5.times do |n|
12
- expect(FeaturedWork.create(generic_file_id:n.to_s)).to_not be_new_record
12
+ expect(described_class.create(generic_file_id: n.to_s)).to_not be_new_record
13
13
  end
14
- FeaturedWork.create(generic_file_id:"6").tap do |sixth|
15
- expect(sixth).to be_new_record
14
+ described_class.create(generic_file_id: "6").tap do |sixth|
15
+ expect(sixth).to be_new_record
16
16
  expect(sixth.errors.full_messages).to eq ["Limited to 5 featured works."]
17
17
  end
18
- expect(FeaturedWork.count).to eq 5
18
+ expect(described_class.count).to eq 5
19
19
  end
20
20
 
21
21
  describe "can_create_another?" do
22
- subject { FeaturedWork }
22
+ subject { described_class }
23
23
  context "when none exist" do
24
24
  describe '#can_create_another?' do
25
25
  subject { super().can_create_another? }
@@ -29,7 +29,7 @@ describe FeaturedWork, :type => :model do
29
29
  context "when five exist" do
30
30
  before do
31
31
  5.times do |n|
32
- FeaturedWork.create(generic_file_id:n.to_s)
32
+ described_class.create(generic_file_id: n.to_s)
33
33
  end
34
34
  end
35
35
 
@@ -41,13 +41,11 @@ describe FeaturedWork, :type => :model do
41
41
  end
42
42
 
43
43
  describe "#order" do
44
- subject { FeaturedWork.new(order: 5) }
44
+ subject { described_class.new(order: 5) }
45
45
 
46
46
  describe '#order' do
47
47
  subject { super().order }
48
- it {is_expected.to eq 5 }
48
+ it { is_expected.to eq 5 }
49
49
  end
50
50
  end
51
51
  end
52
-
53
-
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe FileContentDatastream, :type => :model do
3
+ describe FileContentDatastream, type: :model do
4
4
  describe "#latest_version" do
5
5
  let(:file) do
6
6
  GenericFile.create do |f|
@@ -25,14 +25,16 @@ describe FileContentDatastream, :type => :model do
25
25
  end
26
26
 
27
27
  describe "extract_metadata" do
28
- let(:datastream) { FileContentDatastream.new('foo/content') }
29
- let(:file) { ActionDispatch::Http::UploadedFile.new(tempfile: File.new(fixture_path + '/world.png'),
30
- filename: 'world.png') }
28
+ let(:datastream) { described_class.new('foo/content') }
29
+ let(:file) do
30
+ ActionDispatch::Http::UploadedFile.new(tempfile: File.new(fixture_path + '/world.png'),
31
+ filename: 'world.png')
32
+ end
31
33
  before { datastream.content = file }
32
34
  let(:document) { Nokogiri::XML.parse(datastream.extract_metadata).root }
33
- let(:namespace) { { 'ns'=>'http://hul.harvard.edu/ois/xml/ns/fits/fits_output' } }
35
+ let(:namespace) { { 'ns' => 'http://hul.harvard.edu/ois/xml/ns/fits/fits_output' } }
34
36
 
35
- it "should return an xml document", unless: $in_travis do
37
+ it "returns an xml document", unless: $in_travis do
36
38
  expect(document.xpath('//ns:identity/@mimetype', namespace).first.value).to eq 'image/png'
37
39
  end
38
40
  end
@@ -43,7 +45,7 @@ describe FileContentDatastream, :type => :model do
43
45
  @generic_file.apply_depositor_metadata('mjg36')
44
46
  end
45
47
 
46
- it "should only return true when the datastream has actually changed" do
48
+ it "onlies return true when the datastream has actually changed" do
47
49
  @generic_file.add_file(File.open(fixture_path + '/world.png', 'rb'), path: 'content', original_name: 'world.png')
48
50
  expect(@generic_file.content).to be_changed
49
51
  @generic_file.save!
@@ -1,9 +1,9 @@
1
1
  require 'spec_helper'
2
2
 
3
- RSpec.describe FileDownloadStat, :type => :model do
4
- let(:file_id) {"99"}
5
- let(:date) {DateTime.new}
6
- let(:file_stat) {FileDownloadStat.create(downloads:"2", date: date, file_id: file_id)}
3
+ RSpec.describe FileDownloadStat, type: :model do
4
+ let(:file_id) { "99" }
5
+ let(:date) { DateTime.new }
6
+ let(:file_stat) { described_class.create(downloads: "2", date: date, file_id: file_id) }
7
7
 
8
8
  it "has attributes" do
9
9
  expect(file_stat).to respond_to(:downloads)
@@ -14,73 +14,67 @@ RSpec.describe FileDownloadStat, :type => :model do
14
14
  expect(file_stat.downloads).to eq(2)
15
15
  end
16
16
 
17
-
18
17
  describe "#get_float_statistics" do
19
-
20
- let(:dates) {
18
+ let(:dates) do
21
19
  ldates = []
22
- 4.downto(0) {|idx| ldates << (Date.today-idx.day) }
20
+ 4.downto(0) { |idx| ldates << (Date.today - idx.day) }
23
21
  ldates
24
- }
25
- let(:date_strs) {
26
- dates.map {|date| date.strftime("%Y%m%d") }
27
- }
22
+ end
23
+ let(:date_strs) do
24
+ dates.map { |date| date.strftime("%Y%m%d") }
25
+ end
28
26
 
29
- let(:download_output) {
27
+ let(:download_output) do
30
28
  [[statistic_date(dates[0]), 1], [statistic_date(dates[1]), 1], [statistic_date(dates[2]), 2], [statistic_date(dates[3]), 3]]
31
- }
29
+ end
32
30
 
33
31
  # This is what the data looks like that's returned from Google Analytics (GA) via the Legato gem
34
32
  # Due to the nature of querying GA, testing this data in an automated fashion is problematc.
35
33
  # Sample data structures were created by sending real events to GA from a test instance of
36
34
  # Scholarsphere. The data below are essentially a "cut and paste" from the output of query
37
35
  # results from the Legato gem.
38
- let(:sample_download_statistics) {
36
+ let(:sample_download_statistics) do
39
37
  [
40
- OpenStruct.new(eventCategory: "Files", eventAction: "Downloaded", eventLabel: "sufia:x920fw85p", date: date_strs[0], totalEvents: "1"),
41
- OpenStruct.new(eventCategory: "Files", eventAction: "Downloaded", eventLabel: "sufia:x920fw85p", date: date_strs[1], totalEvents: "1"),
42
- OpenStruct.new(eventCategory: "Files", eventAction: "Downloaded", eventLabel: "sufia:x920fw85p", date: date_strs[2], totalEvents: "2"),
43
- OpenStruct.new(eventCategory: "Files", eventAction: "Downloaded", eventLabel: "sufia:x920fw85p", date: date_strs[3], totalEvents: "3"),
44
- #OpenStruct.new(eventCategory: "Files", eventAction: "Downloaded", eventLabel: "sufia:x920fw85p", date: date_strs[4], totalEvents: "5"),
38
+ OpenStruct.new(eventCategory: "Files", eventAction: "Downloaded", eventLabel: "sufia:x920fw85p", date: date_strs[0], totalEvents: "1"),
39
+ OpenStruct.new(eventCategory: "Files", eventAction: "Downloaded", eventLabel: "sufia:x920fw85p", date: date_strs[1], totalEvents: "1"),
40
+ OpenStruct.new(eventCategory: "Files", eventAction: "Downloaded", eventLabel: "sufia:x920fw85p", date: date_strs[2], totalEvents: "2"),
41
+ OpenStruct.new(eventCategory: "Files", eventAction: "Downloaded", eventLabel: "sufia:x920fw85p", date: date_strs[3], totalEvents: "3"),
42
+ # OpenStruct.new(eventCategory: "Files", eventAction: "Downloaded", eventLabel: "sufia:x920fw85p", date: date_strs[4], totalEvents: "5"),
45
43
  ]
46
- }
44
+ end
47
45
 
48
46
  describe "cache empty" do
49
- let(:stats) {
50
- expect(FileDownloadStat).to receive(:ga_statistics).and_return(sample_download_statistics)
51
- FileDownloadStat.statistics(file_id,Date.today-4.day)
52
- }
47
+ let(:stats) do
48
+ expect(described_class).to receive(:ga_statistics).and_return(sample_download_statistics)
49
+ described_class.statistics(file_id, Date.today - 4.day)
50
+ end
53
51
 
54
52
  it "includes cached ga data" do
55
- expect(FileDownloadStat.to_flots stats).to include(*download_output)
53
+ expect(described_class.to_flots stats).to include(*download_output)
56
54
  end
57
55
 
58
56
  it "caches data" do
59
- expect(FileDownloadStat.to_flots stats).to include(*download_output)
57
+ expect(described_class.to_flots stats).to include(*download_output)
60
58
 
61
59
  # at this point all data should be cached
62
- allow(FileDownloadStat).to receive(:ga_statistics).with(Date.today, file_id).and_raise("We should not call Google Analytics All data should be cached!")
60
+ allow(described_class).to receive(:ga_statistics).with(Date.today, file_id).and_raise("We should not call Google Analytics All data should be cached!")
63
61
 
64
- stats2 = FileDownloadStat.statistics(file_id,Date.today-4.day)
65
- expect(FileDownloadStat.to_flots stats2).to include(*download_output)
62
+ stats2 = described_class.statistics(file_id, Date.today - 4.day)
63
+ expect(described_class.to_flots stats2).to include(*download_output)
66
64
  end
67
-
68
65
  end
69
66
 
70
67
  describe "cache loaded" do
68
+ let!(:file_download_stat) { described_class.create(date: (Date.today - 5.day).to_datetime, file_id: file_id, downloads: "25") }
71
69
 
72
- let!(:file_download_stat) { FileDownloadStat.create(date: (Date.today-5.day).to_datetime, file_id: file_id, downloads:"25")}
73
-
74
- let(:stats) {
75
- expect(FileDownloadStat).to receive(:ga_statistics).and_return(sample_download_statistics)
76
- FileDownloadStat.statistics(file_id,Date.today-5.day)
77
- }
70
+ let(:stats) do
71
+ expect(described_class).to receive(:ga_statistics).and_return(sample_download_statistics)
72
+ described_class.statistics(file_id, Date.today - 5.day)
73
+ end
78
74
 
79
75
  it "includes cached data" do
80
- expect(FileDownloadStat.to_flots stats).to include([file_download_stat.date.to_i*1000,file_download_stat.downloads],*download_output)
76
+ expect(described_class.to_flots stats).to include([file_download_stat.date.to_i * 1000, file_download_stat.downloads], *download_output)
81
77
  end
82
-
83
78
  end
84
79
  end
85
-
86
80
  end
@@ -1,7 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe FileUsage, :type => :model do
4
-
3
+ describe FileUsage, type: :model do
5
4
  let(:file) do
6
5
  GenericFile.new.tap do |file|
7
6
  file.apply_depositor_metadata("awead")
@@ -9,24 +8,25 @@ describe FileUsage, :type => :model do
9
8
  end
10
9
  end
11
10
 
12
- let(:dates) {
11
+ let(:dates) do
13
12
  ldates = []
14
- 4.downto(0) {|idx| ldates << (Date.today-idx.day) }
13
+ 4.downto(0) { |idx| ldates << (Date.today - idx.day) }
15
14
  ldates
16
- }
17
- let(:date_strs) {
15
+ end
16
+
17
+ let(:date_strs) do
18
18
  ldate_strs = []
19
- dates.each {|date| ldate_strs << date.strftime("%Y%m%d") }
19
+ dates.each { |date| ldate_strs << date.strftime("%Y%m%d") }
20
20
  ldate_strs
21
- }
21
+ end
22
22
 
23
- let(:view_output) {
23
+ let(:view_output) do
24
24
  [[statistic_date(dates[0]), 4], [statistic_date(dates[1]), 8], [statistic_date(dates[2]), 6], [statistic_date(dates[3]), 10], [statistic_date(dates[4]), 2]]
25
- }
25
+ end
26
26
 
27
- let(:download_output) {
28
- [[statistic_date(dates[0]), 1], [statistic_date(dates[1]), 1], [statistic_date(dates[2]), 2], [statistic_date(dates[3]), 3], [statistic_date(dates[4]), 5]]
29
- }
27
+ let(:download_output) do
28
+ [[statistic_date(dates[0]), 1], [statistic_date(dates[1]), 1], [statistic_date(dates[2]), 2], [statistic_date(dates[3]), 3], [statistic_date(dates[4]), 5]]
29
+ end
30
30
 
31
31
  # This is what the data looks like that's returned from Google Analytics (GA) via the Legato gem
32
32
  # Due to the nature of querying GA, testing this data in an automated fashion is problematc.
@@ -34,17 +34,17 @@ describe FileUsage, :type => :model do
34
34
  # Scholarsphere. The data below are essentially a "cut and paste" from the output of query
35
35
  # results from the Legato gem.
36
36
 
37
- let(:sample_download_statistics) {
37
+ let(:sample_download_statistics) do
38
38
  [
39
39
  OpenStruct.new(eventCategory: "Files", eventAction: "Downloaded", eventLabel: "sufia:x920fw85p", date: date_strs[0], totalEvents: "1"),
40
40
  OpenStruct.new(eventCategory: "Files", eventAction: "Downloaded", eventLabel: "sufia:x920fw85p", date: date_strs[1], totalEvents: "1"),
41
41
  OpenStruct.new(eventCategory: "Files", eventAction: "Downloaded", eventLabel: "sufia:x920fw85p", date: date_strs[2], totalEvents: "2"),
42
42
  OpenStruct.new(eventCategory: "Files", eventAction: "Downloaded", eventLabel: "sufia:x920fw85p", date: date_strs[3], totalEvents: "3"),
43
- OpenStruct.new(eventCategory: "Files", eventAction: "Downloaded", eventLabel: "sufia:x920fw85p", date: date_strs[4], totalEvents: "5"),
43
+ OpenStruct.new(eventCategory: "Files", eventAction: "Downloaded", eventLabel: "sufia:x920fw85p", date: date_strs[4], totalEvents: "5")
44
44
  ]
45
- }
45
+ end
46
46
 
47
- let(:sample_pageview_statistics) {
47
+ let(:sample_pageview_statistics) do
48
48
  [
49
49
  OpenStruct.new(date: date_strs[0], pageviews: 4),
50
50
  OpenStruct.new(date: date_strs[1], pageviews: 8),
@@ -52,33 +52,30 @@ describe FileUsage, :type => :model do
52
52
  OpenStruct.new(date: date_strs[3], pageviews: 10),
53
53
  OpenStruct.new(date: date_strs[4], pageviews: 2)
54
54
  ]
55
- }
55
+ end
56
56
 
57
- let(:usage) {
58
- allow_any_instance_of(GenericFile).to receive(:create_date).and_return((Date.today-4.day).to_s)
57
+ let(:usage) do
58
+ allow_any_instance_of(GenericFile).to receive(:create_date).and_return((Date.today - 4.day).to_s)
59
59
  expect(FileDownloadStat).to receive(:ga_statistics).and_return(sample_download_statistics)
60
60
  expect(FileViewStat).to receive(:ga_statistics).and_return(sample_pageview_statistics)
61
- FileUsage.new(file.id)
62
- }
61
+ described_class.new(file.id)
62
+ end
63
63
 
64
64
  describe "#initialize" do
65
-
66
- it "should set the id" do
65
+ it "sets the id" do
67
66
  expect(usage.id).to eq(file.id)
68
67
  end
69
68
 
70
- it "should set the path" do
69
+ it "sets the path" do
71
70
  expect(usage.path).to eq("/files/#{URI.encode(file.id, '/')}")
72
71
  end
73
72
 
74
- it "should set the created date" do
73
+ it "sets the created date" do
75
74
  expect(usage.created).to eq(file.create_date)
76
75
  end
77
-
78
76
  end
79
77
 
80
78
  describe "statistics" do
81
-
82
79
  before(:all) do
83
80
  @system_timezone = ENV['TZ']
84
81
  ENV['TZ'] = 'UTC'
@@ -88,15 +85,15 @@ describe FileUsage, :type => :model do
88
85
  ENV['TZ'] = @system_timezone
89
86
  end
90
87
 
91
- it "should count the total numver of downloads" do
88
+ it "counts the total numver of downloads" do
92
89
  expect(usage.total_downloads).to eq(12)
93
90
  end
94
91
 
95
- it "should count the total numver of pageviews" do
92
+ it "counts the total numver of pageviews" do
96
93
  expect(usage.total_pageviews).to eq(30)
97
94
  end
98
95
 
99
- it "should return an array of hashes for use with JQuery Flot" do
96
+ it "returns an array of hashes for use with JQuery Flot" do
100
97
  expect(usage.to_flot[0][:label]).to eq("Pageviews")
101
98
  expect(usage.to_flot[1][:label]).to eq("Downloads")
102
99
  expect(usage.to_flot[0][:data]).to include(*view_output)
@@ -113,27 +110,26 @@ describe FileUsage, :type => :model do
113
110
  end
114
111
 
115
112
  describe "create date before earliest date set" do
116
- let(:usage) {
113
+ let(:usage) do
117
114
  allow_any_instance_of(GenericFile).to receive(:create_date).and_return(create_date.to_s)
118
115
  expect(FileDownloadStat).to receive(:ga_statistics).and_return(sample_download_statistics)
119
116
  expect(FileViewStat).to receive(:ga_statistics).and_return(sample_pageview_statistics)
120
- FileUsage.new(file.id)
121
- }
122
- it "should set the created date to the earliest date not the created date" do
117
+ described_class.new(file.id)
118
+ end
119
+ it "sets the created date to the earliest date not the created date" do
123
120
  expect(usage.created).to eq(earliest)
124
121
  end
125
-
126
122
  end
127
123
 
128
124
  describe "create date after earliest" do
129
- let(:usage) {
130
- allow_any_instance_of(GenericFile).to receive(:create_date).and_return((Date.today-4.day).to_s)
125
+ let(:usage) do
126
+ allow_any_instance_of(GenericFile).to receive(:create_date).and_return((Date.today - 4.day).to_s)
131
127
  expect(FileDownloadStat).to receive(:ga_statistics).and_return(sample_download_statistics)
132
128
  expect(FileViewStat).to receive(:ga_statistics).and_return(sample_pageview_statistics)
133
129
  Sufia.config.analytic_start_date = earliest
134
- FileUsage.new(file.id)
135
- }
136
- it "should set the created date to the earliest date not the created date" do
130
+ described_class.new(file.id)
131
+ end
132
+ it "sets the created date to the earliest date not the created date" do
137
133
  expect(usage.created).to eq(file.create_date)
138
134
  end
139
135
  end
@@ -143,20 +139,19 @@ describe FileUsage, :type => :model do
143
139
  Sufia.config.analytic_start_date = nil
144
140
  end
145
141
 
146
- let(:usage) {
142
+ let(:usage) do
147
143
  allow_any_instance_of(GenericFile).to receive(:create_date).and_return(create_date.to_s)
148
144
  expect(FileDownloadStat).to receive(:ga_statistics).and_return(sample_download_statistics)
149
145
  expect(FileViewStat).to receive(:ga_statistics).and_return(sample_pageview_statistics)
150
- FileUsage.new(file.id)
151
- }
152
- it "should set the created date to the earliest date not the created date" do
146
+ described_class.new(file.id)
147
+ end
148
+ it "sets the created date to the earliest date not the created date" do
153
149
  expect(usage.created).to eq(create_date)
154
150
  end
155
-
156
151
  end
157
152
  end
158
153
 
159
- describe "on a migrated file" do
154
+ describe "on a migrated file" do
160
155
  let(:date_uploaded) { "2014-12-31" }
161
156
 
162
157
  let(:file_migrated) do
@@ -167,15 +162,14 @@ describe FileUsage, :type => :model do
167
162
  end
168
163
  end
169
164
 
170
- let(:usage) {
165
+ let(:usage) do
171
166
  expect(FileDownloadStat).to receive(:ga_statistics).and_return(sample_download_statistics)
172
167
  expect(FileViewStat).to receive(:ga_statistics).and_return(sample_pageview_statistics)
173
- FileUsage.new(file_migrated.id)
174
- }
168
+ described_class.new(file_migrated.id)
169
+ end
175
170
 
176
- it "should use the date_uploaded for analytics" do
171
+ it "uses the date_uploaded for analytics" do
177
172
  expect(usage.created).to eq(date_uploaded)
178
173
  end
179
174
  end
180
-
181
175
  end