aboutsummaryrefslogtreecommitdiffstats
path: root/spec/crud_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/crud_spec.rb')
-rw-r--r--spec/crud_spec.rb66
1 files changed, 66 insertions, 0 deletions
diff --git a/spec/crud_spec.rb b/spec/crud_spec.rb
new file mode 100644
index 0000000000..5c03857284
--- /dev/null
+++ b/spec/crud_spec.rb
@@ -0,0 +1,66 @@
+module Arel
+ class FakeCrudder < SelectManager
+ class FakeEngine
+ attr_reader :calls, :connection_pool, :spec, :config
+
+ def initialize
+ @calls = []
+ @connection_pool = self
+ @spec = self
+ @config = { :adapter => 'sqlite3' }
+ end
+
+ def connection; self end
+
+ def method_missing name, *args
+ @calls << [name, args]
+ end
+ end
+
+ include Crud
+
+ attr_reader :engine
+ attr_accessor :ctx
+
+ def initialize engine = FakeEngine.new
+ super
+ end
+ end
+
+ describe 'crud' do
+ describe 'insert' do
+ it 'should call insert on the connection' do
+ table = Table.new :users
+ fc = FakeCrudder.new
+ fc.insert [[table[:id], 'foo']]
+ fc.engine.calls.find { |method, _|
+ method == :insert
+ }.should_not be_nil
+ end
+ end
+
+ describe 'update' do
+ it 'should call update on the connection' do
+ table = Table.new :users
+ fc = FakeCrudder.new
+ fc.from table
+ fc.update [[table[:id], 'foo']]
+ fc.engine.calls.find { |method, _|
+ method == :update
+ }.should_not be_nil
+ end
+ end
+
+ describe 'delete' do
+ it 'should call delete on the connection' do
+ table = Table.new :users
+ fc = FakeCrudder.new
+ fc.from table
+ fc.delete
+ fc.engine.calls.find { |method, _|
+ method == :delete
+ }.should_not be_nil
+ end
+ end
+ end
+end