hyrax 1.0.5 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +4 -4
- data/app/services/hyrax/file_set_derivatives_service.rb +12 -4
- data/app/views/hyrax/collections/_collection_description.erb +1 -1
- data/hyrax.gemspec +8 -1
- data/lib/generators/hyrax/templates/config/hyrax.rb +4 -0
- data/lib/hyrax/configuration.rb +6 -0
- data/lib/hyrax/version.rb +1 -1
- data/spec/abilities/file_set_abilities_spec.rb +3 -3
- data/spec/abilities/generic_work_abilities_spec.rb +5 -5
- data/spec/actors/hyrax/actors/generic_work_actor_spec.rb +12 -12
- data/spec/actors/hyrax/actors/transactional_request_spec.rb +1 -1
- data/spec/controllers/hyrax/admin/users_controller_spec.rb +3 -3
- data/spec/controllers/hyrax/api/items_controller_spec.rb +6 -6
- data/spec/controllers/hyrax/content_blocks_controller_spec.rb +2 -2
- data/spec/controllers/hyrax/downloads_controller_spec.rb +3 -3
- data/spec/controllers/hyrax/featured_work_lists_controller_spec.rb +2 -2
- data/spec/controllers/hyrax/homepage_controller_spec.rb +1 -1
- data/spec/controllers/hyrax/tinymce_assets_controller_spec.rb +1 -1
- data/spec/controllers/hyrax/users_controller_spec.rb +4 -4
- data/spec/controllers/hyrax/workflow_actions_controller_spec.rb +1 -1
- data/spec/conversions/power_converters/polymorphic_type_spec.rb +1 -1
- data/spec/factories/admin_sets.rb +1 -1
- data/spec/factories/api_items.rb +1 -1
- data/spec/factories/collections_factory.rb +2 -2
- data/spec/factories/content_blocks.rb +1 -1
- data/spec/factories/featured_works.rb +1 -1
- data/spec/factories/file_sets.rb +3 -3
- data/spec/factories/generic_works.rb +15 -15
- data/spec/factories/operations.rb +1 -1
- data/spec/factories/permission_template_accesses.rb +1 -1
- data/spec/factories/permission_templates.rb +1 -1
- data/spec/factories/proxy_deposit_requests.rb +2 -2
- data/spec/factories/single_use_links.rb +1 -1
- data/spec/factories/sipity_entities.rb +1 -1
- data/spec/factories/uploaded_files.rb +1 -1
- data/spec/factories/users.rb +2 -2
- data/spec/factories/workflow_actions.rb +1 -1
- data/spec/factories/workflow_states.rb +1 -1
- data/spec/factories/workflows.rb +1 -1
- data/spec/features/browse_dashboard_files_spec.rb +4 -4
- data/spec/features/notifications_spec.rb +1 -1
- data/spec/features/show_admin_set_spec.rb +11 -0
- data/spec/helpers/hyrax/collections_helper_spec.rb +2 -2
- data/spec/helpers/hyrax/content_block_helper_spec.rb +1 -1
- data/spec/helpers/hyrax/trophy_helper_spec.rb +1 -1
- data/spec/lib/hyrax/arkivo/actor_spec.rb +2 -2
- data/spec/lib/hyrax/arkivo/metadata_munger_spec.rb +1 -1
- data/spec/lib/hyrax/arkivo/schema_validator_spec.rb +1 -1
- data/spec/lib/hyrax/configuration_spec.rb +1 -0
- data/spec/models/file_set_spec.rb +1 -1
- data/spec/models/generic_work_spec.rb +1 -1
- data/spec/models/hyrax/user_usage_stats_spec.rb +1 -1
- data/spec/models/sipity/entity_spec.rb +1 -1
- data/spec/models/user_spec.rb +7 -7
- data/spec/presenters/hyrax/admin/users_presenter_spec.rb +2 -2
- data/spec/services/hyrax/embargo_service_spec.rb +4 -4
- data/spec/services/hyrax/repository_audit_service_spec.rb +1 -1
- data/spec/services/hyrax/workflow/permission_generator_spec.rb +1 -1
- data/spec/spec_helper.rb +6 -6
- data/spec/support/features/session_helpers.rb +1 -1
- data/spec/views/hyrax/admin/users/index.html.erb_spec.rb +1 -1
- data/spec/views/hyrax/base/_items.html.erb_spec.rb +2 -2
- data/spec/views/hyrax/base/file_manager.html.erb_spec.rb +1 -1
- data/spec/views/hyrax/dashboard/index_spec.rb +1 -1
- data/template.rb +1 -1
- metadata +26 -4
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
RSpec.describe Hyrax::WorkflowActionsController, type: :controller do
|
4
|
-
let(:user) {
|
4
|
+
let(:user) { FactoryBot.create(:user) }
|
5
5
|
let(:generic_work) { GenericWork.new(id: '123') }
|
6
6
|
let(:form) { instance_double(Hyrax::Forms::WorkflowActionForm) }
|
7
7
|
routes { Rails.application.routes }
|
@@ -7,7 +7,7 @@ RSpec.describe 'PowerConverter', no_clean: true do
|
|
7
7
|
expect(PowerConverter.convert_to_polymorphic_type(object)).to eq(:symbol)
|
8
8
|
end
|
9
9
|
it 'will convert an ActiveRecord::Base object' do
|
10
|
-
user =
|
10
|
+
user = FactoryBot.build(:user)
|
11
11
|
expect(PowerConverter.convert_to_polymorphic_type(user)).to eq(user.class)
|
12
12
|
end
|
13
13
|
it 'will convert an object that responds to #base_class' do
|
data/spec/factories/api_items.rb
CHANGED
data/spec/factories/file_sets.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
|
1
|
+
FactoryBot.define do
|
2
2
|
factory :file_set do
|
3
3
|
transient do
|
4
|
-
user {
|
4
|
+
user { FactoryBot.create(:user) }
|
5
5
|
content nil
|
6
6
|
end
|
7
7
|
after(:build) do |fs, evaluator|
|
@@ -63,7 +63,7 @@ FactoryGirl.define do
|
|
63
63
|
if evaluator.content
|
64
64
|
Hydra::Works::UploadFileToFileSet.call(file, evaluator.content)
|
65
65
|
end
|
66
|
-
|
66
|
+
FactoryBot.create(:generic_work, user: evaluator.user).members << file
|
67
67
|
end
|
68
68
|
end
|
69
69
|
end
|
@@ -1,7 +1,7 @@
|
|
1
|
-
|
1
|
+
FactoryBot.define do
|
2
2
|
factory :work, aliases: [:generic_work, :private_generic_work], class: GenericWork do
|
3
3
|
transient do
|
4
|
-
user {
|
4
|
+
user { FactoryBot.create(:user) }
|
5
5
|
# Set to true (or a hash) if you want to create an admin set
|
6
6
|
with_admin_set false
|
7
7
|
end
|
@@ -37,45 +37,45 @@ FactoryGirl.define do
|
|
37
37
|
|
38
38
|
factory :work_with_one_file do
|
39
39
|
before(:create) do |work, evaluator|
|
40
|
-
work.ordered_members <<
|
40
|
+
work.ordered_members << FactoryBot.create(:file_set, user: evaluator.user, title: ['A Contained FileSet'], label: 'filename.pdf')
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
44
44
|
factory :work_with_files do
|
45
|
-
before(:create) { |work, evaluator| 2.times { work.ordered_members <<
|
45
|
+
before(:create) { |work, evaluator| 2.times { work.ordered_members << FactoryBot.create(:file_set, user: evaluator.user) } }
|
46
46
|
end
|
47
47
|
|
48
48
|
factory :work_with_ordered_files do
|
49
49
|
before(:create) do |work, evaluator|
|
50
|
-
work.ordered_members <<
|
51
|
-
work.ordered_member_proxies.insert_target_at(0,
|
50
|
+
work.ordered_members << FactoryBot.create(:file_set, user: evaluator.user)
|
51
|
+
work.ordered_member_proxies.insert_target_at(0, FactoryBot.create(:file_set, user: evaluator.user))
|
52
52
|
end
|
53
53
|
end
|
54
54
|
|
55
55
|
factory :work_with_one_child do
|
56
56
|
before(:create) do |work, evaluator|
|
57
|
-
work.ordered_members <<
|
57
|
+
work.ordered_members << FactoryBot.create(:generic_work, user: evaluator.user, title: ['A Contained Work'])
|
58
58
|
end
|
59
59
|
end
|
60
60
|
|
61
61
|
factory :work_with_two_children do
|
62
62
|
before(:create) do |work, evaluator|
|
63
|
-
work.ordered_members <<
|
64
|
-
work.ordered_members <<
|
63
|
+
work.ordered_members << FactoryBot.create(:generic_work, user: evaluator.user, title: ['A Contained Work'], id: "BlahBlah1")
|
64
|
+
work.ordered_members << FactoryBot.create(:generic_work, user: evaluator.user, title: ['Another Contained Work'], id: "BlahBlah2")
|
65
65
|
end
|
66
66
|
end
|
67
67
|
|
68
68
|
factory :work_with_representative_file do
|
69
69
|
before(:create) do |work, evaluator|
|
70
|
-
work.ordered_members <<
|
70
|
+
work.ordered_members << FactoryBot.create(:file_set, user: evaluator.user, title: ['A Contained FileSet'])
|
71
71
|
work.representative_id = work.members[0].id
|
72
72
|
end
|
73
73
|
end
|
74
74
|
|
75
75
|
factory :work_with_file_and_work do
|
76
76
|
before(:create) do |work, evaluator|
|
77
|
-
work.ordered_members <<
|
78
|
-
work.ordered_members <<
|
77
|
+
work.ordered_members << FactoryBot.create(:file_set, user: evaluator.user)
|
78
|
+
work.ordered_members << FactoryBot.create(:generic_work, user: evaluator.user)
|
79
79
|
end
|
80
80
|
end
|
81
81
|
|
@@ -90,7 +90,7 @@ FactoryGirl.define do
|
|
90
90
|
end
|
91
91
|
factory :embargoed_work_with_files do
|
92
92
|
after(:build) { |work, evaluator| work.apply_embargo(evaluator.embargo_date, evaluator.current_state, evaluator.future_state) }
|
93
|
-
after(:create) { |work, evaluator| 2.times { work.ordered_members <<
|
93
|
+
after(:create) { |work, evaluator| 2.times { work.ordered_members << FactoryBot.create(:file_set, user: evaluator.user) } }
|
94
94
|
end
|
95
95
|
end
|
96
96
|
|
@@ -105,7 +105,7 @@ FactoryGirl.define do
|
|
105
105
|
end
|
106
106
|
factory :leased_work_with_files do
|
107
107
|
after(:build) { |work, evaluator| work.apply_lease(evaluator.lease_date, evaluator.current_state, evaluator.future_state) }
|
108
|
-
after(:create) { |work, evaluator| 2.times { work.ordered_members <<
|
108
|
+
after(:create) { |work, evaluator| 2.times { work.ordered_members << FactoryBot.create(:file_set, user: evaluator.user) } }
|
109
109
|
end
|
110
110
|
end
|
111
111
|
end
|
@@ -113,6 +113,6 @@ FactoryGirl.define do
|
|
113
113
|
# Doesn't set up any edit_users
|
114
114
|
factory :work_without_access, class: GenericWork do
|
115
115
|
title ['Test title']
|
116
|
-
depositor {
|
116
|
+
depositor { FactoryBot.create(:user).user_key }
|
117
117
|
end
|
118
118
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
FactoryBot.define do
|
2
2
|
factory :permission_template, class: Hyrax::PermissionTemplate do
|
3
3
|
# Given that there is a one to one strong relation between permission_template and admin_set,
|
4
4
|
# with a unique index on the admin_set_id, I don't want to have duplication in admin_set_id
|
data/spec/factories/users.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
|
-
|
1
|
+
FactoryBot.define do
|
2
2
|
factory :user do
|
3
3
|
sequence(:email) { |n| "user#{n}@example.com" }
|
4
4
|
password 'password'
|
5
5
|
|
6
6
|
transient do
|
7
7
|
# Allow for custom groups when a user is instantiated.
|
8
|
-
# @example
|
8
|
+
# @example FactoryBot.create(:user, groups: 'avacado')
|
9
9
|
groups []
|
10
10
|
end
|
11
11
|
|
data/spec/factories/workflows.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
describe "Browse Dashboard", type: :feature do
|
2
|
-
let(:user) {
|
3
|
-
let!(:dissertation) {
|
4
|
-
let!(:mp3_work) {
|
5
|
-
let!(:audio_work) {
|
2
|
+
let(:user) { FactoryBot.create(:user) }
|
3
|
+
let!(:dissertation) { FactoryBot.create(:public_work, user: user, title: ["Fake PDF Title"], subject: %w(lorem ipsum dolor sit amet)) }
|
4
|
+
let!(:mp3_work) { FactoryBot.create(:public_work, user: user, title: ["Test Document MP3"], subject: %w(consectetur adipisicing elit)) }
|
5
|
+
let!(:audio_work) { FactoryBot.create(:public_work, user: user, title: ["Fake Wav Files"], subject: %w(sed do eiusmod tempor incididunt ut labore)) }
|
6
6
|
|
7
7
|
before do
|
8
8
|
sign_in user
|
@@ -0,0 +1,11 @@
|
|
1
|
+
RSpec.feature 'show admin set' do
|
2
|
+
let(:admin_set) { FactoryBot.create(:admin_set) }
|
3
|
+
let(:admin) { FactoryBot.create(:admin) }
|
4
|
+
|
5
|
+
scenario "show admin set" do
|
6
|
+
login_as admin
|
7
|
+
expect(admin_set.description).to be_empty
|
8
|
+
visit("/admin/admin_sets/#{admin_set.id}")
|
9
|
+
expect(page).to have_content admin_set.title.first
|
10
|
+
end
|
11
|
+
end
|
@@ -54,7 +54,7 @@ describe Hyrax::CollectionsHelper do
|
|
54
54
|
|
55
55
|
describe "button_for_remove_from_collection" do
|
56
56
|
let(:item) { double(id: 'changeme:123') }
|
57
|
-
let(:collection) {
|
57
|
+
let(:collection) { FactoryBot.create(:collection) }
|
58
58
|
|
59
59
|
it "generates a form that can remove the item" do
|
60
60
|
str = button_for_remove_from_collection collection, item
|
@@ -91,7 +91,7 @@ describe Hyrax::CollectionsHelper do
|
|
91
91
|
end
|
92
92
|
|
93
93
|
describe "button_for_remove_selected_from_collection" do
|
94
|
-
let(:collection) {
|
94
|
+
let(:collection) { FactoryBot.create(:collection) }
|
95
95
|
|
96
96
|
it "creates a button to the collections delete path" do
|
97
97
|
str = button_for_remove_selected_from_collection collection
|
@@ -1,5 +1,5 @@
|
|
1
1
|
describe Hyrax::ContentBlockHelper, type: :helper do
|
2
|
-
let(:content_block) {
|
2
|
+
let(:content_block) { FactoryBot.create(:content_block, value: "<p>foo bar</p>") }
|
3
3
|
|
4
4
|
subject { helper.editable_content_block(content_block) }
|
5
5
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
describe Hyrax::TrophyHelper, type: :helper do
|
2
2
|
describe "#display_trophy_link" do
|
3
|
-
let(:user) {
|
3
|
+
let(:user) { FactoryBot.create(:user) }
|
4
4
|
let(:id) { '9999' }
|
5
5
|
|
6
6
|
let(:text_attributes) { '[data-add-text="Highlight Work on Profile"][data-remove-text="Unhighlight Work"]' }
|
@@ -11,7 +11,7 @@ describe Hyrax::Arkivo::Actor do
|
|
11
11
|
subject { described_class.new(user, item) }
|
12
12
|
|
13
13
|
let(:user) { create(:user) }
|
14
|
-
let(:item) { JSON.parse(
|
14
|
+
let(:item) { JSON.parse(FactoryBot.json(:post_item)) }
|
15
15
|
|
16
16
|
describe 'Tempfile monkey-patches' do
|
17
17
|
subject { Tempfile.new('foo') }
|
@@ -43,7 +43,7 @@ describe Hyrax::Arkivo::Actor do
|
|
43
43
|
end
|
44
44
|
|
45
45
|
describe '#update_work_from_item' do
|
46
|
-
let(:item) { JSON.parse(
|
46
|
+
let(:item) { JSON.parse(FactoryBot.json(:put_item)) }
|
47
47
|
let(:title) { ['ZZZZZ'] }
|
48
48
|
let(:description) { ['This is rather lengthy.'] }
|
49
49
|
let(:checksum) { 'abc123' }
|
@@ -3,7 +3,7 @@ require 'spec_helper'
|
|
3
3
|
describe Hyrax::Arkivo::MetadataMunger do
|
4
4
|
subject { described_class.new(metadata) }
|
5
5
|
|
6
|
-
let(:metadata) { JSON.parse(
|
6
|
+
let(:metadata) { JSON.parse(FactoryBot.json(:post_item))['metadata'] }
|
7
7
|
|
8
8
|
it 'makes camelCase symbols into underscored strings' do
|
9
9
|
expect(metadata).to include('resourceType', 'dateCreated', 'basedNear')
|
@@ -53,6 +53,7 @@ describe Hyrax::Configuration do
|
|
53
53
|
it { is_expected.to respond_to(:translate_uri_to_id) }
|
54
54
|
it { is_expected.to respond_to(:upload_path) }
|
55
55
|
it { is_expected.to respond_to(:work_requires_files?) }
|
56
|
+
it { is_expected.to respond_to(:extract_full_text?) }
|
56
57
|
it { is_expected.to respond_to(:whitelisted_ingest_dirs) }
|
57
58
|
it { is_expected.to respond_to(:whitelisted_ingest_dirs=) }
|
58
59
|
end
|
@@ -211,7 +211,7 @@ describe FileSet do
|
|
211
211
|
end
|
212
212
|
|
213
213
|
context 'when there are related files' do
|
214
|
-
let(:parent_work) {
|
214
|
+
let(:parent_work) { FactoryBot.create(:work_with_files) }
|
215
215
|
let(:f1) { parent_work.file_sets.first }
|
216
216
|
let(:f2) { parent_work.file_sets.last }
|
217
217
|
subject { f1.reload.related_files }
|
@@ -22,7 +22,7 @@ describe GenericWork do
|
|
22
22
|
end
|
23
23
|
|
24
24
|
describe "to_sipity_entity" do
|
25
|
-
let(:state) {
|
25
|
+
let(:state) { FactoryBot.create(:workflow_state) }
|
26
26
|
let(:work) { create(:work) }
|
27
27
|
before do
|
28
28
|
Sipity::Entity.create!(proxy_for_global_id: work.to_global_id.to_s,
|
@@ -1,5 +1,5 @@
|
|
1
1
|
describe Hyrax::UserUsageStats do
|
2
|
-
subject {
|
2
|
+
subject { FactoryBot.create(:user) }
|
3
3
|
|
4
4
|
describe 'with cached stats' do
|
5
5
|
let!(:stat_1_day_ago) { UserStat.create!(user_id: subject.id, date: 1.day.ago, file_views: 3, file_downloads: 2, work_views: 5) }
|
@@ -17,7 +17,7 @@ module Sipity
|
|
17
17
|
end
|
18
18
|
|
19
19
|
describe '#proxy_for' do
|
20
|
-
let(:work) {
|
20
|
+
let(:work) { FactoryBot.create(:generic_work) }
|
21
21
|
let(:entity) { Sipity::Entity.new(proxy_for_global_id: work.to_global_id) }
|
22
22
|
|
23
23
|
it 'will retrieve based on a GlobalID of the object' do
|
data/spec/models/user_spec.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
describe User, type: :model do
|
2
|
-
let(:user) {
|
3
|
-
let(:another_user) {
|
2
|
+
let(:user) { FactoryBot.build(:user) }
|
3
|
+
let(:another_user) { FactoryBot.build(:user) }
|
4
4
|
|
5
5
|
describe 'verifying factories' do
|
6
6
|
describe ':user' do
|
7
|
-
let(:user) {
|
7
|
+
let(:user) { FactoryBot.build(:user) }
|
8
8
|
it 'will, by default, have no groups' do
|
9
9
|
expect(user.groups).to eq([])
|
10
10
|
user.save!
|
@@ -12,7 +12,7 @@ describe User, type: :model do
|
|
12
12
|
expect(user.class.find(user.id).groups).to eq([])
|
13
13
|
end
|
14
14
|
it 'will allow for override of groups' do
|
15
|
-
user =
|
15
|
+
user = FactoryBot.build(:user, groups: 'chicken')
|
16
16
|
expect(user.groups).to eq(['chicken'])
|
17
17
|
user.save!
|
18
18
|
# Ensuring that we can refind it and have the correct groups
|
@@ -20,7 +20,7 @@ describe User, type: :model do
|
|
20
20
|
end
|
21
21
|
end
|
22
22
|
describe ':admin' do
|
23
|
-
let(:admin_user) {
|
23
|
+
let(:admin_user) { FactoryBot.create(:admin) }
|
24
24
|
it 'will have an "admin" group' do
|
25
25
|
expect(admin_user.groups).to eq(['admin'])
|
26
26
|
end
|
@@ -201,8 +201,8 @@ describe User, type: :model do
|
|
201
201
|
end
|
202
202
|
end
|
203
203
|
describe "scope Users" do
|
204
|
-
let!(:basic_user) {
|
205
|
-
let!(:guest_user) {
|
204
|
+
let!(:basic_user) { FactoryBot.create(:user) }
|
205
|
+
let!(:guest_user) { FactoryBot.create(:user, :guest) }
|
206
206
|
let!(:audit_user) { User.audit_user }
|
207
207
|
let!(:batch_user) { User.batch_user }
|
208
208
|
|