aboutsummaryrefslogtreecommitdiffstats
path: root/spec/doubles
diff options
context:
space:
mode:
authorNick Kallen <nkallen@nick-kallens-computer-2.local>2008-04-14 23:38:50 -0700
committerNick Kallen <nkallen@nick-kallens-computer-2.local>2008-04-14 23:38:50 -0700
commit3d3e15985218c329b9d0507d389bb1e56eba99d2 (patch)
treec3f0eac96efe8568fbacc1cee32c5fe1f1b48195 /spec/doubles
parent5a2d4f5475b8a040e2ed2da826afe50f0b3824c7 (diff)
downloadrails-3d3e15985218c329b9d0507d389bb1e56eba99d2.tar.gz
rails-3d3e15985218c329b9d0507d389bb1e56eba99d2.tar.bz2
rails-3d3e15985218c329b9d0507d389bb1e56eba99d2.zip
- fixed hash ordering
- organized doubles (previously called 'fakes')
Diffstat (limited to 'spec/doubles')
-rw-r--r--spec/doubles/database.rb47
-rw-r--r--spec/doubles/hash.rb23
2 files changed, 70 insertions, 0 deletions
diff --git a/spec/doubles/database.rb b/spec/doubles/database.rb
new file mode 100644
index 0000000000..cc44596690
--- /dev/null
+++ b/spec/doubles/database.rb
@@ -0,0 +1,47 @@
+module Fake
+ class Engine
+ def connection
+ @conn ||= Connection.new
+ end
+ end
+
+ class Connection
+ include ActiveRecord::ConnectionAdapters::Quoting
+
+ def columns(table_name, comment)
+ { "users" =>
+ [
+ Column.new("id", :integer),
+ Column.new("name", :string)
+ ],
+ "photos" =>
+ [
+ Column.new("id", :integer),
+ Column.new("user_id", :integer),
+ Column.new("camera_id", :integer)
+ ]
+ }[table_name]
+ end
+
+ def select_all(*args)
+ []
+ end
+
+ def quote_column_name(column_name)
+ "`#{column_name}`"
+ end
+
+ def quote_table_name(table_name)
+ "`#{table_name}`"
+ end
+ end
+
+ class Column
+ attr_reader :name, :type
+
+ def initialize(name, type)
+ @name = name
+ @type = type
+ end
+ end
+end \ No newline at end of file
diff --git a/spec/doubles/hash.rb b/spec/doubles/hash.rb
new file mode 100644
index 0000000000..97d25742cb
--- /dev/null
+++ b/spec/doubles/hash.rb
@@ -0,0 +1,23 @@
+class Hash
+ def ordered_array
+ to_a.sort { |(key1, value1), (key2, value2)| key1.hash <=> key2.hash }
+ end
+
+ def keys
+ ordered_array.collect(&:first)
+ end
+
+ def values
+ ordered_array.collect { |_, v| v }
+ end
+
+ def each(&block)
+ ordered_array.each(&block)
+ end
+
+ def shift
+ returning to_a.first do |k, v|
+ delete(k)
+ end
+ end
+end