Files
gitlab-foss/spec/models/description_version_spec.rb
2025-03-25 06:12:01 +00:00

90 lines
2.5 KiB
Ruby

# frozen_string_literal: true
require 'spec_helper'
RSpec.describe DescriptionVersion do
let_it_be(:group) { create(:group) }
let_it_be(:project) { create(:project, group: group) }
let_it_be(:issue) { create(:issue, project: project) }
let_it_be(:merge_request) { create(:merge_request, source_project: project) }
describe 'associations' do
it { is_expected.to belong_to :issue }
it { is_expected.to belong_to :merge_request }
end
describe 'validations' do
it { is_expected.to validate_presence_of(:namespace) }
describe 'exactly_one_issuable' do
using RSpec::Parameterized::TableSyntax
subject { described_class.new(issue: test_issue, merge_request: test_merge_request).valid? }
where(:test_issue, :test_merge_request, :valid?) do
nil | ref(:merge_request) | true
ref(:issue) | nil | true
nil | nil | false
ref(:issue) | ref(:merge_request) | false
end
with_them do
it { is_expected.to eq(valid?) }
end
end
end
describe 'ensure_namespace_id' do
context 'when version belongs to a project issue' do
let(:version) { described_class.new(issue: issue) }
it 'sets the namespace id from the issue namespace id' do
expect(version.namespace_id).to be_nil
version.valid?
expect(version.namespace_id).to eq(issue.namespace.id)
end
context 'when namespace_id is 0' do
before do
version.namespace_id = 0
end
it 'sets the namespace id from the issue namespace id' do
expect(version.namespace_id).to eq(0)
version.valid?
expect(version.namespace_id).to eq(issue.namespace.id)
end
end
end
context 'when version belongs to a group issue' do
let(:issue) { create(:issue, :group_level, namespace: group) }
let(:version) { described_class.new(issue: issue) }
it 'sets the namespace id from the issue namespace id' do
expect(version.namespace_id).to be_nil
version.valid?
expect(version.namespace_id).to eq(issue.namespace.id)
end
end
context 'when version belongs to a merge request' do
let(:version) { described_class.new(merge_request: merge_request) }
it 'sets the namespace id from the merge request project namespace id' do
expect(version.namespace_id).to be_nil
version.valid?
expect(version.namespace_id).to eq(merge_request.source_project.project_namespace_id)
end
end
end
end