summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Lopez <james@jameslopez.es>2016-06-29 10:35:26 +0200
committerJames Lopez <james@jameslopez.es>2016-06-29 10:35:26 +0200
commit3d2a73667983aefda9464d8651d5d59d617a4b95 (patch)
tree83c5e83dbb2d0acbea4730845b4edb92d2afd975
parent9e8fdead1789b425152256ec977241e7f19123ce (diff)
downloadgitlab-ce-3d2a73667983aefda9464d8651d5d59d617a4b95.tar.gz
fixing events for import/export
-rw-r--r--app/models/concerns/eventable.rb15
-rw-r--r--app/models/issue.rb1
-rw-r--r--app/models/merge_request.rb1
-rw-r--r--app/models/milestone.rb1
-rw-r--r--app/models/note.rb1
-rw-r--r--lib/gitlab/import_export/import_export.yml15
-rw-r--r--spec/lib/gitlab/import_export/project_tree_saver_spec.rb7
7 files changed, 34 insertions, 7 deletions
diff --git a/app/models/concerns/eventable.rb b/app/models/concerns/eventable.rb
new file mode 100644
index 00000000000..fa6a4bfa8da
--- /dev/null
+++ b/app/models/concerns/eventable.rb
@@ -0,0 +1,15 @@
+module Eventable
+ extend ActiveSupport::Concern
+
+ def events
+ Event.where(target_id: id, target_type: self.class.to_s)
+ end
+
+ def events=(events)
+ events.each do |event|
+ event.target_id = id
+ event.data.deep_symbolize_keys!
+ event.save!
+ end
+ end
+end \ No newline at end of file
diff --git a/app/models/issue.rb b/app/models/issue.rb
index 3c5859194b4..ae177c041e7 100644
--- a/app/models/issue.rb
+++ b/app/models/issue.rb
@@ -6,6 +6,7 @@ class Issue < ActiveRecord::Base
include Referable
include Sortable
include Taskable
+ include Eventable
DueDateStruct = Struct.new(:title, :name).freeze
NoDueDate = DueDateStruct.new('No Due Date', '0').freeze
diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb
index 53d9aa588af..326a0430eb4 100644
--- a/app/models/merge_request.rb
+++ b/app/models/merge_request.rb
@@ -5,6 +5,7 @@ class MergeRequest < ActiveRecord::Base
include Sortable
include Taskable
include Importable
+ include Eventable
belongs_to :target_project, foreign_key: :target_project_id, class_name: "Project"
belongs_to :source_project, foreign_key: :source_project_id, class_name: "Project"
diff --git a/app/models/milestone.rb b/app/models/milestone.rb
index e0c8454a998..2283376c8ac 100644
--- a/app/models/milestone.rb
+++ b/app/models/milestone.rb
@@ -11,6 +11,7 @@ class Milestone < ActiveRecord::Base
include Referable
include StripAttribute
include Milestoneish
+ include Eventable
belongs_to :project
has_many :issues
diff --git a/app/models/note.rb b/app/models/note.rb
index 8db500a5219..ed26fb2d88a 100644
--- a/app/models/note.rb
+++ b/app/models/note.rb
@@ -5,6 +5,7 @@ class Note < ActiveRecord::Base
include Mentionable
include Awardable
include Importable
+ include Eventable
# Attribute containing rendered and redacted Markdown as generated by
# Banzai::ObjectRenderer.
diff --git a/lib/gitlab/import_export/import_export.yml b/lib/gitlab/import_export/import_export.yml
index 164ab6238c4..05f4ad527ac 100644
--- a/lib/gitlab/import_export/import_export.yml
+++ b/lib/gitlab/import_export/import_export.yml
@@ -1,24 +1,29 @@
# Model relationships to be included in the project import/export
project_tree:
- issues:
+ - :events
- notes:
- :author
+ - :author
+ - :events
- :labels
- - :milestones
+ - milestones:
+ - :events
- snippets:
- notes:
:author
- :releases
- - :events
- project_members:
- :user
- merge_requests:
- notes:
- :author
+ - :author
+ - :events
- :merge_request_diff
+ - :events
- pipelines:
- notes:
- :author
+ - :author
+ - :events
- :statuses
- :variables
- :triggers
diff --git a/spec/lib/gitlab/import_export/project_tree_saver_spec.rb b/spec/lib/gitlab/import_export/project_tree_saver_spec.rb
index 8d29b2f8fd1..3b98045a2fc 100644
--- a/spec/lib/gitlab/import_export/project_tree_saver_spec.rb
+++ b/spec/lib/gitlab/import_export/project_tree_saver_spec.rb
@@ -34,7 +34,7 @@ describe Gitlab::ImportExport::ProjectTreeSaver, services: true do
end
it 'has events' do
- expect(saved_project_json['events']).not_to be_empty
+ expect(saved_project_json['milestones'].first['events']).not_to be_empty
end
it 'has milestones' do
@@ -132,7 +132,7 @@ describe Gitlab::ImportExport::ProjectTreeSaver, services: true do
statuses: [commit_status])
create(:ci_build, pipeline: ci_pipeline, project: project)
- create(:milestone, project: project)
+ milestone = create(:milestone, project: project)
create(:note, noteable: issue, project: project)
create(:note, noteable: merge_request, project: project)
create(:note, noteable: snippet, project: project)
@@ -140,6 +140,9 @@ describe Gitlab::ImportExport::ProjectTreeSaver, services: true do
author: user,
project: project,
commit_id: ci_pipeline.sha)
+
+ create(:event, target: milestone, project: project, action: Event::CREATED, author: user)
+
project
end