Feature #5664 » feature_5664_copy_docs_w_tests_trunk.diff
| test/unit/project_copy_test.rb (working copy) | ||
|---|---|---|
| 316 | 316 |
assert @project.members.any? |
| 317 | 317 |
assert @project.issue_categories.any? |
| 318 | 318 |
assert @project.issues.empty? |
| 319 |
assert @project.documents.empty? |
|
| 319 | 320 |
end |
| 320 | 321 | |
| 321 | 322 |
test "#copy should copy subtasks" do |
| ... | ... | |
| 334 | 335 |
child_copy = copy.children.detect {|c| c.subject == 'Child1'}
|
| 335 | 336 |
assert child_copy.descendants.any? |
| 336 | 337 |
end |
| 338 | ||
| 339 |
test "#copy should copy documents" do |
|
| 340 |
@source_project.documents << Document.generate!(:title => "copy document title", |
|
| 341 |
:category_id => 1, |
|
| 342 |
:project_id => @source_project.id) |
|
| 343 |
assert @project.valid? |
|
| 344 |
assert @project.documents.empty? |
|
| 345 |
assert @project.copy(@source_project) |
|
| 346 | ||
| 347 |
assert_equal @source_project.documents.size, @project.documents.size |
|
| 348 |
@project.documents.each do |document| |
|
| 349 |
assert document.valid? |
|
| 350 |
assert_equal @project, document.project |
|
| 351 |
end |
|
| 352 | ||
| 353 |
copied_document = @project.documents.where(:title => "copy document title").first |
|
| 354 |
assert copied_document |
|
| 355 |
end |
|
| 356 | ||
| 357 |
test "#copy should copy document attachments" do |
|
| 358 |
document = Document.generate!(:title => "copy document attachment", :category_id => 1, :project_id => @source_project.id) |
|
| 359 |
Attachment.create!(:container => document, :file => uploaded_test_file("testfile.txt", "text/plain"), :author_id => 1)
|
|
| 360 |
@source_project.documents << document |
|
| 361 |
assert @project.copy(@source_project) |
|
| 362 | ||
| 363 |
copied_document = @project.documents.where(:title => "copy document attachment").first |
|
| 364 |
assert_not_nil copied_document |
|
| 365 |
assert_equal 1, copied_document.attachments.count, "Attachment not copied" |
|
| 366 |
assert_equal "testfile.txt", copied_document.attachments.first.filename |
|
| 367 |
end |
|
| 337 | 368 |
end |
| test/object_helpers.rb (working copy) | ||
|---|---|---|
| 178 | 178 |
changeset.save! |
| 179 | 179 |
changeset |
| 180 | 180 |
end |
| 181 | ||
| 182 |
def Document.generate!(attributes={})
|
|
| 183 |
document = Document.new(attributes) |
|
| 184 |
document.project ||= Project.find(1) |
|
| 185 |
document.category ||= document.project.categories.first |
|
| 186 |
document.title = 'Generated' if document.title.blank? |
|
| 187 |
yield document if block_given? |
|
| 188 |
document |
|
| 189 |
end |
|
| 181 | 190 |
end |
| app/models/project.rb (working copy) | ||
|---|---|---|
| 709 | 709 |
def copy(project, options={})
|
| 710 | 710 |
project = project.is_a?(Project) ? project : Project.find(project) |
| 711 | 711 | |
| 712 |
to_be_copied = %w(wiki versions issue_categories issues members queries boards) |
|
| 712 |
to_be_copied = %w(wiki versions issue_categories issues members queries boards documents)
|
|
| 713 | 713 |
to_be_copied = to_be_copied & options[:only].to_a unless options[:only].nil? |
| 714 | 714 | |
| 715 | 715 |
Project.transaction do |
| ... | ... | |
| 958 | 958 |
end |
| 959 | 959 |
end |
| 960 | 960 | |
| 961 |
# Copies documents from +project+ |
|
| 962 |
def copy_documents(project) |
|
| 963 |
project.documents.each do |document| |
|
| 964 |
new_document = Document.new |
|
| 965 |
new_document.attributes = document.attributes.dup.except("id", "project_id")
|
|
| 966 |
new_document.project = self |
|
| 967 |
self.documents << new_document |
|
| 968 |
# Copy attachments to document |
|
| 969 |
new_document.attachments = document.attachments.map do |attachement| |
|
| 970 |
attachement.copy(:container => new_document) |
|
| 971 |
end |
|
| 972 |
end |
|
| 973 |
end |
|
| 974 | ||
| 961 | 975 |
def allowed_permissions |
| 962 | 976 |
@allowed_permissions ||= begin |
| 963 | 977 |
module_names = enabled_modules.loaded? ? enabled_modules.map(&:name) : enabled_modules.pluck(:name) |
| app/views/projects/copy.html.erb (working copy) | ||
|---|---|---|
| 10 | 10 |
<label class="block"><%= check_box_tag 'only[]', 'issues', true %> <%= l(:label_issue_plural) %> (<%= @source_project.issues.count %>)</label> |
| 11 | 11 |
<label class="block"><%= check_box_tag 'only[]', 'queries', true %> <%= l(:label_query_plural) %> (<%= @source_project.queries.count %>)</label> |
| 12 | 12 |
<label class="block"><%= check_box_tag 'only[]', 'boards', true %> <%= l(:label_board_plural) %> (<%= @source_project.boards.count %>)</label> |
| 13 |
<label class="block"><%= check_box_tag 'only[]', 'documents', true %> <%= l(:label_document_plural) %> (<%= @source_project.documents.count %>)</label> |
|
| 13 | 14 |
<label class="block"><%= check_box_tag 'only[]', 'wiki', true %> <%= l(:label_wiki_page_plural) %> (<%= @source_project.wiki.nil? ? 0 : @source_project.wiki.pages.count %>)</label> |
| 14 | 15 |
<%= hidden_field_tag 'only[]', '' %> |
| 15 | 16 |
<br /> |