Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/models/integration_spec.rb')
-rw-r--r--spec/models/integration_spec.rb55
1 files changed, 41 insertions, 14 deletions
diff --git a/spec/models/integration_spec.rb b/spec/models/integration_spec.rb
index baa3443b4c5..4938e1797af 100644
--- a/spec/models/integration_spec.rb
+++ b/spec/models/integration_spec.rb
@@ -15,6 +15,23 @@ RSpec.describe Integration do
it { is_expected.to have_one(:jira_tracker_data).autosave(true).inverse_of(:integration).with_foreign_key(:integration_id).class_name('Integrations::JiraTrackerData') }
end
+ describe 'default values' do
+ it { is_expected.to be_alert_events }
+ it { is_expected.to be_commit_events }
+ it { is_expected.to be_confidential_issues_events }
+ it { is_expected.to be_confidential_note_events }
+ it { is_expected.to be_issues_events }
+ it { is_expected.to be_job_events }
+ it { is_expected.to be_merge_requests_events }
+ it { is_expected.to be_note_events }
+ it { is_expected.to be_pipeline_events }
+ it { is_expected.to be_push_events }
+ it { is_expected.to be_tag_push_events }
+ it { is_expected.to be_wiki_page_events }
+ it { is_expected.not_to be_active }
+ it { expect(subject.category).to eq(:common) }
+ end
+
describe 'validations' do
it { is_expected.to validate_presence_of(:type) }
it { is_expected.to validate_exclusion_of(:type).in_array(described_class::BASE_CLASSES) }
@@ -60,10 +77,10 @@ RSpec.describe Integration do
describe 'Scopes' do
describe '.third_party_wikis' do
- let!(:integration1) { create(:jira_integration) }
- let!(:integration2) { create(:redmine_integration) }
- let!(:integration3) { create(:confluence_integration) }
- let!(:integration4) { create(:shimo_integration) }
+ let!(:integration1) { create(:jira_integration, project: project) }
+ let!(:integration2) { create(:redmine_integration, project: project) }
+ let!(:integration3) { create(:confluence_integration, project: project) }
+ let!(:integration4) { create(:shimo_integration, project: project) }
it 'returns the right group integration' do
expect(described_class.third_party_wikis).to contain_exactly(integration3, integration4)
@@ -89,7 +106,7 @@ RSpec.describe Integration do
end
describe '.by_type' do
- let!(:integration1) { create(:jira_integration) }
+ let!(:integration1) { create(:jira_integration, project: project) }
let!(:integration2) { create(:jira_integration) }
let!(:integration3) { create(:redmine_integration) }
@@ -110,7 +127,7 @@ RSpec.describe Integration do
describe '.for_group' do
let!(:integration1) { create(:jira_integration, project_id: nil, group_id: group.id) }
- let!(:integration2) { create(:jira_integration) }
+ let!(:integration2) { create(:jira_integration, project: project) }
it 'returns the right group integration' do
expect(described_class.for_group(group)).to contain_exactly(integration1)
@@ -217,9 +234,19 @@ RSpec.describe Integration do
end
end
+ describe '#chat?' do
+ it 'is true when integration is chat integration' do
+ expect(build(:mattermost_integration).chat?).to eq(true)
+ end
+
+ it 'is false when integration is not chat integration' do
+ expect(build(:integration).chat?).to eq(false)
+ end
+ end
+
describe '.find_or_initialize_non_project_specific_integration' do
let!(:integration_1) { create(:jira_integration, project_id: nil, group_id: group.id) }
- let!(:integration_2) { create(:jira_integration) }
+ let!(:integration_2) { create(:jira_integration, project: project) }
it 'returns the right integration' do
expect(Integration.find_or_initialize_non_project_specific_integration('jira', group_id: group))
@@ -374,7 +401,7 @@ RSpec.describe Integration do
context 'when data is stored in properties' do
let(:properties) { data_params }
let!(:integration) do
- create(:jira_integration, :without_properties_callback, properties: properties.merge(additional: 'something'))
+ create(:jira_integration, :without_properties_callback, project: project, properties: properties.merge(additional: 'something'))
end
it_behaves_like 'integration creation from an integration'
@@ -382,7 +409,7 @@ RSpec.describe Integration do
context 'when data are stored in separated fields' do
let(:integration) do
- create(:jira_integration, data_params.merge(properties: {}))
+ create(:jira_integration, data_params.merge(properties: {}, project: project))
end
it_behaves_like 'integration creation from an integration'
@@ -391,7 +418,7 @@ RSpec.describe Integration do
context 'when data are stored in both properties and separated fields' do
let(:properties) { data_params }
let(:integration) do
- create(:jira_integration, :without_properties_callback, active: true, properties: properties).tap do |integration|
+ create(:jira_integration, :without_properties_callback, project: project, active: true, properties: properties).tap do |integration|
create(:jira_tracker_data, data_params.merge(integration: integration))
end
end
@@ -1233,11 +1260,11 @@ RSpec.describe Integration do
describe '#attributes' do
it 'does not include properties' do
- expect(create(:integration).attributes).not_to have_key('properties')
+ expect(build(:integration, project: project).attributes).not_to have_key('properties')
end
it 'can be used in assign_attributes without nullifying properties' do
- record = create(:integration, :instance, properties: { url: generate(:url) })
+ record = build(:integration, :instance, properties: { url: generate(:url) })
attrs = record.attributes
@@ -1246,7 +1273,7 @@ RSpec.describe Integration do
end
describe '#dup' do
- let(:original) { create(:integration, properties: { one: 1, two: 2, three: 3 }) }
+ let(:original) { build(:integration, project: project, properties: { one: 1, two: 2, three: 3 }) }
it 'results in distinct ciphertexts, but identical properties' do
copy = original.dup
@@ -1259,7 +1286,7 @@ RSpec.describe Integration do
end
context 'when the model supports data-fields' do
- let(:original) { create(:jira_integration, username: generate(:username), url: generate(:url)) }
+ let(:original) { build(:jira_integration, project: project, username: generate(:username), url: generate(:url)) }
it 'creates distinct but identical data-fields' do
copy = original.dup