diff --git a/app/models/integrations/instance/apple_app_store.rb b/app/models/integrations/instance/apple_app_store.rb new file mode 100644 index 0000000000000000000000000000000000000000..4737e60d0f759f72290b77af659428459de9237a --- /dev/null +++ b/app/models/integrations/instance/apple_app_store.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module Integrations + module Instance + class AppleAppStore < ::Integrations::AppleAppStore + include InstanceIntegration + end + end +end diff --git a/app/models/integrations/instance/asana.rb b/app/models/integrations/instance/asana.rb new file mode 100644 index 0000000000000000000000000000000000000000..e893717e9bb5e1b3d0d821e74f8f924a902d65a7 --- /dev/null +++ b/app/models/integrations/instance/asana.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module Integrations + module Instance + class Asana < ::Integrations::Asana + include InstanceIntegration + end + end +end diff --git a/app/models/integrations/instance/assembla.rb b/app/models/integrations/instance/assembla.rb new file mode 100644 index 0000000000000000000000000000000000000000..324c38d444025859dfa8ba68617dab4e029ec397 --- /dev/null +++ b/app/models/integrations/instance/assembla.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module Integrations + module Instance + class Assembla < ::Integrations::Assembla + include InstanceIntegration + end + end +end diff --git a/app/models/integrations/instance/bamboo.rb b/app/models/integrations/instance/bamboo.rb new file mode 100644 index 0000000000000000000000000000000000000000..24670d711503abffdadddf10a48ada482399bdf2 --- /dev/null +++ b/app/models/integrations/instance/bamboo.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module Integrations + module Instance + class Bamboo < ::Integrations::Bamboo + include InstanceIntegration + end + end +end diff --git a/app/models/integrations/instance/beyond_identity.rb b/app/models/integrations/instance/beyond_identity.rb new file mode 100644 index 0000000000000000000000000000000000000000..42adcb834487dc3e1eef527667036ccd055e23f9 --- /dev/null +++ b/app/models/integrations/instance/beyond_identity.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module Integrations + module Instance + class BeyondIdentity < ::Integrations::BeyondIdentity + include InstanceIntegration + end + end +end diff --git a/app/models/integrations/instance/bugzilla.rb b/app/models/integrations/instance/bugzilla.rb new file mode 100644 index 0000000000000000000000000000000000000000..7acd22b9639ab48934a029a99cd9dc342fc21223 --- /dev/null +++ b/app/models/integrations/instance/bugzilla.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module Integrations + module Instance + class Bugzilla < ::Integrations::Bugzilla + include InstanceIntegration + end + end +end diff --git a/app/models/integrations/instance/buildkite.rb b/app/models/integrations/instance/buildkite.rb new file mode 100644 index 0000000000000000000000000000000000000000..fd1aad99902eda2becfdcefee0130682db6d3695 --- /dev/null +++ b/app/models/integrations/instance/buildkite.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module Integrations + module Instance + class Buildkite < ::Integrations::Buildkite + include InstanceIntegration + end + end +end diff --git a/app/models/integrations/instance/campfire.rb b/app/models/integrations/instance/campfire.rb new file mode 100644 index 0000000000000000000000000000000000000000..f731998f4c67bc9029e0bee88c4eff1b80f116f5 --- /dev/null +++ b/app/models/integrations/instance/campfire.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module Integrations + module Instance + class Campfire < ::Integrations::Campfire + include InstanceIntegration + end + end +end diff --git a/app/models/integrations/instance/clickup.rb b/app/models/integrations/instance/clickup.rb new file mode 100644 index 0000000000000000000000000000000000000000..5f770b08c556df64513ec44dad51f1b30876d285 --- /dev/null +++ b/app/models/integrations/instance/clickup.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module Integrations + module Instance + class Clickup < ::Integrations::Clickup + include InstanceIntegration + end + end +end diff --git a/app/models/integrations/instance/confluence.rb b/app/models/integrations/instance/confluence.rb new file mode 100644 index 0000000000000000000000000000000000000000..b042c2aa0be87573d725064285e80bf2fe558d43 --- /dev/null +++ b/app/models/integrations/instance/confluence.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module Integrations + module Instance + class Confluence < ::Integrations::Confluence + include InstanceIntegration + end + end +end diff --git a/app/models/integrations/instance/custom_issue_tracker.rb b/app/models/integrations/instance/custom_issue_tracker.rb new file mode 100644 index 0000000000000000000000000000000000000000..eed95c89b216be4937d70fd64583ee445353d623 --- /dev/null +++ b/app/models/integrations/instance/custom_issue_tracker.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module Integrations + module Instance + class CustomIssueTracker < ::Integrations::CustomIssueTracker + include InstanceIntegration + end + end +end diff --git a/app/models/integrations/instance/datadog.rb b/app/models/integrations/instance/datadog.rb new file mode 100644 index 0000000000000000000000000000000000000000..52ad4f2f200ab6339be1daa94e3d3c73e4319196 --- /dev/null +++ b/app/models/integrations/instance/datadog.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module Integrations + module Instance + class Datadog < ::Integrations::Datadog + include InstanceIntegration + end + end +end diff --git a/app/models/integrations/instance/diffblue_cover.rb b/app/models/integrations/instance/diffblue_cover.rb new file mode 100644 index 0000000000000000000000000000000000000000..4167180805852506deae47ebcf29554187e61d31 --- /dev/null +++ b/app/models/integrations/instance/diffblue_cover.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module Integrations + module Instance + class DiffblueCover < ::Integrations::DiffblueCover + include InstanceIntegration + end + end +end diff --git a/app/models/integrations/instance/discord.rb b/app/models/integrations/instance/discord.rb new file mode 100644 index 0000000000000000000000000000000000000000..4a71720f9d892d619ded7f44ba1b1a20e8579652 --- /dev/null +++ b/app/models/integrations/instance/discord.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module Integrations + module Instance + class Discord < ::Integrations::Discord + include InstanceIntegration + end + end +end diff --git a/app/models/integrations/instance/drone_ci.rb b/app/models/integrations/instance/drone_ci.rb new file mode 100644 index 0000000000000000000000000000000000000000..86d9c458ceef2e2c98196f8f2bf3fc2b4e6eb9dc --- /dev/null +++ b/app/models/integrations/instance/drone_ci.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module Integrations + module Instance + class DroneCi < ::Integrations::DroneCi + include InstanceIntegration + end + end +end diff --git a/app/models/integrations/instance/emails_on_push.rb b/app/models/integrations/instance/emails_on_push.rb new file mode 100644 index 0000000000000000000000000000000000000000..d7a2791c8a162fa7480ee7f417457f000ba7745a --- /dev/null +++ b/app/models/integrations/instance/emails_on_push.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module Integrations + module Instance + class EmailsOnPush < ::Integrations::EmailsOnPush + include InstanceIntegration + end + end +end diff --git a/app/models/integrations/instance/ewm.rb b/app/models/integrations/instance/ewm.rb new file mode 100644 index 0000000000000000000000000000000000000000..b0ab7a690f266376b03d092f62d228f8d8f77c2f --- /dev/null +++ b/app/models/integrations/instance/ewm.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module Integrations + module Instance + class Ewm < ::Integrations::Ewm + include InstanceIntegration + end + end +end diff --git a/app/models/integrations/instance/external_wiki.rb b/app/models/integrations/instance/external_wiki.rb new file mode 100644 index 0000000000000000000000000000000000000000..d800c81e22ea86b67930b6e98ac5ef8fba063cda --- /dev/null +++ b/app/models/integrations/instance/external_wiki.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module Integrations + module Instance + class ExternalWiki < ::Integrations::ExternalWiki + include InstanceIntegration + end + end +end diff --git a/app/models/integrations/instance/gitlab_slack_application.rb b/app/models/integrations/instance/gitlab_slack_application.rb new file mode 100644 index 0000000000000000000000000000000000000000..585d8feac4f93eb0e34fbcc9d197f83a4725150e --- /dev/null +++ b/app/models/integrations/instance/gitlab_slack_application.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module Integrations + module Instance + class GitlabSlackApplication < ::Integrations::GitlabSlackApplication + include InstanceIntegration + end + end +end diff --git a/app/models/integrations/instance/google_play.rb b/app/models/integrations/instance/google_play.rb new file mode 100644 index 0000000000000000000000000000000000000000..b14c98f8e4237739b1d47e746bce690752ba0122 --- /dev/null +++ b/app/models/integrations/instance/google_play.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module Integrations + module Instance + class GooglePlay < ::Integrations::GooglePlay + include InstanceIntegration + end + end +end diff --git a/app/models/integrations/instance/hangouts_chat.rb b/app/models/integrations/instance/hangouts_chat.rb new file mode 100644 index 0000000000000000000000000000000000000000..9c378d180f8862230daadf44165ec06e414a32b1 --- /dev/null +++ b/app/models/integrations/instance/hangouts_chat.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module Integrations + module Instance + class HangoutsChat < ::Integrations::HangoutsChat + include InstanceIntegration + end + end +end diff --git a/app/models/integrations/instance/harbor.rb b/app/models/integrations/instance/harbor.rb new file mode 100644 index 0000000000000000000000000000000000000000..0706a93ba3d20383040a3cf3b099438ae80d2714 --- /dev/null +++ b/app/models/integrations/instance/harbor.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module Integrations + module Instance + class Harbor < ::Integrations::Harbor + include InstanceIntegration + end + end +end diff --git a/app/models/integrations/instance/irker.rb b/app/models/integrations/instance/irker.rb new file mode 100644 index 0000000000000000000000000000000000000000..86467af7da90c7ba803bd3bb48dade2fcbaa7010 --- /dev/null +++ b/app/models/integrations/instance/irker.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module Integrations + module Instance + class Irker < ::Integrations::Irker + include InstanceIntegration + end + end +end diff --git a/app/models/integrations/instance/jenkins.rb b/app/models/integrations/instance/jenkins.rb new file mode 100644 index 0000000000000000000000000000000000000000..e788f0368407e38bfe8caf60152875358593e38b --- /dev/null +++ b/app/models/integrations/instance/jenkins.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module Integrations + module Instance + class Jenkins < ::Integrations::Jenkins + include InstanceIntegration + end + end +end diff --git a/app/models/integrations/instance/jira.rb b/app/models/integrations/instance/jira.rb new file mode 100644 index 0000000000000000000000000000000000000000..522dedb051361cc04a3c583e8e302ed802ab668d --- /dev/null +++ b/app/models/integrations/instance/jira.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module Integrations + module Instance + class Jira < ::Integrations::Jira + include InstanceIntegration + end + end +end diff --git a/app/models/integrations/instance/jira_cloud_app.rb b/app/models/integrations/instance/jira_cloud_app.rb new file mode 100644 index 0000000000000000000000000000000000000000..99a572a0227f39690fbff20baed39c225c99ad20 --- /dev/null +++ b/app/models/integrations/instance/jira_cloud_app.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module Integrations + module Instance + class JiraCloudApp < ::Integrations::JiraCloudApp + include InstanceIntegration + end + end +end diff --git a/app/models/integrations/instance/matrix.rb b/app/models/integrations/instance/matrix.rb new file mode 100644 index 0000000000000000000000000000000000000000..3420a5c74916a035474b1a7e8bc1d04646b1aaa5 --- /dev/null +++ b/app/models/integrations/instance/matrix.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module Integrations + module Instance + class Matrix < ::Integrations::Matrix + include InstanceIntegration + end + end +end diff --git a/app/models/integrations/instance/mattermost.rb b/app/models/integrations/instance/mattermost.rb new file mode 100644 index 0000000000000000000000000000000000000000..e59e5cd1d695467dcc5b3c8a416bed9122f568eb --- /dev/null +++ b/app/models/integrations/instance/mattermost.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module Integrations + module Instance + class Mattermost < ::Integrations::Mattermost + include InstanceIntegration + end + end +end diff --git a/app/models/integrations/instance/mattermost_slash_commands.rb b/app/models/integrations/instance/mattermost_slash_commands.rb new file mode 100644 index 0000000000000000000000000000000000000000..6cee12ba8b65d31aec22030392d193188823320c --- /dev/null +++ b/app/models/integrations/instance/mattermost_slash_commands.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module Integrations + module Instance + class MattermostSlashCommands < ::Integrations::MattermostSlashCommands + include InstanceIntegration + end + end +end diff --git a/app/models/integrations/instance/microsoft_teams.rb b/app/models/integrations/instance/microsoft_teams.rb new file mode 100644 index 0000000000000000000000000000000000000000..e2a3e081649201cfa24aa62f4c039acd2943ecae --- /dev/null +++ b/app/models/integrations/instance/microsoft_teams.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module Integrations + module Instance + class MicrosoftTeams < ::Integrations::MicrosoftTeams + include InstanceIntegration + end + end +end diff --git a/app/models/integrations/instance/mock_ci.rb b/app/models/integrations/instance/mock_ci.rb new file mode 100644 index 0000000000000000000000000000000000000000..11df9d22e991e72325ca630016282d2fb9fed425 --- /dev/null +++ b/app/models/integrations/instance/mock_ci.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module Integrations + module Instance + class MockCi < ::Integrations::MockCi + include InstanceIntegration + end + end +end diff --git a/app/models/integrations/instance/mock_monitoring.rb b/app/models/integrations/instance/mock_monitoring.rb new file mode 100644 index 0000000000000000000000000000000000000000..8d8cd05a5e93a65bac914bc360073f81433a8069 --- /dev/null +++ b/app/models/integrations/instance/mock_monitoring.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module Integrations + module Instance + class MockMonitoring < ::Integrations::MockMonitoring + include InstanceIntegration + end + end +end diff --git a/app/models/integrations/instance/packagist.rb b/app/models/integrations/instance/packagist.rb new file mode 100644 index 0000000000000000000000000000000000000000..18c7c5a687edc55e14ad5cedb70b775dbe2e74a8 --- /dev/null +++ b/app/models/integrations/instance/packagist.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module Integrations + module Instance + class Packagist < ::Integrations::Packagist + include InstanceIntegration + end + end +end diff --git a/app/models/integrations/instance/phorge.rb b/app/models/integrations/instance/phorge.rb new file mode 100644 index 0000000000000000000000000000000000000000..bec59159b836fd3b9192cc1c832da50946c0df21 --- /dev/null +++ b/app/models/integrations/instance/phorge.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module Integrations + module Instance + class Phorge < ::Integrations::Phorge + include InstanceIntegration + end + end +end diff --git a/app/models/integrations/instance/pipelines_email.rb b/app/models/integrations/instance/pipelines_email.rb new file mode 100644 index 0000000000000000000000000000000000000000..cfba7cc3d9f9fa30ce72f4d0d8fb3ab2a1d30be7 --- /dev/null +++ b/app/models/integrations/instance/pipelines_email.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module Integrations + module Instance + class PipelinesEmail < ::Integrations::PipelinesEmail + include InstanceIntegration + end + end +end diff --git a/app/models/integrations/instance/pivotaltracker.rb b/app/models/integrations/instance/pivotaltracker.rb new file mode 100644 index 0000000000000000000000000000000000000000..af2440cfb29010a530e2404ed505c15144ebb368 --- /dev/null +++ b/app/models/integrations/instance/pivotaltracker.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module Integrations + module Instance + class Pivotaltracker < ::Integrations::Pivotaltracker + include InstanceIntegration + end + end +end diff --git a/app/models/integrations/instance/prometheus.rb b/app/models/integrations/instance/prometheus.rb new file mode 100644 index 0000000000000000000000000000000000000000..0e76091909c2c3d5a1fd2bcff53e1db7e6f2d4ec --- /dev/null +++ b/app/models/integrations/instance/prometheus.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module Integrations + module Instance + class Prometheus < ::Integrations::Prometheus + include InstanceIntegration + end + end +end diff --git a/app/models/integrations/instance/pumble.rb b/app/models/integrations/instance/pumble.rb new file mode 100644 index 0000000000000000000000000000000000000000..cfcee4963d0e041758498549ac976d37d548d9b5 --- /dev/null +++ b/app/models/integrations/instance/pumble.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module Integrations + module Instance + class Pumble < ::Integrations::Pumble + include InstanceIntegration + end + end +end diff --git a/app/models/integrations/instance/pushover.rb b/app/models/integrations/instance/pushover.rb new file mode 100644 index 0000000000000000000000000000000000000000..0e7d1f1d727889ad4988c87019403021c8710e6d --- /dev/null +++ b/app/models/integrations/instance/pushover.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module Integrations + module Instance + class Pushover < ::Integrations::Pushover + include InstanceIntegration + end + end +end diff --git a/app/models/integrations/instance/redmine.rb b/app/models/integrations/instance/redmine.rb new file mode 100644 index 0000000000000000000000000000000000000000..e08c6faaf7e9f47f1a16bb8d599ca5e808a6a4d4 --- /dev/null +++ b/app/models/integrations/instance/redmine.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module Integrations + module Instance + class Redmine < ::Integrations::Redmine + include InstanceIntegration + end + end +end diff --git a/app/models/integrations/instance/slack.rb b/app/models/integrations/instance/slack.rb new file mode 100644 index 0000000000000000000000000000000000000000..a737b11d7edfbb1cca6074d25b4589921e4f2ab9 --- /dev/null +++ b/app/models/integrations/instance/slack.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module Integrations + module Instance + class Slack < ::Integrations::Slack + include InstanceIntegration + end + end +end diff --git a/app/models/integrations/instance/slack_slash_commands.rb b/app/models/integrations/instance/slack_slash_commands.rb new file mode 100644 index 0000000000000000000000000000000000000000..8066c4b1e481865bdd715ac2043a4ec4d4701a02 --- /dev/null +++ b/app/models/integrations/instance/slack_slash_commands.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module Integrations + module Instance + class SlackSlashCommands < ::Integrations::SlackSlashCommands + include InstanceIntegration + end + end +end diff --git a/app/models/integrations/instance/squash_tm.rb b/app/models/integrations/instance/squash_tm.rb new file mode 100644 index 0000000000000000000000000000000000000000..413018baaa59e2ede22d495c916dd662bed784bb --- /dev/null +++ b/app/models/integrations/instance/squash_tm.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module Integrations + module Instance + class SquashTm < ::Integrations::SquashTm + include InstanceIntegration + end + end +end diff --git a/app/models/integrations/instance/teamcity.rb b/app/models/integrations/instance/teamcity.rb new file mode 100644 index 0000000000000000000000000000000000000000..d3a7fc159e2fba0295a42037b5e9150b0c7787ea --- /dev/null +++ b/app/models/integrations/instance/teamcity.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module Integrations + module Instance + class Teamcity < ::Integrations::Teamcity + include InstanceIntegration + end + end +end diff --git a/app/models/integrations/instance/telegram.rb b/app/models/integrations/instance/telegram.rb new file mode 100644 index 0000000000000000000000000000000000000000..58cd5139d8df6022db270e6dd837a6d1a3a9a8a5 --- /dev/null +++ b/app/models/integrations/instance/telegram.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module Integrations + module Instance + class Telegram < ::Integrations::Telegram + include InstanceIntegration + end + end +end diff --git a/app/models/integrations/instance/unify_circuit.rb b/app/models/integrations/instance/unify_circuit.rb new file mode 100644 index 0000000000000000000000000000000000000000..7c6cc25a8fbe5095fc2d5861fa5702a6a9e26b6c --- /dev/null +++ b/app/models/integrations/instance/unify_circuit.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module Integrations + module Instance + class UnifyCircuit < ::Integrations::UnifyCircuit + include InstanceIntegration + end + end +end diff --git a/app/models/integrations/instance/webex_teams.rb b/app/models/integrations/instance/webex_teams.rb new file mode 100644 index 0000000000000000000000000000000000000000..ffe4012f439890522b65a1d42dc201d727dc5864 --- /dev/null +++ b/app/models/integrations/instance/webex_teams.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module Integrations + module Instance + class WebexTeams < ::Integrations::WebexTeams + include InstanceIntegration + end + end +end diff --git a/app/models/integrations/instance/youtrack.rb b/app/models/integrations/instance/youtrack.rb new file mode 100644 index 0000000000000000000000000000000000000000..641b832fe6efa3fe2eba9dab04466be1c31ae4c7 --- /dev/null +++ b/app/models/integrations/instance/youtrack.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module Integrations + module Instance + class Youtrack < ::Integrations::Youtrack + include InstanceIntegration + end + end +end diff --git a/app/models/integrations/instance/zentao.rb b/app/models/integrations/instance/zentao.rb new file mode 100644 index 0000000000000000000000000000000000000000..f0bb0de6056160c2fff3bcbdbbdfba4ca38d8ac3 --- /dev/null +++ b/app/models/integrations/instance/zentao.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module Integrations + module Instance + class Zentao < ::Integrations::Zentao + include InstanceIntegration + end + end +end diff --git a/app/models/integrations/instance_integration.rb b/app/models/integrations/instance_integration.rb index 9fc52fb570808eda0365880cde76c3dcd8dc82d0..b201e2c0a8087bd5a329de41b307adc92505f614 100644 --- a/app/models/integrations/instance_integration.rb +++ b/app/models/integrations/instance_integration.rb @@ -1,7 +1,27 @@ # frozen_string_literal: true module Integrations - class InstanceIntegration < Integration - self.table_name = 'instance_integrations' + module InstanceIntegration + extend ActiveSupport::Concern + + included do + self.table_name = 'instance_integrations' + + def instance_level? + true + end + + def group_level? + false + end + + def project_level? + false + end + + def self.fields + superclass.fields + end + end end end diff --git a/db/docs/instance_integrations.yml b/db/docs/instance_integrations.yml index b799f7a5a5b21a79c78522993f8a29cfab06fa0f..62b4ec1d40557ede6b7178c306b6224580240cee 100644 --- a/db/docs/instance_integrations.yml +++ b/db/docs/instance_integrations.yml @@ -1,7 +1,55 @@ --- table_name: instance_integrations classes: -- Integrations::InstanceIntegration +- Integrations::Instance::AppleAppStore +- Integrations::Instance::Asana +- Integrations::Instance::Assembla +- Integrations::Instance::Bamboo +- Integrations::Instance::BeyondIdentity +- Integrations::Instance::Bugzilla +- Integrations::Instance::Buildkite +- Integrations::Instance::Campfire +- Integrations::Instance::Clickup +- Integrations::Instance::Confluence +- Integrations::Instance::CustomIssueTracker +- Integrations::Instance::Datadog +- Integrations::Instance::DiffblueCover +- Integrations::Instance::Discord +- Integrations::Instance::DroneCi +- Integrations::Instance::EmailsOnPush +- Integrations::Instance::Ewm +- Integrations::Instance::ExternalWiki +- Integrations::Instance::GitlabSlackApplication +- Integrations::Instance::GooglePlay +- Integrations::Instance::HangoutsChat +- Integrations::Instance::Harbor +- Integrations::Instance::Irker +- Integrations::Instance::Jenkins +- Integrations::Instance::Jira +- Integrations::Instance::JiraCloudApp +- Integrations::Instance::Matrix +- Integrations::Instance::Mattermost +- Integrations::Instance::MattermostSlashCommands +- Integrations::Instance::MicrosoftTeams +- Integrations::Instance::MockCi +- Integrations::Instance::MockMonitoring +- Integrations::Instance::Packagist +- Integrations::Instance::Phorge +- Integrations::Instance::PipelinesEmail +- Integrations::Instance::Pivotaltracker +- Integrations::Instance::Prometheus +- Integrations::Instance::Pumble +- Integrations::Instance::Pushover +- Integrations::Instance::Redmine +- Integrations::Instance::Slack +- Integrations::Instance::SlackSlashCommands +- Integrations::Instance::SquashTm +- Integrations::Instance::Teamcity +- Integrations::Instance::Telegram +- Integrations::Instance::UnifyCircuit +- Integrations::Instance::WebexTeams +- Integrations::Instance::Youtrack +- Integrations::Instance::Zentao feature_categories: - integrations description: Support 3rd party instance-wide integrations diff --git a/db/migrate/20241011103239_update_instance_integration_table.rb b/db/migrate/20241011103239_update_instance_integration_table.rb new file mode 100644 index 0000000000000000000000000000000000000000..563d6044dc074932476859d48aed1237524982de --- /dev/null +++ b/db/migrate/20241011103239_update_instance_integration_table.rb @@ -0,0 +1,30 @@ +# frozen_string_literal: true + +class UpdateInstanceIntegrationTable < Gitlab::Database::Migration[2.2] + milestone '17.5' + + disable_ddl_transaction! + + def up + add_column :instance_integrations, :project_id, :bigint, null: true + add_column :instance_integrations, :group_id, :bigint, null: true + add_column :instance_integrations, :inherit_from_id, :bigint, null: true + add_column :instance_integrations, :instance, :boolean, default: true + + rename_column :instance_integrations, :type, :type_new + + add_check_constraint :instance_integrations, 'project_id IS NULL', 'project_id_null_constraint' + add_check_constraint :instance_integrations, 'group_id IS NULL', 'group_id_null_constraint' + add_check_constraint :instance_integrations, 'inherit_from_id IS NULL', 'inherit_from_id_null_constraint' + add_check_constraint :instance_integrations, 'instance = TRUE', 'instance_is_true_constraint' + end + + def down + remove_column :instance_integrations, :project_id, if_exists: true + remove_column :instance_integrations, :group_id, if_exists: true + remove_column :instance_integrations, :inherit_from_id, if_exists: true + remove_column :instance_integrations, :instance, if_exists: true + + rename_column :instance_integrations, :type_new, :type + end +end diff --git a/db/schema_migrations/20241011103239 b/db/schema_migrations/20241011103239 new file mode 100644 index 0000000000000000000000000000000000000000..2eab31553a1835796f8437541271ca7d9c54f0df --- /dev/null +++ b/db/schema_migrations/20241011103239 @@ -0,0 +1 @@ +61bf49e142de2f50e055676aef057439fe846dba7971fc94db0165eb29abb2bb \ No newline at end of file diff --git a/db/structure.sql b/db/structure.sql index e4bac27b1100d923af2c860bbdcf60963bd7c733..322c35e8cddef451fcba7edca13a6390439a5ea3 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -12625,11 +12625,19 @@ CREATE TABLE instance_integrations ( group_mention_events boolean DEFAULT false NOT NULL, group_confidential_mention_events boolean DEFAULT false NOT NULL, category text DEFAULT 'common'::text, - type text, + type_new text, encrypted_properties bytea, encrypted_properties_iv bytea, + project_id bigint, + group_id bigint, + inherit_from_id bigint, + instance boolean DEFAULT true, CONSTRAINT check_611836812c CHECK ((char_length(category) <= 255)), - CONSTRAINT check_69b7b09aa8 CHECK ((char_length(type) <= 255)) + CONSTRAINT check_69b7b09aa8 CHECK ((char_length(type_new) <= 255)), + CONSTRAINT group_id_null_constraint CHECK ((group_id IS NULL)), + CONSTRAINT inherit_from_id_null_constraint CHECK ((inherit_from_id IS NULL)), + CONSTRAINT instance_is_true_constraint CHECK ((instance = true)), + CONSTRAINT project_id_null_constraint CHECK ((project_id IS NULL)) ); CREATE SEQUENCE instance_integrations_id_seq diff --git a/spec/db/schema_spec.rb b/spec/db/schema_spec.rb index 7d1d634521eb7b2543ea74a11f04dbffd11e7d4f..a3b1838f3890f46656ff1f20550b7f8f1cc3738a 100644 --- a/spec/db/schema_spec.rb +++ b/spec/db/schema_spec.rb @@ -218,7 +218,8 @@ ai_testing_terms_acceptances: %w[user_id], # testing terms only have 1 entry, and if the user is deleted the record should remain namespace_settings: %w[early_access_program_joined_by_id], # isn't used inside product itself. Only through Snowflake workspaces_agent_config_versions: %w[item_id], # polymorphic associations - work_item_types: %w[correct_id] # temporary column that is not a foreign key + work_item_types: %w[correct_id], # temporary column that is not a foreign key + instance_integrations: %w[project_id group_id inherit_from_id] # these columns are not used in instance integrations }.with_indifferent_access.freeze context 'for table' do @@ -349,7 +350,8 @@ 'ProjectAutoDevops' => %w[deploy_strategy], 'ResourceLabelEvent' => %w[action], 'User' => %w[layout dashboard project_view], - 'Users::Callout' => %w[feature_name] + 'Users::Callout' => %w[feature_name], + 'Integrations::Instance::Jira' => %w[comment_detail] }.freeze context 'for enums', :eager_load do diff --git a/spec/factories/integrations/instance_integrations.rb b/spec/factories/integrations/instance_integrations.rb deleted file mode 100644 index d70b7ecf889682d955dc7bf9800b7e0860528958..0000000000000000000000000000000000000000 --- a/spec/factories/integrations/instance_integrations.rb +++ /dev/null @@ -1,7 +0,0 @@ -# frozen_string_literal: true - -FactoryBot.define do - factory :instance_integration, class: 'Integrations::InstanceIntegration' do - type { 'Integrations::InstanceIntegration' } - end -end diff --git a/spec/models/integrations/instance/apple_app_store_spec.rb b/spec/models/integrations/instance/apple_app_store_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..d47a0a4fd3859ddd2e85bb6f31bd3e4b19830e92 --- /dev/null +++ b/spec/models/integrations/instance/apple_app_store_spec.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Integrations::Instance::AppleAppStore, feature_category: :integrations do + it_behaves_like 'instance integration' +end diff --git a/spec/models/integrations/instance/asana_spec.rb b/spec/models/integrations/instance/asana_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..5eca63c031716f5a3e2fffa7b394356beb96a20a --- /dev/null +++ b/spec/models/integrations/instance/asana_spec.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Integrations::Instance::Asana, feature_category: :integrations do + it_behaves_like 'instance integration' +end diff --git a/spec/models/integrations/instance/assembla_spec.rb b/spec/models/integrations/instance/assembla_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..0501d55475e6ade4d43e29099b0f80d63adebaf0 --- /dev/null +++ b/spec/models/integrations/instance/assembla_spec.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Integrations::Instance::Assembla, feature_category: :integrations do + it_behaves_like 'instance integration' +end diff --git a/spec/models/integrations/instance/bamboo_spec.rb b/spec/models/integrations/instance/bamboo_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..0a8929ea7f2de29e9db4f0b27089e30ba51498ed --- /dev/null +++ b/spec/models/integrations/instance/bamboo_spec.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Integrations::Instance::Bamboo, feature_category: :integrations do + it_behaves_like 'instance integration' +end diff --git a/spec/models/integrations/instance/beyond_identity_spec.rb b/spec/models/integrations/instance/beyond_identity_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..523695e0c4c41e898185ca5a294b1ed3dfc0ab5a --- /dev/null +++ b/spec/models/integrations/instance/beyond_identity_spec.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Integrations::Instance::BeyondIdentity, feature_category: :integrations do + it_behaves_like 'instance integration' +end diff --git a/spec/models/integrations/instance/bugzilla_spec.rb b/spec/models/integrations/instance/bugzilla_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..c6c97f87a3ca1630b1016f2f7ae4b28e44ddabe2 --- /dev/null +++ b/spec/models/integrations/instance/bugzilla_spec.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Integrations::Instance::Bugzilla, feature_category: :integrations do + it_behaves_like 'instance integration' +end diff --git a/spec/models/integrations/instance/buildkite_spec.rb b/spec/models/integrations/instance/buildkite_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..0509c860fedcd2a9f9d28356cf6e180d364f2838 --- /dev/null +++ b/spec/models/integrations/instance/buildkite_spec.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Integrations::Instance::Buildkite, feature_category: :integrations do + it_behaves_like 'instance integration' +end diff --git a/spec/models/integrations/instance/campfire_spec.rb b/spec/models/integrations/instance/campfire_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..5394835a726d40195b8a91251704d5ba49d6de65 --- /dev/null +++ b/spec/models/integrations/instance/campfire_spec.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Integrations::Instance::Campfire, feature_category: :integrations do + it_behaves_like 'instance integration' +end diff --git a/spec/models/integrations/instance/clickup_spec.rb b/spec/models/integrations/instance/clickup_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..58c64b10728c6438b0481b14e58359e66a703969 --- /dev/null +++ b/spec/models/integrations/instance/clickup_spec.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Integrations::Instance::Clickup, feature_category: :integrations do + it_behaves_like 'instance integration' +end diff --git a/spec/models/integrations/instance/confluence_spec.rb b/spec/models/integrations/instance/confluence_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..86ef082dc5cbd8066f7af85d33ec4c7d87c83108 --- /dev/null +++ b/spec/models/integrations/instance/confluence_spec.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Integrations::Instance::Confluence, feature_category: :integrations do + it_behaves_like 'instance integration' +end diff --git a/spec/models/integrations/instance/custom_issue_tracker_spec.rb b/spec/models/integrations/instance/custom_issue_tracker_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..c5a06ceec181e860636cf480a192ca0e9765d608 --- /dev/null +++ b/spec/models/integrations/instance/custom_issue_tracker_spec.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Integrations::Instance::CustomIssueTracker, feature_category: :integrations do + it_behaves_like 'instance integration' +end diff --git a/spec/models/integrations/instance/datadog_spec.rb b/spec/models/integrations/instance/datadog_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..831a17a2ce8c15a5363a7d452bbcca458d4e9e87 --- /dev/null +++ b/spec/models/integrations/instance/datadog_spec.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Integrations::Instance::Datadog, feature_category: :integrations do + it_behaves_like 'instance integration' +end diff --git a/spec/models/integrations/instance/diffblue_cover_spec.rb b/spec/models/integrations/instance/diffblue_cover_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..d3411bede16402dbb8f74277cce096057a6fa086 --- /dev/null +++ b/spec/models/integrations/instance/diffblue_cover_spec.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Integrations::Instance::DiffblueCover, feature_category: :integrations do + it_behaves_like 'instance integration' +end diff --git a/spec/models/integrations/instance/discord_spec.rb b/spec/models/integrations/instance/discord_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..f89c0d98b449b9b7da7388e8d6e3260d9ddeab48 --- /dev/null +++ b/spec/models/integrations/instance/discord_spec.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Integrations::Instance::Discord, feature_category: :integrations do + it_behaves_like 'instance integration' +end diff --git a/spec/models/integrations/instance/drone_ci_spec.rb b/spec/models/integrations/instance/drone_ci_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..047b5cfd1e839547eb51826312d944a64657e87d --- /dev/null +++ b/spec/models/integrations/instance/drone_ci_spec.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Integrations::Instance::DroneCi, feature_category: :integrations do + it_behaves_like 'instance integration' +end diff --git a/spec/models/integrations/instance/emails_on_push_spec.rb b/spec/models/integrations/instance/emails_on_push_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..8374d7f0d5e213d75e406a78f1390542918d2fc0 --- /dev/null +++ b/spec/models/integrations/instance/emails_on_push_spec.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Integrations::Instance::EmailsOnPush, feature_category: :integrations do + it_behaves_like 'instance integration' +end diff --git a/spec/models/integrations/instance/ewm_spec.rb b/spec/models/integrations/instance/ewm_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..e2f2cc8da693e6b0dd0a1ce705252581bfe6ff61 --- /dev/null +++ b/spec/models/integrations/instance/ewm_spec.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Integrations::Instance::Ewm, feature_category: :integrations do + it_behaves_like 'instance integration' +end diff --git a/spec/models/integrations/instance/external_wiki_spec.rb b/spec/models/integrations/instance/external_wiki_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..aacb455acd926871a822bc5efce8bfa6e1f4f857 --- /dev/null +++ b/spec/models/integrations/instance/external_wiki_spec.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Integrations::Instance::ExternalWiki, feature_category: :integrations do + it_behaves_like 'instance integration' +end diff --git a/spec/models/integrations/instance/gitlab_slack_application_spec.rb b/spec/models/integrations/instance/gitlab_slack_application_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..a7a493ec8acdce9f21227b2f4115d6f3c9857bab --- /dev/null +++ b/spec/models/integrations/instance/gitlab_slack_application_spec.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Integrations::Instance::GitlabSlackApplication, feature_category: :integrations do + it_behaves_like 'instance integration' +end diff --git a/spec/models/integrations/instance/google_play_spec.rb b/spec/models/integrations/instance/google_play_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..2629b10303736ae19706a9cf57858775d995d47a --- /dev/null +++ b/spec/models/integrations/instance/google_play_spec.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Integrations::Instance::GooglePlay, feature_category: :integrations do + it_behaves_like 'instance integration' +end diff --git a/spec/models/integrations/instance/hangouts_chat_spec.rb b/spec/models/integrations/instance/hangouts_chat_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..aceb88f2a5bc96b426489ed44dd32b87a69889c4 --- /dev/null +++ b/spec/models/integrations/instance/hangouts_chat_spec.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Integrations::Instance::HangoutsChat, feature_category: :integrations do + it_behaves_like 'instance integration' +end diff --git a/spec/models/integrations/instance/harbor_spec.rb b/spec/models/integrations/instance/harbor_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..d95bb0af60dd2157add22cabf53f82f4ab4b2ecf --- /dev/null +++ b/spec/models/integrations/instance/harbor_spec.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Integrations::Instance::Harbor, feature_category: :integrations do + it_behaves_like 'instance integration' +end diff --git a/spec/models/integrations/instance/irker_spec.rb b/spec/models/integrations/instance/irker_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..03dcd4bb1b29954cb021b9c640f3e1176eb7d60d --- /dev/null +++ b/spec/models/integrations/instance/irker_spec.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Integrations::Instance::Irker, feature_category: :integrations do + it_behaves_like 'instance integration' +end diff --git a/spec/models/integrations/instance/jenkins_spec.rb b/spec/models/integrations/instance/jenkins_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..d2448e863960312a49c8db19d6ceb52a7fd93e32 --- /dev/null +++ b/spec/models/integrations/instance/jenkins_spec.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Integrations::Instance::Jenkins, feature_category: :integrations do + it_behaves_like 'instance integration' +end diff --git a/spec/models/integrations/instance/jira_cloud_app_spec.rb b/spec/models/integrations/instance/jira_cloud_app_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..cf63ed0b12b96a0c1812001ef3c187dd03c062d4 --- /dev/null +++ b/spec/models/integrations/instance/jira_cloud_app_spec.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Integrations::Instance::JiraCloudApp, feature_category: :integrations do + it_behaves_like 'instance integration' +end diff --git a/spec/models/integrations/instance/matrix_spec.rb b/spec/models/integrations/instance/matrix_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..2a5d06813215fed63ba9e726cdba61547926725c --- /dev/null +++ b/spec/models/integrations/instance/matrix_spec.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Integrations::Instance::Matrix, feature_category: :integrations do + it_behaves_like 'instance integration' +end diff --git a/spec/models/integrations/instance/mattermost_slash_commands_spec.rb b/spec/models/integrations/instance/mattermost_slash_commands_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..a58d9097bc2c7c1f26e5f59a9d9f2d8b91ee3438 --- /dev/null +++ b/spec/models/integrations/instance/mattermost_slash_commands_spec.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Integrations::Instance::MattermostSlashCommands, feature_category: :integrations do + it_behaves_like 'instance integration' +end diff --git a/spec/models/integrations/instance/mattermost_spec.rb b/spec/models/integrations/instance/mattermost_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..b4e8e07f7b3392db8dd3134884eaa202fa6f486e --- /dev/null +++ b/spec/models/integrations/instance/mattermost_spec.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Integrations::Instance::Mattermost, feature_category: :integrations do + it_behaves_like 'instance integration' +end diff --git a/spec/models/integrations/instance/microsoft_teams_spec.rb b/spec/models/integrations/instance/microsoft_teams_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..b3844021ea31d673e6d0adc74edcd896ee9cf50d --- /dev/null +++ b/spec/models/integrations/instance/microsoft_teams_spec.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Integrations::Instance::MicrosoftTeams, feature_category: :integrations do + it_behaves_like 'instance integration' +end diff --git a/spec/models/integrations/instance/mock_ci_spec.rb b/spec/models/integrations/instance/mock_ci_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..6b8299962c706099be0cdf9e12996049dd3be45b --- /dev/null +++ b/spec/models/integrations/instance/mock_ci_spec.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Integrations::Instance::MockCi, feature_category: :integrations do + it_behaves_like 'instance integration' +end diff --git a/spec/models/integrations/instance/mock_monitoring_spec.rb b/spec/models/integrations/instance/mock_monitoring_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..24963c5cdb3209f88b04e9e5650f9113d34f8333 --- /dev/null +++ b/spec/models/integrations/instance/mock_monitoring_spec.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Integrations::Instance::MockMonitoring, feature_category: :integrations do + it_behaves_like 'instance integration' +end diff --git a/spec/models/integrations/instance/packagist_spec.rb b/spec/models/integrations/instance/packagist_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..1c57abd5498bb8b24b01373cd39eb87b2bfd74ce --- /dev/null +++ b/spec/models/integrations/instance/packagist_spec.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Integrations::Instance::Packagist, feature_category: :integrations do + it_behaves_like 'instance integration' +end diff --git a/spec/models/integrations/instance/phorge_spec.rb b/spec/models/integrations/instance/phorge_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..63f9c02ecf4fed248c14f003db13223f2117ff99 --- /dev/null +++ b/spec/models/integrations/instance/phorge_spec.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Integrations::Instance::Phorge, feature_category: :integrations do + it_behaves_like 'instance integration' +end diff --git a/spec/models/integrations/instance/pipelines_email_spec.rb b/spec/models/integrations/instance/pipelines_email_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..ea22a86e9c4abbbd68093b2f378e44dbec9a3188 --- /dev/null +++ b/spec/models/integrations/instance/pipelines_email_spec.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Integrations::Instance::PipelinesEmail, feature_category: :integrations do + it_behaves_like 'instance integration' +end diff --git a/spec/models/integrations/instance/pivotaltracker_spec.rb b/spec/models/integrations/instance/pivotaltracker_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..7c8b25ebc6d880b296e3d2148c8457822dae3536 --- /dev/null +++ b/spec/models/integrations/instance/pivotaltracker_spec.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Integrations::Instance::Pivotaltracker, feature_category: :integrations do + it_behaves_like 'instance integration' +end diff --git a/spec/models/integrations/instance/prometheus_spec.rb b/spec/models/integrations/instance/prometheus_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..a894a15f1c3424b59a1f7ff265bb3e6760b84060 --- /dev/null +++ b/spec/models/integrations/instance/prometheus_spec.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Integrations::Instance::Prometheus, feature_category: :integrations do + it_behaves_like 'instance integration' +end diff --git a/spec/models/integrations/instance/pumble_spec.rb b/spec/models/integrations/instance/pumble_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..67bff5197d1bcb547b570a191944afd944ae3def --- /dev/null +++ b/spec/models/integrations/instance/pumble_spec.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Integrations::Instance::Pumble, feature_category: :integrations do + it_behaves_like 'instance integration' +end diff --git a/spec/models/integrations/instance/pushover_spec.rb b/spec/models/integrations/instance/pushover_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..958cfb8fd1702a846a543923ad1bd96e5636b88e --- /dev/null +++ b/spec/models/integrations/instance/pushover_spec.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Integrations::Instance::Pushover, feature_category: :integrations do + it_behaves_like 'instance integration' +end diff --git a/spec/models/integrations/instance/slack_slash_commands_spec.rb b/spec/models/integrations/instance/slack_slash_commands_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..c0b41ad0e84e88c7449b8f9c5012f2d8b2342f86 --- /dev/null +++ b/spec/models/integrations/instance/slack_slash_commands_spec.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Integrations::Instance::SlackSlashCommands, feature_category: :integrations do + it_behaves_like 'instance integration' +end diff --git a/spec/models/integrations/instance/slack_spec.rb b/spec/models/integrations/instance/slack_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..206899aa86b434bacae303d16d079fe85b5eb0df --- /dev/null +++ b/spec/models/integrations/instance/slack_spec.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Integrations::Instance::Slack, feature_category: :integrations do + it_behaves_like 'instance integration' +end diff --git a/spec/models/integrations/instance/squash_tm_spec.rb b/spec/models/integrations/instance/squash_tm_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..a0dcbd7ec727d62892d907e16a1cde5efb6fd0d9 --- /dev/null +++ b/spec/models/integrations/instance/squash_tm_spec.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Integrations::Instance::SquashTm, feature_category: :integrations do + it_behaves_like 'instance integration' +end diff --git a/spec/models/integrations/instance/teamcity_spec.rb b/spec/models/integrations/instance/teamcity_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..b2c22d8c504b296779e7bcbf5c180f80de29fbd5 --- /dev/null +++ b/spec/models/integrations/instance/teamcity_spec.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Integrations::Instance::Teamcity, feature_category: :integrations do + it_behaves_like 'instance integration' +end diff --git a/spec/models/integrations/instance/telegram_spec.rb b/spec/models/integrations/instance/telegram_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..fd411dcb9ba075d5636fe0ab39fe8eb4b757b9c1 --- /dev/null +++ b/spec/models/integrations/instance/telegram_spec.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Integrations::Instance::Telegram, feature_category: :integrations do + it_behaves_like 'instance integration' +end diff --git a/spec/models/integrations/instance/unify_circuit_spec.rb b/spec/models/integrations/instance/unify_circuit_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..ca5139ae751ed1ef3944f7bc57f46eee996f195b --- /dev/null +++ b/spec/models/integrations/instance/unify_circuit_spec.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Integrations::Instance::UnifyCircuit, feature_category: :integrations do + it_behaves_like 'instance integration' +end diff --git a/spec/models/integrations/instance/webex_teams_spec.rb b/spec/models/integrations/instance/webex_teams_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..c52ad9b6b237ef5a9be68396b710822076c4962b --- /dev/null +++ b/spec/models/integrations/instance/webex_teams_spec.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Integrations::Instance::WebexTeams, feature_category: :integrations do + it_behaves_like 'instance integration' +end diff --git a/spec/models/integrations/instance/youtrack_spec.rb b/spec/models/integrations/instance/youtrack_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..25a7dd65dce5abb1e6199212c08f3fcd0048eb9c --- /dev/null +++ b/spec/models/integrations/instance/youtrack_spec.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Integrations::Instance::Youtrack, feature_category: :integrations do + it_behaves_like 'instance integration' +end diff --git a/spec/support/shared_examples/models/integrations/instance/instance_integration_shared_examples.rb b/spec/support/shared_examples/models/integrations/instance/instance_integration_shared_examples.rb new file mode 100644 index 0000000000000000000000000000000000000000..e98f1dcf9931e21f52aa9914b264ab128386a573 --- /dev/null +++ b/spec/support/shared_examples/models/integrations/instance/instance_integration_shared_examples.rb @@ -0,0 +1,49 @@ +# frozen_string_literal: true + +RSpec.shared_examples 'instance integration' do + let(:instance_integration) { described_class.new } + + it 'successfully persists the record' do + expect { instance_integration.save! }.to change { described_class.count }.by(1) + + expect(instance_integration.instance_level?).to eq(true) + expect(instance_integration.group_level?).to eq(false) + expect(instance_integration.project_level?).to eq(false) + + expect(instance_integration.project_id).to be_nil + expect(instance_integration.group_id).to be_nil + expect(instance_integration.inherit_from_id).to be_nil + end + + describe '.fields' do + it 'returns the fields of the superclass' do + expect(described_class.fields).to eq(described_class.superclass.fields) + end + end + + describe 'null constraints' do + context 'when project_id null constraint is violated' do + it 'raises an error' do + instance_integration.project_id = 1 + + expect { instance_integration.save! }.to raise_error(ActiveRecord::RecordInvalid) + end + end + + context 'when group_id null constraint is violated' do + it 'raises an error' do + instance_integration.group_id = 1 + + expect { instance_integration.save! }.to raise_error(ActiveRecord::RecordInvalid) + end + end + + context 'when inherit_from_id null constraint is violated' do + it 'raises an error' do + instance_integration.inherit_from_id = 1 + + expect { instance_integration.save! }.to raise_error(ActiveRecord::StatementInvalid) + end + end + end +end