module ActiveFedora::Noid::RSpec

Provides a test minter conforming to the `ActiveFedora::Noid::Minter` interface for use in unit tests. The test minter is faster and avoids unexpected interactions with cleanup code commonly runs in test suites (e.g. database cleanup).

Applications should reenable their production minter for integration tests when appropriate

@example general use

ActiveFedora::Noid::RSpec.disable_production_minter!
# some unit tests with the test minter
ActiveFedora::Noid::RSpec.enable_production_minter!
# some integration tests with the original minter

@example using a custom test minter

ActiveFedora::Noid::RSpec.disable_production_minter!(test_minter: Minter)

@example use when included in RSpec config

require 'active_fedora/noid/rspec'

RSpec.configure do |config|
  config.include(ActiveFedora::Noid::RSpec)
end

before(:suite) { disable_production_minter! }
after(:suite)  { enable_production_minter! }

Constants

DEFAULT_TEST_MINTER

Public Instance Methods

disable_production_minter!(test_minter: DEFAULT_TEST_MINTER) click to toggle source

Replaces the configured production minter with a test minter.

@param test_minter [Class] an ActiveFedora::Noid::Minter implementation

to use as a replacement minter

@return [void]

# File lib/active_fedora/noid/rspec.rb, line 41
def disable_production_minter!(test_minter: DEFAULT_TEST_MINTER)
  return nil if @original_minter

  @original_minter = ActiveFedora::Noid.config.minter_class

  ActiveFedora::Noid.configure do |noid_config|
    noid_config.minter_class = test_minter
  end
end
enable_production_minter!() click to toggle source

Re-enables the original configured minter.

@return [void]

# File lib/active_fedora/noid/rspec.rb, line 55
def enable_production_minter!
  return nil unless @original_minter

  ActiveFedora::Noid.configure do |noid_config|
    noid_config.minter_class = @original_minter
  end

  @original_minter = nil
end