Commit b9eb846b authored by Douwe Maan's avatar Douwe Maan

Merge branch 'remove-invalid-services' into 'master'

Remove invalid services with nil or empty type

See merge request !10847
parents 976b020a 972440b1
......@@ -26,6 +26,7 @@ class Service < ActiveRecord::Base
has_one :service_hook
validates :project_id, presence: true, unless: proc { |service| service.template? }
validates :type, presence: true
scope :visible, -> { where.not(type: 'GitlabIssueTrackerService') }
scope :issue_trackers, -> { where(category: 'issue_tracker') }
......
class RemoveNilTypeServices < ActiveRecord::Migration
DOWNTIME = false
def up
execute <<-SQL
DELETE FROM services WHERE type IS NULL OR type = '';
SQL
end
def down
end
end
FactoryGirl.define do
factory :service do
project factory: :empty_project
type 'Service'
end
factory :custom_issue_tracker_service, class: CustomIssueTrackerService do
project factory: :empty_project
type 'CustomIssueTrackerService'
category 'issue_tracker'
active true
properties(
project_url: 'https://project.url.com',
issues_url: 'https://issues.url.com',
new_issue_url: 'https://newissue.url.com'
)
end
factory :kubernetes_service do
......
......@@ -6980,28 +6980,6 @@
],
"services": [
{
"id": 164,
"title": null,
"project_id": 5,
"created_at": "2016-06-14T15:02:07.372Z",
"updated_at": "2016-06-14T15:02:07.372Z",
"active": false,
"properties": {
},
"template": false,
"push_events": true,
"issues_events": true,
"merge_requests_events": true,
"tag_push_events": true,
"note_events": true,
"build_events": true,
"category": "issue_tracker",
"type": "CustomIssueTrackerService",
"default": true,
"wiki_page_events": true
},
{
"id": 100,
"title": "JetBrains TeamCity CI",
......@@ -7019,6 +6997,7 @@
"tag_push_events": true,
"note_events": true,
"build_events": true,
"type": "TeamcityService",
"category": "ci",
"default": false,
"wiki_page_events": true
......@@ -7040,6 +7019,7 @@
"tag_push_events": true,
"note_events": true,
"pipeline_events": true,
"type": "SlackService",
"category": "common",
"default": false,
"wiki_page_events": true
......@@ -7061,6 +7041,7 @@
"tag_push_events": true,
"note_events": true,
"build_events": true,
"type": "RedmineService",
"category": "issue_tracker",
"default": false,
"wiki_page_events": true
......@@ -7082,6 +7063,7 @@
"tag_push_events": true,
"note_events": true,
"build_events": true,
"type": "PushoverService",
"category": "common",
"default": false,
"wiki_page_events": true
......@@ -7103,6 +7085,7 @@
"tag_push_events": true,
"note_events": true,
"build_events": true,
"type": "PivotalTrackerService",
"category": "common",
"default": false,
"wiki_page_events": true
......@@ -7125,6 +7108,7 @@
"tag_push_events": true,
"note_events": true,
"build_events": true,
"type": "JiraService",
"category": "issue_tracker",
"default": false,
"wiki_page_events": true
......@@ -7146,6 +7130,7 @@
"tag_push_events": true,
"note_events": true,
"build_events": true,
"type": "IrkerService",
"category": "common",
"default": false,
"wiki_page_events": true
......@@ -7167,6 +7152,7 @@
"tag_push_events": true,
"note_events": true,
"pipeline_events": true,
"type": "HipchatService",
"category": "common",
"default": false,
"wiki_page_events": true
......@@ -7188,6 +7174,7 @@
"tag_push_events": true,
"note_events": true,
"build_events": true,
"type": "GemnasiumService",
"category": "common",
"default": false,
"wiki_page_events": true
......@@ -7209,6 +7196,7 @@
"tag_push_events": true,
"note_events": true,
"build_events": true,
"type": "FlowdockService",
"category": "common",
"default": false,
"wiki_page_events": true
......@@ -7230,6 +7218,7 @@
"tag_push_events": true,
"note_events": true,
"build_events": true,
"type": "ExternalWikiService",
"category": "common",
"default": false,
"wiki_page_events": true
......@@ -7251,6 +7240,7 @@
"tag_push_events": true,
"note_events": true,
"build_events": true,
"type": "EmailsOnPushService",
"category": "common",
"default": false,
"wiki_page_events": true
......@@ -7272,6 +7262,7 @@
"tag_push_events": true,
"note_events": true,
"build_events": true,
"type": "DroneCiService",
"category": "ci",
"default": false,
"wiki_page_events": true
......@@ -7293,6 +7284,7 @@
"tag_push_events": true,
"note_events": true,
"build_events": true,
"type": "CustomIssueTrackerService",
"category": "issue_tracker",
"default": false,
"wiki_page_events": true
......@@ -7314,6 +7306,7 @@
"tag_push_events": true,
"note_events": true,
"build_events": true,
"type": "CampfireService",
"category": "common",
"default": false,
"wiki_page_events": true
......@@ -7335,6 +7328,7 @@
"tag_push_events": true,
"note_events": true,
"build_events": true,
"type": "BuildkiteService",
"category": "ci",
"default": false,
"wiki_page_events": true
......@@ -7356,6 +7350,7 @@
"tag_push_events": true,
"note_events": true,
"build_events": true,
"type": "BambooService",
"category": "ci",
"default": false,
"wiki_page_events": true
......@@ -7377,6 +7372,7 @@
"tag_push_events": true,
"note_events": true,
"build_events": true,
"type": "AssemblaService",
"category": "common",
"default": false,
"wiki_page_events": true
......@@ -7398,6 +7394,7 @@
"tag_push_events": true,
"note_events": true,
"build_events": true,
"type": "AssemblaService",
"category": "common",
"default": false,
"wiki_page_events": true
......
......@@ -60,7 +60,7 @@ describe Gitlab::ImportExport::RelationFactory, lib: true do
end
context 'original service exists' do
let(:service_id) { Service.create(project: project).id }
let(:service_id) { create(:service, project: project).id }
it 'does not have the original service_id' do
expect(created_object.service_id).not_to eq(service_id)
......
......@@ -8,7 +8,7 @@ describe IssueTrackerService, models: true do
let(:service) { RedmineService.new(project: project, active: true) }
before do
create(:service, project: project, active: true, category: 'issue_tracker')
create(:custom_issue_tracker_service, project: project)
end
context 'when service is changed manually by user' do
......
......@@ -6,6 +6,10 @@ describe Service, models: true do
it { is_expected.to have_one :service_hook }
end
describe 'Validations' do
it { is_expected.to validate_presence_of(:type) }
end
describe "Test Button" do
before do
@service = Service.new
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment