lib/taza/fixture.rb in scudco-taza-0.8.4 vs lib/taza/fixture.rb in scudco-taza-0.8.5
- old
+ new
@@ -1,19 +1,32 @@
require 'find'
-require "erb"
+require 'erb'
+require 'extensions/hash'
+require 'taza/entity'
module Taza
+ # The module that will mixin methods based on the fixture files in your 'spec/fixtures'
+ #
+ # Example:
+ # describe "something" do
+ # it "should test something" do
+ # users(:jane_smith).first_name.should eql("jane")
+ # end
+ # end
+ #
+ # where there is a spec/fixtures/users.yml file containing a entry of:
+ # jane_smith:
+ # first_name: jane
+ # last_name: smith
class Fixture # :nodoc:
def initialize # :nodoc:
@fixtures = {}
end
- def load_all(fixtures_pattern) # :nodoc:
- index_of_fixtures = fixtures_pattern.index("fixtures")
- truncated_pattern = fixtures_pattern[index_of_fixtures..-1]
- Dir.glob(File.join(base_path,truncated_pattern)) do |file|
+ def load_fixtures_from(dir) # :nodoc:
+ Dir.glob(File.join(dir,'*.yml')) do |file|
templatized_fixture=ERB.new(File.read(file))
entitized_fixture = {}
YAML.load(templatized_fixture.result()).each do |key, value|
entitized_fixture[key] = value.convert_hash_keys_to_methods(self)
end
@@ -32,11 +45,11 @@
def get_fixture_entity(fixture_file_key,entity_key) # :nodoc:
@fixtures[fixture_file_key][entity_key]
end
def pluralized_fixture_exists?(singularized_fixture_name) # :nodoc:
- fixture_exists?(singularized_fixture_name.pluralize_to_sym)
+ fixture_exists?(singularized_fixture_name.pluralize.to_sym)
end
def specific_fixture_entities(fixture_key, select_array)
cloned_fixture = @fixtures[fixture_key].clone
cloned_fixture.delete_if {|key , value| !select_array.include?(key)}
@@ -44,45 +57,12 @@
def fixture_exists?(fixture_name)
fixture_names.include?(fixture_name.to_sym)
end
- def base_path # :nodoc:
- File.join('.','spec')
+ def self.base_path # :nodoc:
+ File.join('.','spec','fixtures','')
end
end
- # The module that will mixin methods based on the fixture files in your 'spec/fixtures'
- #
- # Example:
- # describe "something" do
- # it "should test something" do
- # users(:jane_smith).first_name.should eql("jane")
- # end
- # end
- #
- # where there is a spec/fixtures/users.yml file containing a entry of:
- # jane_smith:
- # first_name: jane
- # last_name: smith
- dirs = Dir.glob(File.join(Fixture.new.base_path,"**","**")).select {|d| File.directory?(d) }
- dirs[0,0] = File.join(Fixture.new.base_path,"fixtures")
- dirs.each do |mod|
- base_module = mod == dirs[0] ? "" : "Fixtures::"
- self.class_eval <<-EOS
- module #{base_module}#{mod.split('/')[-1].camelize}
- def self.included(other_module)
- fixture = Fixture.new
- fixture.load_all(File.join("#{mod}","*.yml"))
- fixture.fixture_names.each do |fixture_name|
- self.class_eval do
- define_method(fixture_name) do |entity_key|
- fixture.get_fixture_entity(fixture_name,entity_key.to_s)
- end
- end
- end
- end
- end
- EOS
- end
end