From 31334be615b9dfbcca0d7d198a8465d173bd7106 Mon Sep 17 00:00:00 2001 From: Rob H Date: Wed, 14 May 2014 11:31:42 +1000 Subject: [PATCH] Tidy up of new dashboard, add 'CREATE NEW' button at top right --- .../stylesheets/admin/dashboard_item.css.sass | 20 ++--- .../admin/overview/_enterprises.html.haml | 41 ++++++---- .../admin/overview/_order_cycles.html.haml | 10 ++- .../spree/admin/overview/_products.html.haml | 13 ++-- spec/features/admin/overview_spec.rb | 76 +++++++++++++++++++ 5 files changed, 124 insertions(+), 36 deletions(-) create mode 100644 spec/features/admin/overview_spec.rb diff --git a/app/assets/stylesheets/admin/dashboard_item.css.sass b/app/assets/stylesheets/admin/dashboard_item.css.sass index ed54dfbb0f..ca33dd99fb 100644 --- a/app/assets/stylesheets/admin/dashboard_item.css.sass +++ b/app/assets/stylesheets/admin/dashboard_item.css.sass @@ -5,10 +5,8 @@ div.dashboard_item text-align: center div.header - border: solid - border-color: #5498da - border-width: 1px border-radius: 6px 6px 0px 0px + border: 1px solid #5498da position: relative a.with-tip @@ -29,7 +27,11 @@ div.dashboard_item color: #DA7F52 h3 - padding: 5px 5px 5px 3% + padding: 10px 5px 10px 3% + + a + border-radius: 0px 4px 0px 0px + margin-left: 8px .list max-height: 250px @@ -46,7 +48,7 @@ div.dashboard_item padding: 10px 2px 10px 5% .list-item - border: solid + border: solid #5498da border-width: 0px 1px 0px 1px span.alpha font-weight: bold @@ -107,11 +109,5 @@ div.dashboard_item background-color: #DA5354 &:hover background-color: #9fc820 - &.top - border-radius: 6px 6px 0px 0px &.bottom - border-radius: 0px 0px 6px 6px - &.top-right - border-radius: 0px 6px 0px 0px - &.top-left - border-radius: 6px 0px 0px 0px \ No newline at end of file + border-radius: 0px 0px 6px 6px \ No newline at end of file diff --git a/app/views/spree/admin/overview/_enterprises.html.haml b/app/views/spree/admin/overview/_enterprises.html.haml index 788d8d0070..4042381502 100644 --- a/app/views/spree/admin/overview/_enterprises.html.haml +++ b/app/views/spree/admin/overview/_enterprises.html.haml @@ -1,14 +1,18 @@ -%div.dashboard_item.sixteen.columns.alpha +%div.dashboard_item.sixteen.columns.alpha#enterprises %div.header.sixteen.columns.alpha{ :class => "#{@enterprises.count > 0 ? "" : "red"}"} - %h3.five.columns.alpha My Enterprises - %a.with-tip{ title: "Enterprises are Producers and/or Hubs and are the basic unit of organisation within the Open Food Network." } What's this? + %h3.thirteen.columns.alpha My Enterprises + - if @enterprises.any? + %a.three.columns.omega.icon-plus.button.blue{ href: "#{main_app.new_admin_enterprise_path}" } + CREATE NEW + - else + %a.with-tip{ title: "Enterprises are Producers and/or Hubs and are the basic unit of organisation within the Open Food Network." } What's this? - if @enterprises.empty? %div.sixteen.columns.alpha.list-item.red - %span.text.fifteen.columns.alpha You have no enterprises. + %span.text.fifteen.columns.alpha You don't have any enterprises yet. %span.one.columns.omega %span.icon-remove-sign %a.sixteen.columns.alpha.button.bottom.red{ href: "#{main_app.new_admin_enterprise_path}" } - CREATE NEW ENTERPRISE + CREATE A NEW ENTERPRISE %span.icon-arrow-right - else %div.sixteen.columns.alpha.list-title @@ -22,20 +26,27 @@ %span.five.columns.alpha = enterprise.name %span.symbol.three.columns.centered - - if enterprise.payment_methods.count < 1 && enterprise.is_distributor - %span.icon-remove-sign.with-tip{ title: "This enterprise has no payment methods" } + - payment_method_count = enterprise.payment_methods.count + - if payment_method_count < 1 && enterprise.is_distributor + %span.icon-remove-sign.with-tip{ title: "#{enterprise.name} has no Payment Methods" } + - elsif enterprise.is_primary_producer + %span.icon-ok-sign.with-tip{ title: "Producers (like #{enterprise.name}) do not require Payment Methods." } - else - %span.icon-ok-sign + %span.icon-ok-sign.with-tip{ title: "#{payment_method_count} Payment Method#{payment_method_count > 1 ? "s" : ""}" } %span.symbol.three.columns.centered - - if enterprise.shipping_methods.count < 1 && enterprise.is_distributor - %span.icon-remove-sign.with-tip{ title: "This enterprise has no shipping methods" } - - else - %span.icon-ok-sign + - shipping_method_count = enterprise.shipping_methods.count + - if shipping_method_count < 1 && enterprise.is_distributor + %span.icon-remove-sign.with-tip{ title: "#{enterprise.name} has no Shipping Methods" } + - elsif enterprise.is_primary_producer + %span.icon-ok-sign.with-tip{ title: "Producers (like #{enterprise.name}) do not require Shipping Methods." } + -else + %span.icon-ok-sign.with-tip{ title: "#{shipping_method_count} Shipping Method#{shipping_method_count > 1 ? "s" : ""}" } %span.symbol.three.columns.centered - - if enterprise.enterprise_fees.count > 0 - %span.icon-ok-sign + - fee_count = enterprise.enterprise_fees.count + - if fee_count > 0 + %span.icon-ok-sign.with-tip{ title: "#{fee_count} Fee#{fee_count > 1 ? "s" : ""}" } - else - %span.icon-warning-sign.with-tip{ title: "This enterprise has no enterprise fees" } + %span.icon-warning-sign.with-tip{ title: "#{enterprise.name} has no Enterprise Fees" } %span.two.columns.omega.right %span.icon-arrow-right %a.sixteen.columns.alpha.button.bottom.blue{ href: "#{main_app.admin_enterprises_path}" } diff --git a/app/views/spree/admin/overview/_order_cycles.html.haml b/app/views/spree/admin/overview/_order_cycles.html.haml index 4b53db7003..c1b7f90276 100644 --- a/app/views/spree/admin/overview/_order_cycles.html.haml +++ b/app/views/spree/admin/overview/_order_cycles.html.haml @@ -1,7 +1,11 @@ -%div.dashboard_item.seven.columns.omega +%div.dashboard_item.seven.columns.omega#order_cycles %div.header.seven.columns.alpha{ :class => "#{@order_cycle_count > 0 ? "" : "orange"}"} - %h3.five.columns.alpha Order Cycles - %a.with-tip{ title: "Order cycles determine when and where your products are available to customers." } What's this? + %h3.four.columns.alpha Order Cycles + - if @order_cycle_count > 0 + %a.three.columns.omega.icon-plus.button.blue{ href: "#{main_app.new_admin_order_cycle_path}" } + CREATE NEW + - else + %a.with-tip{ title: "Order cycles determine when and where your products are available to customers." } What's this? %div.seven.columns.alpha.list - if @order_cycle_count > 0 %div.seven.columns.alpha.list-item diff --git a/app/views/spree/admin/overview/_products.html.haml b/app/views/spree/admin/overview/_products.html.haml index e412c0d891..988e779398 100644 --- a/app/views/spree/admin/overview/_products.html.haml +++ b/app/views/spree/admin/overview/_products.html.haml @@ -1,10 +1,11 @@ -%div.dashboard_item.seven.columns.alpha +%div.dashboard_item.seven.columns.alpha#products %div.header.seven.columns.alpha{ :class => "#{@product_count > 0 ? "" : "red"}"} %h3.four.columns.alpha Products - -# %a.three.columns.omega.button.top-right.blue{ href: "#{new_admin_product_path}" } - -# ADD NEW - -# %span.icon-plus - %a.with-tip{ title: "The products that you sell through the Open Food Network." } What's this? + - if @product_count > 0 + %a.three.columns.omega.icon-plus.button.blue{ href: "#{new_admin_product_path}" } + CREATE NEW + - else + %a.with-tip{ title: "The products that you sell through the Open Food Network." } What's this? %div.seven.columns.alpha.list - if @product_count > 0 %div.seven.columns.alpha.list-item @@ -17,7 +18,7 @@ %span.icon-arrow-right - else %div.seven.columns.alpha.list-item.red - %span.six.columns.alpha You don't have any products yet. + %span.six.columns.alpha You don't have any active products. %span.one.column.omega %span.icon-remove-sign %a.seven.columns.alpha.button.bottom.red{ href: "#{new_admin_product_path}" } diff --git a/spec/features/admin/overview_spec.rb b/spec/features/admin/overview_spec.rb new file mode 100644 index 0000000000..534f784ee0 --- /dev/null +++ b/spec/features/admin/overview_spec.rb @@ -0,0 +1,76 @@ +require 'spec_helper' + +feature %q{ + As a backend user + I want to be given information about the state of my enterprises, products and order cycles +} , js: true do + include AuthenticationWorkflow + include AuthorizationHelpers + include WebHelper + + stub_authorization! + + context "as an enterprise user" do + before :each do + @enterprise_user = create_enterprise_user + Spree::Admin::OverviewController.any_instance.stub(:spree_current_user).and_return @enterprise_user + quick_login_as @enterprise_user + end + + context "with no enterprises" do + it "prompts the user to create a new enteprise" do + visit '/admin' + page.should have_selector ".dashboard_item#enterprises h3", text: "My Enterprises" + page.should have_selector ".dashboard_item#enterprises .list-item", text: "You don't have any enterprises yet" + page.should have_selector ".dashboard_item#enterprises .button.bottom", text: "CREATE A NEW ENTERPRISE" + page.should_not have_selector ".dashboard_item#products" + page.should_not have_selector ".dashboard_item#order_cycles" + end + end + + context "with an enterprise" do + let(:d1) { create(:distributor_enterprise) } + + before :each do + @enterprise_user.enterprise_roles.build(enterprise: d1).save + end + + it "displays information about the enterprise" do + visit '/admin' + page.should have_selector ".dashboard_item#enterprises h3", text: "My Enterprises" + page.should have_selector ".dashboard_item#products" + page.should have_selector ".dashboard_item#order_cycles" + page.should have_selector ".dashboard_item#enterprises .list-item", text: d1.name + page.should have_selector ".dashboard_item#enterprises .button.bottom", text: "MANAGE MY ENTERPRISES" + + end + + context "but no products or order cycles" do + it "prompts the user to create a new product and to manage order cycles" do + visit '/admin' + page.should have_selector ".dashboard_item#products h3", text: "Products" + page.should have_selector ".dashboard_item#products .list-item", text: "You don't have any active products." + page.should have_selector ".dashboard_item#products .button.bottom", text: "CREATE A NEW PRODUCT" + page.should have_selector ".dashboard_item#order_cycles h3", text: "Order Cycles" + page.should have_selector ".dashboard_item#order_cycles .list-item", text: "You don't have any active order cycles." + page.should have_selector ".dashboard_item#order_cycles .button.bottom", text: "MANAGE ORDER CYCLES" + end + end + + context "and at least one product and active order cycle" do + let(:oc1) { create(:simple_order_cycle, distributors: [d1]) } + let(:p1) { create(:product, distributor: d1) } + + it "displays information about products and order cycles" do + visit '/admin' + page.should have_selector ".dashboard_item#products h3", text: "Products" + page.should have_selector ".dashboard_item#products .list-item", text: "You don't have any active products." + page.should have_selector ".dashboard_item#products .button.bottom", text: "CREATE A NEW PRODUCT" + page.should have_selector ".dashboard_item#order_cycles h3", text: "Order Cycles" + page.should have_selector ".dashboard_item#order_cycles .list-item", text: "You don't have any active order cycles." + page.should have_selector ".dashboard_item#order_cycles .button.bottom", text: "MANAGE ORDER CYCLES" + end + end + end + end +end \ No newline at end of file