module SmartFixtures

Constants

VERSION

Attributes

fixture_set[RW]
fixture_variable_set[RW]

Public Class Methods

data(fixture_name, variable_name) click to toggle source
# File lib/smart_fixtures.rb, line 17
def data(fixture_name, variable_name)
  fixture_set = @fixture_variable_set[fixture_name]
  return nil if fixture_set.nil?
  fixture_set.variable_set[variable_name]
end
define_dataset(fixture_name, &block) click to toggle source
# File lib/smart_fixtures.rb, line 10
def define_dataset(fixture_name, &block)
  @fixture_set ||= {}
  @fixture_variable_set ||= {}
  @fixture_set[fixture_name] = block
  @fixture_variable_set[fixture_name] = SmartFixtures::VariableSet.new
end

Public Instance Methods

smart_fixtures(*args, use_fixture_variables: false) click to toggle source
# File lib/smart_fixtures.rb, line 24
def smart_fixtures(*args, use_fixture_variables: false)
  before(:all) do
    DatabaseRollbacker::Rollbacker.instance.save(:before_load_smart_fixture)
    args.each do |fixture_name|
      if SmartFixtures.fixture_variable_set.nil? ||
        SmartFixtures.fixture_variable_set[fixture_name].nil?
        raise ArgumentError.new("Fixture #{fixture_name} not found")
      end
      variables = SmartFixtures.fixture_variable_set[fixture_name]
      variables.instance_eval(&SmartFixtures.fixture_set[fixture_name])
      if use_fixture_variables
        variables.variable_set.each do |k, v|
          self.instance_variable_set("@#{k}", v)
          self.class.send(:attr_reader, k)
        end
      end
    end
  end

  after(:all) do
    DatabaseRollbacker::Rollbacker.instance.rollback(:before_load_smart_fixture)
  end
end