Skip to content

Commit

Permalink
get members from af_object using ordered_members
Browse files Browse the repository at this point in the history
Otherwise, during the transformation back and forth, the members could be put on the transformed resource in the wrong order.  This fixes a randomly failing condition.

Changed wings tests to use ordered_members since that is the relationship used in hyrax.
  • Loading branch information
elrayle committed Mar 22, 2019
1 parent f7dba2d commit 6588fea
Show file tree
Hide file tree
Showing 5 changed files with 29 additions and 26 deletions.
13 changes: 8 additions & 5 deletions lib/wings/model_transformer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -49,10 +49,12 @@ def self.for(pcdm_object)
#
# @return [Array<Symbol>]
def self.relationship_keys_for(reflections:)
reflections
.keys
.reject { |k| k.to_s.include?('id') }
.map { |k| k.to_s.singularize + '_ids' }
relationships = reflections
.keys
.reject { |k| k.to_s.include?('id') }
.map { |k| k.to_s.singularize + '_ids' }
relationships.delete(:member_ids) # Remove here. Members will be extracted as ordered_members in attributes method.
relationships
end

##
Expand Down Expand Up @@ -196,7 +198,8 @@ def attributes
updated_at: pcdm_object.try(:modified_date),
embargo_id: pcdm_object.try(:embargo)&.id,
lease_id: pcdm_object.try(:lease)&.id,
visibility: pcdm_object.try(:visibility))
visibility: pcdm_object.try(:visibility),
member_ids: pcdm_object.try(:ordered_member_ids)) # We want members in order, so extract from ordered_members.
end
end
# rubocop:enable Metrics/AbcSize
Expand Down
2 changes: 1 addition & 1 deletion spec/wings/active_fedora_converter_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@
let(:work3) { build(:work, id: 'wk3', title: ['Work 3']) }

before do
work1.members = [work2, work3]
work1.ordered_members = [work2, work3]
work1.save!
end

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@
let(:parent_work_resource) { resource }

before do
work1.members = [work2, work3, fileset1, fileset2]
work1.ordered_members = [work2, work3, fileset1, fileset2]
work1.save!
end

Expand Down Expand Up @@ -111,7 +111,7 @@
let(:parent_work_resource) { resource }

before do
work1.members = [work2, work3, fileset1, fileset2]
work1.ordered_members = [work2, work3, fileset1, fileset2]
work1.save!
end

Expand Down Expand Up @@ -147,7 +147,7 @@
let(:pcdm_object) { collection1 }

before do
collection1.members = [work1, work2, collection2, collection3]
collection1.ordered_members = [work1, work2, collection2, collection3]
collection1.save!
end

Expand Down Expand Up @@ -181,7 +181,7 @@
let(:pcdm_object) { collection1 }

before do
collection1.members = [work1, work2, collection2, collection3]
collection1.ordered_members = [work1, work2, collection2, collection3]
collection1.save!
end

Expand Down Expand Up @@ -213,8 +213,8 @@
let(:child_resource) { resource }

before do
work1.members = [work3, fileset1]
work2.members = [work3, fileset2]
work1.ordered_members = [work3, fileset1]
work2.ordered_members = [work3, fileset2]
work1.save!
work2.save!
end
Expand Down Expand Up @@ -254,9 +254,9 @@
let(:child_resource) { resource }

before do
collection1.members = [work1, collection3]
collection2.members = [work1, work2]
work3.members = [work1]
collection1.ordered_members = [work1, collection3]
collection2.ordered_members = [work1, work2]
work3.ordered_members = [work1]
collection1.save!
collection2.save!
end
Expand Down Expand Up @@ -296,9 +296,9 @@
let(:child_resource) { resource }

before do
collection1.members = [work1, collection3]
collection2.members = [work1, work2]
work3.members = [work1]
collection1.ordered_members = [work1, collection3]
collection2.ordered_members = [work1, work2]
work3.ordered_members = [work1]
collection1.save!
collection2.save!
work3.save!
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@
let(:child_file_set_resource) { resource }

before do
work1.members = [fileset1]
work2.members = [fileset1]
work1.ordered_members = [fileset1]
work2.ordered_members = [fileset1]
work1.save!
work2.save!
end
Expand Down Expand Up @@ -63,8 +63,8 @@
let(:child_file_set_resource) { resource }

before do
work1.members = [fileset1]
work2.members = [fileset1]
work1.ordered_members = [fileset1]
work2.ordered_members = [fileset1]
work1.save!
work2.save!
end
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
let(:work) { resource }

before do
work1.members = [work2, work3, fileset1, fileset2]
work1.ordered_members = [work2, work3, fileset1, fileset2]
work1.save!
end

Expand Down Expand Up @@ -65,7 +65,7 @@
let(:work) { resource }

before do
work1.members = [work2, work3, fileset1, fileset2]
work1.ordered_members = [work2, work3, fileset1, fileset2]
work1.save!
end

Expand Down Expand Up @@ -96,7 +96,7 @@
let(:work) { resource }

before do
work1.members = [work2, work3, fileset1, fileset2]
work1.ordered_members = [work2, work3, fileset1, fileset2]
work1.save!
end

Expand Down Expand Up @@ -130,7 +130,7 @@
let(:work) { resource }

before do
work1.members = [work2, work3, fileset1, fileset2]
work1.ordered_members = [work2, work3, fileset1, fileset2]
work1.save!
end

Expand Down

0 comments on commit 6588fea

Please sign in to comment.