From 3d3e15985218c329b9d0507d389bb1e56eba99d2 Mon Sep 17 00:00:00 2001 From: Nick Kallen Date: Mon, 14 Apr 2008 23:38:50 -0700 Subject: - fixed hash ordering - organized doubles (previously called 'fakes') --- spec/doubles/database.rb | 47 +++++++++++++++++++++++++++++++++++++++++++++++ spec/doubles/hash.rb | 23 +++++++++++++++++++++++ 2 files changed, 70 insertions(+) create mode 100644 spec/doubles/database.rb create mode 100644 spec/doubles/hash.rb (limited to 'spec/doubles') 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 -- cgit v1.2.3