From 149d48ff5ab9fe4bedb03508694807fe43674060 Mon Sep 17 00:00:00 2001 From: Rohan Mitchell Date: Mon, 12 Aug 2013 09:59:44 +1000 Subject: [PATCH] Add AdjustmentMetadata, for holding info about enterprise fee adjustments at time of creation --- app/models/adjustment_metadata.rb | 4 ++++ app/models/spree/adjustment_decorator.rb | 2 ++ .../20130809075103_create_adjustment_metadata.rb | 13 +++++++++++++ db/schema.rb | 12 +++++++++++- spec/factories.rb | 8 ++++++++ spec/models/adjustment_metadata_spec.rb | 6 ++++++ spec/models/adjustment_spec.rb | 8 ++++++++ 7 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 app/models/adjustment_metadata.rb create mode 100644 db/migrate/20130809075103_create_adjustment_metadata.rb create mode 100644 spec/models/adjustment_metadata_spec.rb create mode 100644 spec/models/adjustment_spec.rb diff --git a/app/models/adjustment_metadata.rb b/app/models/adjustment_metadata.rb new file mode 100644 index 0000000000..d8315a3c71 --- /dev/null +++ b/app/models/adjustment_metadata.rb @@ -0,0 +1,4 @@ +class AdjustmentMetadata < ActiveRecord::Base + belongs_to :adjustment, class_name: 'Spree::Adjustment' + belongs_to :enterprise +end diff --git a/app/models/spree/adjustment_decorator.rb b/app/models/spree/adjustment_decorator.rb index 6d089ee3b3..5c4748b227 100644 --- a/app/models/spree/adjustment_decorator.rb +++ b/app/models/spree/adjustment_decorator.rb @@ -1,5 +1,7 @@ module Spree Adjustment.class_eval do + has_one :metadata, class_name: 'AdjustmentMetadata' + scope :enterprise_fee, where(originator_type: 'EnterpriseFee') end end diff --git a/db/migrate/20130809075103_create_adjustment_metadata.rb b/db/migrate/20130809075103_create_adjustment_metadata.rb new file mode 100644 index 0000000000..4d1c6579eb --- /dev/null +++ b/db/migrate/20130809075103_create_adjustment_metadata.rb @@ -0,0 +1,13 @@ +class CreateAdjustmentMetadata < ActiveRecord::Migration + def change + create_table :adjustment_metadata do |t| + t.integer :adjustment_id + t.integer :enterprise_id + t.string :fee_name + t.string :fee_type + t.string :enterprise_role + end + + add_index :adjustment_metadata, :adjustment_id + end +end diff --git a/db/schema.rb b/db/schema.rb index 1ad64fed61..ac3280a415 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,17 @@ # # It's strongly recommended to check this file into your version control system. -ActiveRecord::Schema.define(:version => 20130809045637) do +ActiveRecord::Schema.define(:version => 20130809075103) do + + create_table "adjustment_metadata", :force => true do |t| + t.integer "adjustment_id" + t.integer "enterprise_id" + t.string "fee_name" + t.string "fee_type" + t.string "enterprise_role" + end + + add_index "adjustment_metadata", ["adjustment_id"], :name => "index_adjustment_metadata_on_adjustment_id" create_table "carts", :force => true do |t| t.integer "user_id" diff --git a/spec/factories.rb b/spec/factories.rb index 32a9cd770a..c6462d8f28 100644 --- a/spec/factories.rb +++ b/spec/factories.rb @@ -97,6 +97,14 @@ FactoryGirl.define do calculator { FactoryGirl.build(:itemwise_calculator) } end + factory :adjustment_metadata, :class => AdjustmentMetadata do + adjustment { FactoryGirl.create(:adjustment) } + enterprise { FactoryGirl.create(:distributor_enterprise) } + fee_name 'fee' + fee_type 'packing' + enterprise_role 'distributor' + end + factory :itemwise_calculator, :class => OpenFoodWeb::Calculator::Itemwise do end diff --git a/spec/models/adjustment_metadata_spec.rb b/spec/models/adjustment_metadata_spec.rb new file mode 100644 index 0000000000..6ead53ce30 --- /dev/null +++ b/spec/models/adjustment_metadata_spec.rb @@ -0,0 +1,6 @@ +describe AdjustmentMetadata do + it "is valid when build from factory" do + adjustment = create(:adjustment) + adjustment.should be_valid + end +end diff --git a/spec/models/adjustment_spec.rb b/spec/models/adjustment_spec.rb new file mode 100644 index 0000000000..60dfd631ce --- /dev/null +++ b/spec/models/adjustment_spec.rb @@ -0,0 +1,8 @@ +module Spree + describe Adjustment do + it "has metadata" do + adjustment = create(:adjustment, metadata: create(:adjustment_metadata)) + adjustment.metadata.should be + end + end +end