Module: MagicLamp

Defined in:
lib/magic_lamp.rb,
lib/magic_lamp/engine.rb,
lib/magic_lamp/version.rb,
lib/magic_lamp/callbacks.rb,
lib/magic_lamp/constants.rb,
lib/magic_lamp/configuration.rb,
lib/magic_lamp/render_catcher.rb,
lib/magic_lamp/fixture_creator.rb,
lib/magic_lamp/defaults_manager.rb,
app/helpers/magic_lamp/application_helper.rb,
app/controllers/magic_lamp/fixtures_controller.rb,
app/controllers/magic_lamp/application_controller.rb

Defined Under Namespace

Modules: ApplicationHelper, Callbacks Classes: AlreadyRegisteredFixtureError, AmbiguousFixtureNameError, ApplicationController, ArgumentError, Configuration, DefaultsManager, Engine, FixtureCreator, FixturesController, RenderCatcher, UnregisteredFixtureError

Constant Summary collapse

VERSION =
File.read(File.join(File.expand_path("../../..", __FILE__), "VERSION"))
APPLICATION =
"application"
APPLICATION_MATCHER =
Regexp.compile("(\/#{APPLICATION}|#{APPLICATION}\/|#{APPLICATION})")
EMPTY_STRING =
""
FORWARD_SLASH =
"/"
LAMP =
"_lamp"
REGISTER_FIXTURE_ALIASES =
[:register, :fixture, :rub, :wish]
SPEC =
"spec"
STARS =
"**"
TEST =
"test"
Genie =
Engine

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.configurationObject

Returns the value of attribute configuration.



17
18
19
# File 'lib/magic_lamp.rb', line 17

def configuration
  @configuration
end

.registered_fixturesObject

Returns the value of attribute registered_fixtures.



17
18
19
# File 'lib/magic_lamp.rb', line 17

def registered_fixtures
  @registered_fixtures
end

Class Method Details

.configure(&block) ⇒ Object



43
44
45
46
47
# File 'lib/magic_lamp.rb', line 43

def configure(&block)
  raise_missing_block_error(block, __method__)
  self.configuration = Configuration.new
  block.call(configuration)
end

.define(options = {}, &block) ⇒ Object



49
50
51
52
53
54
# File 'lib/magic_lamp.rb', line 49

def define(options = {}, &block)
  raise_missing_block_error(block, __method__)
  defaults_manager = DefaultsManager.new(configuration, options)
  defaults_manager.instance_eval(&block)
  defaults_manager
end

.generate_all_fixturesObject



78
79
80
81
82
83
# File 'lib/magic_lamp.rb', line 78

def generate_all_fixtures
  load_lamp_files
  registered_fixtures.keys.each_with_object({}) do |fixture_name, fixtures|
    fixtures[fixture_name] = generate_fixture(fixture_name)
  end
end

.generate_fixture(fixture_name) ⇒ Object



70
71
72
73
74
75
76
# File 'lib/magic_lamp.rb', line 70

def generate_fixture(fixture_name)
  unless registered?(fixture_name)
    raise UnregisteredFixtureError, "'#{fixture_name}' is not a registered fixture"
  end
  controller_class, block, extensions = registered_fixtures[fixture_name].values_at(:controller, :render_block, :extend)
  FixtureCreator.new(configuration).generate_template(controller_class, extensions, &block)
end

.load_configObject



60
61
62
# File 'lib/magic_lamp.rb', line 60

def load_config
  load_all(config_files)
end

.load_lamp_filesObject



64
65
66
67
68
# File 'lib/magic_lamp.rb', line 64

def load_lamp_files
  self.registered_fixtures = {}
  load_config
  load_all(lamp_files)
end

.pathObject



19
20
21
# File 'lib/magic_lamp.rb', line 19

def path
  Rails.root.join(directory_path)
end

.register_fixture(options = {}, &render_block) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/magic_lamp.rb', line 23

def register_fixture(options = {}, &render_block)
  raise_missing_block_error(render_block, __method__)

  options[:controller] ||= ::ApplicationController
  options[:namespace] ||= options[:controller].controller_name
  options[:extend] = Array(options[:extend])
  options[:render_block] = render_block
  fixture_name = namespaced_fixture_name_or_raise(options)

  if registered?(fixture_name)
    raise AlreadyRegisteredFixtureError, "a fixture called '#{fixture_name}' has already been registered"
  end

  registered_fixtures[fixture_name] = options
end

.registered?(fixture_name) ⇒ Boolean

Returns:

  • (Boolean)


56
57
58
# File 'lib/magic_lamp.rb', line 56

def registered?(fixture_name)
  registered_fixtures.key?(fixture_name)
end