require 'generator_spec/rails_helpers/rails_model' module RSpec::Rails module Orm module Base include RSpec::Rails::Model protected def document_name type type_content = type == :document ? "#{orm_name}::Document" : "#{orm_name}::EmbeddedDocument" end def clazz name "class #{name.to_s.camelize}" end def file name %Q{#{clazz name} #{yield if block_given?} end} end def file_w_include name file name { "include #{yield}" if block_given?} end def file_w_inherit name %Q{#{clazz name} < #{yield if block_given?} end} end def field name, type = nil return "#{field_name} :#{name}, #{type}" if type "#{field_name} :#{name}" end end module ActiveRecord include RSpec::Rails::Orm::Base def file_content name, type=nil file_w_inherit(name) {'ActiveRecord::Base'} end end module MongoMapper include RSpec::Rails::Orm::Base def orm_name 'MongoMapper' end def file_content name, type = :document file_w_include(name) { document_name type } end def field_name 'key' end end module Mongoid include RSpec::Rails::Orm::Base def orm_name 'Mongoid' end def field_name 'field' end def file_content name, type = :document file_w_include(name) { document_name type } end def field name, type = nil return "#{field_name} :#{name}, :type => #{type}" if type "#{field_name} :#{name}" end end module DataMapper include RSpec::Rails::Orm::Base def orm_name 'DataMapper' end def file_content name file_w_include(name) { "#{orm_name}::Resource" } end def field_name 'property' end end end end