From 64a3a309f5333ed83aa0d1bea5a668a9467befec Mon Sep 17 00:00:00 2001 From: Rohan Mitchell Date: Tue, 10 Sep 2013 09:11:37 +1000 Subject: [PATCH] Change 'pick-up date' to 'available on', provide absolute dates in options --- app/assets/stylesheets/store/openfoodweb.css.scss | 2 +- app/helpers/order_cycles_helper.rb | 13 +++++++++++++ app/views/order_cycles/_selection.html.haml | 11 ++++++----- spec/features/consumer/browse_products_spec.rb | 2 +- spec/features/consumer/checkout_spec.rb | 14 +++++++------- spec/features/consumer/distributors_spec.rb | 2 +- spec/support/request/web_helper.rb | 6 ++++++ 7 files changed, 35 insertions(+), 15 deletions(-) diff --git a/app/assets/stylesheets/store/openfoodweb.css.scss b/app/assets/stylesheets/store/openfoodweb.css.scss index 091cbfaa08..3cc45e9c48 100644 --- a/app/assets/stylesheets/store/openfoodweb.css.scss +++ b/app/assets/stylesheets/store/openfoodweb.css.scss @@ -102,7 +102,7 @@ nav#filters { padding: 10px; margin-top: 15px; border: 2px solid white; - font-size: 1.5em; + width: 100%; } float: left; diff --git a/app/helpers/order_cycles_helper.rb b/app/helpers/order_cycles_helper.rb index ab202cc50c..7b50c47a11 100644 --- a/app/helpers/order_cycles_helper.rb +++ b/app/helpers/order_cycles_helper.rb @@ -22,6 +22,19 @@ module OrderCyclesHelper options_for_select(options, current_distributor) end + def order_cycle_options + @order_cycles. + select { |oc| oc.distributors.include? current_distributor }. + map { |oc| [order_cycle_close_to_s(oc.orders_close_at), + oc.id] } + end + + def order_cycle_close_to_s(orders_close_at) + "%s (%s)" % [orders_close_at.strftime("#{orders_close_at.day.ordinalize} %b"), + distance_of_time_in_words_to_now(orders_close_at)] + end + + def order_cycles_enabled? OpenFoodWeb::FeatureToggle.enabled? :order_cycles end diff --git a/app/views/order_cycles/_selection.html.haml b/app/views/order_cycles/_selection.html.haml index 1230170a66..df056b6e42 100644 --- a/app/views/order_cycles/_selection.html.haml +++ b/app/views/order_cycles/_selection.html.haml @@ -19,8 +19,9 @@ .columns.six %h2 When do you want your order? %p No products are displayed until you select a date. - = form_for current_order(true), :html => {:id => 'order_cycle_select'} do |f| - = f.hidden_field :distributor_id, :value => @enterprise.id - .order-cycles - = f.select :order_cycle_id, @order_cycles.select{ |oc| oc.distributors.include? current_distributor }.collect {|o| [ distance_of_time_in_words_to_now(o.orders_close_at), o.id ] }, {include_blank: 'Pick-up date'} - = hidden_field_tag :commit, 'Choose Order Cycle' + .columns.three + = form_for current_order(true), :html => {:id => 'order_cycle_select'} do |f| + = f.hidden_field :distributor_id, :value => @enterprise.id + .order-cycles + = f.select :order_cycle_id, order_cycle_options, {include_blank: 'Available On'} + = hidden_field_tag :commit, 'Choose Order Cycle' diff --git a/spec/features/consumer/browse_products_spec.rb b/spec/features/consumer/browse_products_spec.rb index acb40278d8..849c98a7bf 100644 --- a/spec/features/consumer/browse_products_spec.rb +++ b/spec/features/consumer/browse_products_spec.rb @@ -80,7 +80,7 @@ feature %q{ # When I am in that order cycle visit root_path click_link d.name - select '7 days', from: 'order_order_cycle_id' + select_by_value oc.id, from: 'order_order_cycle_id' # And I view the product click_link p.name diff --git a/spec/features/consumer/checkout_spec.rb b/spec/features/consumer/checkout_spec.rb index 0a09309395..b18b093cbe 100644 --- a/spec/features/consumer/checkout_spec.rb +++ b/spec/features/consumer/checkout_spec.rb @@ -90,7 +90,7 @@ feature %q{ make_order_cycle - select distance_of_time_in_words_to_now(@order_cycle.orders_close_at), :from => 'order_order_cycle_id' + select_by_value @order_cycle.id, :from => 'order_order_cycle_id' page.execute_script "$('#order_order_cycle_id').trigger('change');" # When I add some apples and some garlic to my cart @@ -117,7 +117,7 @@ feature %q{ login_to_consumer_section click_link "FruitAndVeg" - select distance_of_time_in_words_to_now(@order_cycle.orders_close_at), :from => 'order_order_cycle_id' + select_by_value @order_cycle.id, :from => 'order_order_cycle_id' page.execute_script "$('#order_order_cycle_id').trigger('change');" # When I add some bananas and zucchini to my cart @@ -158,7 +158,7 @@ feature %q{ login_to_consumer_section click_link "Edible garden" - select distance_of_time_in_words_to_now(@order_cycle.orders_close_at), :from => 'order_order_cycle_id' + select_by_value @order_cycle.id, :from => 'order_order_cycle_id' page.execute_script "$('#order_order_cycle_id').trigger('change');" # When I add the first to my cart @@ -178,7 +178,7 @@ feature %q{ login_to_consumer_section click_link "Edible garden" - select distance_of_time_in_words_to_now(@order_cycle.orders_close_at), :from => 'order_order_cycle_id' + select_by_value @order_cycle.id, :from => 'order_order_cycle_id' page.execute_script "$('#order_order_cycle_id').trigger('change');" # When I add some apples and some garlic to my cart @@ -206,7 +206,7 @@ feature %q{ login_to_consumer_section click_link "Edible garden" - select distance_of_time_in_words_to_now(@order_cycle.orders_close_at), :from => 'order_order_cycle_id' + select_by_value @order_cycle.id, :from => 'order_order_cycle_id' page.execute_script "$('#order_order_cycle_id').trigger('change');" # When I add two products to my cart that share the same enterprise fee @@ -277,7 +277,7 @@ feature %q{ login_to_consumer_section click_link "Edible garden" - select distance_of_time_in_words_to_now(@order_cycle.orders_close_at), :from => 'order_order_cycle_id' + select_by_value @order_cycle.id, :from => 'order_order_cycle_id' page.execute_script "$('#order_order_cycle_id').trigger('change');" click_link @product_1.name @@ -300,7 +300,7 @@ feature %q{ login_to_consumer_section click_link 'Edible garden' - select distance_of_time_in_words_to_now(@order_cycle.orders_close_at), :from => 'order_order_cycle_id' + select_by_value @order_cycle.id, :from => 'order_order_cycle_id' page.execute_script "$('#order_order_cycle_id').trigger('change');" click_link 'Fuji apples' diff --git a/spec/features/consumer/distributors_spec.rb b/spec/features/consumer/distributors_spec.rb index 9a33014788..5c315e6d6c 100644 --- a/spec/features/consumer/distributors_spec.rb +++ b/spec/features/consumer/distributors_spec.rb @@ -100,7 +100,7 @@ feature %q{ click_link d1.name # And when I choose an order cycle - select distance_of_time_in_words_to_now(order_cycle.orders_close_at), :from => 'order_order_cycle_id' + select_by_value order_cycle.id, :from => 'order_order_cycle_id' page.execute_script "$('#order_order_cycle_id').trigger('change');" # Then I should see the distributor details diff --git a/spec/support/request/web_helper.rb b/spec/support/request/web_helper.rb index 4803b7d375..220c733abf 100644 --- a/spec/support/request/web_helper.rb +++ b/spec/support/request/web_helper.rb @@ -14,6 +14,12 @@ module WebHelper end end + def select_by_value(value, options={}) + from = options.delete :from + page.find_by_id(from).find("option[value='#{value}']").select_option + end + + def should_have_failed page.status_code.should == 200 errors.count.should > 0