aboutsummaryrefslogtreecommitdiffstats
path: root/spec/support/model.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/support/model.rb')
-rw-r--r--spec/support/model.rb56
1 files changed, 56 insertions, 0 deletions
diff --git a/spec/support/model.rb b/spec/support/model.rb
new file mode 100644
index 0000000000..bd4376efcb
--- /dev/null
+++ b/spec/support/model.rb
@@ -0,0 +1,56 @@
+module Arel
+ module Testing
+ class Engine
+ attr_reader :rows
+
+ def initialize
+ @rows = []
+ end
+
+ def supports(operation)
+ false
+ end
+
+ def read(relation)
+ @rows.dup.map { |r| Row.new(relation, r) }
+ end
+
+ def create(insert)
+ @rows << insert.record.tuple
+ insert
+ end
+ end
+ end
+
+ class Model < Relation
+ attr_reader :engine, :attributes
+
+ 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 format(attribute, value)
+ value
+ end
+
+ def insert(row)
+ insert = super Arel::Row.new(self, row)
+ insert.record
+ end
+ end
+end \ No newline at end of file