diff options
Diffstat (limited to 'spec/models')
-rw-r--r-- | spec/models/ci/build_spec.rb | 3 | ||||
-rw-r--r-- | spec/models/ci/runner_spec.rb | 2 | ||||
-rw-r--r-- | spec/models/concerns/noteable_spec.rb | 1 | ||||
-rw-r--r-- | spec/models/concerns/token_authenticatable_spec.rb | 1 | ||||
-rw-r--r-- | spec/models/deploy_keys_project_spec.rb | 1 | ||||
-rw-r--r-- | spec/models/description_version_spec.rb | 29 | ||||
-rw-r--r-- | spec/models/event_spec.rb | 5 | ||||
-rw-r--r-- | spec/models/gpg_signature_spec.rb | 1 | ||||
-rw-r--r-- | spec/models/issue_spec.rb | 10 | ||||
-rw-r--r-- | spec/models/merge_request_spec.rb | 26 | ||||
-rw-r--r-- | spec/models/note_spec.rb | 10 | ||||
-rw-r--r-- | spec/models/pages_domain_spec.rb | 2 | ||||
-rw-r--r-- | spec/models/project_spec.rb | 1 | ||||
-rw-r--r-- | spec/models/project_wiki_spec.rb | 2 | ||||
-rw-r--r-- | spec/models/resource_label_event_spec.rb | 1 | ||||
-rw-r--r-- | spec/models/system_note_metadata_spec.rb | 1 | ||||
-rw-r--r-- | spec/models/timelog_spec.rb | 1 | ||||
-rw-r--r-- | spec/models/user_interacted_project_spec.rb | 1 | ||||
-rw-r--r-- | spec/models/user_spec.rb | 1 |
19 files changed, 88 insertions, 11 deletions
diff --git a/spec/models/ci/build_spec.rb b/spec/models/ci/build_spec.rb index da8ea00b2f6..058305bc04e 100644 --- a/spec/models/ci/build_spec.rb +++ b/spec/models/ci/build_spec.rb @@ -574,6 +574,7 @@ describe Ci::Build do describe '#artifacts_metadata?' do subject { build.artifacts_metadata? } + context 'artifacts metadata does not exist' do it { is_expected.to be_falsy } end @@ -586,6 +587,7 @@ describe Ci::Build do describe '#artifacts_expire_in' do subject { build.artifacts_expire_in } + it { is_expected.to be_nil } context 'when artifacts_expire_at is specified' do @@ -1265,6 +1267,7 @@ describe Ci::Build do describe '#erasable?' do subject { build.erasable? } + it { is_expected.to be_truthy } end diff --git a/spec/models/ci/runner_spec.rb b/spec/models/ci/runner_spec.rb index 70ff3cf5dc4..ac438f7d473 100644 --- a/spec/models/ci/runner_spec.rb +++ b/spec/models/ci/runner_spec.rb @@ -686,11 +686,13 @@ describe Ci::Runner do describe '#has_tags?' do context 'when runner has tags' do subject { create(:ci_runner, tag_list: ['tag']) } + it { is_expected.to have_tags } end context 'when runner does not have tags' do subject { create(:ci_runner, tag_list: []) } + it { is_expected.not_to have_tags } end end diff --git a/spec/models/concerns/noteable_spec.rb b/spec/models/concerns/noteable_spec.rb index 929b5f52c7c..f823ac0165f 100644 --- a/spec/models/concerns/noteable_spec.rb +++ b/spec/models/concerns/noteable_spec.rb @@ -6,6 +6,7 @@ describe Noteable do let!(:active_diff_note1) { create(:diff_note_on_merge_request) } let(:project) { active_diff_note1.project } subject { active_diff_note1.noteable } + let!(:active_diff_note2) { create(:diff_note_on_merge_request, project: project, noteable: subject, in_reply_to: active_diff_note1) } let!(:active_diff_note3) { create(:diff_note_on_merge_request, project: project, noteable: subject, position: active_position2) } let!(:outdated_diff_note1) { create(:diff_note_on_merge_request, project: project, noteable: subject, position: outdated_position) } diff --git a/spec/models/concerns/token_authenticatable_spec.rb b/spec/models/concerns/token_authenticatable_spec.rb index 51e28974ae0..43b894b5957 100644 --- a/spec/models/concerns/token_authenticatable_spec.rb +++ b/spec/models/concerns/token_authenticatable_spec.rb @@ -17,6 +17,7 @@ describe User, 'TokenAuthenticatable' do describe 'ensures authentication token' do subject { create(:user).send(token_field) } + it { is_expected.to be_a String } end end diff --git a/spec/models/deploy_keys_project_spec.rb b/spec/models/deploy_keys_project_spec.rb index c137444763b..1dbae78a01d 100644 --- a/spec/models/deploy_keys_project_spec.rb +++ b/spec/models/deploy_keys_project_spec.rb @@ -16,6 +16,7 @@ describe DeployKeysProject do describe "Destroying" do let(:project) { create(:project) } subject { create(:deploy_keys_project, project: project) } + let(:deploy_key) { subject.deploy_key } context "when the deploy key is only used by this project" do diff --git a/spec/models/description_version_spec.rb b/spec/models/description_version_spec.rb new file mode 100644 index 00000000000..5ec34c0cde4 --- /dev/null +++ b/spec/models/description_version_spec.rb @@ -0,0 +1,29 @@ +# frozen_string_literal: true + +require 'spec_helper' + +describe DescriptionVersion do + describe 'associations' do + it { is_expected.to belong_to :issue } + it { is_expected.to belong_to :merge_request } + end + + describe 'validations' do + describe 'exactly_one_issuable' do + using RSpec::Parameterized::TableSyntax + + subject { described_class.new(issue_id: issue_id, merge_request_id: merge_request_id).valid? } + + where(:issue_id, :merge_request_id, :valid?) do + nil | 1 | true + 1 | nil | true + nil | nil | false + 1 | 1 | false + end + + with_them do + it { is_expected.to eq(valid?) } + end + end + end +end diff --git a/spec/models/event_spec.rb b/spec/models/event_spec.rb index 62663c247d1..ff2e1aa047e 100644 --- a/spec/models/event_spec.rb +++ b/spec/models/event_spec.rb @@ -100,26 +100,31 @@ describe Event do describe '#membership_changed?' do context "created" do subject { build(:event, :created).membership_changed? } + it { is_expected.to be_falsey } end context "updated" do subject { build(:event, :updated).membership_changed? } + it { is_expected.to be_falsey } end context "expired" do subject { build(:event, :expired).membership_changed? } + it { is_expected.to be_truthy } end context "left" do subject { build(:event, :left).membership_changed? } + it { is_expected.to be_truthy } end context "joined" do subject { build(:event, :joined).membership_changed? } + it { is_expected.to be_truthy } end end diff --git a/spec/models/gpg_signature_spec.rb b/spec/models/gpg_signature_spec.rb index dd18c8842ab..a780b8bfdf5 100644 --- a/spec/models/gpg_signature_spec.rb +++ b/spec/models/gpg_signature_spec.rb @@ -20,6 +20,7 @@ RSpec.describe GpgSignature do describe 'validation' do subject { described_class.new } + it { is_expected.to validate_presence_of(:commit_sha) } it { is_expected.to validate_presence_of(:project_id) } it { is_expected.to validate_presence_of(:gpg_key_primary_keyid) } diff --git a/spec/models/issue_spec.rb b/spec/models/issue_spec.rb index 9c58d307c4c..18a1a30eee5 100644 --- a/spec/models/issue_spec.rb +++ b/spec/models/issue_spec.rb @@ -138,7 +138,10 @@ describe Issue do end it 'changes the state to closed' do - expect { issue.close }.to change { issue.state }.from('opened').to('closed') + open_state = described_class.available_states[:opened] + closed_state = described_class.available_states[:closed] + + expect { issue.close }.to change { issue.state_id }.from(open_state).to(closed_state) end end @@ -155,7 +158,7 @@ describe Issue do end it 'changes the state to opened' do - expect { issue.reopen }.to change { issue.state }.from('closed').to('opened') + expect { issue.reopen }.to change { issue.state_id }.from(described_class.available_states[:closed]).to(described_class.available_states[:opened]) end end @@ -277,6 +280,7 @@ describe Issue do context 'checking destination project also' do subject { issue.can_move?(user, to_project) } + let(:to_project) { create(:project) } context 'destination project allowed' do @@ -899,4 +903,6 @@ describe Issue do let(:default_params) { { project: project } } end end + + it_behaves_like 'versioned description' end diff --git a/spec/models/merge_request_spec.rb b/spec/models/merge_request_spec.rb index b146c767f82..ad79bee8801 100644 --- a/spec/models/merge_request_spec.rb +++ b/spec/models/merge_request_spec.rb @@ -470,7 +470,7 @@ describe MergeRequest do commit = double('commit1', safe_message: "Fixes #{issue.to_reference}") allow(subject).to receive(:commits).and_return([commit]) - allow(subject).to receive(:state).and_return("closed") + allow(subject).to receive(:state_id).and_return(described_class.available_states[:closed]) expect { subject.cache_merge_request_closes_issues!(subject.author) }.not_to change(subject.merge_requests_closing_issues, :count) end @@ -479,7 +479,7 @@ describe MergeRequest do issue = create :issue, project: subject.project commit = double('commit1', safe_message: "Fixes #{issue.to_reference}") allow(subject).to receive(:commits).and_return([commit]) - allow(subject).to receive(:state).and_return("merged") + allow(subject).to receive(:state_id).and_return(described_class.available_states[:merged]) expect { subject.cache_merge_request_closes_issues!(subject.author) }.not_to change(subject.merge_requests_closing_issues, :count) end @@ -541,6 +541,7 @@ describe MergeRequest do context 'with diffs' do subject { create(:merge_request, :with_diffs) } + it 'returns the sha of the source branch last commit' do expect(subject.source_branch_sha).to eq(last_branch_commit.sha) end @@ -548,6 +549,7 @@ describe MergeRequest do context 'without diffs' do subject { create(:merge_request, :without_diffs) } + it 'returns the sha of the source branch last commit' do expect(subject.source_branch_sha).to eq(last_branch_commit.sha) end @@ -570,6 +572,7 @@ describe MergeRequest do context 'when the merge request is being created' do subject { build(:merge_request, source_branch: nil, compare_commits: []) } + it 'returns nil' do expect(subject.source_branch_sha).to be_nil end @@ -2072,7 +2075,7 @@ describe MergeRequest do end it 'refuses to enqueue a job if the MR is not open' do - merge_request.update_column(:state, 'foo') + merge_request.update_column(:state_id, 5) expect(RebaseWorker).not_to receive(:perform_async) @@ -2495,6 +2498,7 @@ describe MergeRequest do describe "#diff_refs" do context "with diffs" do subject { create(:merge_request, :with_diffs) } + let(:expected_diff_refs) do Gitlab::Diff::DiffRefs.new( base_sha: subject.merge_request_diff.base_commit_sha, @@ -2567,32 +2571,32 @@ describe MergeRequest do describe '#merge_ongoing?' do it 'returns true when the merge request is locked' do - merge_request = build_stubbed(:merge_request, state: :locked) + merge_request = build_stubbed(:merge_request, state_id: described_class.available_states[:locked]) expect(merge_request.merge_ongoing?).to be(true) end it 'returns true when merge_id, MR is not merged and it has no running job' do - merge_request = build_stubbed(:merge_request, state: :open, merge_jid: 'foo') + merge_request = build_stubbed(:merge_request, state_id: described_class.available_states[:opened], merge_jid: 'foo') allow(Gitlab::SidekiqStatus).to receive(:running?).with('foo') { true } expect(merge_request.merge_ongoing?).to be(true) end it 'returns false when merge_jid is nil' do - merge_request = build_stubbed(:merge_request, state: :open, merge_jid: nil) + merge_request = build_stubbed(:merge_request, state_id: described_class.available_states[:opened], merge_jid: nil) expect(merge_request.merge_ongoing?).to be(false) end it 'returns false if MR is merged' do - merge_request = build_stubbed(:merge_request, state: :merged, merge_jid: 'foo') + merge_request = build_stubbed(:merge_request, state_id: described_class.available_states[:merged], merge_jid: 'foo') expect(merge_request.merge_ongoing?).to be(false) end it 'returns false if there is no merge job running' do - merge_request = build_stubbed(:merge_request, state: :open, merge_jid: 'foo') + merge_request = build_stubbed(:merge_request, state_id: described_class.available_states[:opened], merge_jid: 'foo') allow(Gitlab::SidekiqStatus).to receive(:running?).with('foo') { false } expect(merge_request.merge_ongoing?).to be(false) @@ -2726,7 +2730,7 @@ describe MergeRequest do context 'closed MR' do before do - merge_request.update_attribute(:state, :closed) + merge_request.update_attribute(:state_id, described_class.available_states[:closed]) end it 'is not mergeable' do @@ -2840,6 +2844,7 @@ describe MergeRequest do describe '#merge_request_diff_for' do subject { create(:merge_request, importing: true) } + let!(:merge_request_diff1) { subject.merge_request_diffs.create(head_commit_sha: '6f6d7e7ed97bb5f0054f2b1df789b39ca89b6ff9') } let!(:merge_request_diff2) { subject.merge_request_diffs.create(head_commit_sha: nil) } let!(:merge_request_diff3) { subject.merge_request_diffs.create(head_commit_sha: '5937ac0a7beb003549fc5fd26fc247adbce4a52e') } @@ -2870,6 +2875,7 @@ describe MergeRequest do describe '#version_params_for' do subject { create(:merge_request, importing: true) } + let(:project) { subject.project } let!(:merge_request_diff1) { subject.merge_request_diffs.create(head_commit_sha: '6f6d7e7ed97bb5f0054f2b1df789b39ca89b6ff9') } let!(:merge_request_diff2) { subject.merge_request_diffs.create(head_commit_sha: nil) } @@ -3331,4 +3337,6 @@ describe MergeRequest do it { expect(query).to contain_exactly(merge_request1, merge_request2) } end + + it_behaves_like 'versioned description' end diff --git a/spec/models/note_spec.rb b/spec/models/note_spec.rb index 8a47b8c206b..4c320b4b145 100644 --- a/spec/models/note_spec.rb +++ b/spec/models/note_spec.rb @@ -55,11 +55,13 @@ describe Note do context 'when noteable and note project are the same' do subject { create(:note) } + it { is_expected.to be_valid } end context 'when project is missing for a project related note' do subject { build(:note, project: nil, noteable: build_stubbed(:issue)) } + it { is_expected.to be_invalid } end @@ -741,6 +743,7 @@ describe Note do describe '#to_discussion' do subject { create(:discussion_note_on_merge_request) } + let!(:note2) { create(:discussion_note_on_merge_request, project: subject.project, noteable: subject.noteable, in_reply_to: subject) } it "returns a discussion with just this note" do @@ -808,6 +811,7 @@ describe Note do context 'for a note' do context 'when part of a discussion' do subject { create(:discussion_note_on_issue) } + let(:note) { create(:discussion_note_on_issue, in_reply_to: subject) } it 'checks if the note is in reply to the other discussion' do @@ -821,6 +825,7 @@ describe Note do context 'when not part of a discussion' do subject { create(:note) } + let(:note) { create(:note, in_reply_to: subject) } it 'checks if the note is in reply to the other noteable' do @@ -835,6 +840,7 @@ describe Note do context 'for a discussion' do context 'when part of the same discussion' do subject { create(:diff_note_on_merge_request) } + let(:note) { create(:diff_note_on_merge_request, in_reply_to: subject) } it 'returns true' do @@ -844,6 +850,7 @@ describe Note do context 'when not part of the same discussion' do subject { create(:diff_note_on_merge_request) } + let(:note) { create(:diff_note_on_merge_request) } it 'returns false' do @@ -855,6 +862,7 @@ describe Note do context 'for a noteable' do context 'when a comment on the same noteable' do subject { create(:note) } + let(:note) { create(:note, in_reply_to: subject) } it 'returns true' do @@ -864,6 +872,7 @@ describe Note do context 'when not a comment on the same noteable' do subject { create(:note) } + let(:note) { create(:note) } it 'returns false' do @@ -887,6 +896,7 @@ describe Note do context 'when not part of a discussion' do subject { create(:note) } + let(:note) { create(:note, in_reply_to: subject) } it 'returns the noteable' do diff --git a/spec/models/pages_domain_spec.rb b/spec/models/pages_domain_spec.rb index 2e7b2b88432..4b65bf032d1 100644 --- a/spec/models/pages_domain_spec.rb +++ b/spec/models/pages_domain_spec.rb @@ -293,11 +293,13 @@ describe PagesDomain do describe "#https?" do context "when a certificate is present" do subject { build(:pages_domain) } + it { is_expected.to be_https } end context "when no certificate is present" do subject { build(:pages_domain, :without_certificate) } + it { is_expected.not_to be_https } end end diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb index a5048d78363..9f3313e67b5 100644 --- a/spec/models/project_spec.rb +++ b/spec/models/project_spec.rb @@ -5014,6 +5014,7 @@ describe Project do describe '#git_objects_poolable?' do subject { project } + context 'when not using hashed storage' do let(:project) { create(:project, :legacy_storage, :public, :repository) } diff --git a/spec/models/project_wiki_spec.rb b/spec/models/project_wiki_spec.rb index b089544c810..31d1d1fd7d1 100644 --- a/spec/models/project_wiki_spec.rb +++ b/spec/models/project_wiki_spec.rb @@ -109,6 +109,7 @@ describe ProjectWiki do context "when the wiki repository is empty" do describe '#empty?' do subject { super().empty? } + it { is_expected.to be_truthy } end end @@ -121,6 +122,7 @@ describe ProjectWiki do describe '#empty?' do subject { super().empty? } + it { is_expected.to be_falsey } it 'only instantiates a Wiki page once' do diff --git a/spec/models/resource_label_event_spec.rb b/spec/models/resource_label_event_spec.rb index f4023dcb95a..f51041c9ddc 100644 --- a/spec/models/resource_label_event_spec.rb +++ b/spec/models/resource_label_event_spec.rb @@ -4,6 +4,7 @@ require 'spec_helper' RSpec.describe ResourceLabelEvent, type: :model do subject { build(:resource_label_event, issue: issue) } + let(:issue) { create(:issue) } let(:merge_request) { create(:merge_request) } diff --git a/spec/models/system_note_metadata_spec.rb b/spec/models/system_note_metadata_spec.rb index bcd3c03f947..801f139355b 100644 --- a/spec/models/system_note_metadata_spec.rb +++ b/spec/models/system_note_metadata_spec.rb @@ -5,6 +5,7 @@ require 'spec_helper' describe SystemNoteMetadata do describe 'associations' do it { is_expected.to belong_to(:note) } + it { is_expected.to belong_to(:description_version) } end describe 'validation' do diff --git a/spec/models/timelog_spec.rb b/spec/models/timelog_spec.rb index 28fc82f2a32..7321a458817 100644 --- a/spec/models/timelog_spec.rb +++ b/spec/models/timelog_spec.rb @@ -4,6 +4,7 @@ require 'spec_helper' RSpec.describe Timelog do subject { build(:timelog) } + let(:issue) { create(:issue) } let(:merge_request) { create(:merge_request) } diff --git a/spec/models/user_interacted_project_spec.rb b/spec/models/user_interacted_project_spec.rb index 47d919c1d12..b96ff08e22d 100644 --- a/spec/models/user_interacted_project_spec.rb +++ b/spec/models/user_interacted_project_spec.rb @@ -5,6 +5,7 @@ require 'spec_helper' describe UserInteractedProject do describe '.track' do subject { described_class.track(event) } + let(:event) { build(:event) } Event::ACTIONS.each do |action| diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 24e66fe14c3..240c917e7cf 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -2170,6 +2170,7 @@ describe User do describe "#contributed_projects" do subject { create(:user) } + let!(:project1) { create(:project) } let!(:project2) { fork_project(project3) } let!(:project3) { create(:project) } |