summaryrefslogtreecommitdiff
path: root/spec/models/concerns/loose_foreign_key_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/models/concerns/loose_foreign_key_spec.rb')
-rw-r--r--spec/models/concerns/loose_foreign_key_spec.rb66
1 files changed, 0 insertions, 66 deletions
diff --git a/spec/models/concerns/loose_foreign_key_spec.rb b/spec/models/concerns/loose_foreign_key_spec.rb
deleted file mode 100644
index 42da69eb75e..00000000000
--- a/spec/models/concerns/loose_foreign_key_spec.rb
+++ /dev/null
@@ -1,66 +0,0 @@
-# frozen_string_literal: true
-
-require 'spec_helper'
-
-RSpec.describe LooseForeignKey do
- let(:project_klass) do
- Class.new(ApplicationRecord) do
- include LooseForeignKey
-
- self.table_name = 'projects'
-
- loose_foreign_key :issues, :project_id, on_delete: :async_delete
- loose_foreign_key 'merge_requests', 'project_id', 'on_delete' => 'async_nullify'
- end
- end
-
- it 'exposes the loose foreign key definitions' do
- definitions = project_klass.loose_foreign_key_definitions
-
- tables = definitions.map(&:to_table)
- expect(tables).to eq(%w[issues merge_requests])
- end
-
- it 'casts strings to symbol' do
- definition = project_klass.loose_foreign_key_definitions.last
-
- expect(definition.from_table).to eq('projects')
- expect(definition.to_table).to eq('merge_requests')
- expect(definition.column).to eq('project_id')
- expect(definition.on_delete).to eq(:async_nullify)
- end
-
- context 'validation' do
- context 'on_delete validation' do
- let(:invalid_class) do
- Class.new(ApplicationRecord) do
- include LooseForeignKey
-
- self.table_name = 'projects'
-
- loose_foreign_key :issues, :project_id, on_delete: :async_delete
- loose_foreign_key :merge_requests, :project_id, on_delete: :async_nullify
- loose_foreign_key :merge_requests, :project_id, on_delete: :destroy
- end
- end
-
- it 'raises error when invalid `on_delete` option was given' do
- expect { invalid_class }.to raise_error /Invalid on_delete option given: destroy/
- end
- end
-
- context 'inheritance validation' do
- let(:inherited_project_class) do
- Class.new(Project) do
- include LooseForeignKey
-
- loose_foreign_key :issues, :project_id, on_delete: :async_delete
- end
- end
-
- it 'raises error when loose_foreign_key is defined in a child ActiveRecord model' do
- expect { inherited_project_class }.to raise_error /Please define the loose_foreign_key on the Project class/
- end
- end
- end
-end