Sha256: 3bbb5013e79e2cde2cb8f406310c0176fcb0362445663b3cdf785de79c0fd2d8

Contents?: true

Size: 1.77 KB

Versions: 3

Compression:

Stored size: 1.77 KB

Contents

require 'find'
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_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
        @fixtures[File.basename(file,'.yml').to_sym] = entitized_fixture
      end
    end
    
    def fixture_names # :nodoc:
      @fixtures.keys
    end

    def get_fixture(fixture_file_key)
      @fixtures[fixture_file_key]
    end  
    
    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)
    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)}
    end

    def fixture_exists?(fixture_name)
      fixture_names.include?(fixture_name.to_sym)
    end

   def self.base_path # :nodoc:
     File.join('.','spec','fixtures','')
   end
  end
  
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
taza-2.1.0 lib/taza/fixture.rb
taza-2.0 lib/taza/fixture.rb
taza-1.0 lib/taza/fixture.rb