diff options
Diffstat (limited to 'spec/models/namespaces/project_namespace_spec.rb')
-rw-r--r-- | spec/models/namespaces/project_namespace_spec.rb | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/spec/models/namespaces/project_namespace_spec.rb b/spec/models/namespaces/project_namespace_spec.rb new file mode 100644 index 00000000000..f38e8aa85d0 --- /dev/null +++ b/spec/models/namespaces/project_namespace_spec.rb @@ -0,0 +1,27 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Namespaces::ProjectNamespace, type: :model do + describe 'relationships' do + it { is_expected.to have_one(:project).with_foreign_key(:project_namespace_id).inverse_of(:project_namespace) } + end + + describe 'validations' do + it { is_expected.not_to validate_presence_of :owner } + end + + context 'when deleting project namespace' do + # using delete rather than destroy due to `delete` skipping AR hooks/callbacks + # so it's ensured to work at the DB level. Uses ON DELETE CASCADE on foreign key + let_it_be(:project) { create(:project) } + let_it_be(:project_namespace) { create(:project_namespace, project: project) } + + it 'also deletes the associated project' do + project_namespace.delete + + expect { project_namespace.reload }.to raise_error(ActiveRecord::RecordNotFound) + expect { project.reload }.to raise_error(ActiveRecord::RecordNotFound) + end + end +end |