Sha256: c7c3bf8367b06b7ed5e564580de3043a3403ff9fe8acfd055d24d10d5f9c85fc

Contents?: true

Size: 1.46 KB

Versions: 2

Compression:

Stored size: 1.46 KB

Contents

module TableHelper
  # テストで動的に定義したクラスメソッドを削除
  def remove_dynamically_defined_class_method(klass)
    klass.methods.each do |method_name|
      if method_name.to_s =~ /^find_by_/ || method_name.to_s =~ /^find_all_by_/
        klass.class_eval do
          class_variable_set(:@@target_method_name, method_name)
          class << self
            remove_method class_variable_get(:@@target_method_name)
          end
          remove_class_variable(:@@target_method_name)
        end
      end
    end
  end

  # テストで動的に定義したインスタンスメソッドを削除
  def remove_dynamically_defined_instance_method(klass)
    klass.column_names.each do |column_name|
      getter = column_name
      if klass.instance_methods.include?(getter)
        klass.class_eval { remove_method getter }
      end

      setter = (column_name.to_s + "=").to_sym
      if klass.instance_methods.include?(setter)
        klass.class_eval { remove_method setter }
      end
    end
  end

  # Tableクラスでテストするために、一時的にDB Tableを作成する
  def create_tables_table_for_test
    db = Facemock::Database.new
    db.connection.execute <<-SQL
      CREATE TABLE TABLES (
        id          INTEGER   PRIMARY KEY AUTOINCREMENT,
        text        TEXT      NOT NULL,
        active      BOOLEAN,
        number      INTEGER   NOT NULL,
        created_at  DATETIME  NOT NULL
      );
    SQL
    db.disconnect!
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
facemock-0.0.6 spec/support/tables_helper.rb
facemock-0.0.5 spec/support/tables_helper.rb