fake_models.rb 4.0 KB
Newer Older
1 2
require "active_model"

3
class Customer < Struct.new(:name, :id)
J
Joshua Peek 已提交
4 5
  extend ActiveModel::Naming
  include ActiveModel::Conversion
J
Joshua Peek 已提交
6

7 8
  undef_method :to_json

9 10 11 12 13 14
  def to_xml(options={})
    if options[:builder]
      options[:builder].name name
    else
      "<name>#{name}</name>"
    end
15 16
  end

17 18
  def to_js(options={})
    "name: #{name.inspect}"
19
  end
20
  alias :to_text :to_js
21 22 23 24 25

  def errors
    []
  end

26 27
  def persisted?
    id.present?
28
  end
29
end
30 31 32 33 34 35

class BadCustomer < Customer
end

class GoodCustomer < Customer
end
36 37 38

module Quiz
  class Question < Struct.new(:name, :id)
J
Joshua Peek 已提交
39 40
    extend ActiveModel::Naming
    include ActiveModel::Conversion
J
Joshua Peek 已提交
41

42 43
    def persisted?
      id.present?
44 45
    end
  end
46 47 48

  class Store < Question
  end
49
end
50

51 52 53
class Post < Struct.new(:title, :author_name, :body, :secret, :written_on, :cost)
  extend ActiveModel::Naming
  include ActiveModel::Conversion
54
  extend ActiveModel::Translation
55 56 57

  alias_method :secret?, :secret

A
Aaron Patterson 已提交
58 59 60 61 62
  def initialize(*args)
    super
    @persisted = false
  end

63 64
  def persisted=(boolean)
    @persisted = boolean
65 66
  end

67 68
  def persisted?
    @persisted
69 70 71 72 73
  end

  attr_accessor :author
  def author_attributes=(attributes); end

74
  attr_accessor :comments, :comment_ids
75 76 77 78 79 80 81 82 83 84 85 86 87
  def comments_attributes=(attributes); end

  attr_accessor :tags
  def tags_attributes=(attributes); end
end

class Comment
  extend ActiveModel::Naming
  include ActiveModel::Conversion

  attr_reader :id
  attr_reader :post_id
  def initialize(id = nil, post_id = nil); @id, @post_id = id, post_id end
88
  def to_key; id ? [id] : nil end
89
  def save; @id = 1; @post_id = 1 end
90
  def persisted?; @id.present? end
P
Piotr Sarnacki 已提交
91
  def to_param; @id.to_s; end
92 93 94 95 96 97 98
  def name
    @id.nil? ? "new #{self.class.name.downcase}" : "#{self.class.name.downcase} ##{@id}"
  end

  attr_accessor :relevances
  def relevances_attributes=(attributes); end

99
  attr_accessor :body
100 101 102 103 104 105 106 107 108
end

class Tag
  extend ActiveModel::Naming
  include ActiveModel::Conversion

  attr_reader :id
  attr_reader :post_id
  def initialize(id = nil, post_id = nil); @id, @post_id = id, post_id end
109
  def to_key; id ? [id] : nil end
110
  def save; @id = 1; @post_id = 1 end
111
  def persisted?; @id.present? end
112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
  def to_param; @id; end
  def value
    @id.nil? ? "new #{self.class.name.downcase}" : "#{self.class.name.downcase} ##{@id}"
  end

  attr_accessor :relevances
  def relevances_attributes=(attributes); end

end

class CommentRelevance
  extend ActiveModel::Naming
  include ActiveModel::Conversion

  attr_reader :id
  attr_reader :comment_id
  def initialize(id = nil, comment_id = nil); @id, @comment_id = id, comment_id end
129
  def to_key; id ? [id] : nil end
130
  def save; @id = 1; @comment_id = 1 end
131
  def persisted?; @id.present? end
132 133 134 135 136 137
  def to_param; @id; end
  def value
    @id.nil? ? "new #{self.class.name.downcase}" : "#{self.class.name.downcase} ##{@id}"
  end
end

138 139 140 141 142 143 144 145 146 147 148 149 150 151
class Sheep
  extend ActiveModel::Naming
  include ActiveModel::Conversion

  attr_reader :id
  def to_key; id ? [id] : nil end
  def save; @id = 1 end
  def new_record?; @id.nil? end
  def name
    @id.nil? ? 'new sheep' : "sheep ##{@id}"
  end
end


152 153 154 155 156 157 158
class TagRelevance
  extend ActiveModel::Naming
  include ActiveModel::Conversion

  attr_reader :id
  attr_reader :tag_id
  def initialize(id = nil, tag_id = nil); @id, @tag_id = id, tag_id end
159
  def to_key; id ? [id] : nil end
160
  def save; @id = 1; @tag_id = 1 end
161
  def persisted?; @id.present? end
162 163 164 165 166 167 168 169 170 171
  def to_param; @id; end
  def value
    @id.nil? ? "new #{self.class.name.downcase}" : "#{self.class.name.downcase} ##{@id}"
  end
end

class Author < Comment
  attr_accessor :post
  def post_attributes=(attributes); end
end
172 173 174 175 176 177 178 179 180 181 182 183 184 185 186

module Blog
  def self._railtie
    self
  end

  class Post < Struct.new(:title, :id)
    extend ActiveModel::Naming
    include ActiveModel::Conversion

    def persisted?
      id.present?
    end
  end
end
187 188 189 190 191 192 193 194 195 196

class ArelLike
  def to_ary
    true
  end
  def each
    a = Array.new(2) { |id| Comment.new(id + 1) }
    a.each { |i| yield i }
  end
end
197 198 199 200 201 202

class RenderJsonTestException < Exception
  def to_json(options = nil)
    return { :error => self.class.name, :message => self.to_str }.to_json
  end
end