From 31ea8540eaa330a179f74f20d5cc5784add4d249 Mon Sep 17 00:00:00 2001 From: Rohan Mitchell Date: Thu, 10 Jan 2013 15:02:56 +1100 Subject: [PATCH] Test editing an order cycle - all data is displayed --- app/views/admin/order_cycles/_form.html.haml | 6 +-- app/views/admin/order_cycles/show.rep | 4 +- spec/factories.rb | 12 ++--- spec/requests/admin/order_cycles_spec.rb | 48 ++++++++++++++++++++ 4 files changed, 58 insertions(+), 12 deletions(-) diff --git a/app/views/admin/order_cycles/_form.html.haml b/app/views/admin/order_cycles/_form.html.haml index 5280275048..0bbe19529d 100644 --- a/app/views/admin/order_cycles/_form.html.haml +++ b/app/views/admin/order_cycles/_form.html.haml @@ -19,10 +19,10 @@ %th Supplier %th Products %tbody{'ng-repeat' => 'exchange in order_cycle.incoming_exchanges'} - %tr + %tr.supplier %td.active= check_box_tag 'order_cycle_exchange_{{ $index }}_active', 1, 1, 'ng-model' => 'exchange.active', 'id' => 'order_cycle_exchange_{{ $index }}_active' - %td {{ enterprises[exchange.enterprise_id].name }} - %td= f.submit 'Products', 'ng-click' => 'toggleProducts($event, exchange)' + %td.supplier_name {{ enterprises[exchange.enterprise_id].name }} + %td.products= f.submit 'Products', 'ng-click' => 'toggleProducts($event, exchange)' %tr.products{'ng-show' => 'exchange.showProducts'} %td{:colspan => 3} .exchange-product{'ng-repeat' => 'product in enterprises[exchange.enterprise_id].supplied_products'} diff --git a/app/views/admin/order_cycles/show.rep b/app/views/admin/order_cycles/show.rep index 818b8d3b8b..9b0e645af7 100644 --- a/app/views/admin/order_cycles/show.rep +++ b/app/views/admin/order_cycles/show.rep @@ -1,8 +1,8 @@ r.element :order_cycle, @order_cycle do r.element :id r.element :name - r.element :orders_open_at - r.element :orders_close_at + r.element :orders_open_at, @order_cycle.orders_open_at.to_s + r.element :orders_close_at, @order_cycle.orders_close_at.to_s r.element :coordinator_id r.list_of :exchanges do |exchange| r.element :sender_id diff --git a/spec/factories.rb b/spec/factories.rb index 13fe8b8701..3e377273c9 100644 --- a/spec/factories.rb +++ b/spec/factories.rb @@ -5,22 +5,20 @@ FactoryGirl.define do factory :order_cycle, :parent => :simple_order_cycle do after(:create) do |oc| # Suppliers - create(:exchange, :order_cycle => oc, :receiver => oc.coordinator) - create(:exchange, :order_cycle => oc, :receiver => oc.coordinator) + ex1 = create(:exchange, :order_cycle => oc, :receiver => oc.coordinator) + ex2 = create(:exchange, :order_cycle => oc, :receiver => oc.coordinator) # Distributors create(:exchange, :order_cycle => oc, :sender => oc.coordinator) create(:exchange, :order_cycle => oc, :sender => oc.coordinator) # Products with images - ex = oc.exchanges.first - - 2.times do - product = create(:product) + [ex1, ex2].each do |exchange| + product = create(:product, supplier: exchange.sender) image = File.open(File.expand_path('../../app/assets/images/logo.jpg', __FILE__)) Spree::Image.create({:viewable_id => product.master.id, :viewable_type => 'Spree::Variant', :alt => "position 1", :attachment => image, :position => 1}) - ex.variants << product.master + exchange.variants << product.master end end end diff --git a/spec/requests/admin/order_cycles_spec.rb b/spec/requests/admin/order_cycles_spec.rb index c6356b9e5a..2ce79f1842 100644 --- a/spec/requests/admin/order_cycles_spec.rb +++ b/spec/requests/admin/order_cycles_spec.rb @@ -74,6 +74,54 @@ feature %q{ OrderCycle.last.exchanges.first.variants.count.should == 2 end + + scenario "editing an order cycle" do + # Given an order cycle with all the settings + oc = create(:order_cycle) + + # When I edit it + login_to_admin_section + click_link 'Order Cycles' + click_link oc.name + + # Then I should see the basic settings + sleep(1) + page.find('#order_cycle_name').value.should == oc.name + page.find('#order_cycle_orders_open_at').value.should == oc.orders_open_at.to_s + page.find('#order_cycle_orders_close_at').value.should == oc.orders_close_at.to_s + page.find('#order_cycle_coordinator_id').value.to_i.should == oc.coordinator_id + + # And I should see the suppliers with products + page.should have_selector 'td.supplier_name', :text => oc.suppliers.first.name + page.should have_selector 'td.supplier_name', :text => oc.suppliers.last.name + + page.all('table.exchanges tbody tr.supplier').each do |row| + row.find('td.products input').click + + products_row = page.find('table.exchanges tr.products') + products_row.should have_selector "input[type='checkbox'][checked='checked']" + + row.find('td.products input').click + end + end + + + scenario "updating an order cycle" do + # Given an order cycle with all the settings + oc = create(:order_cycle) + + # When I go to its edit page + login_to_admin_section + click_link 'Order Cycles' + click_link oc.name + + # And I update it + pending + + # Then my updates should have been applied + end + + scenario "updating many order cycle opening/closing times at once" do # Given three order cycles 3.times { create(:order_cycle) }