From 2d4cfd754856ea4f04ee302bd13963db54c1e1db Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Wed, 3 May 2023 16:16:33 +1000 Subject: [PATCH] Validate and enforce AdjustmentMetadata associations --- app/models/adjustment_metadata.rb | 2 ++ ...re_adjustment_and_enterprise_on_adjustment_metadata.rb | 8 ++++++++ db/schema.rb | 4 ++-- spec/models/adjustment_metadata_spec.rb | 3 +++ 4 files changed, 15 insertions(+), 2 deletions(-) create mode 100644 db/migrate/20230503060530_require_adjustment_and_enterprise_on_adjustment_metadata.rb diff --git a/app/models/adjustment_metadata.rb b/app/models/adjustment_metadata.rb index eb99ad1de7..4753592a46 100644 --- a/app/models/adjustment_metadata.rb +++ b/app/models/adjustment_metadata.rb @@ -1,6 +1,8 @@ # frozen_string_literal: true class AdjustmentMetadata < ApplicationRecord + self.belongs_to_required_by_default = true + belongs_to :adjustment, class_name: 'Spree::Adjustment' belongs_to :enterprise end diff --git a/db/migrate/20230503060530_require_adjustment_and_enterprise_on_adjustment_metadata.rb b/db/migrate/20230503060530_require_adjustment_and_enterprise_on_adjustment_metadata.rb new file mode 100644 index 0000000000..e13fdf4b72 --- /dev/null +++ b/db/migrate/20230503060530_require_adjustment_and_enterprise_on_adjustment_metadata.rb @@ -0,0 +1,8 @@ +# frozen_string_literal: true + +class RequireAdjustmentAndEnterpriseOnAdjustmentMetadata < ActiveRecord::Migration[7.0] + def change + change_column_null :adjustment_metadata, :adjustment_id, false + change_column_null :adjustment_metadata, :enterprise_id, false + end +end diff --git a/db/schema.rb b/db/schema.rb index 1241b84131..1e7f7ef0aa 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -44,8 +44,8 @@ ActiveRecord::Schema[7.0].define(version: 2023_05_22_120633) do end create_table "adjustment_metadata", id: :serial, force: :cascade do |t| - t.integer "adjustment_id" - t.integer "enterprise_id" + t.integer "adjustment_id", null: false + t.integer "enterprise_id", null: false t.string "fee_name", limit: 255 t.string "fee_type", limit: 255 t.string "enterprise_role", limit: 255 diff --git a/spec/models/adjustment_metadata_spec.rb b/spec/models/adjustment_metadata_spec.rb index 13657826b4..66ae5bc6f0 100644 --- a/spec/models/adjustment_metadata_spec.rb +++ b/spec/models/adjustment_metadata_spec.rb @@ -3,6 +3,9 @@ require 'spec_helper' describe AdjustmentMetadata do + it { is_expected.to belong_to(:adjustment).required } + it { is_expected.to belong_to(:enterprise).required } + it "is valid when built from factory" do adjustment_metadata = build(:adjustment_metadata) expect(adjustment_metadata).to be_valid