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/customer_relations/contact_spec.rb')
-rw-r--r--spec/models/customer_relations/contact_spec.rb55
1 files changed, 11 insertions, 44 deletions
diff --git a/spec/models/customer_relations/contact_spec.rb b/spec/models/customer_relations/contact_spec.rb
index c7b0f1bd3d4..18896962261 100644
--- a/spec/models/customer_relations/contact_spec.rb
+++ b/spec/models/customer_relations/contact_spec.rb
@@ -3,6 +3,8 @@
require 'spec_helper'
RSpec.describe CustomerRelations::Contact, type: :model do
+ let_it_be(:group) { create(:group) }
+
describe 'associations' do
it { is_expected.to belong_to(:group) }
it { is_expected.to belong_to(:organization).optional }
@@ -23,6 +25,8 @@ RSpec.describe CustomerRelations::Contact, type: :model do
it { is_expected.to validate_length_of(:email).is_at_most(255) }
it { is_expected.to validate_length_of(:description).is_at_most(1024) }
+ it { is_expected.to validate_uniqueness_of(:email).scoped_to(:group_id) }
+
it_behaves_like 'an object with RFC3696 compliant email-formatted attributes', :email
end
@@ -38,33 +42,15 @@ RSpec.describe CustomerRelations::Contact, type: :model do
it { expect(described_class.reference_postfix).to eq(']') }
end
- describe '#unique_email_for_group_hierarchy' do
- let_it_be(:parent) { create(:group) }
- let_it_be(:group) { create(:group, parent: parent) }
- let_it_be(:subgroup) { create(:group, parent: group) }
-
- let_it_be(:existing_contact) { create(:contact, group: group) }
-
- context 'with unique email for group hierarchy' do
+ describe '#root_group' do
+ context 'when root group' do
subject { build(:contact, group: group) }
it { is_expected.to be_valid }
end
- context 'with duplicate email in group' do
- subject { build(:contact, email: existing_contact.email, group: group) }
-
- it { is_expected.to be_invalid }
- end
-
- context 'with duplicate email in parent group' do
- subject { build(:contact, email: existing_contact.email, group: subgroup) }
-
- it { is_expected.to be_invalid }
- end
-
- context 'with duplicate email in subgroup' do
- subject { build(:contact, email: existing_contact.email, group: parent) }
+ context 'when subgroup' do
+ subject { build(:contact, group: create(:group, parent: group)) }
it { is_expected.to be_invalid }
end
@@ -82,7 +68,6 @@ RSpec.describe CustomerRelations::Contact, type: :model do
end
describe '#self.find_ids_by_emails' do
- let_it_be(:group) { create(:group) }
let_it_be(:group_contacts) { create_list(:contact, 2, group: group) }
let_it_be(:other_contacts) { create_list(:contact, 2) }
@@ -92,13 +77,6 @@ RSpec.describe CustomerRelations::Contact, type: :model do
expect(contact_ids).to match_array(group_contacts.pluck(:id))
end
- it 'returns ids of contacts from parent group' do
- subgroup = create(:group, parent: group)
- contact_ids = described_class.find_ids_by_emails(subgroup, group_contacts.pluck(:email))
-
- expect(contact_ids).to match_array(group_contacts.pluck(:id))
- end
-
it 'does not return ids of contacts from other groups' do
contact_ids = described_class.find_ids_by_emails(group, other_contacts.pluck(:email))
@@ -112,28 +90,17 @@ RSpec.describe CustomerRelations::Contact, type: :model do
end
describe '#self.exists_for_group?' do
- let(:group) { create(:group) }
- let(:subgroup) { create(:group, parent: group) }
-
- context 'with no contacts in group or parent' do
+ context 'with no contacts in group' do
it 'returns false' do
- expect(described_class.exists_for_group?(subgroup)).to be_falsey
+ expect(described_class.exists_for_group?(group)).to be_falsey
end
end
context 'with contacts in group' do
it 'returns true' do
- create(:contact, group: subgroup)
-
- expect(described_class.exists_for_group?(subgroup)).to be_truthy
- end
- end
-
- context 'with contacts in parent' do
- it 'returns true' do
create(:contact, group: group)
- expect(described_class.exists_for_group?(subgroup)).to be_truthy
+ expect(described_class.exists_for_group?(group)).to be_truthy
end
end
end