Commit 37a335e6 authored by Stan Hu's avatar Stan Hu

Fix remaining failures in shoulda-matcher

Starting with Rails 5, belongs_to now adds a presence validation to the
association, and so as of shoulda-matchers 4.0.0 the belong_to matcher
follows suit and tests that this validation is there by setting the
association to nil and asserting that there are validation errors. This
exposed an error with the `validate_branches` method: we need to check
the source and target project exist.
parent d707e2a4
...@@ -581,6 +581,8 @@ class MergeRequest < ApplicationRecord ...@@ -581,6 +581,8 @@ class MergeRequest < ApplicationRecord
end end
def validate_branches def validate_branches
return unless target_project && source_project
if target_project == source_project && target_branch == source_branch if target_project == source_project && target_branch == source_branch
errors.add :branch_conflict, "You can't use same project/branch for source and target" errors.add :branch_conflict, "You can't use same project/branch for source and target"
return return
......
...@@ -5,8 +5,8 @@ require 'spec_helper' ...@@ -5,8 +5,8 @@ require 'spec_helper'
describe Deployment do describe Deployment do
subject { build(:deployment) } subject { build(:deployment) }
it { is_expected.to belong_to(:project) } it { is_expected.to belong_to(:project).required }
it { is_expected.to belong_to(:environment) } it { is_expected.to belong_to(:environment).required }
it { is_expected.to belong_to(:user) } it { is_expected.to belong_to(:user) }
it { is_expected.to belong_to(:deployable) } it { is_expected.to belong_to(:deployable) }
......
...@@ -6,7 +6,7 @@ describe Environment do ...@@ -6,7 +6,7 @@ describe Environment do
let(:project) { create(:project, :stubbed_repository) } let(:project) { create(:project, :stubbed_repository) }
subject(:environment) { create(:environment, project: project) } subject(:environment) { create(:environment, project: project) }
it { is_expected.to belong_to(:project) } it { is_expected.to belong_to(:project).required }
it { is_expected.to have_many(:deployments) } it { is_expected.to have_many(:deployments) }
it { is_expected.to delegate_method(:stop_action).to(:last_deployment) } it { is_expected.to delegate_method(:stop_action).to(:last_deployment) }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment