badge_test.rb 1.63 KB
require_relative "../test_helper"

class BadgeTest < ActiveSupport::TestCase

  def setup
    @person = create_user('testuser').person
    @environment = Environment.default
    @organization = fast_create(Organization)
  end

  attr_accessor :person, :environment, :organization

  should 'add badge to person' do
    badge = GamificationPlugin::Badge.create!(:owner => environment)
    person.add_badge(badge.id)
    assert_equal [badge], person.badges
  end

  should 'remove badge from person when destroy a badge' do
    badge = GamificationPlugin::Badge.create!(:owner => environment)
    person.add_badge(badge.id)
    assert_equal [badge], person.badges
    badge.destroy
    assert_equal [], person.reload.badges
  end

  should 'not fail when a person has an undefined badge' do
    person.add_badge(1235)
    assert_equal [], person.reload.badges.compact
  end

  should 'list pending badges from a person' do
    badge1 = GamificationPlugin::Badge.create!(:owner => environment)
    person.add_badge(badge1.id)
    person.sash.notify_all_badges_from_user
    badge2 = GamificationPlugin::Badge.create!(:owner => environment)
    person.add_badge(badge2.id)
    assert_equal [badge2], person.badges.notification_pending
  end

  should 'add badge to person with organization as the badge owner' do
    badge = GamificationPlugin::Badge.create(:owner => organization)
    person.add_badge(badge.id)
    assert_equal [badge], person.badges
  end

  should 'add a manual badge to person' do
    badge = GamificationPlugin::Badge.create!(:name => :manual, :owner => environment)
    person.add_badge(badge.id)
    assert_equal [badge], person.badges
  end

end