sufia 7.0.0.beta1 → 7.0.0.beta2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (73) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/sufia.js +3 -4
  3. data/app/assets/stylesheets/sufia/_styles.scss +2 -1
  4. data/app/controllers/concerns/sufia/transfers_controller_behavior.rb +1 -0
  5. data/app/controllers/errors_controller.rb +1 -1
  6. data/app/indexers/sufia/work_indexer.rb +1 -0
  7. data/app/presenters/sufia/admin_stats_presenter.rb +17 -11
  8. data/app/search_builders/sufia/catalog_search_builder.rb +29 -0
  9. data/app/search_builders/sufia/my_collections_search_builder.rb +7 -0
  10. data/app/search_builders/sufia/my_highlights_search_builder.rb +9 -3
  11. data/app/search_builders/sufia/my_shares_search_builder.rb +8 -1
  12. data/app/search_builders/sufia/search_builder.rb +0 -59
  13. data/app/services/sufia/analytics.rb +25 -8
  14. data/app/services/sufia/query_service.rb +1 -1
  15. data/app/services/sufia/statistics/collections/over_time.rb +13 -0
  16. data/app/services/sufia/statistics/depositors/summary.rb +54 -0
  17. data/app/services/sufia/statistics/file_sets/by_format.rb +14 -0
  18. data/app/services/sufia/statistics/over_time.rb +11 -3
  19. data/app/services/sufia/statistics/system_stats.rb +61 -0
  20. data/app/services/sufia/statistics/term_query.rb +65 -0
  21. data/app/services/sufia/statistics/works/by_depositor.rb +13 -0
  22. data/app/services/sufia/statistics/works/by_resource_type.rb +13 -0
  23. data/app/services/sufia/statistics/works/count.rb +49 -0
  24. data/app/services/sufia/statistics/works/over_time.rb +13 -0
  25. data/app/views/admin/stats/_stats_by_date.html.erb +1 -1
  26. data/app/views/admin/stats/_top_data.html.erb +4 -4
  27. data/app/views/admin/stats/_works.html.erb +8 -0
  28. data/app/views/collections/_form.html.erb +1 -1
  29. data/app/views/curation_concerns/base/_attribute_rows.html.erb +10 -10
  30. data/app/views/curation_concerns/base/_metadata.html.erb +1 -1
  31. data/app/views/curation_concerns/base/_relationships.html.erb +1 -1
  32. data/app/views/curation_concerns/file_sets/_descriptions.html.erb +1 -1
  33. data/app/views/error/404.html.erb +8 -19
  34. data/app/views/layouts/error.html.erb +3 -3
  35. data/app/views/layouts/homepage.html.erb +1 -1
  36. data/app/views/layouts/sufia-dashboard.html.erb +1 -1
  37. data/app/views/layouts/sufia-one-column.html.erb +1 -1
  38. data/app/views/{_footer.html.erb → shared/_footer.html.erb} +1 -1
  39. data/app/views/stats/file.html.erb +0 -1
  40. data/app/views/stats/work.html.erb +0 -2
  41. data/lib/generators/sufia/install_generator.rb +6 -0
  42. data/lib/sufia/engine.rb +1 -0
  43. data/lib/sufia/version.rb +1 -1
  44. data/spec/controllers/my/shares_controller_spec.rb +6 -7
  45. data/spec/controllers/transfers_controller_spec.rb +10 -0
  46. data/spec/features/batch_edit_spec.rb +1 -1
  47. data/spec/lib/sufia/analytics_spec.rb +18 -10
  48. data/spec/presenters/sufia/admin_stats_presenter_spec.rb +21 -14
  49. data/spec/search_builder/{sufia_search_builder_spec.rb → sufia/catalog_search_builder_spec.rb} +1 -1
  50. data/spec/search_builder/sufia/my_shares_search_builder_spec.rb +18 -0
  51. data/spec/services/statistics/{collections_spec.rb → collections/over_time_spec.rb} +1 -1
  52. data/spec/services/{sufia/admin/depositor_stats_spec.rb → statistics/depositors/summary_spec.rb} +5 -7
  53. data/spec/services/statistics/file_sets/by_format_spec.rb +30 -0
  54. data/spec/services/statistics/system_stats_spec.rb +54 -0
  55. data/spec/services/statistics/works/by_depositor_spec.rb +25 -0
  56. data/spec/services/statistics/works/by_resource_type_spec.rb +21 -0
  57. data/spec/services/statistics/works/count_spec.rb +42 -0
  58. data/spec/services/statistics/{works_spec.rb → works/over_time_spec.rb} +1 -1
  59. data/spec/views/admin/stats/index.html.erb_spec.rb +3 -6
  60. data/spec/views/curation_concerns/base/_relationships.html.erb_spec.rb +4 -1
  61. data/sufia.gemspec +2 -1
  62. metadata +49 -25
  63. data/app/services/sufia/admin/depositor_stats.rb +0 -48
  64. data/app/services/sufia/statistics/collections.rb +0 -12
  65. data/app/services/sufia/statistics/works.rb +0 -12
  66. data/app/services/sufia/system_stats.rb +0 -120
  67. data/app/views/admin/stats/_files.html.erb +0 -8
  68. data/lib/generators/sufia/fulltext_generator.rb +0 -26
  69. data/spec/services/sufia/system_stats_spec.rb +0 -224
  70. data/vendor/assets/javascripts/flot/excanvas.js +0 -1428
  71. data/vendor/assets/javascripts/flot/jquery.flot.js +0 -3168
  72. data/vendor/assets/javascripts/flot/jquery.flot.selection.js +0 -360
  73. data/vendor/assets/javascripts/flot/jquery.flot.time.js +0 -432
@@ -1,3 +1,3 @@
1
1
  module Sufia
2
- VERSION = "7.0.0.beta1".freeze
2
+ VERSION = "7.0.0.beta2".freeze
3
3
  end
@@ -1,4 +1,3 @@
1
-
2
1
  describe My::SharesController, type: :controller do
3
2
  describe "logged in user" do
4
3
  let(:user) { create(:user) }
@@ -11,11 +10,11 @@ describe My::SharesController, type: :controller do
11
10
  let(:other_user) { create(:user) }
12
11
  let(:someone_else) { create(:user) }
13
12
 
14
- let!(:my_file) { create(:file_set, user: user) }
15
- let!(:unshared_file) { create(:file_set, user: other_user) }
16
- let!(:shared_with_me) { create(:file_set, user: other_user, edit_users: [user, other_user]) }
17
- let!(:read_shared_with_me) { create(:file_set, user: other_user, read_users: [user, other_user]) }
18
- let!(:shared_with_someone_else) { create(:file_set, user: other_user, edit_users: [someone_else, other_user]) }
13
+ let!(:my_work) { create(:work, user: user) }
14
+ let!(:unshared_work) { create(:work, user: other_user) }
15
+ let!(:shared_with_me) { create(:work, user: other_user, edit_users: [user, other_user]) }
16
+ let!(:read_shared_with_me) { create(:work, user: other_user, read_users: [user, other_user]) }
17
+ let!(:shared_with_someone_else) { create(:work, user: other_user, edit_users: [someone_else, other_user]) }
19
18
  let!(:my_collection) { create(:public_collection, user: user) }
20
19
 
21
20
  it "responds with success" do
@@ -24,7 +23,7 @@ describe My::SharesController, type: :controller do
24
23
  end
25
24
 
26
25
  context "with multiple pages of results" do
27
- before { 2.times { create(:file_set, user: other_user, edit_users: [user, other_user]) } }
26
+ before { 2.times { create(:work, user: other_user, edit_users: [user, other_user]) } }
28
27
  it "paginates" do
29
28
  get :index, per_page: 2
30
29
  expect(assigns[:document_list].length).to eq 2
@@ -1,4 +1,14 @@
1
1
  describe TransfersController, type: :controller do
2
+ describe "without a signed in user" do
3
+ describe "#index" do
4
+ it "redirects to sign in" do
5
+ get :index
6
+ expect(flash[:alert]).to eq "You need to sign in or sign up before continuing."
7
+ expect(response).to redirect_to main_app.new_user_session_path
8
+ end
9
+ end
10
+ end
11
+
2
12
  describe "with a signed in user" do
3
13
  let(:another_user) { create(:user) }
4
14
  let(:user) { create(:user) }
@@ -54,7 +54,7 @@ describe 'Batch management of works', type: :feature do
54
54
  expand("contributor")
55
55
  expect(page).to have_css "input#generic_work_contributor[value*='NEW contributor']"
56
56
  expand("description")
57
- expect(page).to have_css "textarea#generic_work_description", 'NEW description'
57
+ expect(page).to have_css "textarea#generic_work_description", text: 'NEW description'
58
58
  expand("keyword")
59
59
  expect(page).to have_css "input#generic_work_keyword[value*='NEW keyword']"
60
60
  expand("publisher")
@@ -4,20 +4,28 @@ describe Sufia::Analytics do
4
4
  allow(subject).to receive(:token).and_return(token)
5
5
  end
6
6
 
7
- it 'responds to :config' do
8
- expect(subject).to respond_to(:config)
9
- end
10
-
11
- it 'reads its config from a yaml file' do
12
- expect(subject.config.keys.sort).to eql ['app_name', 'app_version', 'client_email', 'privkey_path', 'privkey_secret']
13
- end
7
+ describe "configuration" do
8
+ context "When the yaml file has values" do
9
+ it 'reads its config from a yaml file' do
10
+ expect(subject.send(:config).keys.sort).to eql ['app_name', 'app_version', 'client_email', 'privkey_path', 'privkey_secret']
11
+ end
12
+ end
14
13
 
15
- it 'responds to :user' do
16
- expect(subject).to respond_to(:user)
14
+ context "When the yaml file has no values" do
15
+ before do
16
+ described_class.send(:remove_instance_variable, :@config)
17
+ allow(File).to receive(:read).and_return("# Just comments\n# and comments\n")
18
+ end
19
+ it 'returns nil' do
20
+ expect(Rails.logger).to receive(:error)
21
+ .with(starting_with("Unable to fetch any keys from"))
22
+ expect(subject.send(:config)).to be nil
23
+ end
24
+ end
17
25
  end
18
26
 
19
27
  it 'instantiates a user' do
20
- expect(subject.user).to be_a(Legato::User)
28
+ expect(subject.send(:user)).to be_a(Legato::User)
21
29
  end
22
30
 
23
31
  it 'responds to :profile' do
@@ -26,7 +26,7 @@ describe Sufia::AdminStatsPresenter do
26
26
 
27
27
  subject { service.active_users }
28
28
  it "returns statistics" do
29
- expect(subject).to eq(user1.user_key => 3, user2.user_key => 1)
29
+ expect(subject).to eq [{ label: user1.user_key, data: 3 }, { label: user2.user_key, data: 1 }]
30
30
  end
31
31
  end
32
32
 
@@ -48,11 +48,11 @@ describe Sufia::AdminStatsPresenter do
48
48
  subject { service.top_formats }
49
49
 
50
50
  it "gathers formats" do
51
- expect(subject).to eq("png" => 2, "jpeg" => 1)
51
+ expect(subject).to eq [{ label: "png", data: 2 }, { label: "jpeg", data: 1 }]
52
52
  end
53
53
  end
54
54
 
55
- describe "#files_count" do
55
+ describe "#works_count" do
56
56
  before do
57
57
  build(:generic_work, user: user1, id: "abc1223").update_index
58
58
  build(:public_generic_work, user: user1, id: "bbb1223").update_index
@@ -63,7 +63,7 @@ describe Sufia::AdminStatsPresenter do
63
63
  let(:one_day_ago) { one_day_ago_date.strftime("%Y-%m-%d") }
64
64
  let(:two_days_ago) { two_days_ago_date.strftime("%Y-%m-%d") }
65
65
 
66
- subject { service.files_count }
66
+ subject { service.works_count }
67
67
 
68
68
  it "includes files but not collections" do
69
69
  expect(subject[:total]).to eq(3)
@@ -73,22 +73,26 @@ describe Sufia::AdminStatsPresenter do
73
73
  end
74
74
 
75
75
  context "when there is uncommitted work" do
76
- let(:original_files_count) do
76
+ let(:original_works_count) do
77
77
  work = create(:generic_work, user: user1)
78
78
  original_files_count = GenericWork.count
79
79
  ActiveFedora::SolrService.instance.conn.delete_by_id(work.id)
80
80
  original_files_count
81
81
  end
82
- it "provides accurate files_count, ensuring that solr deletes have been expunged first" do
83
- expect(subject[:total]).to eq(original_files_count - 1)
82
+
83
+ it "provides accurate count, ensuring that solr deletes have been expunged first" do
84
+ expect(subject[:total]).to eq(original_works_count - 1)
84
85
  end
85
86
  end
86
87
 
87
88
  context "when start date is provided" do
88
89
  let(:start_date) { one_day_ago }
89
- let(:system_stats) { double(document_by_permission: {}) }
90
+ let(:system_stats) { double(by_permission: {}) }
90
91
  it "queries by start date" do
91
- expect(Sufia::SystemStats).to receive(:new).with(5, start_date, end_date).and_return(system_stats)
92
+ expect(Sufia::Statistics::Works::Count).to receive(:new)
93
+ .with(one_day_ago_date.beginning_of_day,
94
+ nil)
95
+ .and_return(system_stats)
92
96
  subject
93
97
  end
94
98
  end
@@ -96,9 +100,12 @@ describe Sufia::AdminStatsPresenter do
96
100
  context "when start and end date is provided" do
97
101
  let(:start_date) { two_days_ago }
98
102
  let(:end_date) { one_day_ago }
99
- let(:system_stats) { double(document_by_permission: {}) }
103
+ let(:system_stats) { double(by_permission: {}) }
100
104
  it "queries by start and date" do
101
- expect(Sufia::SystemStats).to receive(:new).with(5, start_date, end_date).and_return(system_stats)
105
+ expect(Sufia::Statistics::Works::Count).to receive(:new)
106
+ .with(two_days_ago_date.beginning_of_day,
107
+ one_day_ago_date.end_of_day)
108
+ .and_return(system_stats)
102
109
  subject
103
110
  end
104
111
  end
@@ -151,15 +158,15 @@ describe Sufia::AdminStatsPresenter do
151
158
 
152
159
  context "with a start and no end date" do
153
160
  let(:start_date) { '2015-12-14' }
154
- let(:today) { Time.zone.today.strftime("%Y-%m-%d") }
155
- it { is_expected.to eq "2015-12-14 to #{today}" }
161
+ let(:today) { Time.zone.today.to_date.to_s(:standard) }
162
+ it { is_expected.to eq "12/14/2015 to #{today}" }
156
163
  end
157
164
 
158
165
  context 'with start and end dates' do
159
166
  let(:start_date) { '2015-12-14' }
160
167
  let(:end_date) { '2016-05-12' }
161
168
 
162
- it { is_expected.to eq '2015-12-14 to 2016-05-12' }
169
+ it { is_expected.to eq '12/14/2015 to 05/12/2016' }
163
170
  end
164
171
  end
165
172
  end
@@ -1,4 +1,4 @@
1
- describe Sufia::SearchBuilder do
1
+ describe Sufia::CatalogSearchBuilder do
2
2
  let(:builder) { described_class.new([], self) }
3
3
  let(:solr_params) { { q: user_query } }
4
4
 
@@ -0,0 +1,18 @@
1
+ describe Sufia::MySharesSearchBuilder do
2
+ let(:me) { create(:user) }
3
+ let(:config) { CatalogController.blacklight_config }
4
+ let(:scope) { double('The scope',
5
+ blacklight_config: config,
6
+ params: {},
7
+ current_ability: Ability.new(me),
8
+ current_user: me) }
9
+ let(:builder) { described_class.new(scope) }
10
+
11
+ subject { builder.to_hash['fq'] }
12
+
13
+ it "filters things we have access to in which we are not the depositor" do
14
+ expect(subject).to eq ["edit_access_group_ssim:public OR edit_access_group_ssim:registered OR edit_access_person_ssim:#{me.user_key}",
15
+ "{!terms f=has_model_ssim}GenericWork,Collection",
16
+ "-_query_:\"{!field f=depositor_ssim}#{me.user_key}\""]
17
+ end
18
+ end
@@ -1,4 +1,4 @@
1
- RSpec.describe Sufia::Statistics::Collections do
1
+ RSpec.describe Sufia::Statistics::Collections::OverTime do
2
2
  let(:service) { described_class.new }
3
3
 
4
4
  describe "#points" do
@@ -1,13 +1,11 @@
1
- require 'spec_helper'
2
-
3
- describe Sufia::Admin::DepositorStats do
1
+ describe Sufia::Statistics::Depositors::Summary do
4
2
  let(:user1) { create(:user) }
5
3
  let(:user2) { create(:user) }
6
4
  let!(:old_work) { create(:work, user: user1) }
7
5
  let(:two_days_ago_date) { Time.zone.now - 2.days }
8
6
 
9
- let(:start_date) { '' }
10
- let(:end_date) { '' }
7
+ let(:start_date) { nil }
8
+ let(:end_date) { nil }
11
9
  let!(:work1) { create(:work, user: user1) }
12
10
  let!(:work2) { create(:work, user: user2) }
13
11
  let!(:collection1) { create(:public_collection, user: user1) }
@@ -30,8 +28,8 @@ describe Sufia::Admin::DepositorStats do
30
28
  end
31
29
 
32
30
  context "when dates are present" do
33
- let(:start_date) { 1.day.ago.strftime("%Y-%m-%d") }
34
- let(:end_date) { 0.days.ago.strftime("%Y-%m-%d") }
31
+ let(:start_date) { 1.day.ago.beginning_of_day }
32
+ let(:end_date) { 0.days.ago.end_of_day }
35
33
  it "gathers user deposits during a date range" do
36
34
  expect(subject).to eq [{ key: user1.user_key, deposits: 1, user: user1 },
37
35
  { key: user2.user_key, deposits: 1, user: user2 }]
@@ -0,0 +1,30 @@
1
+ RSpec.describe Sufia::Statistics::FileSets::ByFormat do
2
+ let(:service) { described_class.new }
3
+
4
+ describe "#query" do
5
+ let(:fs1) { build(:file_set, id: '1234567') }
6
+ let(:fs2) { build(:file_set, id: '2345678') }
7
+ let(:fs3) { build(:file_set, id: '3456789') }
8
+ let(:fs4) { build(:file_set, id: '4567890') }
9
+ before do
10
+ allow(fs1).to receive_messages(mime_type: 'text/plain', format_label: ["plain text"])
11
+ fs1.update_index
12
+ allow(fs2).to receive_messages(mime_type: 'image/jpg', format_label: ["JPEG image"])
13
+ fs2.update_index
14
+ allow(fs3).to receive_messages(mime_type: 'image/tiff', format_label: ["TIFF image"])
15
+ fs3.update_index
16
+ allow(fs4).to receive_messages(mime_type: 'image/jpg', format_label: ["JPEG image"])
17
+ fs4.update_index
18
+ end
19
+
20
+ subject { service.query }
21
+
22
+ it "is a list of categories" do
23
+ expect(subject).to eq [{ label: 'jpg (JPEG image)', data: 2 },
24
+ { label: 'plain (plain text)', data: 1 },
25
+ { label: 'tiff (TIFF image)', data: 1 }]
26
+ expect(subject.first.label).to eq 'jpg (JPEG image)'
27
+ expect(subject.first.value).to eq 2
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,54 @@
1
+ describe Sufia::Statistics::SystemStats do
2
+ let(:user1) { create(:user) }
3
+ let(:start_date) { nil }
4
+ let(:end_date) { nil }
5
+ let(:stats) { described_class.new(depositor_count, start_date, end_date) }
6
+
7
+ describe "#recent_users" do
8
+ let!(:user2) { create(:user) }
9
+
10
+ let(:two_days_ago_date) { 2.days.ago.beginning_of_day }
11
+ let(:one_day_ago_date) { 1.day.ago.end_of_day }
12
+
13
+ let(:depositor_count) { nil }
14
+
15
+ subject { stats.recent_users }
16
+
17
+ context "without dates" do
18
+ let(:mock_order) { double }
19
+ let(:mock_limit) { double }
20
+ it "defaults to latest 5 users" do
21
+ expect(mock_order).to receive(:limit).with(5).and_return(mock_limit)
22
+ expect(User).to receive(:order).with('created_at DESC').and_return(mock_order)
23
+ is_expected.to eq mock_limit
24
+ end
25
+ end
26
+
27
+ context "with start date" do
28
+ let(:start_date) { two_days_ago_date }
29
+
30
+ it "allows queries without an end date " do
31
+ expect(User).to receive(:recent_users).with(two_days_ago_date, nil).and_return([user2])
32
+ is_expected.to eq([user2])
33
+ end
34
+ end
35
+ context "with start date and end date" do
36
+ let(:start_date) { two_days_ago_date }
37
+ let(:end_date) { one_day_ago_date }
38
+ it "queries" do
39
+ expect(User).to receive(:recent_users).with(two_days_ago_date, one_day_ago_date).and_return([user2])
40
+ is_expected.to eq([user2])
41
+ end
42
+ end
43
+ end
44
+
45
+ describe "#users_count" do
46
+ let(:depositor_count) { nil }
47
+ let!(:user1) { create(:user) }
48
+ let!(:user2) { create(:user) }
49
+
50
+ subject { stats.users_count }
51
+
52
+ it { is_expected.to eq 2 }
53
+ end
54
+ end
@@ -0,0 +1,25 @@
1
+ RSpec.describe Sufia::Statistics::Works::ByDepositor do
2
+ let(:service) { described_class.new }
3
+
4
+ describe "#query" do
5
+ let(:user1) { create(:user) }
6
+ let(:user2) { create(:user) }
7
+ before do
8
+ gf = build(:generic_work, user: user1, id: '1234567')
9
+ gf.update_index
10
+ gf = build(:generic_work, user: user2, id: '2345678')
11
+ gf.update_index
12
+ gf = build(:generic_work, user: user1, id: '3456789')
13
+ gf.update_index
14
+ gf = build(:generic_work, user: user1, id: '4567890')
15
+ gf.update_index
16
+ end
17
+
18
+ subject { service.query }
19
+
20
+ it "is a list of categories" do
21
+ expect(subject).to eq [{ label: user1.user_key, data: 3 },
22
+ { label: user2.user_key, data: 1 }]
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,21 @@
1
+ RSpec.describe Sufia::Statistics::Works::ByResourceType do
2
+ let(:service) { described_class.new }
3
+
4
+ describe "#query" do
5
+ before do
6
+ create(:generic_work, resource_type: ['Conference Proceeding'])
7
+ create(:generic_work, resource_type: ['Conference Proceeding'])
8
+ create(:generic_work, resource_type: ['Image'])
9
+ create(:generic_work, resource_type: ['Journal'])
10
+ end
11
+
12
+ subject { service.query }
13
+
14
+ it "is a list of categories" do
15
+ expect(subject).to eq [{ label: 'Conference Proceeding', data: 2 },
16
+ { label: 'Image', data: 1 },
17
+ { label: 'Journal', data: 1 }]
18
+ expect(subject.to_json).to eq "[{\"label\":\"Conference Proceeding\",\"data\":2},{\"label\":\"Image\",\"data\":1},{\"label\":\"Journal\",\"data\":1}]"
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,42 @@
1
+ RSpec.describe Sufia::Statistics::Works::Count do
2
+ let(:user1) { create(:user) }
3
+ let(:service) { described_class.new(start_date, end_date) }
4
+ let(:start_date) { nil }
5
+ let(:end_date) { nil }
6
+
7
+ describe "#by_permission" do
8
+ subject { service.by_permission }
9
+
10
+ before do
11
+ build(:public_generic_work, user: user1, id: "pdf1223").update_index
12
+ build(:public_generic_work, user: user1, id: "wav1223").update_index
13
+ build(:public_generic_work, user: user1, id: "mp31223", create_date: [2.days.ago]).update_index
14
+ build(:registered_generic_work, user: user1, id: "reg1223").update_index
15
+ build(:generic_work, user: user1, id: "private1223").update_index
16
+ Collection.new(id: "ccc123") do |c|
17
+ c.apply_depositor_metadata(user1)
18
+ c.update_index
19
+ end
20
+ end
21
+
22
+ it "retrieves all documents by permissions" do
23
+ expect(subject).to include(public: 3, private: 1, registered: 1, total: 5)
24
+ end
25
+
26
+ context "when passing a start date" do
27
+ let(:yesterday) { 1.day.ago }
28
+ let(:start_date) { yesterday.beginning_of_day }
29
+ it "gets documents after date by permissions" do
30
+ expect(subject).to include(public: 2, private: 1, registered: 1, total: 4)
31
+ end
32
+
33
+ context "when passing an end date" do
34
+ let(:start_date) { 2.days.ago.beginning_of_day }
35
+ let(:end_date) { yesterday.end_of_day }
36
+ it "get documents between dates by permissions" do
37
+ expect(subject).to include(public: 1, private: 0, registered: 0, total: 1)
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -1,4 +1,4 @@
1
- RSpec.describe Sufia::Statistics::Works do
1
+ RSpec.describe Sufia::Statistics::Works::OverTime do
2
2
  let(:service) { described_class.new }
3
3
 
4
4
  describe "#points" do
@@ -11,9 +11,7 @@ describe "admin/stats/index.html.erb" do
11
11
 
12
12
  context "default depositors" do
13
13
  let(:top_5_active_users) do
14
- users = {}
15
- 5.times { |i| users[i.to_s] = i }
16
- users
14
+ (1..5).map { |i| double(label: i.to_s, value: i) }
17
15
  end
18
16
  before do
19
17
  allow(presenter).to receive(:active_users).and_return(top_5_active_users)
@@ -27,15 +25,14 @@ describe "admin/stats/index.html.erb" do
27
25
 
28
26
  context "top 20 depositors" do
29
27
  let(:top_20_active_users) do
30
- users = {}
31
- 20.times { |i| users[i.to_s] = i }
32
- users
28
+ (1..20).map { |i| double(label: i.to_s, value: i) }
33
29
  end
34
30
  before do
35
31
  allow(presenter).to receive(:active_users).and_return(top_20_active_users)
36
32
  allow(presenter).to receive(:limit).and_return(20)
37
33
  render
38
34
  end
35
+
39
36
  it "shows top 20 depositors, without an option to view more" do
40
37
  expect(rendered).to have_content("(top 20)")
41
38
  expect(rendered).to_not have_content("View top 20")