Compare commits

...

4 Commits
0.2.3 ... 0.2.4

Author SHA1 Message Date
Rohan Mitchell
11483a77e8 Update bugsnag and spree_paypal_express for paypal error debugging 2012-10-17 08:42:33 +11:00
Rohan Mitchell
ba895ed486 Display CMS content for suppliers page 2012-10-17 07:54:12 +11:00
Rohan Mitchell
36d342f216 Add view all suppliers page 2012-10-17 07:50:58 +11:00
Rohan Mitchell
d09123eb22 Do not show suppliers with no products in stock 2012-10-17 07:36:18 +11:00
7 changed files with 86 additions and 16 deletions

View File

@@ -8,7 +8,7 @@ GIT
GIT
remote: git://github.com/RohanM/spree_paypal_express.git
revision: ca5723c0e268e74adcb9b8ec04d082d86888f313
revision: ab580fde06d6b2b607db74a7eb4e5ef52a313862
branch: 1-1-stable
specs:
spree_paypal_express (1.1.0)
@@ -144,10 +144,10 @@ GEM
nokogiri (>= 1.4.4)
uuidtools (~> 2.1)
bcrypt-ruby (3.0.1)
bugsnag (1.1.2)
httparty (~> 0.8.3)
multi_json (~> 1.3.4)
builder (3.0.3)
bugsnag (1.2.4)
httparty (>= 0.5, < 1.0)
multi_json (~> 1.0)
builder (3.0.4)
cancan (1.6.7)
capybara (1.1.2)
mime-types (>= 1.16)

View File

@@ -2,6 +2,10 @@ module Spree
class SuppliersController < BaseController
helper 'spree/products'
def index
@suppliers = Supplier.all
end
def show
options = {:supplier_id => params[:id]}
options.merge(params.reject { |k,v| k == :id })

View File

@@ -12,6 +12,17 @@ module Spree
after_initialize :initialize_country
before_validation :set_unused_address_fields
def has_products_on_hand?
self.products.where('count_on_hand > 0').present?
end
def to_param
"#{id}-#{name.parameterize}"
end
private
def initialize_country
self.address ||= Address.new
self.address.country = Country.find_by_id(Spree::Config[:default_country_id]) if self.address.new_record?
@@ -21,8 +32,5 @@ module Spree
address.firstname = address.lastname = address.phone = 'unused' if address.present?
end
def to_param
"#{id}-#{name.parameterize}"
end
end
end

View File

@@ -2,7 +2,9 @@
%h6.filter_name Shop by Supplier
%ul.filter_choices
- @suppliers.each do |supplier|
%li.nowrap= link_to supplier.name, supplier
- if supplier.has_products_on_hand?
%li.nowrap= link_to supplier.name, supplier
= button_to 'Browse All Suppliers', suppliers_path, :method => :get
%h6.filter_name Shop by Distributor
%ul.filter_choices

View File

@@ -0,0 +1,12 @@
- content_for :sidebar do
%div{'data-hook' => "homepage_sidebar_navigation"}
= render 'spree/sidebar'
%h1 Suppliers
= cms_page_content(:content, Cms::Page.find_by_full_path('/suppliers'))
%ul.suppliers
- @suppliers.each do |supplier|
%li= link_to supplier.name, supplier

View File

@@ -8,14 +8,32 @@ module Spree
it { should belong_to(:address) }
end
it "should default country to system country" do
supplier = Supplier.new
supplier.address.country.should == Country.find_by_id(Config[:default_country_id])
end
describe "validations" do
it { should validate_presence_of(:name) }
end
it "should default country to system country" do
subject.address.country.should == Country.find_by_id(Config[:default_country_id])
end
context "has_products_on_hand?" do
before :each do
@supplier = create(:supplier)
end
it "returns false when no products" do
@supplier.should_not have_products_on_hand
end
it "returns false when the product is out of stock" do
create(:product, :supplier => @supplier, :on_hand => 0)
@supplier.should_not have_products_on_hand
end
it "returns true when the product is in stock" do
create(:product, :supplier => @supplier, :on_hand => 1)
@supplier.should have_products_on_hand
end
end
end
end

View File

@@ -8,17 +8,43 @@ feature %q{
include AuthenticationWorkflow
include WebHelper
scenario "viewing a list of suppliers" do
scenario "viewing a list of suppliers in the sidebar" do
# Given some suppliers
s1 = create(:supplier)
s2 = create(:supplier)
s3 = create(:supplier)
# And some of those suppliers have a product
create(:product, :supplier => s1)
create(:product, :supplier => s3)
# When I go to the home page
visit spree.root_path
# Then I should see a list containing all the suppliers that have products in stock
page.should have_selector 'a', :text => s1.name
page.should have_selector 'a', :text => s3.name
page.should_not have_selector 'a', :text => s2.name
end
scenario "viewing a list of all suppliers" do
# Given some suppliers
s1 = create(:supplier)
s2 = create(:supplier)
s3 = create(:supplier)
# And some of those suppliers have a product
create(:product, :supplier => s1)
create(:product, :supplier => s3)
# When I go to the suppliers listing page
visit spree.root_path
click_button 'Browse All Suppliers'
# Then I should see a list containing all the suppliers
[s1, s2, s3].each { |s| page.should have_selector 'a', :text => s.name }
page.should have_selector '#content a', :text => s1.name
page.should have_selector '#content a', :text => s2.name
page.should have_selector '#content a', :text => s3.name
end
scenario "viewing products provided by a supplier" do