Module: ActiveFedora::Noid::RSpec

Defined in:
lib/active_fedora/noid/rspec.rb

Overview

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

Examples:

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

using a custom test minter

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

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! }

Constant Summary collapse

DEFAULT_TEST_MINTER =
ActiveFedora::Noid::Minter::File

Instance Method Summary collapse

Instance Method Details

#disable_production_minter!(test_minter: DEFAULT_TEST_MINTER) ⇒ void

This method returns an undefined value.

Replaces the configured production minter with a test minter.

Parameters:

  • test_minter (Class) (defaults to: DEFAULT_TEST_MINTER)

    an ActiveFedora::Noid::Minter implementation to use as a replacement minter


41
42
43
44
45
46
47
48
49
# 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!void

This method returns an undefined value.

Re-enables the original configured minter.


55
56
57
58
59
60
61
62
63
# 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