gamification_plugin_badges_controller_test.rb 3.34 KB
require_relative "../test_helper"

class GamificationPluginBadgesControllerTest < ActionController::TestCase

  setup do
    @environment = Environment.default
    @gamification_plugin_badge = GamificationPlugin::Badge.create!(:name => 'sample_badge', :owner => @environment)
    login_as(create_admin_user(@environment))
  end

  should "should get index" do
    get :index
    assert_response :success
    assert_not_nil assigns(:gamification_plugin_badges)
  end

  should "should get new" do
    get :new
    assert_response :success
  end

  should "should create gamification_plugin_badge" do
    assert_difference('GamificationPlugin::Badge.count') do
      post :create, gamification_plugin_badge: { description: @gamification_plugin_badge.description, level: @gamification_plugin_badge.level, name: @gamification_plugin_badge.name, custom_fields: {threshold: @gamification_plugin_badge.threshold} }
    end
  end

  should "should create gamification_plugin_badge with organization as owner" do
    organization = fast_create(Organization)
    assert_difference('GamificationPlugin::Badge.count') do
      post :create, gamification_plugin_badge: { description: @gamification_plugin_badge.description, level: @gamification_plugin_badge.level, name: @gamification_plugin_badge.name, custom_fields: {threshold: @gamification_plugin_badge.threshold}, owner_id: organization.id }
      assert_equal organization, GamificationPlugin::Badge.last.owner
    end
  end

  should "should show gamification_plugin_badge" do
    get :show, id: @gamification_plugin_badge
    assert_response :success
  end

  should "should get edit" do
    get :edit, id: @gamification_plugin_badge
    assert_response :success
  end

  should "should update gamification_plugin_badge" do
    put :update, id: @gamification_plugin_badge, gamification_plugin_badge: { description: @gamification_plugin_badge.description, level: @gamification_plugin_badge.level, name: @gamification_plugin_badge.name, custom_fields: {threshold: @gamification_plugin_badge.threshold} }
    assert assigns(:gamification_plugin_badge)
  end

  should "should change badge owner" do
    organization = fast_create(Organization)
    put :update, id: @gamification_plugin_badge, gamification_plugin_badge: { description: @gamification_plugin_badge.description, level: @gamification_plugin_badge.level, name: @gamification_plugin_badge.name, custom_fields: {threshold: @gamification_plugin_badge.threshold}, owner_id: organization.id }
    assert assigns(:gamification_plugin_badge)
    assert_equal organization, @gamification_plugin_badge.reload.owner
  end

  should "should keep badge owner when update" do
    organization = fast_create(Organization)
    @gamification_plugin_badge.owner = organization
    @gamification_plugin_badge.save!

    put :update, id: @gamification_plugin_badge, gamification_plugin_badge: { description: @gamification_plugin_badge.description, level: @gamification_plugin_badge.level, name: @gamification_plugin_badge.name, custom_fields: {threshold: @gamification_plugin_badge.threshold}, owner_id: organization.id }
    assert assigns(:gamification_plugin_badge)
    assert_equal organization, @gamification_plugin_badge.reload.owner
  end

  should "should destroy gamification_plugin_badge" do
    assert_difference('GamificationPlugin::Badge.count', -1) do
      delete :destroy, id: @gamification_plugin_badge
    end
  end
end