Sha256: cad64f3b54cc26a57d256c9fe4cd61bd77d3ea4251c4c4eccab8868b0f87bc6c

Contents?: true

Size: 1.08 KB

Versions: 3

Compression:

Stored size: 1.08 KB

Contents

module Arel
  module Testing
    class Engine < Arel::Memory::Engine
      attr_reader :rows

      def initialize
        @rows = []
      end

      def supports(operation)
        false
      end

      def read(relation)
        case relation
        when Arel::Take, Arel::Order, Arel::Skip, Arel::Where
          relation.eval
        else
          @rows.dup.map { |r| Row.new(relation, r) }
        end
      end

      def create(insert)
        @rows << insert.record.tuple
        insert
      end
    end
  end

  class Model
    include Relation

    attr_reader :engine

    def self.build
      relation = new
      yield relation
      relation
    end

    def initialize
      @attributes = []
    end

    def engine(engine = nil)
      @engine = engine if engine
      @engine
    end

    def attribute(name, type)
      @attributes << type.new(self, name)
    end

    def attributes
      Header.new(@attributes)
    end

    def format(attribute, value)
      value
    end

    def insert(row)
      insert = super Arel::Row.new(self, row)
      insert.record
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
arel-1.0.1 spec/support/model.rb
arel-1.0.0 spec/support/model.rb
arel-1.0.0.rc1 spec/support/model.rb