Skip to content

Commit

Permalink
Merge pull request #4833 from sul-dlss/align_feature_flags
Browse files Browse the repository at this point in the history
Align feature flags with feature flags spec.
  • Loading branch information
jcoyne authored Apr 10, 2024
2 parents 030d442 + 2a522d9 commit 23ab51b
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 14 deletions.
16 changes: 7 additions & 9 deletions app/services/cocina_object_store.rb
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ def store(cocina_object, skip_lock:)
end

def exists?(druid, type: nil)
return RepositoryObject.exists?(external_identifier: druid) if Settings.enabled_features.repository_object_find
return true if RepositoryObject.exists?(external_identifier: druid)

ar_exists?(druid, type:)
end
Expand All @@ -118,23 +118,21 @@ def exists!(druid)
end

def version(druid)
return RepositoryObject.find_by(external_identifier: druid).head_version.version if Settings.enabled_features.repository_object_find
version_from_repository_object = RepositoryObject.find_by(external_identifier: druid)&.head_version&.version

ar_cocina_object = Dro.select(:version).find_by(external_identifier: druid) ||
AdminPolicy.select(:version).find_by(external_identifier: druid) ||
Collection.select(:version).find_by(external_identifier: druid)

raise(CocinaObjectNotFoundError.new("Couldn't find object with 'external_identifier'=#{druid}", druid)) unless ar_cocina_object&.version

if Settings.enabled_features.repository_object_test
test_version = RepositoryObject.find_by(external_identifier: druid).head_version.version
if test_version != ar_cocina_object.version
Honeybadger.notify("Version from RepositoryObjectVersion doesn't match version in legacy store.",
context: { druid:, new_version: test_version, old_version: ar_cocina_object.version })
end
if Settings.enabled_features.repository_object_test && version_from_repository_object && version_from_repository_object != ar_cocina_object.version
Honeybadger.notify("Version from RepositoryObjectVersion doesn't match version in legacy store.",
context: { druid:, version_from_repository_object:, version_from_ar_cocina_object: ar_cocina_object.version })
return ar_cocina_object.version
end

ar_cocina_object.version
version_from_repository_object || ar_cocina_object.version
end

# Find an ActiveRecord Cocina object.
Expand Down
9 changes: 7 additions & 2 deletions config/settings.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,14 @@ enabled_features:
file_hierarchy_validation: true
read_folio: true
orcid_update: true
repository_object: false
# For details on repository_object feature flags see https://docs.google.com/document/d/1PzKxN_JLI-jHuSFNWLMB2HSWNyWN7EAwc3c5n_aTR28/edit?usp=sharing
# Compare results from RepositoryObject against DRO/Collection/AdminPolicy
repository_object_test: false
repository_object_find: false
# RepositoryObjects will be created / saved
repository_object_create: false
# Migrate a Dro / Collection / AdminPolicy to a RepositoryObject if the RepositoryObject does not exist
repository_object_migrate: false


# Ur Admin Policy
ur_admin_policy:
Expand Down
6 changes: 3 additions & 3 deletions spec/services/cocina_object_store_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -94,17 +94,17 @@
expect(store.version(ar_cocina_object.external_identifier)).to eq(5)
expect(Honeybadger).to have_received(:notify)
.with("Version from RepositoryObjectVersion doesn't match version in legacy store.",
context: { druid: ar_cocina_object.external_identifier, new_version: 1, old_version: 5 })
context: { druid: ar_cocina_object.external_identifier, version_from_repository_object: 1, version_from_ar_cocina_object: 5 })
end
end

context 'when repository_object_find is enabled' do
context 'when RepositoryObject is found' do
subject { store.version(repository_object.external_identifier) }

let(:repository_object) { create(:repository_object) }

before do
allow(Settings.enabled_features).to receive(:repository_object_find).and_return true
create(:ar_dro, external_identifier: repository_object.external_identifier, version: 5)
end

it { is_expected.to eq 1 }
Expand Down

0 comments on commit 23ab51b

Please sign in to comment.