Browse Source

Time entry queries should be copied and deleted too.

git-svn-id: http://svn.redmine.org/redmine/trunk@16320 e93f8b46-1217-0410-a6f0-8f06a7374b81
tags/3.4.0
Jean-Philippe Lang 7 years ago
parent
commit
1b911e51f9
3 changed files with 44 additions and 13 deletions
  1. 3
    3
      app/models/project.rb
  2. 20
    0
      test/fixtures/queries.yml
  3. 21
    10
      test/unit/project_copy_test.rb

+ 3
- 3
app/models/project.rb View File

@@ -40,7 +40,7 @@ class Project < ActiveRecord::Base
has_many :versions, :dependent => :destroy
belongs_to :default_version, :class_name => 'Version'
has_many :time_entries, :dependent => :destroy
has_many :queries, :class_name => 'IssueQuery', :dependent => :delete_all
has_many :queries, :dependent => :delete_all
has_many :documents, :dependent => :destroy
has_many :news, lambda {includes(:author)}, :dependent => :destroy
has_many :issue_categories, lambda {order("#{IssueCategory.table_name}.name")}, :dependent => :delete_all
@@ -1055,12 +1055,12 @@ class Project < ActiveRecord::Base
# Copies queries from +project+
def copy_queries(project)
project.queries.each do |query|
new_query = IssueQuery.new
new_query = query.class.new
new_query.attributes = query.attributes.dup.except("id", "project_id", "sort_criteria", "user_id", "type")
new_query.sort_criteria = query.sort_criteria if query.sort_criteria
new_query.project = self
new_query.user_id = query.user_id
new_query.role_ids = query.role_ids if query.visibility == IssueQuery::VISIBILITY_ROLES
new_query.role_ids = query.role_ids if query.visibility == ::Query::VISIBILITY_ROLES
self.queries << new_query
end
end

+ 20
- 0
test/fixtures/queries.yml View File

@@ -162,4 +162,24 @@ queries_009:
---
- - priority
- desc
queries_010:
id: 10
type: TimeEntryQuery
project_id: 1
visibility: 2
name: My spent time
filters: |
---
user_id:
:values:
- "me"
:operator: =

user_id: 1
column_names:
group_by:
sort_criteria: |
---
- - spent_on
- desc


+ 21
- 10
test/unit/project_copy_test.rb View File

@@ -235,17 +235,28 @@ class ProjectCopyTest < ActiveSupport::TestCase
assert_equal [1, 2], member.role_ids.sort
end

test "#copy should copy project specific queries" do
assert @project.valid?
assert @project.queries.empty?
assert @project.copy(@source_project)
def test_copy_should_copy_project_specific_issue_queries
source = Project.generate!
target = Project.new(:name => 'Copy Test', :identifier => 'copy-test')
IssueQuery.generate!(:project => source, :user => User.find(2))
assert target.copy(source)

assert_equal @source_project.queries.size, @project.queries.size
@project.queries.each do |query|
assert query
assert_equal @project, query.project
end
assert_equal @source_project.queries.map(&:user_id).sort, @project.queries.map(&:user_id).sort
assert_equal 1, target.queries.size
query = target.queries.first
assert_kind_of IssueQuery, query
assert_equal 2, query.user_id
end

def test_copy_should_copy_project_specific_time_entry_queries
source = Project.generate!
target = Project.new(:name => 'Copy Test', :identifier => 'copy-test')
TimeEntryQuery.generate!(:project => source, :user => User.find(2))
assert target.copy(source)

assert_equal 1, target.queries.size
query = target.queries.first
assert_kind_of TimeEntryQuery, query
assert_equal 2, query.user_id
end

def test_copy_should_copy_queries_roles_visibility

Loading…
Cancel
Save