obsolete.ChilliProject/test/unit/issue_drop_test.rb

103 lines
3.4 KiB
Ruby

#-- encoding: UTF-8
#-- copyright
# ChiliProject is a project management system.
#
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
require File.expand_path('../../test_helper', __FILE__)
class IssueDropTest < ActiveSupport::TestCase
include ApplicationHelper
def setup
@project = Project.generate!
@issue = Issue.generate_for_project!(@project)
User.current = @user = User.generate!
@role = Role.generate!(:permissions => [:view_issues])
Member.generate!(:principal => @user, :project => @project, :roles => [@role])
@drop = @issue.to_liquid
end
context "drop" do
should "be a IssueDrop" do
assert @drop.is_a?(IssueDrop), "drop is not a IssueDrop"
end
end
[
:tracker,
:project,
:subject,
:description,
:due_date,
:category,
:status,
:assigned_to,
:priority,
:fixed_version,
:author,
:created_on,
:updated_on,
:start_date,
:done_ratio,
:estimated_hours,
:parent
].each do |attribute|
should "IssueDrop##{attribute} should return the actual #{attribute} attribute" do
assert @issue.respond_to?(attribute), "Issue does not have an #{attribute} method"
assert @drop.respond_to?(attribute), "IssueDrop does not have an #{attribute} method"
assert_equal @issue.send(attribute), @drop.send(attribute)
end
end
context "custom fields" do
setup do
@field = IssueCustomField.generate!(:name => 'The Name', :field_format => 'string', :is_for_all => true, :trackers => @project.trackers)
@field_name_conflict = IssueCustomField.generate!(:name => 'Subject', :field_format => 'string', :is_for_all => true, :trackers => @project.trackers)
@issue.custom_fields = [{'id' => @field.id, 'value' => 'Custom field value'},
{'id' => @field_name_conflict.id, 'value' => 'Second subject'}]
assert @issue.save
assert_equal "Custom field value", @issue.reload.custom_value_for(@field).value
assert_equal "Second subject", @issue.reload.custom_value_for(@field_name_conflict).value
@drop = @issue.to_liquid
end
should "be accessible under #custom_field(name)" do
assert_equal @issue.reload.custom_value_for(@field).value, @drop.custom_field('The Name')
end
should "be accessible under the custom field name (lowercase, underscored)" do
assert_equal @issue.reload.custom_value_for(@field).value, @drop.the_name
assert textilizable("{{issue.the_name}}").include?("Custom field value")
end
should "not be accessible under the custom field name if it conflict with an existing drop method" do
assert_equal @issue.subject, @drop.subject # no confict
end
end
should "only load an object if it's visible to the current user" do
assert User.current.logged?
assert @issue.visible?
@private_project = Project.generate!(:is_public => false)
@private_issue = Issue.generate_for_project!(@private_project)
assert !@private_issue.visible?, "Issue is visible"
@private_drop = IssueDrop.new(@private_issue)
assert_equal nil, @private_drop.instance_variable_get("@object")
assert_equal nil, @private_drop.subject
end
end