foodsoft/spec/integration/order_spec.rb

61 lines
2.2 KiB
Ruby

require_relative '../spec_helper'
feature Order, js: true do
let(:admin) { create :user, groups: [create(:workgroup, role_orders: true)] }
let(:article) { create :article, unit_quantity: 1 }
let(:order) { create :order, supplier: article.supplier, article_ids: [article.id] } # need to ref article
let(:go1) { create :group_order, order: order }
let(:oa) { order.order_articles.find_by_article_id(article.id) }
let(:goa1) { create :group_order_article, group_order: go1, order_article: oa }
before { login admin }
it 'can get to the new order page' do
article.supplier
visit orders_path
click_link_or_button I18n.t('orders.index.new_order')
click_link_or_button order.name
expect(page).to have_text I18n.t('orders.new.title')
expect(page).to have_text article.name
end
it 'fills in the end date with a schedule' do
FoodsoftConfig[:time_zone] = 'UTC'
FoodsoftConfig[:order_schedule] = { ends: { recurr: 'FREQ=MONTHLY;BYMONTHDAY=1', time: '12:00' } }
visit new_order_path(supplier_id: article.supplier.id)
expect(page).to have_text I18n.t('orders.new.title')
expect(find_field('order_ends_time_value').value).to eq '12:00'
expect(find_field('order_ends_date_value').value).to eq Date.today.next_month.at_beginning_of_month.strftime('%Y-%m-%d')
end
it 'can create a new order' do
visit new_order_path(supplier_id: article.supplier_id)
expect(page).to have_text I18n.t('orders.new.title')
find('input[type="submit"]').click
expect(page).to have_selector('.alert-success')
expect(Order.count).to eq 1
expect(Order.first.supplier).to eq article.supplier
end
it 'can close an order' do
setup_and_close_order
expect(order).to be_finished
expect(page).not_to have_link I18n.t('orders.index.action_end')
expect(oa.units_to_order).to eq 1
end
def setup_and_close_order
# have at least something ordered
goa1.update_quantities 1, 0
oa.update_results!
# and close the order
visit orders_path
accept_confirm do
click_link_or_button I18n.t('orders.index.action_end')
end
expect(page).to have_selector('.alert-success')
order.reload
oa.reload
end
end