From b20595b2bd0023ebbc2ec46017f5d1cb1533fb4f Mon Sep 17 00:00:00 2001
From: Felipe Artur <felipefac@gmail.com>
Date: Fri, 15 Sep 2017 11:55:57 -0300
Subject: [PATCH] Add data migration

---
 ...00_fix_projects_without_project_feature.rb | 33 +++++++++++++++++++
 db/schema.rb                                  |  2 +-
 spec/services/projects/update_service_spec.rb |  2 +-
 3 files changed, 35 insertions(+), 2 deletions(-)
 create mode 100644 db/post_migrate/20170913180600_fix_projects_without_project_feature.rb

diff --git a/db/post_migrate/20170913180600_fix_projects_without_project_feature.rb b/db/post_migrate/20170913180600_fix_projects_without_project_feature.rb
new file mode 100644
index 00000000000..bfa9ad80c7d
--- /dev/null
+++ b/db/post_migrate/20170913180600_fix_projects_without_project_feature.rb
@@ -0,0 +1,33 @@
+class FixProjectsWithoutProjectFeature < ActiveRecord::Migration
+  DOWNTIME = false
+
+  def up
+    # Deletes corrupted project features
+    sql = "DELETE FROM project_features WHERE project_id IS NULL"
+    execute(sql)
+
+    # Creates missing project features with private visibility
+    sql =
+      %Q{
+        INSERT INTO project_features(project_id, repository_access_level, issues_access_level, merge_requests_access_level, wiki_access_level,
+        builds_access_level, snippets_access_level, created_at, updated_at)
+          SELECT projects.id as project_id,
+          10 as repository_access_level,
+          10 as issues_access_level,
+          10 as merge_requests_access_level,
+          10 as wiki_access_level,
+          10 as builds_access_level ,
+          10 as snippets_access_level,
+          projects.created_at,
+          projects.updated_at
+          FROM projects
+          LEFT OUTER JOIN project_features ON project_features.project_id = projects.id
+          WHERE (project_features.id IS NULL)
+      }
+
+    execute(sql)
+  end
+
+  def down
+  end
+end
diff --git a/db/schema.rb b/db/schema.rb
index df941afa7d7..930c5d6a05a 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -11,7 +11,7 @@
 #
 # It's strongly recommended that you check this file into your version control system.
 
-ActiveRecord::Schema.define(version: 20170905112933) do
+ActiveRecord::Schema.define(version: 20170913180600) do
 
   # These are extensions that must be enabled in order to support this database
   enable_extension "plpgsql"
diff --git a/spec/services/projects/update_service_spec.rb b/spec/services/projects/update_service_spec.rb
index 371b0abf937..c551083ac90 100644
--- a/spec/services/projects/update_service_spec.rb
+++ b/spec/services/projects/update_service_spec.rb
@@ -163,7 +163,7 @@ describe Projects::UpdateService, '#execute' do
       result = update_project(project, admin, path: 'existing')
 
       expect(result).to include(status: :error)
-      expect(result[:message]).to match('Project could not be updated!')
+      expect(result[:message]).to match('There is already a repository with that name on disk')
       expect(project).not_to be_valid
       expect(project.errors.messages).to have_key(:base)
       expect(project.errors.messages[:base]).to include('There is already a repository with that name on disk')
-- 
2.30.9