Set up basic form for admin editing product distributions (not yet functional)

This commit is contained in:
Rohan Mitchell
2012-06-28 15:13:26 +10:00
parent 1d3b7de5c6
commit 474c049f0d
5 changed files with 31 additions and 16 deletions

View File

@@ -4,7 +4,7 @@ module Spree
belongs_to :pickup_address, :foreign_key => 'pickup_address_id', :class_name => 'Spree::Address'
has_many :orders
has_many :product_distributions
has_many :product_distributions, :dependent => :destroy
has_many :products, :through => :product_distributions
accepts_nested_attributes_for :pickup_address

View File

@@ -1,9 +1,11 @@
Spree::Product.class_eval do
belongs_to :supplier
has_many :product_distributions
has_many :product_distributions, :dependent => :destroy
has_many :distributors, :through => :product_distributions
accepts_nested_attributes_for :product_distributions, :allow_destroy => true
attr_accessible :supplier_id, :distributor_ids
validates_presence_of :supplier

View File

@@ -1,9 +1,9 @@
Deface::Override.new(:virtual_path => "spree/admin/products/_form",
:insert_top => "[data-hook='admin_product_form_right']",
:partial => "spree/admin/products/distributors",
:name => "distributors")
:insert_bottom => "[data-hook='admin_product_form_additional_fields']",
:partial => "spree/admin/products/distributors",
:name => "distributors")
Deface::Override.new(:virtual_path => "spree/admin/products/new",
:insert_bottom => ".left",
:partial => "spree/admin/products/distributors",
:name => "distributors")
:insert_bottom => ".left",
:partial => "spree/admin/products/distributors",
:name => "distributors")

View File

@@ -1,5 +1,15 @@
= f.field_container :distributors do
= f.label :distributors
%br
= f.collection_check_boxes(:distributor_ids, Spree::Distributor.all, :id, :name)
= f.error_message_on :distributors
%h2 Distributors
= f.field_container :product_distributions do
- Spree::Distributor.all.each do |d|
- f.object.product_distributions.build(:distributor => d) unless f.object.product_distributions.find_by_distributor_id d.id
%table
= f.fields_for :product_distributions do |pd_form|
%tr
%td
= hidden_field_tag "#{pd_form.object_name}[_destroy]", 1
= check_box_tag "#{pd_form.object_name}[_destroy]", 0
%td
= pd_form.object.distributor.name
= pd_form.hidden_field :distributor_id
%td
= pd_form.collection_select :shipping_method_id, Spree::ShippingMethod.all, :id, :name

View File

@@ -10,10 +10,11 @@ feature %q{
background do
@supplier = create(:supplier, :name => 'New supplier')
@distributors = (1..3).map { create(:distributor) }
@shipping_method = create(:shipping_method, :name => 'My shipping method')
end
context "creating a product" do
scenario "I should be able to assign a supplier to the product" do
scenario "assigning a supplier and distributors to the product" do
login_to_admin_section
click_link 'Products'
@@ -22,8 +23,11 @@ feature %q{
fill_in 'product_name', :with => 'A new product !!!'
fill_in 'product_price', :with => '19.99'
select 'New supplier', :from => 'product_supplier_id'
check @distributors[0].name
select 'My shipping method', :from => 'product_product_distributions_attributes_0_shipping_method_id'
check @distributors[2].name
select 'My shipping method', :from => 'product_product_distributions_attributes_2_shipping_method_id'
click_button 'Create'
@@ -31,8 +35,7 @@ feature %q{
product = Spree::Product.find_by_name('A new product !!!')
product.supplier.should == @supplier
product.distributors.should == [@distributors[0], @distributors[2]]
product.product_distributions.map { |pd| pd.shipping_method }.should == [@shipping_method, @shipping_method]
end
end
context "Given I am cloning a Product"
end