2011-12-19 00:19:01 +04:00
|
|
|
#-- encoding: UTF-8
|
2011-12-18 03:50:52 +04:00
|
|
|
#-- copyright
|
|
|
|
# ChiliProject is a project management system.
|
|
|
|
#
|
2013-01-07 02:20:49 +04:00
|
|
|
# Copyright (C) 2010-2013 the ChiliProject Team
|
2011-12-18 03:50:52 +04:00
|
|
|
#
|
|
|
|
# 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.
|
|
|
|
#++
|
|
|
|
|
2011-05-04 03:36:44 +04:00
|
|
|
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
|