Sha256: 5b0f861f866f9ec81b748b073f739d0c6e49d21b7338c9c0eb530d499c3ce020

Contents?: true

Size: 1.64 KB

Versions: 3

Compression:

Stored size: 1.64 KB

Contents

require 'test_helper'

class MeritUnitTest < ActiveSupport::TestCase
  test "Rule#applies? should depend on provided block" do
    rule = Merit::Rule.new
    assert rule.applies?, 'empty conditions should make rule apply'

    str = "string"
    rule.block = lambda{|obj| obj.length < 4 }
    assert !rule.applies?(str), 'block should make rule fail'

    rule.block = lambda{|obj| obj.length >= 4 }
    assert rule.applies?(str), 'block should make rule apply'

    rule.block = lambda{|obj| true }
    assert !rule.applies?, 'block which expects object should return false if no argument'
  end

  test "Rule#badge should get related badge or raise Merit::BadgeNotFound" do
    rule = Merit::Rule.new
    rule.badge_name = 'inexistent'
    assert_raise Merit::BadgeNotFound do
      rule.badge
    end

    badge = Badge.create(:id => 98, :name => 'test-badge-98')
    rule.badge_name = badge.name
    assert_equal Badge.find(98), rule.badge
  end

  test "Extends only meritable ActiveRecord models" do
    class MeritableModel < ActiveRecord::Base
      def self.columns; @columns ||= []; end
      has_merit
    end
    class OtherModels < ActiveRecord::Base
      def self.columns; @columns ||= []; end
    end
    assert MeritableModel.method_defined?(:points), 'Meritable model should respond to merit methods'
    assert !OtherModels.method_defined?(:points), 'Other models shouldn\'t respond to merit methods'
  end

  # Do we need this non-documented attribute?
  test "BadgesSash#set_notified! sets boolean attribute" do
    badge_sash = BadgesSash.new
    assert !badge_sash.notified_user
    badge_sash.set_notified!
    assert badge_sash.notified_user
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
merit-1.2.1 test/merit_unit_test.rb
merit-1.2.0 test/merit_unit_test.rb
merit-1.1.2 test/merit_unit_test.rb