aboutsummaryrefslogblamecommitdiffstats
path: root/activemodel/test/cases/naming_helpers_test.rb
blob: e7234e009e5445739db5b6e68465a86d52393ec5 (plain) (tree)






























































                                                 
require 'cases/helper'

class Comment
  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 comment' : "comment ##{@id}"
  end
end

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

class NamingHelpersTest < Test::Unit::TestCase
  def setup
    @klass  = Comment
    @record = @klass.new
    @singular = 'comment'
    @plural = 'comments'
    @uncountable = Sheep
  end

  def test_singular
    assert_equal @singular, singular(@record)
  end

  def test_singular_for_class
    assert_equal @singular, singular(@klass)
  end

  def test_plural
    assert_equal @plural, plural(@record)
  end

  def test_plural_for_class
    assert_equal @plural, plural(@klass)
  end

  def test_uncountable
    assert_equal true, uncountable?(@uncountable)
    assert_equal false, uncountable?(@klass)
  end

  private
    def method_missing(method, *args)
      ActiveModel::Naming.send(method, *args)
    end
end