From 6e36142809b75ce20bc8fb40e7ec4359caa01d02 Mon Sep 17 00:00:00 2001 From: Will Marshall Date: Fri, 13 Dec 2013 11:39:45 +1100 Subject: [PATCH] Making some changes to the data on the products inventory page --- .../products_and_inventory_report.rb | 24 +++++++++++---- .../spree/admin/reports_controller_spec.rb | 4 +++ spec/features/admin/reports_spec.rb | 8 ++--- .../products_and_inventory_report_spec.rb | 30 ++++++++++++++----- 4 files changed, 49 insertions(+), 17 deletions(-) diff --git a/lib/open_food_network/products_and_inventory_report.rb b/lib/open_food_network/products_and_inventory_report.rb index 1dfc874906..2e6260f82f 100644 --- a/lib/open_food_network/products_and_inventory_report.rb +++ b/lib/open_food_network/products_and_inventory_report.rb @@ -8,17 +8,29 @@ module OpenFoodNetwork end def header - ["Supplier", "Product", "SKU", "Variant", "On Hand", "Price"] + [ + "Supplier", + "Producer Suburb", + "Product", + "Product Properties", + "Variant Value", + "Price", + "Group Buy Unit Quantity", + "Amount" + ] end def table variants.map do |variant| [variant.product.supplier.name, - variant.product.name, - variant.sku, - variant.options_text, - variant.count_on_hand, - variant.price] + variant.product.supplier.address.city, + variant.product.name, + variant.product.properties.map(&:name).join(", "), + variant.options_text, + variant.price, + variant.product.group_buy_unit_size, + "" + ] end end diff --git a/spec/controllers/spree/admin/reports_controller_spec.rb b/spec/controllers/spree/admin/reports_controller_spec.rb index af4268a8e0..64b4e27e2b 100644 --- a/spec/controllers/spree/admin/reports_controller_spec.rb +++ b/spec/controllers/spree/admin/reports_controller_spec.rb @@ -190,6 +190,8 @@ describe Spree::Admin::ReportsController do OpenFoodNetwork::ProductsAndInventoryReport.should_receive(:new) .with(user, {"test"=>"foo", "controller"=>"spree/admin/reports", "action"=>"products_and_inventory"}) .and_return(report = double(:report)) + report.stub(:header).and_return [] + report.stub(:table).and_return [] spree_get :products_and_inventory, :test => "foo" assigns(:report).should == report end @@ -236,6 +238,8 @@ describe Spree::Admin::ReportsController do OpenFoodNetwork::CustomersReport.should_receive(:new) .with(user, {"test"=>"foo", "controller"=>"spree/admin/reports", "action"=>"customers"}) .and_return(report = double(:report)) + report.stub(:header).and_return [] + report.stub(:table).and_return [] spree_get :customers, :test => "foo" assigns(:report).should == report end diff --git a/spec/features/admin/reports_spec.rb b/spec/features/admin/reports_spec.rb index a1e788a932..8f59e40d00 100644 --- a/spec/features/admin/reports_spec.rb +++ b/spec/features/admin/reports_spec.rb @@ -143,10 +143,10 @@ feature %q{ table = rows.map { |r| r.all("th,td").map { |c| c.text.strip } } table.sort.should == [ - ["Supplier", "Product", "SKU", "Variant", "On Hand", "Price"], - [product_1.supplier.name, "Product Name", variant_1.sku, "Size: Test", "10", "100.0"], - [product_1.supplier.name, "Product Name", variant_2.sku, "Size: S", "20", "80.0"], - [product_2.supplier.name, "Product 2", product_2.master.sku, "", "9", "99.0"] + ["Supplier", "Producer Suburb", "Product", "Product Properties", "Variant Value", "Price", "Group Buy Unit Quantity", "Amount"], + [product_1.supplier.name, product_1.supplier.address.city, "Product Name", product_1.properties.join(", "), "Size: Test", "100.0", product_1.group_buy_unit_size.to_s, ""], + [product_1.supplier.name, product_1.supplier.address.city, "Product Name", product_1.properties.join(", "), "Size: S", "80.0", product_1.group_buy_unit_size.to_s, ""], + [product_2.supplier.name, product_1.supplier.address.city, "Product 2", product_1.properties.join(", "), "", "99.0", product_1.group_buy_unit_size.to_s, ""] ].sort end end diff --git a/spec/lib/open_food_network/products_and_inventory_report_spec.rb b/spec/lib/open_food_network/products_and_inventory_report_spec.rb index 514dfd0ac1..c65d7bcae0 100644 --- a/spec/lib/open_food_network/products_and_inventory_report_spec.rb +++ b/spec/lib/open_food_network/products_and_inventory_report_spec.rb @@ -13,24 +13,40 @@ module OpenFoodNetwork end it "Should return headers" do - subject.header.should == ["Supplier", "Product", "SKU", "Variant", "On Hand", "Price"] + subject.header.should == [ + "Supplier", + "Producer Suburb", + "Product", + "Product Properties", + "Variant Value", + "Price", + "Group Buy Unit Quantity", + "Amount" + ] end it "should build a table from a list of variants" do variant = double(:variant, sku: "sku", - options_text: "Variant Name", - count_on_hand: 10, - price: 100) + options_text: "Variant Name", + count_on_hand: 10, + price: 100) variant.stub_chain(:product, :supplier, :name).and_return("Supplier") + variant.stub_chain(:product, :supplier, :address, :city).and_return("A city") variant.stub_chain(:product, :name).and_return("Product Name") + variant.stub_chain(:product, :properties).and_return [double(name: "test"), double(name: "foo")] + variant.stub_chain(:product, :group_buy_unit_size).and_return(21) subject.stub(:variants).and_return [variant] + subject.table.should == [[ "Supplier", + "A city", "Product Name", - "sku", + "test, foo", "Variant Name", - 10, - 100]] + 100, + 21, + "" + ]] end it "fetches variants for some params" do