gitlab-org--gitlab-foss/spec/migrations/add_triggers_to_integration...

78 lines
2.1 KiB
Ruby

# frozen_string_literal: true
require 'spec_helper'
require_migration!
RSpec.describe AddTriggersToIntegrationsTypeNew do
let(:migration) { described_class.new }
let(:integrations) { table(:integrations) }
# This matches Gitlab::Integrations::StiType at the time the trigger was added
let(:namespaced_integrations) do
%w[
Asana Assembla Bamboo Bugzilla Buildkite Campfire Confluence CustomIssueTracker Datadog
Discord DroneCi EmailsOnPush Ewm ExternalWiki Flowdock HangoutsChat Irker Jenkins Jira Mattermost
MattermostSlashCommands MicrosoftTeams MockCi MockMonitoring Packagist PipelinesEmail Pivotaltracker
Prometheus Pushover Redmine Slack SlackSlashCommands Teamcity UnifyCircuit WebexTeams Youtrack
Github GitlabSlackApplication
]
end
describe '#up' do
before do
migrate!
end
describe 'INSERT trigger' do
it 'sets `type_new` to the transformed `type` class name' do
namespaced_integrations.each do |type|
integration = integrations.create!(type: "#{type}Service")
expect(integration.reload).to have_attributes(
type: "#{type}Service",
type_new: "Integrations::#{type}"
)
end
end
it 'ignores types that are not namespaced' do
# We don't actually have any integrations without namespaces,
# but we can abuse one of the integration base classes.
integration = integrations.create!(type: 'BaseIssueTracker')
expect(integration.reload).to have_attributes(
type: 'BaseIssueTracker',
type_new: nil
)
end
it 'ignores types that are unknown' do
integration = integrations.create!(type: 'FooBar')
expect(integration.reload).to have_attributes(
type: 'FooBar',
type_new: nil
)
end
end
end
describe '#down' do
before do
migration.up
migration.down
end
it 'drops the INSERT trigger' do
integration = integrations.create!(type: 'JiraService')
expect(integration.reload).to have_attributes(
type: 'JiraService',
type_new: nil
)
end
end
end