module FrozenRecord::TestHelper

Constants

NoFixturesLoaded

Public Class Methods

load_fixture(model_class, alternate_base_path) click to toggle source
# File lib/frozen_record/test_helper.rb, line 8
def load_fixture(model_class, alternate_base_path)
  @cache ||= {}

  ensure_model_class_is_frozenrecord(model_class)

  return if @cache.key?(model_class)

  @cache[model_class] = base_path_if_file_present(model_class)

  model_class.base_path = alternate_base_path
  model_class.load_records(force: true)
end
unload_fixture(model_class) click to toggle source
# File lib/frozen_record/test_helper.rb, line 21
def unload_fixture(model_class)
  return unless defined?(@cache) && @cache

  ensure_model_class_is_frozenrecord(model_class)

  return unless @cache.key?(model_class)

  old_base_path = @cache[model_class]
  if old_base_path
    model_class.base_path = old_base_path
    model_class.load_records(force: true)
  end
  @cache.delete(model_class)
end
unload_fixtures() click to toggle source
# File lib/frozen_record/test_helper.rb, line 36
def unload_fixtures
  return unless defined?(@cache) && @cache

  @cache.keys.each { |model_class| unload_fixture(model_class) }
end

Private Class Methods

base_path_if_file_present(model_class) click to toggle source

Checks for the existence of the file for the frozen_record in the default directory. Returns the base_path if the file is present, otherwise nil. Some tests define specific test classes that do ONLY exist in the alternate directory. As ‘unload_fixture(s)` tries to force load the default file, it would raise an error for the “test only” fixtures. The nil value in the cache handles that case gracefully.

# File lib/frozen_record/test_helper.rb, line 49
def base_path_if_file_present(model_class)
  if File.exist?(model_class.file_path)
    model_class.base_path
  else
    nil
  end
end
ensure_model_class_is_frozenrecord(model_class) click to toggle source
# File lib/frozen_record/test_helper.rb, line 57
def ensure_model_class_is_frozenrecord(model_class)
  unless model_class < FrozenRecord::Base
    raise ArgumentError, "Model class (#{model_class}) does not inherit from #{FrozenRecord::Base}"
  end
end